Imported Upstream version 4.9 sandbox/kevinthierry/upstream upstream/4.9
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Mon, 22 Dec 2014 13:23:21 +0000 (14:23 +0100)
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Mon, 22 Dec 2014 13:23:21 +0000 (14:23 +0100)
485 files changed:
.tarball-version
.version
CREDITS
ChangeLog
Makefile.am
Makefile.in
NEWS
aclocal.m4
aio.c [new file with mode: 0644]
bjm.c
block.c
compile [new file with mode: 0755]
config.guess
config.h.in
config.sub
configure
configure.ac
count.c
debian/changelog
debian/control
debian/rules
defs.h
depcomp
desc.c
fanotify.c [new file with mode: 0644]
file.c
inotify.c [new file with mode: 0644]
install-sh
io.c
ioctl.c
ioctlsort.c [deleted file]
ioprio.c [new file with mode: 0644]
ipc.c
kexec.c [new file with mode: 0644]
keyctl.c [new file with mode: 0644]
ldt.c [new file with mode: 0644]
linux/aarch64/syscallent1.h
linux/alpha/syscallent.h
linux/arc/ioctlent.h.in [new file with mode: 0644]
linux/arc/syscallent.h [new file with mode: 0644]
linux/arm/syscallent.h
linux/avr32/syscallent.h
linux/bfin/syscallent.h
linux/dummy.h
linux/fanotify.h [new file with mode: 0644]
linux/hppa/syscallent.h
linux/i386/syscallent.h
linux/ia64/syscallent.h
linux/inotify.h [new file with mode: 0644]
linux/ioctlent.h.in
linux/kexec.h [new file with mode: 0644]
linux/keyctl.h [new file with mode: 0644]
linux/m68k/syscallent.h
linux/metag/syscallent.h
linux/microblaze/syscallent.h
linux/mips/syscallent-compat.h
linux/mips/syscallent-n32.h
linux/mips/syscallent-n64.h
linux/mips/syscallent-o32.h
linux/or1k/syscallent.h
linux/personality.h [new file with mode: 0644]
linux/powerpc/syscallent.h
linux/ptp_clock.h [new file with mode: 0644]
linux/reboot.h [new file with mode: 0644]
linux/s390/syscallent.h
linux/s390x/syscallent.h
linux/sh/syscallent.h
linux/sh64/syscallent.h
linux/sparc/syscallent.h
linux/sparc/syscallent1.h
linux/syscall.h
linux/tile/syscallent.h
linux/tile/syscallent1.h
linux/x32/syscallent.h
linux/x86_64/syscallent.h
linux/xtensa/syscallent.h
loop.c
m4/long_long.m4
mem.c
missing
mtd.c
net.c
pathtrace.c
process.c
ptp.c [new file with mode: 0644]
quota.c
reboot.c [new file with mode: 0644]
resource.c
scsi.c
signal.c
sock.c
strace.1
strace.c
strace.spec
stream.c
syscall.c
system.c
term.c
test-driver [new file with mode: 0755]
tests/Makefile.am
tests/Makefile.in
tests/count.test [new file with mode: 0755]
tests/detach-running.test [new file with mode: 0755]
tests/detach-sleeping.test [new file with mode: 0755]
tests/detach-stopped.test [new file with mode: 0755]
tests/init.sh
tests/net-fd.test [new file with mode: 0755]
tests/net.test [moved from tests/net with 73% similarity]
tests/ptrace_setoptions [deleted file]
tests/ptrace_setoptions.test [new file with mode: 0755]
tests/qual_syscall [deleted file]
tests/qual_syscall.test [new file with mode: 0755]
tests/run.sh [new file with mode: 0755]
tests/scm_rights-fd.test [new file with mode: 0755]
tests/scm_rights.c [new file with mode: 0644]
tests/set_ptracer_any.c [new file with mode: 0644]
tests/sigaction.awk [new file with mode: 0644]
tests/sigaction.c [new file with mode: 0644]
tests/sigaction.test [new file with mode: 0755]
tests/stack-fcall-0.c [new file with mode: 0644]
tests/stack-fcall-1.c [new file with mode: 0644]
tests/stack-fcall-2.c [new file with mode: 0644]
tests/stack-fcall-3.c [new file with mode: 0644]
tests/stack-fcall.c [new file with mode: 0644]
tests/stat [deleted file]
tests/stat.test [new file with mode: 0755]
tests/strace-f [deleted file]
tests/strace-f.test [new file with mode: 0755]
tests/strace-k.test [new file with mode: 0755]
tests/uio.c [new file with mode: 0644]
tests/uio.test [new file with mode: 0755]
time.c
unwind.c [new file with mode: 0644]
util.c
vsprintf.c
xlat/Makemodule.am [new file with mode: 0644]
xlat/access_flags.h [new file with mode: 0644]
xlat/access_flags.in [new file with mode: 0644]
xlat/aclcmds.h [new file with mode: 0644]
xlat/aclcmds.in [new file with mode: 0644]
xlat/aclipc.h [new file with mode: 0644]
xlat/aclipc.in [new file with mode: 0644]
xlat/addrfams.h [new file with mode: 0644]
xlat/addrfams.in [new file with mode: 0644]
xlat/adjtimex_modes.h [new file with mode: 0644]
xlat/adjtimex_modes.in [new file with mode: 0644]
xlat/adjtimex_state.h [new file with mode: 0644]
xlat/adjtimex_state.in [new file with mode: 0644]
xlat/adjtimex_status.h [new file with mode: 0644]
xlat/adjtimex_status.in [new file with mode: 0644]
xlat/advise.h [new file with mode: 0644]
xlat/advise.in [new file with mode: 0644]
xlat/af_packet_types.h [new file with mode: 0644]
xlat/af_packet_types.in [new file with mode: 0644]
xlat/archvals.h [new file with mode: 0644]
xlat/archvals.in [new file with mode: 0644]
xlat/at_flags.h [new file with mode: 0644]
xlat/at_flags.in [new file with mode: 0644]
xlat/atomic_ops.h [new file with mode: 0644]
xlat/atomic_ops.in [new file with mode: 0644]
xlat/baud_options.h [new file with mode: 0644]
xlat/baud_options.in [new file with mode: 0644]
xlat/blkpg_ops.h [new file with mode: 0644]
xlat/blkpg_ops.in [new file with mode: 0644]
xlat/bootflags1.h [new file with mode: 0644]
xlat/bootflags1.in [new file with mode: 0644]
xlat/bootflags2.h [new file with mode: 0644]
xlat/bootflags2.in [new file with mode: 0644]
xlat/bootflags3.h [new file with mode: 0644]
xlat/bootflags3.in [new file with mode: 0644]
xlat/cacheflush_scope.h [new file with mode: 0644]
xlat/cacheflush_scope.in [new file with mode: 0644]
xlat/cap_version.h [new file with mode: 0644]
xlat/cap_version.in [new file with mode: 0644]
xlat/capabilities.h [new file with mode: 0644]
xlat/capabilities.in [new file with mode: 0644]
xlat/clockflags.h [new file with mode: 0644]
xlat/clockflags.in [new file with mode: 0644]
xlat/clocknames.h [new file with mode: 0644]
xlat/clocknames.in [new file with mode: 0644]
xlat/clone_flags.h [new file with mode: 0644]
xlat/clone_flags.in [new file with mode: 0644]
xlat/cpuclocknames.h [new file with mode: 0644]
xlat/cpuclocknames.in [new file with mode: 0644]
xlat/delete_module_flags.h [new file with mode: 0644]
xlat/delete_module_flags.in [new file with mode: 0644]
xlat/direnttypes.h [new file with mode: 0644]
xlat/direnttypes.in [new file with mode: 0644]
xlat/domains.h [new file with mode: 0644]
xlat/domains.in [new file with mode: 0644]
xlat/epollctls.h [new file with mode: 0644]
xlat/epollctls.in [new file with mode: 0644]
xlat/epollevents.h [new file with mode: 0644]
xlat/epollevents.in [new file with mode: 0644]
xlat/epollflags.h [new file with mode: 0644]
xlat/epollflags.in [new file with mode: 0644]
xlat/fan_classes.h [new file with mode: 0644]
xlat/fan_classes.in [new file with mode: 0644]
xlat/fan_event_flags.h [new file with mode: 0644]
xlat/fan_event_flags.in [new file with mode: 0644]
xlat/fan_init_flags.h [new file with mode: 0644]
xlat/fan_init_flags.in [new file with mode: 0644]
xlat/fan_mark_flags.h [new file with mode: 0644]
xlat/fan_mark_flags.in [new file with mode: 0644]
xlat/fcntlcmds.h [new file with mode: 0644]
xlat/fcntlcmds.in [new file with mode: 0644]
xlat/fdflags.h [new file with mode: 0644]
xlat/fdflags.in [new file with mode: 0644]
xlat/fileflags.h [new file with mode: 0644]
xlat/fileflags.in [new file with mode: 0644]
xlat/flockcmds.h [new file with mode: 0644]
xlat/flockcmds.in [new file with mode: 0644]
xlat/fsmagic.h [new file with mode: 0644]
xlat/fsmagic.in [new file with mode: 0644]
xlat/futexops.h [new file with mode: 0644]
xlat/futexops.in [new file with mode: 0644]
xlat/futexwakecmps.h [new file with mode: 0644]
xlat/futexwakecmps.in [new file with mode: 0644]
xlat/futexwakeops.h [new file with mode: 0644]
xlat/futexwakeops.in [new file with mode: 0644]
xlat/gen.sh [new file with mode: 0755]
xlat/icmpfilterflags.h [new file with mode: 0644]
xlat/icmpfilterflags.in [new file with mode: 0644]
xlat/if_dqblk_valid.h [new file with mode: 0644]
xlat/if_dqblk_valid.in [new file with mode: 0644]
xlat/if_dqinfo_valid.h [new file with mode: 0644]
xlat/if_dqinfo_valid.in [new file with mode: 0644]
xlat/iffflags.h [new file with mode: 0644]
xlat/iffflags.in [new file with mode: 0644]
xlat/inet_protocols.h [new file with mode: 0644]
xlat/inet_protocols.in [new file with mode: 0644]
xlat/inotify_flags.h [new file with mode: 0644]
xlat/inotify_flags.in [new file with mode: 0644]
xlat/inotify_init_flags.h [new file with mode: 0644]
xlat/inotify_init_flags.in [new file with mode: 0644]
xlat/ioprio_class.h [new file with mode: 0644]
xlat/ioprio_class.in [new file with mode: 0644]
xlat/ioprio_who.h [new file with mode: 0644]
xlat/ioprio_who.in [new file with mode: 0644]
xlat/ipc_msg_flags.h [new file with mode: 0644]
xlat/ipc_msg_flags.in [new file with mode: 0644]
xlat/itimer_which.h [new file with mode: 0644]
xlat/itimer_which.in [new file with mode: 0644]
xlat/kexec_arch_values.h [new file with mode: 0644]
xlat/kexec_arch_values.in [new file with mode: 0644]
xlat/kexec_flags.h [new file with mode: 0644]
xlat/kexec_flags.in [new file with mode: 0644]
xlat/key_perms.h [new file with mode: 0644]
xlat/key_perms.in [new file with mode: 0644]
xlat/key_reqkeys.h [new file with mode: 0644]
xlat/key_reqkeys.in [new file with mode: 0644]
xlat/key_spec.h [new file with mode: 0644]
xlat/key_spec.in [new file with mode: 0644]
xlat/keyctl_commands.h [new file with mode: 0644]
xlat/keyctl_commands.in [new file with mode: 0644]
xlat/lockfcmds.h [new file with mode: 0644]
xlat/lockfcmds.in [new file with mode: 0644]
xlat/loop_crypt_type_options.h [new file with mode: 0644]
xlat/loop_crypt_type_options.in [new file with mode: 0644]
xlat/loop_flags_options.h [new file with mode: 0644]
xlat/loop_flags_options.in [new file with mode: 0644]
xlat/madvise_cmds.h [new file with mode: 0644]
xlat/madvise_cmds.in [new file with mode: 0644]
xlat/mbindflags.h [new file with mode: 0644]
xlat/mbindflags.in [new file with mode: 0644]
xlat/mctl_funcs.h [new file with mode: 0644]
xlat/mctl_funcs.in [new file with mode: 0644]
xlat/mctl_lockas.h [new file with mode: 0644]
xlat/mctl_lockas.in [new file with mode: 0644]
xlat/mctl_sync.h [new file with mode: 0644]
xlat/mctl_sync.in [new file with mode: 0644]
xlat/mempolicyflags.h [new file with mode: 0644]
xlat/mempolicyflags.in [new file with mode: 0644]
xlat/mlockall_flags.h [new file with mode: 0644]
xlat/mlockall_flags.in [new file with mode: 0644]
xlat/mmap_flags.h [new file with mode: 0644]
xlat/mmap_flags.in [new file with mode: 0644]
xlat/mmap_prot.h [new file with mode: 0644]
xlat/mmap_prot.in [new file with mode: 0644]
xlat/modem_flags.h [new file with mode: 0644]
xlat/modem_flags.in [new file with mode: 0644]
xlat/modetypes.h [new file with mode: 0644]
xlat/modetypes.in [new file with mode: 0644]
xlat/modflags.h [new file with mode: 0644]
xlat/modflags.in [new file with mode: 0644]
xlat/module_init_flags.h [new file with mode: 0644]
xlat/module_init_flags.in [new file with mode: 0644]
xlat/mount_flags.h [new file with mode: 0644]
xlat/mount_flags.in [new file with mode: 0644]
xlat/move_pages_flags.h [new file with mode: 0644]
xlat/move_pages_flags.in [new file with mode: 0644]
xlat/mremap_flags.h [new file with mode: 0644]
xlat/mremap_flags.in [new file with mode: 0644]
xlat/msg_flags.h [new file with mode: 0644]
xlat/msg_flags.in [new file with mode: 0644]
xlat/msgctl_flags.h [new file with mode: 0644]
xlat/msgctl_flags.in [new file with mode: 0644]
xlat/msgflags.h [new file with mode: 0644]
xlat/msgflags.in [new file with mode: 0644]
xlat/mtd_flags_options.h [new file with mode: 0644]
xlat/mtd_flags_options.in [new file with mode: 0644]
xlat/mtd_mode_options.h [new file with mode: 0644]
xlat/mtd_mode_options.in [new file with mode: 0644]
xlat/mtd_nandecc_options.h [new file with mode: 0644]
xlat/mtd_nandecc_options.in [new file with mode: 0644]
xlat/mtd_otp_options.h [new file with mode: 0644]
xlat/mtd_otp_options.in [new file with mode: 0644]
xlat/mtd_type_options.h [new file with mode: 0644]
xlat/mtd_type_options.in [new file with mode: 0644]
xlat/netlink_protocols.h [new file with mode: 0644]
xlat/netlink_protocols.in [new file with mode: 0644]
xlat/notifyflags.h [new file with mode: 0644]
xlat/notifyflags.in [new file with mode: 0644]
xlat/nt_descriptor_types.h [new file with mode: 0644]
xlat/nt_descriptor_types.in [new file with mode: 0644]
xlat/open_access_modes.h [new file with mode: 0644]
xlat/open_access_modes.in [new file with mode: 0644]
xlat/open_mode_flags.h [new file with mode: 0644]
xlat/open_mode_flags.in [new file with mode: 0644]
xlat/openmodessol.h [new file with mode: 0644]
xlat/openmodessol.in [new file with mode: 0644]
xlat/perf_event_open_flags.h [new file with mode: 0644]
xlat/perf_event_open_flags.in [new file with mode: 0644]
xlat/personality_options.h [new file with mode: 0644]
xlat/personality_options.in [new file with mode: 0644]
xlat/pmsgflags.h [new file with mode: 0644]
xlat/pmsgflags.in [new file with mode: 0644]
xlat/policies.h [new file with mode: 0644]
xlat/policies.in [new file with mode: 0644]
xlat/pollflags.h [new file with mode: 0644]
xlat/pollflags.in [new file with mode: 0644]
xlat/prctl_options.h [new file with mode: 0644]
xlat/prctl_options.in [new file with mode: 0644]
xlat/priorities.h [new file with mode: 0644]
xlat/priorities.in [new file with mode: 0644]
xlat/ptp_flags_options.h [new file with mode: 0644]
xlat/ptp_flags_options.in [new file with mode: 0644]
xlat/ptrace_cmds.h [new file with mode: 0644]
xlat/ptrace_cmds.in [new file with mode: 0644]
xlat/ptrace_setoptions_flags.h [new file with mode: 0644]
xlat/ptrace_setoptions_flags.in [new file with mode: 0644]
xlat/qm_which.h [new file with mode: 0644]
xlat/qm_which.in [new file with mode: 0644]
xlat/quota_formats.h [new file with mode: 0644]
xlat/quota_formats.in [new file with mode: 0644]
xlat/quotacmds.h [new file with mode: 0644]
xlat/quotacmds.in [new file with mode: 0644]
xlat/quotatypes.h [new file with mode: 0644]
xlat/quotatypes.in [new file with mode: 0644]
xlat/rename_flags.h [new file with mode: 0644]
xlat/rename_flags.in [new file with mode: 0644]
xlat/resource_flags.h [new file with mode: 0644]
xlat/resource_flags.in [new file with mode: 0644]
xlat/resources.h [new file with mode: 0644]
xlat/resources.in [new file with mode: 0644]
xlat/schedulers.h [new file with mode: 0644]
xlat/schedulers.in [new file with mode: 0644]
xlat/scmvals.h [new file with mode: 0644]
xlat/scmvals.in [new file with mode: 0644]
xlat/semctl_flags.h [new file with mode: 0644]
xlat/semctl_flags.in [new file with mode: 0644]
xlat/semop_flags.h [new file with mode: 0644]
xlat/semop_flags.in [new file with mode: 0644]
xlat/sg_io_dxfer_direction.h [new file with mode: 0644]
xlat/sg_io_dxfer_direction.in [new file with mode: 0644]
xlat/shm_flags.h [new file with mode: 0644]
xlat/shm_flags.in [new file with mode: 0644]
xlat/shm_resource_flags.h [new file with mode: 0644]
xlat/shm_resource_flags.in [new file with mode: 0644]
xlat/shmctl_flags.h [new file with mode: 0644]
xlat/shmctl_flags.in [new file with mode: 0644]
xlat/shutdown_modes.h [new file with mode: 0644]
xlat/shutdown_modes.in [new file with mode: 0644]
xlat/sigact_flags.h [new file with mode: 0644]
xlat/sigact_flags.in [new file with mode: 0644]
xlat/sigaltstack_flags.h [new file with mode: 0644]
xlat/sigaltstack_flags.in [new file with mode: 0644]
xlat/sigbus_codes.h [new file with mode: 0644]
xlat/sigbus_codes.in [new file with mode: 0644]
xlat/sigchld_codes.h [new file with mode: 0644]
xlat/sigchld_codes.in [new file with mode: 0644]
xlat/sigemt_codes.h [new file with mode: 0644]
xlat/sigemt_codes.in [new file with mode: 0644]
xlat/sigev_value.h [new file with mode: 0644]
xlat/sigev_value.in [new file with mode: 0644]
xlat/sigfpe_codes.h [new file with mode: 0644]
xlat/sigfpe_codes.in [new file with mode: 0644]
xlat/sigill_codes.h [new file with mode: 0644]
xlat/sigill_codes.in [new file with mode: 0644]
xlat/siginfo_codes.h [new file with mode: 0644]
xlat/siginfo_codes.in [new file with mode: 0644]
xlat/sigpoll_codes.h [new file with mode: 0644]
xlat/sigpoll_codes.in [new file with mode: 0644]
xlat/sigprocmaskcmds.h [new file with mode: 0644]
xlat/sigprocmaskcmds.in [new file with mode: 0644]
xlat/sigprof_codes.h [new file with mode: 0644]
xlat/sigprof_codes.in [new file with mode: 0644]
xlat/sigsegv_codes.h [new file with mode: 0644]
xlat/sigsegv_codes.in [new file with mode: 0644]
xlat/sigsys_codes.h [new file with mode: 0644]
xlat/sigsys_codes.in [new file with mode: 0644]
xlat/sigtrap_codes.h [new file with mode: 0644]
xlat/sigtrap_codes.in [new file with mode: 0644]
xlat/sock_type_flags.h [new file with mode: 0644]
xlat/sock_type_flags.in [new file with mode: 0644]
xlat/socketlayers.h [new file with mode: 0644]
xlat/socketlayers.in [new file with mode: 0644]
xlat/sockipoptions.h [new file with mode: 0644]
xlat/sockipoptions.in [new file with mode: 0644]
xlat/sockipv6options.h [new file with mode: 0644]
xlat/sockipv6options.in [new file with mode: 0644]
xlat/sockipxoptions.h [new file with mode: 0644]
xlat/sockipxoptions.in [new file with mode: 0644]
xlat/sockoptions.h [new file with mode: 0644]
xlat/sockoptions.in [new file with mode: 0644]
xlat/sockpacketoptions.h [new file with mode: 0644]
xlat/sockpacketoptions.in [new file with mode: 0644]
xlat/sockrawoptions.h [new file with mode: 0644]
xlat/sockrawoptions.in [new file with mode: 0644]
xlat/socksctpoptions.h [new file with mode: 0644]
xlat/socksctpoptions.in [new file with mode: 0644]
xlat/socktcpoptions.h [new file with mode: 0644]
xlat/socktcpoptions.in [new file with mode: 0644]
xlat/socktypes.h [new file with mode: 0644]
xlat/socktypes.in [new file with mode: 0644]
xlat/splice_flags.h [new file with mode: 0644]
xlat/splice_flags.in [new file with mode: 0644]
xlat/sram_alloc_flags.h [new file with mode: 0644]
xlat/sram_alloc_flags.in [new file with mode: 0644]
xlat/swap_flags.h [new file with mode: 0644]
xlat/swap_flags.in [new file with mode: 0644]
xlat/sync_file_range_flags.h [new file with mode: 0644]
xlat/sync_file_range_flags.in [new file with mode: 0644]
xlat/sysctl_kern.h [new file with mode: 0644]
xlat/sysctl_kern.in [new file with mode: 0644]
xlat/sysctl_net.h [new file with mode: 0644]
xlat/sysctl_net.in [new file with mode: 0644]
xlat/sysctl_net_core.h [new file with mode: 0644]
xlat/sysctl_net_core.in [new file with mode: 0644]
xlat/sysctl_net_ipv4.h [new file with mode: 0644]
xlat/sysctl_net_ipv4.in [new file with mode: 0644]
xlat/sysctl_net_ipv4_conf.h [new file with mode: 0644]
xlat/sysctl_net_ipv4_conf.in [new file with mode: 0644]
xlat/sysctl_net_ipv4_route.h [new file with mode: 0644]
xlat/sysctl_net_ipv4_route.in [new file with mode: 0644]
xlat/sysctl_net_ipv6.h [new file with mode: 0644]
xlat/sysctl_net_ipv6.in [new file with mode: 0644]
xlat/sysctl_net_ipv6_route.h [new file with mode: 0644]
xlat/sysctl_net_ipv6_route.in [new file with mode: 0644]
xlat/sysctl_net_unix.h [new file with mode: 0644]
xlat/sysctl_net_unix.in [new file with mode: 0644]
xlat/sysctl_root.h [new file with mode: 0644]
xlat/sysctl_root.in [new file with mode: 0644]
xlat/sysctl_vm.h [new file with mode: 0644]
xlat/sysctl_vm.in [new file with mode: 0644]
xlat/syslog_action_type.h [new file with mode: 0644]
xlat/syslog_action_type.in [new file with mode: 0644]
xlat/sysmips_operations.h [new file with mode: 0644]
xlat/sysmips_operations.in [new file with mode: 0644]
xlat/tcflsh_options.h [new file with mode: 0644]
xlat/tcflsh_options.in [new file with mode: 0644]
xlat/tcxonc_options.h [new file with mode: 0644]
xlat/tcxonc_options.in [new file with mode: 0644]
xlat/timerfdflags.h [new file with mode: 0644]
xlat/timerfdflags.in [new file with mode: 0644]
xlat/ubi_volume_props.h [new file with mode: 0644]
xlat/ubi_volume_props.in [new file with mode: 0644]
xlat/ubi_volume_types.h [new file with mode: 0644]
xlat/ubi_volume_types.in [new file with mode: 0644]
xlat/umount_flags.h [new file with mode: 0644]
xlat/umount_flags.in [new file with mode: 0644]
xlat/usagewho.h [new file with mode: 0644]
xlat/usagewho.in [new file with mode: 0644]
xlat/wait4_options.h [new file with mode: 0644]
xlat/wait4_options.in [new file with mode: 0644]
xlat/waitid_types.h [new file with mode: 0644]
xlat/waitid_types.in [new file with mode: 0644]
xlat/whence_codes.h [new file with mode: 0644]
xlat/whence_codes.in [new file with mode: 0644]
xlat/xattrflags.h [new file with mode: 0644]
xlat/xattrflags.in [new file with mode: 0644]
xlat/xfs_dqblk_flags.h [new file with mode: 0644]
xlat/xfs_dqblk_flags.in [new file with mode: 0644]
xlat/xfs_quota_flags.h [new file with mode: 0644]
xlat/xfs_quota_flags.in [new file with mode: 0644]

index ef216a5..86a9588 100644 (file)
@@ -1 +1 @@
-4.8
+4.9
index ef216a5..86a9588 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-4.8
+4.9
diff --git a/CREDITS b/CREDITS
index 399bcaf..80965df 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -14,6 +14,7 @@ strace-devel@lists.sourceforge.net mailing list.
 
        Aaron Ucko <ucko@vax1.rockhurst.edu>
        Adrien Kunysz <adrien@kunysz.be>
+       Ali Polatel <alip@exherbo.org>
        Andi Kleen <ak@linux.intel.com>
        Andreas Schwab <schwab@linux-m68k.org>
        Anton Blanchard <anton@samba.org>
@@ -25,6 +26,7 @@ strace-devel@lists.sourceforge.net mailing list.
        Cai Fei <caifei@cn.fujitsu.com>
        Carlos O'Donell <carlos@systemhalted.org>
        Carmelo AMOROSO <carmelo.amoroso@st.com>
+       Chris Dearman <chris.dearman@imgtec.com>
        Chris Metcalf <cmetcalf@tilera.com>
        Chris Zankel <chris@zankel.net>
        Christian Svensson <blue@cmd.nu>
@@ -39,7 +41,11 @@ strace-devel@lists.sourceforge.net mailing list.
        Denys Vlasenko <vda.linux@googlemail.com>
        Dmitry V. Levin <ldv@altlinux.org>
        Douglas Mencken <dougmencken@gmail.com>
+       Dr. David Alan Gilbert <dave@treblig.org>
        Edgar E. Iglesias <edgar.iglesias@gmail.com>
+       Elliott Hughes <enh@google.com>
+       Erik Johansson <erik@ejohansson.se>
+       Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
        Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
        Florian Lohoff <flo@rfc822.org>
        Frederik Schüler <fs@debian.org>
@@ -55,6 +61,7 @@ strace-devel@lists.sourceforge.net mailing list.
        Jakub Bogusz <qboosh@pld-linux.org>
        Jakub Jelinek <jj@ultra.linux.cz>
        James Hogan <james.hogan@imgtec.com>
+       James Yang <james.yang@freescale.com>
        Jan Kratochvil <jan.kratochvil@redhat.com>
        Jeff Mahoney <jeffm@suse.com>
        Joe Ilacqua <spike@world.std.com>
@@ -64,16 +71,21 @@ strace-devel@lists.sourceforge.net mailing list.
        Ju"rgen Fluk <louis@marco.de>
        Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de>
        Keith Thompson <kst@alsys.com>
+       Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
        Kirill A. Shutemov <kirill@shutemov.name>
        Kyle McMartin <kyle@mcmartin.ca>
        Lai JiangShan <laijs@cn.fujitsu.com>
        Leonard N. Zubkoff <lnz@dandelion.com>
        Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
+       Luca Clementi <luca.clementi@gmail.com>
        Lupe Christoph <lupe@alanya.isar.muc.de>
+       Mark Hills <Mark.Hills@framestore.com>
        Mark Wielaard <mjw@redhat.com>
        Marty Leisner <leisner@sdsp.mc.xerox.com>
+       Masatake YAMATO <yamato@redhat.com>
        Matt Day <mday@artisoft.com>
        Matthias Pfaller <leo@dachau.marco.de>
+       Max Filippov <jcmvbkbc@gmail.com>
        Maxim Shchetynin <maxim@de.ibm.com>
        Maxin B. John <maxin.john@enea.com>
        Michael E Chastain <mec@duracef.shout.net>
@@ -91,6 +103,7 @@ strace-devel@lists.sourceforge.net mailing list.
        Paul Mundt <lethal@linux-sh.org>
        Pavel Machek <pavel@ucw.cz>
        Peter Jones <pjones@redhat.com>
+       Philippe Ombredanne <pombredanne@nexb.com>
        Pádraig Brady <P@draigBrady.com>
        Rajeev V. Pillai <rajeevvp@gmail.com>
        Ralf Baechle <ralf@linux-mips.org>
@@ -109,6 +122,7 @@ strace-devel@lists.sourceforge.net mailing list.
        Solar Designer <solar@openwall.com>
        Srinivasa Ds <srinivasa@in.ibm.com>
        Stanislav Brabec <sbrabec@suse.cz>
+       Stefan Sørensen <stefan.sorensen@spectralink.com>
        Steve Bennett <steveb@workware.net.au>
        Steve McIntyre <steve.mcintyre@linaro.org>
        Thanh Ma <tma@encore.com>
@@ -120,11 +134,14 @@ strace-devel@lists.sourceforge.net mailing list.
        Tommi Rantala <ext-tommi.1.rantala@nokia.com>
        Topi Miettinen <Topi.Miettinen@nic.fi>
        Ulrich Drepper <drepper@redhat.com>
+       Vineet Gupta <Vineet.Gupta1@synopsys.com>
        Wang Chao <wang.chao@cn.fujitsu.com>
        Wichert Akkerman <wichert@deephackmode.org>
+       William Manley <william.manley@youview.com>
        Xiaoning Ding <dingxn@gmail.com>
        Yang Zhiguo <yzgcsu@cn.fujitsu.com>
        Zach Brown <zach.brown@oracle.com>
        Zev Weiss <zev@bewilderbeest.net>
        Zhang Le <zhilg@users.sourceforge.net>
+       Zubin Mithra <zubin.mithra@gmail.com>
        Марк Коренберг <socketpair@gmail.com>
index c135d85..fd2faa4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2014-08-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 4.9 release.
+       * NEWS: Update for 4.9 release.
+       * debian/changelog: 4.9-1.
+       * strace.spec: 4.9-1.
+
+       Sync strace.spec and debian/ with packages.
+       * debian/changelog: Sync with 4.8-1.1.
+       * debian/control: Likewise.
+       * debian/rules: Likewise.
+       * strace.spec: Sync with 4.8-5.
+
+       NEWS: Update for 4.9 release.
+
+2014-08-15  Mike Frysinger  <vapier@gentoo.org>
+
+       Update syscall tables to the point where they include renameat2.
+       * linux/dummy.h: Add printargs aliases for sys_sched_getattr and
+       sys_sched_setattr.
+       * linux/aarch64/syscallent1.h: Add kcmp/finit_module/sched_setattr/
+       sched_getattr/renameat2.
+       * linux/alpha/syscallent.h: Add kcmp/finit_module.
+       * linux/arm/syscallent.h: Add sched_setattr/sched_getattr/renameat2.
+       * linux/hppa/syscallent.h: Add sched_setattr/sched_getattr/utimes/renameat2.
+       * linux/i386/syscallent.h: Add sched_setattr/sched_getattr/renameat2.
+       * 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: Add getdents64/sched_setattr/sched_getattr/
+       renameat2.
+       * linux/mips/syscallent-o32.h: Add sched_setattr/sched_getattr/renameat2.
+       * linux/powerpc/syscallent.h: Fix finit_module/kcmp order.  Add sched_setattr/
+       sched_getattr/renameat2.
+       * linux/s390/syscallent.h: Add sched_setattr/sched_getattr/renameat2.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Add sched_setattr/sched_getattr.
+
+       renameat2: add decoding support.
+       * file.c (decode_renameat, sys_renameat2): New functions.
+       (sys_renameat): Use decode_renameat.
+       * pathtrace.c (pathtrace_match): Handle sys_renameat2.
+       * linux/syscall.h (sys_renameat2): New prototype.
+       * xlat/rename_flags.in: New file.
+
+2014-08-14  Mike Frysinger  <vapier@gentoo.org>
+
+       CREDITS: fix generation in out of tree builds.
+       The {...} code changes the working dir with `cd`, but the commands outside
+       of that block expects to be in the original dir.  Change to a subshell so
+       the path outside of this block remains unchanged.
+
+       * Makefile.am ($(srcdir)/CREDITS): Change {...} to (...).
+
+       ia64: add missing syscalls.
+       When the preadv/pwritev syscalls were added, the ones before it in the
+       ia64 list were missed, so all the syscalls there and later were not in
+       the right location (causing things to be decoded incorrectly).
+
+       Add the missing syscalls before preadv which also re-aligns all the
+       syscalls after that point.  This fixes the uio.test.
+
+       * linux/ia64/syscallent.h: Add syscalls 1310 through 1318.
+
+       ia64: fix sigaction decoding.
+       Looks like ia64 doesn't have sa_restorer either, yet still defines
+       SA_RESTORER.  Deploy the same trick that HPPA is using to make the
+       test pass.
+
+       * signal.c (SA_RESTORER): Undefine when IA64 is defined.
+       (struct new_sigaction) [IA64]: Disable sa_restorer.
+
+2014-08-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: skip detach-stopped.test when PTRACE_SEIZE doesn't work.
+       detach-stopped.test is known to fail when PTRACE_SEIZE is not available,
+       so skip the test in that case.
+
+       * tests/detach-stopped.test: Check for "strace -d" output and skip the
+       test when it says that PTRACE_SEIZE doesn't work.
+
+2014-08-11  Erik Johansson  <erik@ejohansson.se>
+
+       sh: fix syscall numbering for recv and sendto.
+       * linux/sh/syscallent.h: Swap recv and sendto syscall entries.
+
+2014-08-11  Mike Frysinger  <vapier@gentoo.org>
+
+       tests: fix uio building w/out preadv/pwritev.
+       The preadv/pwritev symbols weren't added to glibc until the 2.10 release,
+       so trying to build the uio test leads to link failures.  Add configure
+       tests and update uio.test to handle this.
+
+       * configure.ac (AC_CHECK_FUNCS): Add preadv/pwritev.
+       * tests/uio.c: Include config.h.
+       (main): Check for HAVE_PREADV and HAVE_PWRITEV.
+       * tests/uio.test: Check exit status of uio helper.
+
+       tests: ignore *.tmp files.
+       The tests like to generate random .tmp files, so ignore them.
+
+       * tests/.gitignore: Add *.tmp.
+
+       tests: fix shell errors in detach tests.
+       The current detach test code does:
+               set -e
+               ...
+               cleanup() {
+                       set +e
+                       kill ...
+                       wait ...
+               }
+               ...
+               cleanup
+               exit 0
+
+       The problem is that while `set -e` is disabled for the body of the
+       cleanup function, it isn't necessarily disabled in the caller scope.
+       So if the return value of the cleanup function (`wait` in this case)
+       is non-zero, the script ends up failing overall.
+
+       Add an explicit return 0 to the cleanup function so that we don't kill
+       the overall test pipeline.
+
+       * tests/detach-running.test (cleanup): Add return 0.
+       * tests/detach-sleeping.test (cleanup): Likewise.
+       * tests/detach-stopped.test (cleanup): Likewise.
+
+       set_ptracer_any: add a little documentation.
+       This way I don't have to keep reading up on these options and wondering
+       why the code isn't aborting when the call fails.
+
+       * tests/set_ptracer_any.c (main): Note prctl failures are ok.
+
+2014-08-10  Mike Frysinger  <vapier@gentoo.org>
+
+       signal: fix thinko in sa_restorer.
+       Previous commit here re-added the bugs trying to be fixed due to a
+       logic thinko.  The patches were tested in isolation and hand merged
+       later.  Oops.
+
+       * signal.c (struct new_sigaction): Change || to &&.
+
+2014-08-09  Mike Frysinger  <vapier@gentoo.org>
+
+       sigaction test: support arches w/out SA_RESTORER and swapped args.
+       Running Linux 3.15 (sparc64) and glibc 2.17 (sparc32) triggers a
+       rt_sigaction call that does not use SA_RESTORER and has an order
+       where it inserts a restorer and a size.  The current tests don't
+       support that ordering, so add another regex.
+
+       * tests/sigaction.awk: Support no SA_RESTORER and swapped args.
+
+       alpha/sparc: fix arg count for rt_sigaction.
+       Both these arches have a rt_sigaction syscall that takes 5 args, not 4.
+
+       * linux/alpha/syscallent.h (rt_sigaction): Change nargs to 5.
+       * linux/sparc/syscallent.h (rt_sigaction): Change nargs to 5.
+
+       hppa: fix sigaction decoding.
+       Since the rt_sigaction syscall on hppa doesn't have a sa_restorer,
+       do not include it in the kernel struct.
+
+       We also have to undefine SA_RESTORER so that code doesn't try to
+       use it.  The headers will export this, but the syscall doesn't
+       actually respect it.
+
+       * signal.c (SA_RESTORER): Undefine when HPPA is defined.
+       (struct new_sigaction): Disable sa_restorer on hppa.
+
+       alpha: fix sigaction decoding.
+       Since the rt_sigaction syscall on alpha doesn't have a sa_restorer,
+       do not include it in the kernel struct.
+
+       * signal.c (struct new_sigaction): Disable sa_restorer on alpha.
+
+2014-08-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for -yy option support.
+       * defs.h (show_fd_path): Change type to unsigned int.
+       * strace.c (show_fd_path): Likewise.
+       (init): Handle repeated -y option.
+
+2014-08-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix preadv/pwritev offset decoding on ILP32 architectures.
+       This fixes regression introduced by the previous commit.
+
+       * io.c (print_llu_from_low_high_val) [SIZEOF_LONG != SIZEOF_LONG_LONG]:
+       Cast argument to unsigned long before casting it to unsigned long long.
+
+       Fix preadv/pwritev offset decoding on bigendian architectures.
+       This partially reverts commit 7845a42b39e59e904d01e75e21f7bc7eb6462560.
+
+       * util.c (printllval): Remove align argument.
+       * defs.h (printllval): Update prototype.
+       (printllval_aligned, printllval_unaligned): Remove.
+       * file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64,
+       sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2,
+       sys_fallocate): Replace printllval_aligned call with printllval.
+       * io.c (sys_pread, sys_pwrite): Likewise.
+       (print_llu_from_low_high_val): New function.
+       (sys_preadv, sys_pwritev): Use it instead of printllval_unaligned.
+
+2014-08-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Decode file descriptors returned by accept and accept4 syscalls.
+       * net.c (do_accept): Rename to do_sockname.
+       (sys_accept, sys_accept4): Update callers, return RVAL_FD.
+       (sys_getsockname, sys_getpeername): Call do_sockname directly.
+       * tests/net-fd.test: Update.
+
+2014-08-01  Mike Frysinger  <vapier@gentoo.org>
+
+       x32: update io_{setup,submit} syscalls.
+       Starting in 3.16, these two syscalls have gotten their own entry
+       point for x32.  See linux 7fd44dacdd803c0bbf38bf478d51d280902bb0f1.
+
+       * linux/x32/syscallent.h: Change existing io_{setup,submit} to 64bit,
+       and add new entry points for x32 specifically.
+
+2014-06-18  Max Filippov  <jcmvbkbc@gmail.com>
+
+       xtensa: sort values in struct_user_offsets.
+       Otherwise ptrace syscall argument decoding is wrong:
+         ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x4048eb]) = 0
+         ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x3fa6cd30]) = 0
+         ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x8040676d]) = 0
+       instead of
+         ptrace(PTRACE_PEEKUSER, 296, pc, [0x4048eb]) = 0
+         ptrace(PTRACE_PEEKUSER, 296, a1, [0x3fa6cd30]) = 0
+         ptrace(PTRACE_PEEKUSER, 296, a0, [0x8040676d]) = 0
+
+       * process.c (struct_user_offsets) [XTENSA]: Sort values.
+
+2014-06-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Document -k option as experimental.
+       strace -k does not produce a reliable output on all supported
+       configurations yet, even basic strace-k.test is known to fail
+       on some of them.
+
+       * strace.c (usage): Document -k option as experimental.
+       * strace.1: Likewise.
+       * NEWS: Likewise.
+
+       tests: robustify -k test.
+       Split stack-fcall.c into several compilation units so that intermediate
+       function calls would not be optimized out by compiler.
+
+       * tests/stack-fcall.c: Move intermediate functions to ...
+       * tests/stack-fcall-*.c: ... new files.
+       * tests/Makefile.am (stack_fcall_SOURCES): Add stack-fcall-*.c.
+
+2014-06-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: enhance -k test.
+       Add two more function calls to the stack.  Suggested by Masatake YAMATO.
+
+       * tests/stack-fcall.c (f1): Rename to f3.
+       (f1, f2): New functions.
+       * tests/strace-k.test: Update.
+
+       unwind: ignore memory mappings that have no PROT_EXEC bit set.
+       * unwind.c (build_mmap_cache): For each memory mapping being scanned,
+       save its PROT_EXEC bit and skip the mapping if it is not set.
+
+       unwind: cleanup build_mmap_cache.
+       * unwind.c (build_mmap_cache): Move local variables to the code branch
+       where they are used.  Check return code of sscanf and strdup.  Do not
+       treat unusual memory mappings as fatal errors.  Do not skip memory
+       mappings with path names starting with "[".
+
+       unwind: remove unused field from mmap_cache_t.
+       * unwind.c (mmap_cache_t): Remove "deleted" field.
+       (build_mmap_cache): Remove initialization of "deleted" field.
+
+2014-06-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       unwind: refactor stacktrace_walk.
+       * unwind.c (stacktrace_walk): Move stack frame printing code
+       to separate function print_stack_frame.
+
+       unwind: constify binary_filename and symbol_name functions arguments.
+       * unwind.c (call_action_fn, print_call_cb, sprint_call_or_error,
+       queue_put, queue_put_call): Add const qualifier to binary_filename and
+       symbol_name arguments.
+
+2014-06-11  Luca Clementi  <luca.clementi@gmail.com>
+
+       unwind: disable stack trace with multiple personalities.
+       * unwind.c (unwind_cache_invalidate, unwind_print_stacktrace,
+       unwind_capture_stacktrace): Disable stack tracing of non-default
+       personality processes.
+
+2014-06-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       unwind: rename function_off_set to function_offset.
+       * unwind.c (call_action_fn, stacktrace_walk, STACK_ENTRY_SYMBOL_FMT,
+       print_call_cb, sprint_call_or_error, queue_put, queue_put_call):
+       Rename function_off_set to function_offset.
+
+       unwind: fix a bug in range updating of binary search.
+       * unwind.c (print_stacktrace): Fix another off-by-one error in binary search.
+
+       unwind: use fopen64 instead of fopen.
+       * unwind.c (fopen_for_input): Define to fopen64 iff
+       [_LARGEFILE64_SOURCE && HAVE_FOPEN64], otherwise define it to fopen.
+       (build_mmap_cache): Use fopen_for_input instead of fopen.
+
+       unwind: fix build on 32-bit architectures.
+       Fix compilation warnings in unwind.c on 32-bit architectures.
+       On some architectures getuid is actually getuid32, so change the test
+       to use getpid instead of getuid.
+
+       * unwind.c (STACK_ENTRY_SYMBOL_FMT): Explicitly cast function_off_set
+       to unsigned long.
+       (queue_put_error): Change the 3rd argument's type to unsigned long.
+       * tests/stack-fcall.c (f1): Use getpid instead of getuid.
+       * tests/strace-k.test: Likewise.
+
+       tests: robustify -w option test.
+       * tests/count.test: Allow nanosleep to spend a bit less time than 1 second.
+
+2014-06-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix delete_module decoding.
+       * xlat/delete_module_flags.in: New file.
+       * file.c (sys_delete_module): Move ...
+       * bjm.c (sys_delete_module): ... to here.
+       Decode 1st argument using printstr instead of printpath.
+       * NEWS: Mention it.
+
+2014-06-04  Zubin Mithra  <zubin.mithra@gmail.com>
+
+       Decode paths associated with file descriptors returned by syscalls.
+       * defs.h (RVAL_FD): New macro.
+       (RVAL_MASK, RVAL_STR, RVAL_NONE): Update.
+       * desc.c (sys_dup, sys_delete_module): New functions.
+       (do_dup2, decode_open, sys_creat): Change return value to RVAL_FD.
+       * linux/dummy.h (sys_delete_module, sys_dup): Remove.
+       * linux/syscall.h (sys_delete_module, sys_dup): New prototypes.
+       * syscall.c (trace_syscall_exiting): Handle RVAL_FD.
+
+2014-06-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       NEWS: Prepare for 4.9 release.
+
+       Warn about flags that have no effect with -c.
+       * strace.c (init): Issue a warning if -i, -k, -r, -t, -T, or -y is used
+       along with -c.
+       This fixes Debian bug #443895.
+
+       debian: enable security hardening features.
+       * debian/rules: Follow the advice in https://wiki.debian.org/Hardening
+       and enable maximum hardening as for programs that handle untrusted data.
+       Patch by Markus <waldeck@gmx.de>.
+
+       debian: update control file.
+       * debian/control (strace64): Fix a typo in package description.
+       Patch by Pascal De Vuyst <pascal.devuyst@gmail.com>.
+       (strace, strace-udeb): Add x32 to architecture list.
+       Patch by Guillaume Morin <guillaume@morinfr.org>.
+       (strace, strace-udeb): Add or1k to architecture list.
+       Patch by Christian Svensson <debian@cmd.nu>.
+       (strace, strace-udeb): Add arm64 to architecture list,
+       and remove defunct arm.
+       Patch by Wookey <wookey@debian.org>.
+
+       This fixes Debian bugs: #697625, #727018, #742235, #749956.
+
+       manpage: minor corrections.
+       $ groff -ww -mandoc -z strace.1
+       strace.1:65: warning: macro `IX' not defined
+
+       * strace.1: define IX macro as empty for groff.
+       Change remaining '-' as minus to '\-'.
+       Have two word spaces after a full stop as an end of sentence.
+       Use extra space ('\,' or '\/') between roman and italic characters.
+       Based on patch by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.
+       This fixes Debian bug #725987.
+
+2014-05-30  Masatake YAMATO  <yamato@redhat.com>
+
+       unwind: tests: add a test for -k option.
+       * tests/stack-fcall.c: New test target.
+       * tests/strace-k.test: New test driver.
+       * tests/Makefile.am (check_PROGRAMS): Add stack-fcall.
+       (TESTS): Add strace-k.test.
+       * tests/.gitignore: Add stack-fcall.
+
+       unwind: move stacktrace capturing and mmap cache invalidating to trace_syscall_entering
+       Instead of handling stacktrace capturing and mmap cache invalidating in
+       sys_* functions, handle them uniformly in trace_syscall_entering using
+       new flags introduced by previous two commits.
+
+       The patch is simpler than its older version(v3).  The value of
+       hide_log_until_execve is just ignored.  I found the value is nothing
+       to do with this patch.  unwind_cache_invalidate is mentioned only
+       once in trace_syscall_exiting.
+       Both are suggested by Dmitry Levin.
+
+2014-05-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       unwind: add SE and SI flags to syscall entries for all architectures.
+       Add SE flag to execve, exit, and exit_group syscall entries.
+       Add SI flag to brk, execve, mmap, mprotect, mremap, munmap,
+       remap_file_pages, shmat, and shmdt syscall entries.
+
+2014-05-30  Masatake YAMATO  <yamato@redhat.com>
+
+       unwind: introduce markers specifying the needs of special care in unwinding
+       Some system calls require capturing the stack trace before they are
+       processed in kernel.  Typical one is execve.  Some system calls require
+       invalidating mmap cache after they are processed in kernel.
+
+       In current implementation these requirements are handled directly by
+       appropriate syscall handlers.  However, it is difficult to keep the
+       source code maintainable using this approach to cover all system calls
+       which have such requirements.
+
+       A more generic way to implement this is to flag all syscalls that
+       require special processing, and handle these flags right in
+       trace_syscall_entering instead of changing syscall handlers.
+
+       This patch just defines new flags: STACKTRACE_INVALIDATE_CACHE and
+       STACKTRACE_CAPTURE_ON_ENTER.
+
+       The names of macros are suggested by Dmitry Levin.
+
+       unwind: enable dwarf cache of libunwind.
+       Here is the benchmark of the dwarf cache.
+
+       Target program:
+
+           #include <sched.h>
+           int main(void)
+           {
+             unsigned int max = 0x6fff, i;
+             for (i = 0; i < max; i++)
+               sched_yield();
+             return 0;
+           }
+
+       Command line:
+
+               ./strace -o /dev/null -k a.out
+
+       With the dwarf cache:
+
+           real        0m12.081s
+           user        0m3.858s
+           sys         0m8.194s
+
+       Without the dwarf cache:
+
+           real        0m22.326s
+           user        0m5.218s
+           sys         0m16.952s
+
+       unwind: report expected backtracing error.
+       When a file mmap'ed to the target process is unlink'ed, backtracing the
+       stack would fail.  Current implementation reports it as
+       "backtracing_error".  To avoid confusion, the message is changed to
+       "expected_backtracing_error".
+
+       Here is the reproducer:
+
+         $ cat ./p-deleted.c
+         #include <unistd.h>
+
+         int main(int argc, char **argv) {
+           return unlink(argv[0]) < 0;
+         }
+
+         $ strace -e unlink -k ./p-deleted
+         unlink("./p-deleted")                   = 0
+          > /usr/lib64/libc-2.18.so(unlink+0x7) [0xe7f17]
+          > /home/yamato/var/strace/t_unwind/p-deleted (deleted)(+0x0) [0x575]
+          > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65]
+          > backtracing_error [0x7ffff1365590]
+         +++ exited with 0 +++
+
+       p-deleted is deleted therefore backtracing_error is reported.  This
+       patch records the deleted marker when making mmap cache and refers the
+       recorded information in the case "backtracing_error" to switch the
+       message.
+
+       Here is the output of this patch:
+
+         $ strace -e unlink -k ./p-deleted
+         unlink("./p-deleted")                   = 0
+          > /usr/lib64/libc-2.18.so(unlink+0x7) [0xe7f17]
+          > /home/yamato/var/strace/t_unwind/p-deleted (deleted)(+0x0) [0x575]
+          > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65]
+          > expected_backtracing_error [0x7ffff1365590]
+         +++ exited with 0 +++
+
+       This solution is not perfect: if a file is unlink'ed after making the
+       mmap cache and before unwinding, strace cannot have a chance to record
+       the deleted marker.
+
+       In this version of patch, hardcoded magic number used in comparing "(delete)"
+       string is replaced with strlen as suggested by Dmitry Levin.
+
+       In old version of patch, the deleted entry was thrown away from mmap
+       cache to avoid to report "backtracing_error".  In this patch I keep it,
+       and just switch the error message.
+       Inspired by the review comment from Dmitry Levin.
+
+       unwind: call unwind_tcb_fin before printing detached message.
+       captured stacktrace is printed in unwind_tcb_fin if tcp->queue is not
+       empty.  This should happen before printing detached message, so
+       unwind_tcb_fin is moved to the top of droptcb.
+
+       This is implicitly suggested by Dmitry Levin in patch review process.
+
+       unwind: implement automatic mmap cache invalidation.
+       A mmap cache belonging to a tcb was updated when a system call which
+       changed the memory mapping was called.  This implementation was assumed
+       the mapping was changed only by the tcb.  However, this assumption is
+       incorrect if the target application is multi-threaded; more than two
+       tcbs can shared the same memory mapping and a tcb can modify it without
+       being noticed by the others.
+
+       This change introduces a global integer variable mmap_cache_generation,
+       and mmap_cache_generation field to struct tcb.  The variable
+       is incremented each time a process enters a syscall that can modify its
+       memory mapping.  Each tcb records the value of this variable at the
+       moment if  building its mmap cache.  Every mmap cache associated with
+       the given tcb can be validated by comparing its mmap_cache_generation
+       field with the variable mmap_cache_generation.
+
+       This implementation is inefficient.  If strace attaches two processes
+       which don't share the memory mapping, rebuilding mmap cache of a tcb
+       triggered by another tcb's mmap system call is not necessary.
+
+       unwind: introduce queue_t for capturing stacktrace.
+       This is the second step for splitting capturing from printing.
+
+       New `queue' field is added to tcb.  Captured stacktrace is stored here.
+       The field is initialized/finalized at unwind_tcb_init/unwind_tcb_fin.
+
+       New API function unwind_capture_stacktrace is added.  This function
+       captures the currest stack using stracktrace_walker and records it in
+       tcb.  It's printing is delayed to the next call of
+       unwind_print_stacktrace.
+
+       unwind_print_stacktrace is extended.  Now it checks queue field of
+       the given tcb at the start of function.  If the function finds a
+       captured stack trace, the latter is printed using stracktrace_walker.
+
+       Currently unwind_capture_stacktrace invocations are added directly to
+       handlers of mmap, munmap, mprotect, and execve.
+
+       Here is the difference of output with/without patch:
+
+       (without patch)
+         execve("./test-fork", ["./test-fork"], [/* 56 vars */]) = 0
+          > /usr/lib64/ld-2.18.so(check_one_fd.part.0+0x82) [0x11f0]
+
+       (with patch)
+         execve("./test-fork", ["./test-fork"], [/* 54 vars */]) = 0
+          > /usr/lib64/libc-2.18.so(execve+0x7) [0xbcd27]
+          > /home/yamato/var/strace/strace(exec_or_die+0x10c) [0x26ac]
+          > /home/yamato/var/strace/strace(startup_child+0x346) [0x134f6]
+          > /home/yamato/var/strace/strace(init+0x89f) [0x13dff]
+          > /home/yamato/var/strace/strace(main+0xa) [0x26ca]
+          > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65]
+          > /home/yamato/var/strace/strace(_start+0x29) [0x2799]
+
+       In older version output lines of captured elements were built when
+       printing.  In this version they are built when capturing the stack.
+       As result, unneeded dynamic memory allocations are avoided.
+       Suggested by Luca Clementi.
+
+       In older version the combination of snprintf and realloc were used.
+       In this version they are replaced with asprintf.
+       Suggested by Dmitry Levin.
+
+       unwind: introduce own debug macro.
+       * unwind.c (DPRINTF): New macro, to be utilized in debugging cache
+       management code.
+
+       unwind: introduce stacktrace_walker.
+       In current implementation, the stack trace is captured and printed at
+       the same time, in trace_syscall_exiting.  This approach cannot
+       provide user expected information when a system call changes the
+       memory mapping.  In such cases, the stack trace should be captured on
+       entering syscall and printed on exiting.
+
+       As the initial step for splitting capturing from printing, this change
+       introduces stacktrace_walker utility function.  It can be used both for
+       capturing in trace_syscall_entering and printing in
+       trace_syscall_exiting.
+
+       unwind: give all exported functions "unwind_" prefix.
+       * unwind.c (init_unwind_addr_space): Rename to unwind_init.
+       (init_libunwind_ui): Rename to unwind_tcb_init.
+       (free_libunwind_ui): Rename to unwind_tcb_fin.
+       (delete_mmap_cache): Rename to unwind_cache_invalidate.
+       (print_stacktrace): Rename to unwind_print_stacktrace.
+       * defs.h: Update prototypes.
+       * mem.c: All callers updated.
+       * process.c: Likewise.
+       * strace.c: Likewise.
+       * syscall.c: Likewise.
+
+       unwind: delete mmap cache in free_libunwind_ui.
+       free_libunwind_ui is expected to release all unwind related resources
+       attached to tcp.
+
+       * strace.c (droptcb): Move delete_mmap_cache call ...
+       * unwind.c (free_libunwind_ui): ... to here.
+
+       unwind: make alloc_mmap_cache function local.
+       * defs.h (alloc_mmap_cache): Remove.
+       * unwind.c (alloc_mmap_cache): Add static qualifier.
+
+       unwind: fix a bug in range updating of binary search.
+       * unwind.c (print_stacktrace): Fix off-by-one error in binary search.
+
+2014-05-30  Luca Clementi  <luca.clementi@gmail.com>
+
+       Add -k option to print stack trace after each syscall.
+       Print the stack trace of the traced process after each system call when
+       -k option is specified.  It is implemented using libunwind to unwind the
+       stack and to obtain the function name pointed by the IP.
+
+       Based on the code that was originally taken from strace-plus
+       of Philip J. Guo.
+
+       * configure.ac: Add --with-libunwind option.  Check libunwind support.
+       * Makefile.am: Add libunwind support.
+       * defs.h (struct tcb) [USE_LIBUNWIND]: Append libunwind specific fields.
+       [USE_LIBUNWIND] (stack_trace_enabled, alloc_mmap_cache,
+       delete_mmap_cache, print_stacktrace): New prototypes.
+       * mem.c (print_mmap, sys_munmap, sys_mprotect): Add libunwind support.
+       * process.c (sys_execve): Likewise.
+       * strace.c (usage, alloctcb, droptcb, init): Likewise.
+       * syscall.c (trace_syscall_exiting): Likewise.
+       * unwind.c: New file.
+       * strace.1: Document -k option.
+
+2014-05-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sysctl: update CTL_*, KERN_*, NET_*, and VM_* constants.
+       * configure.ac (AC_CHECK_DECLS): Add CTL_*, KERN_*, NET_*, and
+       VM_* constants.
+       * system.c (CTL_PROC, CTL_CPU): Remove definitions.
+       * xlat/sysctl_*.in: Update.
+
+       Check for constants used by waitid function.
+       * configure.ac (AC_CHECK_DECLS): Add P_* constants.
+
+       Check for LO_FLAGS_READ_ONLY constant.
+       * configure.ac (AC_CHECK_DECLS): Add LO_FLAGS_READ_ONLY.
+
+       Compress blank lines.
+       Suppress empty lines left after automated xlat conversion.
+
+       xlat: cleanup the aftermath of automatic conversion.
+
+       Generate xlat/*.in files.
+       Automatically convert xlat structures from *.c files to xlat/*.in files
+       using "./generate_xlat_in.sh *.c" command.
+
+       Rename several xlat structures to avoid collisions.
+       * bjm.c (which): Rename to qm_which.
+       * ipc.c (msg_flags): Rename to ipc_msg_flags.
+       * time.c (which): Rename to itimer_which.
+
+       Enhance xlat generator.
+       * xlat/gen.sh: Define all xlat structs not declared in defs.h as static.
+       Some symbolic constants are not macros, extend #ifdef check to cover
+       symbolic constants checked by AC_CHECK_DECLS.
+       Handle complex symbolic constants in SYMBOL|... form.
+       Handle symbolic constants in 1<<SYMBOL form.
+       Handle numeric constants.
+       Implement #unconditional directive that turns off preprocessor checks.
+       Implement #unterminated directive that turns off adding XLAT_END.
+
+       Use bootstrap script consistently.
+       Now that ./xlat/gen.sh has to be run before autoreconf,
+       replace all autoreconf calls with ./bootstrap call.
+
+       * bootstrap: Forward arguments to autoreconf.
+       * build_static_example.sh: Replace autoreconf call with bootstrap call.
+       * make-dist: Likewise.
+       * qemu_multiarch_testing/README: Likewise.
+
+2014-05-30  Mike Frysinger  <vapier@gentoo.org>
+
+       Implement xlat generator.
+       * bootstrap: New file.
+       * xlat/gen.sh: Likewise.
+       * Makefile.am: Include xlat/Makemodule.am
+       (EXTRA_DIST): Add $(XLAT_INPUT_FILES), $(XLAT_HEADER_FILES), and
+       xlat/gen.sh.
+
+2014-05-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix SCM_RIGHTS test for big-endian systems.
+       * tests/scm_rights.c (main): Send zero integer to avoid issues with
+       endianness.
+       * tests/scm_rights-fd.test: Update grep patterns.
+
+       Decode file descriptors passed via SCM_RIGHTS control messages.
+       * net.c (printcmsghdr): Print descriptors from SCM_RIGHTS control
+       messages using printfd.
+       * tests/scm_rights.c: New file.
+       * tests/scm_rights-fd.test: New test.
+       * tests/Makefile.am (check_PROGRAMS): Add scm_rights.
+       (TESTS): Add scm_rights-fd.test.
+       * tests/.gitignore: Add scm_rights and uio.
+
+       tests: add a test for -c and -w options.
+       * tests/count.test: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+2014-05-29  Mark Hills  <Mark.Hills@framestore.com>
+
+       Optionally produce stats on syscall latency.
+       Time spent in system time is not useful where a syscall depends on some
+       non-CPU resource, eg. typically open() or stat() to a network drive.
+
+       This patch adds a new flag (-w) to produce a summary of the time
+       difference between beginning and end of the system call (ie. latency)
+
+       This functionality has been useful to profile slow processes that
+       are not CPU-bound.
+
+2014-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Constify count_syscall function.
+       * count.c (count_syscall): Add const qualifier to timeval argument and
+       rename it.  Store the wall clock time spent while in syscall in separate
+       timeval variable.
+       * defs.h (count_syscall): Update prototype.
+       * syscall.c (trace_syscall_exiting): Update count_syscall invocation.
+
+       Constify tv_* functions.
+       * defs.h (tv_nz, tv_cmp, tv_float, tv_add, tv_sub, tv_mul, tv_div): Add
+       const qualifier to read only arguments.
+       * util.c (tv_nz, tv_cmp, tv_float, tv_add, tv_sub, tv_mul, tv_div):
+       Likewise.
+
+2014-05-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use printstr for sethostname, setdomainname, and gethostname decoding.
+       The argument passed to sethostname and setdomainname syscalls, as well
+       as the string returned by gethostname syscall, is not a pathname, so
+       printpathn is not the right method for its decoding.
+
+       * process.c (sys_sethostname, sys_setdomainname): Decode 1st argument
+       using printstr instead of printpathn.
+       [ALPHA] (sys_gethostname): Likewise.
+
+2014-05-21  James Hogan  <james.hogan@imgtec.com>
+
+       Fix {get,set}rlimit decoding with unreliable SIZEOF_RLIM_T.
+       When strace is built with large file support definitions in CFLAGS (as
+       may be provided by buildroot) the C library headers may expose a 64-bit
+       rlim_t even though the struct rlimit fields used by the system call
+       interface are only 32-bit.  The SIZEOF_RLIM_T will then be 8 which
+       results in bad decoding of the getrlimit and setrlimit syscalls.
+
+       This is fixed by replacing unreliable SIZEOF_RLIM_T based checks with
+       checks for current_wordsize.
+
+2014-05-13  Masatake YAMATO  <yamato@redhat.com>
+
+       Enhance setns syscall decoding.
+       * process.c (sys_setns): New function.
+       Decode the 2nd syscall argument using clone_flags.
+       * linux/syscall.h (sys_setns): New prototype.
+       * linux/dummy.h (sys_setns): Remove.
+
+2014-05-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       mips: fix syscall entries that should have TP flag set.
+
+       xtensa: fix unshare syscall entry.
+
+       alpha, hppa, mips n64: fix waitid syscall entry.
+
+       Add TM flag to shmat and shmdt syscall entries.
+
+       Alias sys_vfork to sys_fork.
+       * process.c (sys_vfork): Remove.
+       * linux/syscall.h (sys_vfork): Likewise.
+       * linux/dummy.h (sys_vfork): Alias to sys_fork.
+       * linux/alpha/syscallent.h: Fix vfork entry.
+       * util.c (setbpt): Do not check for sys_vfork.
+       * syscall.c (syscall_fixup_for_fork_exec): Likewise.
+
+2014-04-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       epoll_ctl: fix EPOLL_CTL_DEL argument decoding.
+       * desc.c (sys_epoll_ctl): Do not parse the event structure for
+       EPOLL_CTL_DEL operation.
+
+       Reported-by: Марк Коренберг <socketpair@gmail.com>
+
+       Update CLOCK_* constants.
+       * time.c (clocknames): Add CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM,
+       CLOCK_BOOTTIME_ALARM, CLOCK_SGI_CYCLE, and CLOCK_TAI.
+       Fixes RH#1088455.
+
+       Fix preadv/pwritev offset decoding.
+       * util.c (printllval): Add align argument.
+       * defs.h (printllval): Update prototype.
+       (printllval_aligned, printllval_unaligned): New macros.
+       * file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64,
+       sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2,
+       sys_fallocate): Replace printllval call with printllval_aligned.
+       * io.c (sys_pread, sys_pwrite): Likewise.
+       (sys_preadv, sys_pwritev): Replace printllval call with
+       printllval_unaligned.
+       * linux/arm/syscallent.h: Set the number of preadv and pwritev
+       arguments to 5.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+
+       Reported-by: Dima Kogan <dima@secretsauce.net>
+
+2014-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: add a test for pread/pwrite and preadv/pwritev offset decoding.
+       * tests/uio.c: New file.
+       * tests/uio.test: New test.
+       * tests/Makefile.am (check_PROGRAMS): Add uio.
+       (uio_CFLAGS): Define.
+       (TESTS): Add uio.test.
+
+2014-04-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Refactor LDT decoding.
+       * configure.ac (AC_CHECK_TYPES): Remove struct user_desc.
+       * ldt.c: New file.
+       * Makefile.am (strace_SOURCES): Add ldt.c.
+       * mem.c: Do not include <asm/ldt.h>.
+       (print_ldt_entry): Remove.
+       (sys_modify_ldt, sys_set_thread_area, sys_get_thread_area): Move...
+       * ldt.c: ... here.
+       * process.c: Do not include <asm/ldt.h>.
+       (sys_clone) [I386 || X86_64 || X32]: Use print_user_desc.
+
+2014-04-10  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Make int3 example in comments more cut-n-pastable.
+       I found that I use it quite often. Lets make it so that
+       after cut-n-pasting it into a file, there is no need
+       to edit the result (e.g. no need to remove C comment
+       chars from every line.
+
+2014-04-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       mips: enable decoding of set_thread_area.
+       * linux/dummy.h [MIPS]: Do not redirect sys_set_thread_area to printargs.
+       * mem.c [MIPS] (sys_set_thread_area): Define.
+
+       x86_64, x32: enable decoding of modify_ldt, get_thread_area, and set_thread_area
+       * linux/dummy.h [X86_64 || X32]: Do not redirect sys_modify_ldt,
+       sys_get_thread_area, and sys_set_thread_area to printargs.
+
+       x32: decode clone LDT user_desc entries for x86 processes.
+       * mem.c [X32]: Include asm/ldt.h.
+       [X32] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area,
+       sys_get_thread_area): Define.
+       * process.c [X32]: Include asm/ldt.h.
+       (sys_clone) [X32]: Decode LDT entry if current_personality == 1.
+
+2014-04-09  Elliott Hughes  <enh@google.com>
+
+       x86-64: decode clone LDT user_desc entries for x86 processes.
+       * mem.c [X86_64]: Include asm/ldt.h.
+       [X86_64] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area,
+       sys_get_thread_area): Define.
+       * process.c [X86_64]: Include asm/ldt.h.
+       (sys_clone) [X86_64]: Decode LDT entry if current_personality == 1.
+
+2014-04-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       x32: fix clone(2) argument order for x86 processes.
+       Apply the same fix that was made for x86_64.
+
+       * process.c [X32] (ARG_CTID, ARG_TLS): Take current
+       personality into account.
+
+2014-04-09  Elliott Hughes  <enh@google.com>
+
+       x86-64: fix clone(2) argument order for x86 processes.
+       Without this patch, strace claims that parent_tidptr == tls, which is
+       clearly wrong.  It is expected that parent_tidptr == child_tidptr.
+
+       * process.c [X86_64] (ARG_CTID, ARG_TLS): Take current
+       personality into account.
+
+2014-04-06  Elliott Hughes  <enh@google.com>
+
+       aarch64: Fix decoding of arm struct stat64.
+       We need to handle this situation more like x86-64.  32-bit arm and i386
+       actually have a common struct stat64, except the arm one must not be
+       packed.  Additionally, on aarch64 the 32-bit personality is personality 0.
+
+2014-03-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ARM EABI: disable OABI support by default.
+       OABI is rarely used in ARM EABI systems nowadays, so disable its support
+       by default.  Add --enable-arm-oabi option to enable ARM OABI support.
+
+       * configure.ac: New option --enable-arm-oabi.
+       * syscall.c (get_scno) [ARM]: Check ENABLE_ARM_OABI macro defined by
+       configure instead of undocumented STRACE_KNOWS_ONLY_EABI macro.
+
+2014-03-12  Elliott Hughes  <enh@google.com>
+
+       Fix stat decoding for LP64 bionic.
+       Patch fb642bb6d63f7ffe2228bf48a6008bc8f56f67ff fixed building with
+       HAVE_STAT64 for aarch64 with uapi kernel headers but not x86_64.
+       The workaround needed to be applied to all LP64 architectures, not
+       just aarch64.  This patch fixes that and adds an explanatory comment.
+
+2014-03-11  Masatake YAMATO  <yamato@redhat.com>
+
+       Decode protocol argument for PF_NETLINK sockets.
+       * net.c (protocols): Rename to inet_protocols.
+       [PF_NETLINK] (netlink_protocols): New xlat structure.
+       (sys_socket): Rename protocols to inet_protocols.
+       [PF_NETLINK]: Decode protocol argument using netlink_protocols.
+
+       Acked-by: Mike Frysinger <vapier@gentoo.org>
+
+2014-03-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Cleanup socketpair decoding.
+       The only supported domain for socketpair syscall is AF_UNIX, so
+       no decoding related to other domains is required for socketpair.
+
+       * net.c (sys_socketpair): Remove support for PF_INET and PF_IPX domains,
+       print the protocol argument as is.
+
+       printsiginfo: add SIGSYS decoding.
+       * configure.ac (AC_CHECK_MEMBERS): Check for siginfo_t.si_syscall.
+       * signal.c (SYS_SECCOMP): Define if not yet defined.
+       (sigsys_codes): new xlat structure.
+       (printsiginfo): Decode SIGSYS.
+
+       Update siginfo codes.
+       * signal.c (siginfo_codes): Add SI_DETHREAD.
+
+       Factor out printing of si_pid and si_uid members of siginfo_t.
+       * signal.c (printsigsource): New function.
+       (printsiginfo): Use it.
+
+2014-03-10  Elliott Hughes  <enh@google.com>
+
+       Improve SI_TIMER decoding.
+       Decode siginfo_t more clearly for si_code SI_TIMER.
+       The 'pid' is actually a POSIX timer id, and the 'uid' is actually the
+       overrun.
+       Also factor out the si_value dumping so it's the same for every si_code.
+
+2014-03-03  Elliott Hughes  <enh@google.com>
+
+       aarch64: fix decoding of arm syscall numbers.
+       If an aarch64 strace is tracing a process using the arm personality, it
+       also needs to call the shuffle_scno function for the ARM-specific
+       syscalls.
+
+       * syscall.c (shuffle_scno): Define on AARCH64.
+       (get_scno) [AARCH64]: Call shuffle_scno when the tracee is in 32-bit mode.
+
+2014-03-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix fcntl decoding.
+       Assume that F_SETLK64, F_SETLKW64, and F_GETLK64 are either defined or
+       not defined altogether.
+       Do not assume that sizeof(off_t) < sizeof(long long) when F_SETLK64 is
+       undefined.
+
+       This change fixes build with musl libc on x86.
+
+       * configure.ac: Define SIZEOF_OFF_T.
+       * desc.c (USE_PRINTFLOCK64): New macro.
+       (struct flock64, printflock64): Do not define on X32.
+       (printflock): Replace X32 specific workaround with SIZEOF_OFF_T check.
+       Fix printing off_t members of struct flock.
+       (sys_fcntl): Use USE_PRINTFLOCK64.
+
+2014-03-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sys_fcntl: remove F_FREESP and F_FREESP64 support.
+       F_FREESP and F_FREESP64 fcntl commands are not available in Linux
+       and therefore the code implementing their decoding is useless.
+       Besides that, F_FREESP64 decoding is too complicated to support.
+
+       * desc.c (fcntlcmds): Remove F_FREESP and F_FREESP64.
+       Remove F_FREESP64 from the check whether to define struct flock64.
+       (sys_fcntl): Remove F_FREESP and F_FREESP64 support.
+
+2014-02-28  Elliott Hughes  <enh@google.com>
+
+       Add multi-personality support to struct old_sigaction decoding.
+       struct sigaction is another structure that contains members
+       whose size differs between 32-bit and 64-bit personalities.
+
+       * signal.c [HAVE_SIGACTION] (old_sigaction32): New structure.
+       [HAVE_SIGACTION] (decode_old_sigaction): Decode 32-bit struct
+       old_sigaction on a 64-bit host.
+
+       Fix decoding of arm struct stat64 by aarch64 strace.
+       aarch64's uapi header files have a struct stat but no struct stat64.
+       To correctly decode a 32-bit process' s struct stat64 we need
+       HAVE_STAT64, but then the build fails because there is no struct stat64.
+       Luckily, the aarch64 struct stat is structurally equivalent to the arm
+       struct stat64, so we can just reuse that.
+
+       * file.c [AARCH64] (stat64): Define to stat.
+
+2014-02-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Remove obsolete ioctlsort.c.
+       The generic version of ioctlsort.c became obsolete after commit
+       v4.6-240-g5afdf12 that removed its last non-Linux users.
+
+       * ioctlsort.c: Remove.
+       * Makefile.am (EXTRA_DIST): Remove ioctlsort.c.
+
+       Reported-by: Elliott Hughes <enh@google.com>
+
+2014-02-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Add multi-personality support to stack_t decoding.
+       stack_t is one of many structures that contain members
+       whose size differs between 32-bit and 64-bit personalities.
+
+       * signal.c (print_stack_t): Decode 32-bit stack_t on a 64-bit host.
+
+       Reported-by: Elliott Hughes <enh@google.com>
+
+       Rewrite signal mask decoding without sigset_t.
+       The sigset_t provided by libc is not quite convenient.
+       In glibc, sigset_t is an array with space for 1024 bits, which is much
+       more than required: all architectures supported by Linux have only 64
+       signals except MIPS, which has 128.
+       In bionic libc, LP32 sigset_t is only 4 bytes long, which is less than
+       necessary.
+
+       With this change, signal mask is decoded without use of intermediate
+       sigset_t structure, which saves us some cpu cycles in case of glibc with
+       its inflated sigset_t, and enables build with libcs where sigset_t is
+       broken.
+
+       Old implementation used to check each signal number in the given signal
+       mask twice using sigismember().
+       New implementation is based on popcount and next_set_bit() so it's
+       noticeably faster.
+
+       * configure.ac: Check for __builtin_popcount.
+       * signal.c: Ensure that NSIG >= 32.
+       (sprintsigmask, sprintsigmask_long, printsigmask): Remove.
+       (popcount32, sprintsigmask_n): New functions.
+       (tprintsigmask_addr, sprintsigmask_val, tprintsigmask_val): New macros.
+       (print_sigset_addr_len, sys_sigsetmask, sys_sigreturn, sys_siggetmask,
+       sys_sigsuspend, sys_sigprocmask, decode_new_sigaction): Update to use
+       new signal mask decoding interface.
+       * tests/sigaction.c (main): Add a test with almost filled signal mask.
+       * tests/sigaction.awk: Update.
+
+2014-02-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix build with Bionic libc.
+       Add generic tests for fopen64 and fputs_unlocked functions to fix build
+       with Bionic libc that does not provide them.
+
+       * configure.ac (AC_CHECK_FUNCS): Add fopen64 and fputs_unlocked.
+       * strace.c [_LARGEFILE64_SOURCE]: Use fopen instead of fopen64
+       if !HAVE_FOPEN64.
+       Use fputs instead of fputs_unlocked if !HAVE_FPUTS_UNLOCKED.
+       * vsprintf.c: Use fputs instead of fputs_unlocked
+       if !HAVE_FPUTS_UNLOCKED.
+
+       Reported-by: Elliott Hughes <enh@google.com>
+
+2014-02-25  James Yang  <james.yang@freescale.com>
+
+       powerpc64: fix 64-bit process detection on embedded.
+       * syscall.c (get_scno) [POWERPC64]: Fix 64-bit process detection
+       on embedded powerpc.
+
+2014-02-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Do not compile scsi ioctl decoding if <scsi/sg.h> is not available.
+       Add a generic test for <scsi/sg.h> availability to fix build with
+       Bionic libc that does not provide <scsi/sg.h>.
+
+       * configure.ac (AC_CHECK_HEADERS): Add scsi/sg.h.
+       * ioctl.c (ioctl_decode): Do not call scsi_ioctl if !HAVE_SCSI_SG_H.
+       * scsi.c: Do not compile scsi ioctl decoding if !HAVE_SCSI_SG_H.
+
+       Reported-by: Elliott Hughes <enh@google.com>
+
+2014-02-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Revert "Add support for Altera's Nios-II softcore architecture"
+       The patch originally submitted by Ezequiel García was OK, but I somehow
+       managed to mangle it so that most of the patch was not applied.
+
+       According to Ezequiel García, an architecture port based on the generic
+       syscall ABI is in progress.
+
+       This reverts commit 61e426e87ac81be4b4ff9de581635b4ea585624f.
+
+2014-02-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: tighten sigaction check.
+       * tests/sigaction.awk: Check that input conatins all expected lines.
+
+       Fix sigaction reporting on non-x86 architectures.
+       If SA_RESTORER is not defined by libc headers but defined by kernel
+       headers, use the definition provided by kernel headers for proper
+       sigaction decoding.
+
+       * signal.c [!SA_RESTORER]: Define to ASM_SA_RESTORER if the latter is
+       defined, regardless of architecure.
+
+       Check for SA_RESTORER definition in <asm/signal.h>
+       Kernel header <asm/signal.h> cannot be included from regular code
+       because it conflicts with libc headers, but SA_RESTORER is needed in
+       signal.c, so SA_RESTORER value is forwarded from <asm/signal.h> to
+       config.h using a configure check.
+
+       * configure.ac (ASM_SA_RESTORER): Define if SA_RESTORER is defined
+       in <asm/signal.h>.
+
+2014-02-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       arm: fix compilation warning.
+       Fix "dereferencing type-punned pointer will break strict-aliasing rules"
+       warning introduced by commit v4.8-54-g670b21b.
+
+       * signal.c (sys_sigreturn) [ARM]: Avoid dereferencing type-punned pointers.
+
+2014-02-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       kexec: fix typo.
+       * kexec.c (print_kexec_segments) [SUPPORTED_PERSONALITIES == 1]: Fix typo.
+
+2014-02-06  Ezequiel Garcia  <ezequiel@vanguardiasur.com.ar>
+
+       Add support for Altera's Nios-II softcore architecture.
+       This commit adds strace support for Altera's Nios-II official
+       kernel port as found in git://git.rocketboards.org/linux-socfpga.git
+
+       Notice that this an out-of-tree kernel architectural port, and uses the
+       legacy (non-generic) system call ABI. In particular, the port doesn't
+       support PTRACE_GETREGSET, so the implementation is based on PTRACE_GETREGS.
+
+       Given it's mandatory for new architectures to support the generic
+       syscall ABI and PTRACE_GETREGSET, if the nios2 architecure is ever
+       mainlined, the strace support will have to be re-factored accordingly.
+
+       * linux/nios2/ioctlent.h.in: New file.
+       * linux/nios2/syscallent.h: Likewise.
+       * Makefile.am (EXTRA_DIST): Add linux/nios2/ioctlent.h.in and
+       linux/nios2/syscallent.h.
+       * configure.ac: Add NIOS2 to the list of supported architectures.
+       * defs.h [NIOS2]: Use register reading system.
+       * process.c (struct_user_offsets): Add NIOS2 support.
+       * syscall.c (get_regs, get_scno, get_syscall_args,
+       get_syscall_result, get_error): Likewise.
+       * util.c (change_syscall): Likewise.
+       * mem.c (sys_getpagesize): Define on NIOS2.
+       * system.c [NIOS2] (sys_cacheflush, sys_nios2cmpxchg): New functions.
+
+       Acked-by: Mike Frysinger <vapier@gentoo.org>
+
+2014-02-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement add_key, keyctl, and request_key decoding.
+       * keyctl.c: New file.
+       * linux/keyctl.h: Likewise.
+       * Makefile.am (strace_SOURCES): Add keyctl.c.
+       (EXTRA_DIST): Add linux/keyctl.h.
+       * linux/dummy.h (sys_add_key, sys_keyctl, sys_request_key): Remove.
+       * linux/syscall.h (sys_add_key, sys_keyctl, sys_request_key): New
+       prototypes.
+
+       Implement ioprio_get and ioprio_set decoding.
+       * ioprio.c: New file.
+       * Makefile.am (strace_SOURCES): Add ioprio.c.
+       * linux/dummy.h (sys_ioprio_get, sys_ioprio_set): Remove.
+       * linux/syscall.h (sys_ioprio_get, sys_ioprio_set): New prototypes.
+
+       Implement finit_module decoding.
+       * bjm.c (module_init_flags): New xlat structure.
+       (sys_finit_module): New function.
+       * linux/dummy.h (sys_finit_module): Remove.
+       * linux/syscall.h (sys_finit_module): New prototype.
+
+       Cleanup inotify syscalls decoding.
+       * linux/inotify.h: New file.
+       * file.c (inotify_modes, inotify_init_flags, sys_inotify_add_watch,
+       sys_inotify_rm_watch, sys_inotify_init1): Move...
+       * inotify.c: ... here.
+       (inotify_modes): Rename to inotify_flags, convert to XLAT form.
+       (inotify_init_flags): Convert to XLAT form.
+       * Makefile.am (strace_SOURCES): Add inotify.c.
+       (EXTRA_DIST): Add linux/inotify.h.
+
+       Enhance reboot decoding.
+       * linux/reboot.h: New file.
+       * system.c (bootflags1, bootflags2, bootflags3, sys_reboot): Move...
+       * reboot.c: ... here.
+       (bootflags2, bootflags3): Update constants.
+       * Makefile.am (strace_SOURCES): Add reboot.c.
+       (EXTRA_DIST): Add linux/reboot.h.
+
+       Implement kexec_load decoding.
+       * kexec.c: New file.
+       * linux/kexec.h: Likewise.
+       * Makefile.am (strace_SOURCES): Add kexec.c.
+       (EXTRA_DIST): Add linux/kexec.h.
+       * linux/dummy.h (sys_kexec_load): Remove.
+       * linux/syscall.h (sys_kexec_load): New prototype.
+
+       Use prepared editions of recently imported linux headers.
+       * linux/fanotify.h: Replace with edition prepared with headers_install.sh.
+       * linux/personality.h: Likewise.
+
+       Implement fanotify_init and fanotify_mark decoding.
+       * fanotify.c: New file.
+       * linux/fanotify.h: Likewise.
+       * Makefile.am (strace_SOURCES): Add fanotify.c.
+       (EXTRA_DIST): Add linux/fanotify.h.
+       * defs.h (print_dirfd): New prototype.
+       * file.c (print_dirfd): Export.
+       * linux/dummy.h (sys_fanotify_init, sys_fanotify_mark): Remove.
+       * linux/syscall.h (sys_fanotify_init, sys_fanotify_mark): New
+       prototypes.
+       * pathtrace.c (pathtrace_match): Handle sys_fanotify_init and
+       sys_fanotify_mark.
+
+       Use XLAT_END macro.
+       Automatically update all xlat structures using the following sed regexp:
+       s/^[[:space:]]*{[[:space:]]*0[[:space:]]*,[[:space:]]*NULL[[:space:]]*,\?[[:space:]]*}[[:space:]]*,\?[[:space:]]*/\tXLAT_END/
+
+       Itroduce XLAT_END macro to make xlat structures more compact.
+       * defs.h (XLAT_END): New macro.
+
+       Convert personality_options to XLAT form.
+       * linux/personality.h: New file.
+       * Makefile.am (EXTRA_DIST): Add it.
+       * system.c: Include <linux/personality.h>.
+       (personality_options): Update PER_* constants, convert to XLAT form.
+
+       Convert futexops to XLAT form.
+       * process.c: Define FUTEX_*_PRIVATE macros.
+       (futexops): Convert to XLAT form.
+
+       Convert sigev_value to XLAT form.
+       * time.c (sigev_value): Convert to XLAT form.
+       (printsigevent32, printsigevent): Update use of sigev_value.
+
+       Use XLAT macro.
+       Automatically convert all xlat structures to XLAT form
+       using the following sed regexp:
+       s/^[[:space:]]*{[[:space:]]*\([^",}[:space:]]\+\)[[:space:]]*,[[:space:]]*"\1",\?[[:space:]]*}[[:space:]]*/\tXLAT(\1)/
+
+       Introduce XLAT macro to ease maintenance of xlat structures.
+       * defs.h (XLAT): New macro.
+
+       Suggested-by: Mike Frysinger <vapier@gentoo.org>
+
+2014-02-04  Stefan Sørensen  <stefan.sorensen@spectralink.com>
+
+       Decode ptp ioctls.
+       * defs.h (ptp_ioctl): New prototype.
+       * ioctl.c (ioctl_decode): Call ptp_ioctl when code is '='.
+       * Makefile.am (strace_SOURCES): Add ptp.c.
+       (EXTRA_DIST): Add linux/ptp_clock.h.
+       * ptp.c: New file.
+       * linux/ptp_clock.h: New file.
+
+2014-02-03  Stefan Sørensen  <stefan.sorensen@spectralink.com>
+
+       Decode dynamic posix clocks.
+       * time.c (cpuclocknames): New xlat structure.
+       (printclockname): New function that decodes posix clock names,
+       including dynamic fd encoded clocks.
+       (sys_clock_settime, sys_clock_gettime, sys_clock_nanosleep,
+       sys_clock_adjtime, sys_timer_create, sys_timerfd, sys_timerfd_create):
+       Use it.
+
+       Update ADJ_* constants.
+       * time.c (adjtimex_modes): Add ADJ_TAI, ADJ_SETOFFSET, ADJ_MICRO,
+       ADJ_NANO, ADJ_OFFSET_SS_READ.
+
+2014-02-02  Philippe Ombredanne  <pombredanne@nexb.com>
+
+       Add decoding of sockets descriptor 'paths' for network calls.
+       * net.c (sys_bind, sys_listen, do_accept, sys_send, sys_sendto,
+       sys_sendmsg, sys_sendmmsg, sys_recv, sys_recvfrom, sys_recvmsg,
+       sys_recvmmsg, sys_shutdown, sys_getsockopt, sys_setsockopt): Decode
+       socket descriptor arguments using printfd.
+       * pathtrace.c (pathtrace_match): Also check TRACE_NETWORK syscalls
+       that take socket descriptor arguments.
+       * tests/net-fd.test: New test for socket descriptor arguments decoding.
+       * tests/Makefile.am (TESTS): Add net-fd.test.
+       (net-fd.log): New dependency on net.log.
+
+2014-02-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: rename all tests so that their names end in .test suffix.
+       Due to automake limitations, some features work only for tests
+       that end in one of the suffixes listed in TEST_EXTENSIONS.
+
+       * tests/detach-running: Rename to detach-running.test.
+       * tests/detach-sleeping: Rename to detach-sleeping.test.
+       * tests/detach-stopped: Rename to detach-stopped.test.
+       * tests/net: Rename to net.test.
+       * tests/ptrace_setoptions: Rename to ptrace_setoptions.test.
+       * tests/qual_syscall: Rename to qual_syscall.test.
+       * tests/sigaction.sh: Rename to sigaction.test.
+       * tests/stat: Rename to stat.test.
+       * tests/strace-f: Rename to strace-f.test.
+       * tests/Makefile.am (TESTS): Update.
+       (LOG_COMPILER): Rename to TEST_LOG_COMPILER.
+
+2014-01-31  Mike Frysinger  <vapier@gentoo.org>
+
+       net: add more sockopt options.
+       This syncs with the defines as available in linux-3.13.
+
+       * net.c (sockipoptions): Add IP_IPSEC_POLICY, IP_XFRM_POLICY,
+       IP_PASSSEC, IP_TRANSPARENT, IP_ORIGDSTADDR, IP_RECVORIGDSTADDR,
+       IP_MINTTL, IP_NODEFRAG, IP_UNBLOCK_SOURCE, IP_BLOCK_SOURCE,
+       IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, MCAST_JOIN_GROUP,
+       MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP,
+       MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, IP_MULTICAST_ALL,
+       IP_UNICAST_IF.
+
+2014-01-08  Chris Dearman  <chris.dearman@imgtec.com>
+
+       mips: fix sigaction reporting.
+       MIPS userland uses the same sigaction structure with a full signal
+       mask for old_sigaction and new_sigaction and does does not have
+       an sa_restorer field.
+
+       These changes have been tested on MIPS O32 big/little endian, MIPS N64
+       big endian and x86-64.
+
+       * signal.c (old_sigaction) [MIPS]: Add definition for MIPS.
+       (decode_old_sigaction) [MIPS]: Print sa_mask according to its definition.
+       (new_sigaction) [MIPS]: Add definition for MIPS.
+
+2014-01-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Factor out struct sigaction printing code.
+       * signal.c [HAVE_SIGACTION] (decode_old_sigaction): New function.
+       [HAVE_SIGACTION] (sys_sigaction): Use it.
+       (decode_new_sigaction): New function.
+       (sys_rt_sigaction): Use it.
+
+       tests: add a test for rt_sigaction output.
+       Since "struct sigaction" varies between architectures, rt_sigaction
+       decoding sometimes produces incorrect output.  This test is expected
+       to catch basic rt_sigaction decoding bugs.
+
+       Based on a patch proposed by Chris Dearman.
+
+       * tests/sigaction.c: New file.
+       * tests/sigaction.awk: Likewise.
+       * tests/sigaction.sh: New test.
+       * tests/Makefile.am (check_PROGRAMS): Add sigaction.
+       (TESTS): Add sigaction.sh.
+       (EXTRA_DIST): Add sigaction.awk.
+       * tests/.gitignore: Add sigaction.
+
+2014-01-05  Kirill A. Shutemov  <kirill.shutemov@linux.intel.com>
+
+       mem: add missed MAP_HUGETLB mmap flag.
+       * mem.c (mmap_flags): Add MAP_HUGETLB mmap flag.
+
+       Acked-by: Mike Frysinger <vapier@gentoo.org>
+
+2013-12-31  Mike Frysinger  <vapier@gentoo.org>
+
+       Delete old PTRACE_{PEEK,POKE}USR logic.
+       The code base has settled on PTRACE_{PEEK,POKE}USER (with an E) and has
+       logic in defs.h to make sure it's set sanely.  Delete this old logic as
+       the defs.h takes care of it now.
+
+       * process.c: Delete PTRACE_PEEKUSR/PTRACE_POKEUSR defines.
+       * signal.c: Likewise.
+       * syscall.c: Delete PTRACE_PEEKUSR define.
+       * util.c: Likewise.
+
+       Decode the O_PATH flag.
+       * file.c (open_mode_flags): Add O_PATH.
+
+2013-11-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Remove unused configure checks.
+       * configure.ac (AC_CHECK_FUNCS): Remove _sys_siglist and sys_siglist.
+       (AC_CHECK_DECLS): Likewise.
+
+       Assume that <sys/ptrace.h> provides a valid ptrace prototype.
+       We used to explicitly list architectures where <sys/ptrace.h> from glibc
+       is known to provide a valid prototype for ptrace, and use a homegrown
+       replacement for all the rest.  Situation seems to be better nowadays,
+       glibc is not the only libc available, so let's use ptrace prototype from
+       <sys/ptrace.h> by default, leaving the replacement for rare broken cases
+       if any.
+
+       * defs.h: Use ptrace prototype workaround iff
+       NEED_PTRACE_PROTOTYPE_WORKAROUND is defined.
+
+2013-11-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Stop using _LFS64_LARGEFILE.
+       There is only one place left in the code where strace guesses whether
+       libc provides LFS64 functions and structures.  The most natural thing to
+       do there is to check for _LARGEFILE64_SOURCE - the macro provided by
+       glibc.  Other libc implementations that provide nondegenerate LFS64
+       interfaces are expected to define this macro as well.
+
+       * defs.h (_LFS64_LARGEFILE): Remove.
+       * strace.c: Use _LARGEFILE64_SOURCE instead of _LFS64_LARGEFILE.
+
+       Define truncate64, ftruncate64, and getdents64 decoders unconditionally.
+       These decoders are referenced by most architectures, there were no
+       undefined references so far because _LFS64_LARGEFILE appears to be
+       always defined by glibc when _GNU_SOURCE is defined.
+
+       * file.c (sys_truncate64, sys_ftruncate64, sys_getdents64): Define
+       unconditionally.
+
+       Define printflock64 only if it is referenced by other code.
+       * configure.ac (AC_CHECK_TYPES): Add struct flock64.
+       * desc.c (HAVE_F_SETLK64, HAVE_F_SETLKW64, HAVE_F_GETLK64): New macros.
+       [!HAVE_STRUCT_FLOCK64] (struct flock64): Define.
+       (printflock64): Define only if referenced by other code.
+       (sys_fcntl): Handle F_FREESP64, F_SETLK64, F_SETLKW64, and F_GETLK64 iff
+       these constants are defined and differ from their non-64bit versions.
+
+       Make PTRACE_PEEKUSER/PTRACE_POKEUSER checks less glibc specific.
+       * configure.ac (AC_CHECK_DECLS): Add PTRACE_PEEKUSER and
+       PTRACE_POKEUSER.
+       * defs.h: Define PTRACE_PEEKUSER and PTRACE_POKEUSER only if
+       they are not provided by <sys/ptrace.h>.
+
+       Reported by John Spencer.
+
+       Remove unneeded redefinitions of IPPROTO_* macros.
+       IPPROTO_* macros are defined by <netinet/in.h>, no need to redefine
+       them.
+
+       * net.c (IPPROTO_EGP, IPPROTO_PUP, IPPROTO_IDP, IPPROTO_IGMP,
+       IPPROTO_RAW, IPPROTO_MAX): Remove.
+
+       Reported by John Spencer.
+
+       Remove unused AC_OFF_T_IS_LONG_LONG configure check.
+       * configure.ac: Remove AC_OFF_T_IS_LONG_LONG.
+       * m4/long_long.m4: Likewise.
+
+       Remove unused code.
+       * configure.ac (AC_CHECK_TYPES): Remove struct opthdr and
+       struct t_opthdr.
+       * net.c (print_sock_optmgmt): Remove.
+
+       Use struct sigcontext instead of struct sigcontext_struct.
+       * configure.ac (AC_CHECK_TYPES): Remove struct sigcontext_struct.
+       * signal.c (sys_sigreturn) [S390 || S390X || POWERPC || ALPHA): Replace
+       struct sigcontext_struct with struct sigcontext.
+
+       Reported by John Spencer.
+
+       Use standard names of sched_param structure members.
+       * process.c (sys_sched_setscheduler, sys_sched_getparam,
+       sys_sched_setparam): Use portable struct sched_param member name
+       sched_priority instead of glibc specific __sched_priority.
+
+       Reported by John Spencer.
+
+       Make SIGEV_THREAD_ID decoding less glibc specific.
+       SIGEV_THREAD_ID decoding requires access to an internal member of
+       struct sigevent.  There seems to be no portable way to do it besides
+       adding a configure check.
+
+       * configure.ac (AC_CHECK_MEMBERS): Check for
+       struct sigevent._sigev_un._pad and struct sigevent.__pad.
+       * time.c (printsigevent): Use an appropriate struct sigevent member
+       to print thread id.
+
+       Reported by John Spencer.
+
+2013-11-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Remove unused configure checks.
+       * configure.ac (AC_CHECK_MEMBERS): Remove T_conn_res.QUEUE_ptr,
+       T_conn_res.ACCEPTOR_id, dqblk.dqb_curblocks, sigcontext.sc_hi2.
+
+       Assume "long long" availability.
+       Most of the code already uses long long types unconditionally.
+
+       * configure.ac: Remove the check for long long.
+       * file.c (printstat64): Remove HAVE_LONG_LONG checks, use %llu format
+       string unconditionally.
+
+       Include <sys/poll.h> only if there is no <poll.h>
+       * pathtrace.c: Do not include <sys/poll.h> if <poll.h> is available.
+       * stream.c: Likewise.
+
+       Move io_* syscalls decoding to a separate file.
+       * desc.c (sys_io_setup, sys_io_destroy, sys_io_submit, sys_io_cancel,
+       sys_io_getevents, declarations from libaio.h): Move to ...
+       * aio.c: new file.
+       * Makefile.am (strace_SOURCES): Add aio.c.
+
+2013-11-11  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Stop using external libaio.h.
+       This change incorporates a partial copy instead
+       of using external libaio.h.
+       Why?
+       Because we want to properly decode 32-bit aio calls
+       by 64-bit strace. For that, we need more definitions than
+       libaio.h provides.
+       (These defs are not done yet, but will eventually be done).
+       Keeping our local 32-bit compat defs in sync with libaio.h
+       _without seeing libaio structs_ is hard/more bug prone.
+       A smaller benefit is that we don't need libaio installed.
+
+       sys_io_submit: simplify iocb_cmd_lookup() helper.
+       This helper returns two values (a string and an enum).
+       The caller prints the string. It's simpler to just print
+       the string in the caller itself. This eliminates
+       "return by reference" and more importantly, an intermediate
+       static string buffer for the string result.
+
+       Since function of the helper is different now,
+       it is renamed to tprint_lio_opcode().
+
+       sys_io_submit: stop traversing iocb vector after first failure.
+       The program may use a very large nr but supply either outright
+       invalid iocbpp[], or one with far fewer elements than nr.
+       We used to try reading iocbpp[i] until i == nr.
+       With this change, we stop on the first failure.
+
+2013-11-09  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Fix pathtrace_match() to match recent fixes to select decoding.
+
+       Fix select decoding on e.g. 32-bit ppc process by 64-bit strace.
+       Added next_set_bit() function which finds the next set bit,
+       properly taking into account word size of the traced process.
+       Use it in decode_select() instead of fd_isset().
+       Also, properly round fdsize up to word size of traced process,
+       not to strace's word size.
+
+2013-11-06  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Speed up and explain fd_isset()
+
+2013-11-05  Dr. David Alan Gilbert  <dave@treblig.org>
+
+       Add a test for the latest select decoding fix.
+       * test/select.c (main): Add a test for nfds larger than FD_SETSIZE.
+
+2013-11-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix select decoding for glibc in _FORTIFY_SOURCE mode.
+       glibc in _FORTIFY_SOURCE mode raises SIGABRT when descriptor greater
+       or equal to FD_SETSIZE is passed to FD_ISSET.  Select family syscalls,
+       however, can legitimately accept such descriptors.  To overcome this
+       limitation, we have to replace FD_ISSET with an equivalent that imposes
+       no such restrictions.
+
+       * desc.c (fd_isset): New function.
+       (decode_select): Use it instead of FD_ISSET.
+
+       More select decoding fixes.
+       * desc.c (decode_select): Actually print arg[0] as int on entering
+       syscall.  When arg[0] is negative, do not attempt to fetch and decode
+       descriptor sets on entering syscall, kernel will reject it anyway.
+       On exiting syscall, stop checking descriptor sets as soon as all
+       returned descriptors are found.
+
+2013-11-05  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Truncate arg[0] to int in select decoding.
+       This matches kernel's behavior.
+
+       test/select.c: make comment more understandable.
+
+2013-11-05  Dr. David Alan Gilbert  <dave@treblig.org>
+
+       Fix select decoding with bogus (huge or negative) nfds.
+       We used to allocate and fetch bit arrays using a sanitized
+       length, but then iterate over them with "j < arg[0]" condition,
+       where arg[0] is not sanitized. This segfaults if arg[0] is huge
+       or negative. This change fixes this.
+
+       Add test/select.c to capture the case.
+
+2013-09-26  Ali Polatel  <alip@exherbo.org>
+
+       Work around conflict between <sys/ptrace.h> and <linux/ptrace.h>
+       Since glibc-2.18~39 <sys/ptrace.h> defines ptrace_peeksiginfo_args
+       which collides with <linux/ptrace.h>.
+
+       * configure.ac: Check for `struct ptrace_peeksiginfo_args' in
+       <sys/ptrace.h>.
+       * process.c: Work around potential conflict between <sys/ptrace.h>
+       and <linux/ptrace.h> by redefining ptrace_peeksiginfo_args.
+       * signal.c: Likewise.
+       * syscall.c: Likewise.
+       * util.c: Likewise.
+
+2013-09-11  Vineet Gupta  <Vineet.Gupta1@synopsys.com>
+
+       Add support for ARC Cores from Synopsys.
+       Take #2 on mainlining strace support for ARC (last one was 4.6 based back
+       in March 2011), see
+       http://sourceforge.net/p/strace/mailman/message/27210168/
+
+       The syscall ABI is asm-generic/unistd.h based (so no legacy syscalls),
+       hence very similar to metag port.
+
+       test/* all seem to work well.
+
+       * linux/arc/ioctlent.h.in: New file.
+       * linux/arc/syscallent.h: Likewise.
+       * Makefile.am (EXTRA_DIST): Add linux/arc/ioctlent.h.in and
+       linux/arc/syscallent.h.
+       * configure.ac: Add ARC to the list of supported architectures.
+       * defs.h: Add ARC support.
+       * process.c (struct_user_offsets): Likewise.
+       * signal.c (sys_sigreturn): Likewise.
+       * syscall.c (print_pc, get_regset, get_regs, get_scno, get_syscall_args,
+       get_syscall_result, get_error): Likewise.
+       * util.c (change_syscall): Likewise.
+
+       Acked-by: Mike Frysinger <vapier@gentoo.org>
+
+2013-09-11  William Manley  <william.manley@youview.com>
+
+       Add support for decoding sync_file_range.
+       * file.c (sync_file_range_flags): New xlat structure.
+       (sys_sync_file_range, sys_sync_file_range2): New functions.
+       * linux/syscall.h (sys_sync_file_range, sys_sync_file_range2): New
+       prototypes.
+       * linux/dummy.h (sys_sync_file_range, sys_sync_file_range2): Remove.
+       * linux/mips/syscallent-o32.h: Set the number of sync_file_range
+       arguments to 7.
+
+2013-09-11  Mike Frysinger  <vapier@gentoo.org>
+
+       fanotify_mark: fix number of args for 32bit arches.
+       The fanotify_mark func takes a 64bit mask, so 32bit arches have to split
+       it up into two fields.  When the syscall was added, it was listed as only
+       having 5 fields total (since that's correct for 64bit systems).
+
+       * linux/arm/syscallent.h: Set the number of fanotify_mark arguments to 6.
+       * linux/bfin/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/metag/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/or1k/syscallent.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/tile/syscallent1.h: Likewise.
+
+       Acked-by: Chris Metcalf <cmetcalf@tilera.com> [for tile]
+
+2013-09-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       x86, x86_64: fix compilation warnings.
+       Fix "dereferencing type-punned pointer will break strict-aliasing rules"
+       warnings introduced by commit v4.8-52-gb51f364.
+
+       * signal.c (sys_sigreturn): Avoid dereferencing type-punned pointers.
+
+2013-07-18  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Remove rt parameter from [s]printsigmask()
+       In almost all cases, the parameter was 1 ("decode RT sigs too").
+       This change hardwires it to be 1.
+
+       The cases where it was 0 are, and why the change to "decode RT sigs too"
+       is fine:
+
+       IA64: 64-bit arch, all 64 signals fit in one word in any case.
+       S390[x]: sc.oldmask is a sigset_t on kernel side,
+               (sigset_t *)&sc.oldmask[0] does contain all 64 signals.
+       TILE: uc.uc_sigmask is a sigset_t on kernel side,
+               memcpy(&sigm, &uc.uc_sigmask, NSIG / 8) copies all 64 signals.
+
+       Convert some uses of long_to_sigmask+printsigmask to sprintsigmask_long.
+       This allows to drop long_to_sigmask function,
+       and a whole bunch of sigset_t variables.
+
+       Simplify some sigmask manipulations.
+
+       Add compat support for sys_pselect6.
+
+       I386: fix signedness mismatch warning.
+       &i386_regs.esp is a pointer to long, not unsigned long.
+       It needs a cast.
+
+       Fix sigset printing via print_sigset().
+       Replace print_sigset() with print_sigset_addr_len(),
+       which takes not only addr, but also len parameter.
+       This allows us to drop "do we need to print RT signals?" parameter,
+       and this fixes RT signals printing in many syscalls.
+
+       sys_epoll_pwait: print RT signals too, print sigmask size argument.
+
+       sys_sigprocmask: print_sigset -> print_sigset_addr_len(current_wordsize),
+       no change in functionality.
+
+       sys_sigpending: use print_sigset_addr_len(current_wordsize)
+       instead of open-coding it.
+
+       sys_rt_sigprocmask: use print_sigset_addr_len instead of open-coding it.
+       sys_rt_sigpending: ditto.
+       sys_rt_sigsuspend: ditto.
+       sys_rt_sigtimedwait: ditto.
+
+       do_signalfd: print_sigset -> print_sigset_addr_len. This fixes
+       RT signals printing (wasn't showing them before).
+
+       sys_ppoll: ditto.
+
+       copy_sigset_len() is folded into its only user, print_sigset_addr_len(),
+       and copy_sigset() is gone.
+
+       While at it, checked kernel sources and noted where kernel enforces
+       sigset_size == NSIG / 8 (== sizeof(kernel_sigset_t)),
+       and where it allows word-sized sigset_size ([rt_]sigpending).
+
+       sys_rt_sigaction: fix sigset copying.
+       In practice, we always copy as many bytes as syscall param says
+       (8, or 16 on mips). However, malicious program can call sigaction
+       with wrong sigset size. Such syscall will result in EINVAL,
+       but we (strace) end up copying 128 bytes (sizeof(sigset_t)),
+       which copyes some garbage from stack after struct sigaction.
+
+       Now we always copy NSIG / 8 bytes (which is 8 bytes, or 16 on mips).
+
+       ARM: remove wrong NSIG = 32 define.
+       ARM in fact has 64 signals (1..64), and NSIG should be 65
+       (as usual, rememebr that NSIG_libc == NSIG_kernel+1).
+
+       I carefully reviewed all usages of NSIG. In syscall.c,
+       the only usage is:
+               for (i = 0; i <= NSIG; i++)
+                       if (strcasecmp(s, signame(i) + 3) == 0)...
+       which is safe even if NSIG is way too big - signame(i)
+       returns a well-formed string for any i.
+
+       In signal.c, memcpy(&sigset, &sc.sc_mask, NSIG / 8) is used by
+       IA64 and TILE code, so ARM change can't affect it. And final
+       usage is:
+        struct new_sigaction::unsigned long sa_mask[NSIG / sizeof(long)];
+       It will grow on ARM (and become correct in the process).
+       Its only use is
+        memcpy(&sigset, &sa.sa_mask, NSIG / 8);
+        printsigmask(&sigset, 1);
+       which used to copy garbage in high bits, now it will copy actual data.
+
+2013-07-17  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       ARM: fix sigreturn decoding.
+       Decoding of test/sigreturn testcase:
+       Was:
+       sigreturn() (mask [QUIT TRAP ABRT BUS SEGV USR2 PIPE STKFLT STOP XCPU VTALRM PROF WINCH IO PWR RTMIN]) = 0
+       Now:
+       sigreturn() (mask [CHLD RT_1 RT_3 RT_31 RT_32]) = 0
+
+2013-07-16  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Group USE_CUSTOM_PRINTF define with other tweakables.
+       No code changes.
+
+       Improve sigreturn decoding on x86 to show RT signal bits too.
+       This includes decoding of 32-bit sigreturn by 64-bit strace,
+       which previously wasn't done.
+
+       Added a test for it.
+
+2013-07-12  Anton Blanchard  <anton@samba.org>
+
+       powerpc: enhance 32/64bit detection.
+       We were using uname to determine if userspace was 32 or 64bit.
+       This fails when we have a 64bit kernel and a 32bit userspace.
+
+       * configure.ac (powerpc*): Similar to x86, use a runtime test
+       to determine if we are 32 or 64bit.
+
+       powerpc: fix some compiler warnings.
+       Fix a number of differing signedness warnings when building on
+       powerpc.
+
+       powerpc: fix iflag build issue (static -> extern)
+
+2013-07-10  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       PTRACE_SEIZE can set ptrace options immediately, use this feature.
+       This eliminates some rare bugs, such as post-execve SIGTRAP
+       generation when we attach to a process, and it manages to finish
+       execve'ing before we set TRACEEXEC option to suppress that.
+
+2013-07-08  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       If -o|logger is in use, exit trace loop if nprocs == 0.
+
+       Exit trace loop if got ECHILD, not if nprocs == 0.
+       Comment gives a testcase which wasn't handled correctly
+       by the old code.
+
+2013-07-07  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       s390[x]: get rid of syscall_mode, delete code which never triggers.
+       Before this change, the logic was as follows:
+       syscall entry:
+         get_scno:
+           syscall_mode = GPR2
+           scno = syscall_mode unless syscall_mode == -ENOSYS
+           (if -ENOSYS, scn is retrieved by decoding current insn)
+         fixup:
+           gpr2 = GPR2
+           syscall_mode = scno unless syscall_mode == -ENOSYS
+           if (gpr2 != syscall_mode) stray_entry
+       syscall exit:
+         get_res:
+           gpr2 = GRP2
+         fixup:
+           syscall_mode = scno unless syscall_mode == -ENOSYS
+           if (WAITEXECVE && gpr2 in (-ENOSYS, scno)) gpr2 = 0;
+         get_error:
+           gpr2 is retval
+
+       Entry fixup's if() can never trigger:
+       regardless whether GPR2 is -ENOSYS or not, syscall_mode is always
+       equal to GRP2 value there. So it can be removed.
+
+       On sysexit path, syscall mode is never used.
+
+       Therefore, syscall_mode variable is deleted. grp2 is read from
+       GPR2 register in get_scno, redundant read in entry fixup is removed.
+       As a result, entry fixup's s390 code block vanishes completely.
+
+       gpr2 variable is renamed s390_gpr2 to match the convention used
+       by other arches.
+
+2013-07-04  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       ARM: add STRACE_KNOWS_ONLY_EABI define which can be used to omit OABI support
+
+       Add paranoia check before passing a long to pid2tcb(int pid)
+
+2013-07-02  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       In debug output, show waitpid status with 6 hex digits, not 4.
+       This shows event byte values better (without variable offset):
+
+        [wait(0x01057f) = 29491] WIFSTOPPED,sig=SIGTRAP,EVENT_FORK (1)
+        [wait(0x80057f) = 29492] WIFSTOPPED,sig=SIGTRAP,EVENT_STOP (128)
+                ^^
+
+       Replace suspicious popen_pid assignment with an obviously correct one.
+       popen_pid = vfork() does work correctly, but for a subtle reason
+       that wrong assignment of 0 happens in the child _first_,
+       and _then_ correct value overwrites it in the parent.
+
+       (And in a hyphothetical system where vfork = fork,
+       popen_pid wouldn't be shared, so it will also be ok.)
+
+       However, it's not necessary to be difficult.
+       This change makes it so that assignment is done only in parent.
+
+2013-07-01  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Convert trace() from returning int to returning void.
+       The cleanup sequence in error cases, and on normal code path
+       was nearly the same, no point in duplicating it.
+
+       Remove ia64-specific printing of current address on signal delivery.
+       The address is printed anyway by printleader() if -i is active.
+
+       Rename ia32 to ia64_ia32mode, and make it bool, not long.
+       Grepping for just ia32 was turning up many false positives.
+
+2013-06-30  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Fold is_restart_error() into its sole user.
+
+2013-06-29  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Update qemu_multiarch_testing/README.
+
+2013-06-28  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       sys_clone: add a comment about CLONE_PTRACE and CLONE_UNTRACED.
+       No code changes.
+
+       POWERPC: get rid of "static long ppc_result"
+
+       POWERPC: read ppc_regs.nip if -i.
+
+       POWERPC: if GETREGS fails with EIO, don't try it again.
+
+       Get rid of powerpc_getreg(), it's a copy of upeek()
+
+       Change upeek() to take pid, not full tcp.
+       This will be used by next change.
+
+2013-06-26  Anton Blanchard  <anton@samba.org>
+
+       powerpc: Provide a fallback for old kernels without PTRACE_GETREGS.
+       PTRACE_GETREGS was added to the ppc kernel in 2.6.23. In order to
+       provide backward compatibility for very old kernels, add a manual
+       fallback.
+
+       * syscall.c (powerpc_getreg, powerpc_getregs_old): New functions.
+       (get_regs): Call powerpc_getregs_old if PTRACE_GETREGS is not supported.
+
+       powerpc: Use PTRACE_GETREGS to fetch all registers.
+       * defs.h: declare ppc_regs and get_regs_error.
+       * signal.c (sys_sigreturn): Use ppc_regs instead of upeek.
+       * syscall.c: define ppc_regs.
+       (printcall): Use ppc_regs instead of upeek.
+       (get_scno): Replace multiple upeek calls with one PTRACE_GETREGS call.
+       (get_syscall_result): Likewise.
+
+2013-06-26  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Another manpage tweak.
+
+       Manpage update.
+
+       Update build_static_example.sh.
+       Now it also contains a tested example of i686 build on 64-bit host.
+
+       In -f mode, do not assume that new pid is stopped - handle exits too.
+
+       Set strace_child only in the right branch.
+       "strace_child = pid" assignment was racing in NOMMU case
+       because of vfork (no way to know which process would win).
+
+       After this change, strace_child is set to nonzero only
+       in one process after [v]fork.
+
+       Get rid of TCB_INUSE and TCB_STRACE_CHILD.
+       We can use tcb::pid == 0 as an indicator of free tcb,
+       and we already have strace_child variable which holds
+       pid of our child, if any.
+
+2013-06-21  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Fix debug output of wait4 result (was reusing buf[] on unknown events)
+
+       Show PTRACE_EVENT_STOP correctly in debug output.
+
+       Panic a bit less when we see an unknown pid.
+       I stumbeld over this case when I used "exec stace ...".
+
+       * strace.c (trace): Do not exit if we see an unknown pid in wait4.
+
+       detach(): Reorganize code. Logic is the same.
+       * strace.c (detach): Use goto's instead of excessive nesting.
+       Drop sigstop_expected and interrupt_done variables.
+
+       Eat pending SIGSTOP _before_ PTRACE_DETACH in detach()
+       * strace.c (detach): If TCB_IGNORE_ONE_SIGSTOP is set,
+       di not PTRACE_DETACH - wait for SIGSTOP first.
+
+2013-06-20  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       detach(): warn if we see ECHILD from waitpid.
+       * strace.c (detach): Warn if we see ECHILD from waitpid.
+       Explain in comments that we don't normally expect !WIFSTOPPED
+       either, and also that PTRACE_CONT failure isn't expected
+       (the "break" there is a "I'm confused, bailing out" code style)..
+
+       Improve error messages in detach()
+       * strace.c (detach): Change return type from int to void.
+       Improve error meesages: show PID, tell exactly which operation fails.
+
+       Remove workarounds for ancient kernels lacking __WALL.
+       __WALL is available and working at least since 2.4 kernels: 10 years ago.
+
+       * strace (detach): Remove workarounds for ancient kernels lacking __WALL.
+       Add missing EINTR check.
+       (trace): Remove workarounds for ancient kernels lacking __WALL.
+       Remove redundant double error printout.
+
+       USE_SEIZE: fix detaching from stopped processes.
+       V3: split SEIZE/!SEIZE code paths to reduce confusion.
+       Extensively comment every possible case.
+       Verified that all tests/detach* tests work in both SEIZE and !SEIZE
+       cases.
+
+       * strace.c (detach): If PTRACE_SEIZE API is in use, stop the tracee
+       using PTRACE_INTERRUPT instead of sending it a SIGSTOP.
+       In a subsequent waitpid loop, correctly wait and suppress SIGSTOP
+       on detach if PTRACE_INTERRUPT wasn't used, or wait for any ptrace
+       stop and detach without suppressing signals.
+
+2013-06-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: disable /proc based checks when /proc is not mounted.
+       * tests/detach-running: Disable /proc based checks when
+       /proc/self/status is not available.
+       * tests/detach-sleeping: Likewise.
+       * tests/detach-stopped: Likewise.
+
+2013-06-19  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       tests/detach-{running,sleeping,stopped}: check post-detach state.
+       Check that traced process still exists and is in a right state
+       after strace detached from it.
+
+2013-06-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: ensure that strace can detach from running processes.
+       * tests/detach-running: New test.
+       * tests/Makefile.am (TESTS): Add it.
+
+       tests: ensure that strace does not leave sleeping processes stopped.
+       * tests/detach-sleeping: Do not send SIGCONT to the sleeping process.
+
+2013-06-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix parallel-tests support in detach-* tests.
+       * tests/detach-sleeping: Use $LOG file for set_ptracer_any output.
+       * tests/detach-stopped: Likewise.
+
+       tests: parametrize "sleep 1"
+       * tests/init.sh (SLEEP_A_BIT): New variable.
+       * tests/detach-sleeping: Use it.
+       * tests/detach-stopped: Likewise.
+
+       tests: ensure that strace can detach from sleeping and stopped processes
+       * tests/set_ptracer_any.c: New file.
+       * tests/detach-sleeping: New test.
+       * tests/detach-stopped: Likewise.
+       * tests/Makefile.am (check_PROGRAMS): Add set_ptracer_any.
+       (TESTS): Add detach-sleeping and detach-stopped.
+       * tests/.gitignore: Add set_ptracer_any.
+
+       tests: enhance timeout checks.
+       Run each test using a wrapper that does all necessary timeout checks.
+
+       * tests/run.sh: New file.
+       * tests/Makefile.am (EXTRA_DIST, LOG_COMPILER): Add it.
+       * tests/init.sh (check_strace, check_timeout): Remove.
+       * tests/detach-stopped: Update callers.
+       * tests/net: Likewise.
+       * tests/ptrace_setoptions: Likewise.
+       * tests/qual_syscall: Likewise.
+       * tests/stat: Likewise.
+       * tests/strace-f: Likewise.
+
+       tests: enable parallel-tests support.
+       * configure.ac (AM_INIT_AUTOMAKE): Add parallel-tests.
+
+       tests: prepare for parallel-tests support.
+       * tests/Makefile.am (CLEANFILES): Calculate dynamically from TESTS.
+       * tests/init.sh (LOG): New variable.
+       * tests/detach-stopped: Use it.
+       * tests/net: Likewise.
+       * tests/qual_syscall: Likewise.
+       * tests/stat: Likewise.
+       * tests/strace-f: Likewise.
+
+2013-06-18  Denys Vlasenko  <dvlasenk@redhat.com>
+
+       Cleanups. No logic changes.
+       * defs.h: Define new ptrace constants unconditionally.
+       * strace.c (detach): Fix comment.
+       (trace): Remove now unnecessary "if USE_SEIZE".
+
+2013-06-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       maint: post-release administrivia.
+       * NEWS: Add header line for next release.
+
 2013-06-03  Dmitry V. Levin  <ldv@altlinux.org>
 
        ioctlent: add UAPI support.
index 9d611f3..a30ac1c 100644 (file)
@@ -14,22 +14,33 @@ ACLOCAL_AMFLAGS = -I m4
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(srcdir)/$(OS)/$(ARCH) -I$(srcdir)/$(OS) -I$(builddir)/$(OS)
 
+include xlat/Makemodule.am
+
 strace_SOURCES =       \
+       aio.c           \
        bjm.c           \
        block.c         \
        count.c         \
        desc.c          \
+       fanotify.c      \
        file.c          \
+       inotify.c       \
        io.c            \
        ioctl.c         \
+       ioprio.c        \
        ipc.c           \
+       kexec.c         \
+       keyctl.c        \
+       ldt.c           \
        loop.c          \
        mem.c           \
        mtd.c           \
        net.c           \
        pathtrace.c     \
        process.c       \
+       ptp.c           \
        quota.c         \
+       reboot.c        \
        resource.c      \
        scsi.c          \
        signal.c        \
@@ -43,6 +54,15 @@ strace_SOURCES =     \
        util.c          \
        vsprintf.c
 
+if USE_LIBUNWIND
+strace_SOURCES += unwind.c
+strace_CPPFLAGS = $(AM_CPPFLAGS) $(libunwind_CPPFLAGS)
+strace_LDFLAGS = $(libunwind_LDFLAGS)
+strace_LDADD = $(libunwind_LIBS)
+else
+strace_CPPFLAGS = $(AM_CPPFLAGS)
+endif
+
 noinst_HEADERS = defs.h
 # Enable this to get link map generated
 #strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile
@@ -71,7 +91,6 @@ EXTRA_DIST =                          \
        debian/strace64.manpages        \
        debian/watch                    \
        errnoent.sh                     \
-       ioctlsort.c                     \
        linux/aarch64/errnoent1.h       \
        linux/aarch64/ioctlent.h.in     \
        linux/aarch64/ioctlent1.h       \
@@ -82,6 +101,8 @@ EXTRA_DIST =                         \
        linux/alpha/ioctlent.h.in       \
        linux/alpha/signalent.h         \
        linux/alpha/syscallent.h        \
+       linux/arc/ioctlent.h.in         \
+       linux/arc/syscallent.h          \
        linux/arm/ioctlent.h.in         \
        linux/arm/syscallent.h          \
        linux/avr32/ioctlent.h.in       \
@@ -90,6 +111,7 @@ EXTRA_DIST =                         \
        linux/bfin/syscallent.h         \
        linux/dummy.h                   \
        linux/errnoent.h                \
+       linux/fanotify.h                \
        linux/hppa/errnoent.h           \
        linux/hppa/ioctlent.h.in        \
        linux/hppa/signalent.h          \
@@ -99,10 +121,13 @@ EXTRA_DIST =                               \
        linux/ia64/ioctlent.h.in        \
        linux/ia64/signalent.h          \
        linux/ia64/syscallent.h         \
+       linux/inotify.h                 \
        linux/ioctlent-filter.awk       \
        linux/ioctlent.h.in             \
        linux/ioctlent.sh               \
        linux/ioctlsort.c               \
+       linux/kexec.h                   \
+       linux/keyctl.h                  \
        linux/m68k/ioctlent.h.in        \
        linux/m68k/syscallent.h         \
        linux/metag/ioctlent.h.in       \
@@ -121,12 +146,15 @@ EXTRA_DIST =                              \
        linux/mtd-abi.h                 \
        linux/or1k/ioctlent.h.in        \
        linux/or1k/syscallent.h         \
+       linux/personality.h             \
        linux/powerpc/errnoent1.h       \
        linux/powerpc/ioctlent.h.in     \
        linux/powerpc/ioctlent1.h       \
        linux/powerpc/signalent1.h      \
        linux/powerpc/syscallent.h      \
        linux/powerpc/syscallent1.h     \
+       linux/ptp_clock.h               \
+       linux/reboot.h                  \
        linux/s390/ioctlent.h.in        \
        linux/s390/syscallent.h         \
        linux/s390x/ioctlent.h.in       \
@@ -196,6 +224,9 @@ EXTRA_DIST =                                \
        strace-log-merge                \
        strace.spec                     \
        syscallent.sh                   \
+       $(XLAT_INPUT_FILES)             \
+       $(XLAT_HEADER_FILES)            \
+       xlat/gen.sh                     \
        xlate.el
 
 .PHONY: srpm
@@ -240,14 +271,14 @@ $(srcdir)/ChangeLog: $(srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \
 $(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \
                   $(srcdir)/Makefile.in $(srcdir)/.version
        $(AM_V_GEN)                                                     \
-       {                                                               \
+       (                                                               \
          cd $(srcdir);                                                 \
          sed '/^##/,$$d' CREDITS.in;                                   \
          { sed -n '1,/^##>/d; s/  \+/\t/; s/^./&/p' CREDITS.in;        \
            git log --pretty=format:'%aN        %aE';                   \
          } | LC_ALL=C sort -u                                          \
            | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}';             \
-       } > $@-t && mv $@-t $@
+       ) > $@-t && mv $@-t $@
 
 export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
 
index 5bd50a8..adf05fd 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in 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.
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,13 +83,14 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = strace$(EXEEXT)
-@MAINTAINER_MODE_TRUE@am__append_1 = $(ioctlent_h_in)
+DIST_COMMON = $(srcdir)/xlat/Makemodule.am $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(srcdir)/config.h.in depcomp \
+       $(noinst_HEADERS) AUTHORS COPYING INSTALL NEWS README compile \
+       config.guess config.sub install-sh missing
+@USE_LIBUNWIND_TRUE@am__append_1 = unwind.c
+@MAINTAINER_MODE_TRUE@am__append_2 = $(ioctlent_h_in)
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \
-       INSTALL NEWS config.guess config.sub depcomp install-sh \
-       missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/includedir.m4 \
        $(top_srcdir)/m4/long_long.m4 $(top_srcdir)/m4/stat.m4 \
@@ -79,17 +107,36 @@ CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
        "$(DESTDIR)$(man1dir)"
 PROGRAMS = $(bin_PROGRAMS)
-am_strace_OBJECTS = bjm.$(OBJEXT) block.$(OBJEXT) count.$(OBJEXT) \
-       desc.$(OBJEXT) file.$(OBJEXT) io.$(OBJEXT) ioctl.$(OBJEXT) \
-       ipc.$(OBJEXT) loop.$(OBJEXT) mem.$(OBJEXT) mtd.$(OBJEXT) \
-       net.$(OBJEXT) pathtrace.$(OBJEXT) process.$(OBJEXT) \
-       quota.$(OBJEXT) resource.$(OBJEXT) scsi.$(OBJEXT) \
-       signal.$(OBJEXT) sock.$(OBJEXT) strace.$(OBJEXT) \
-       stream.$(OBJEXT) syscall.$(OBJEXT) system.$(OBJEXT) \
-       term.$(OBJEXT) time.$(OBJEXT) util.$(OBJEXT) \
-       vsprintf.$(OBJEXT)
+am__strace_SOURCES_DIST = aio.c bjm.c block.c count.c desc.c \
+       fanotify.c file.c inotify.c io.c ioctl.c ioprio.c ipc.c \
+       kexec.c keyctl.c ldt.c loop.c mem.c mtd.c net.c pathtrace.c \
+       process.c ptp.c quota.c reboot.c resource.c scsi.c signal.c \
+       sock.c strace.c stream.c syscall.c system.c term.c time.c \
+       util.c vsprintf.c unwind.c
+@USE_LIBUNWIND_TRUE@am__objects_1 = strace-unwind.$(OBJEXT)
+am_strace_OBJECTS = strace-aio.$(OBJEXT) strace-bjm.$(OBJEXT) \
+       strace-block.$(OBJEXT) strace-count.$(OBJEXT) \
+       strace-desc.$(OBJEXT) strace-fanotify.$(OBJEXT) \
+       strace-file.$(OBJEXT) strace-inotify.$(OBJEXT) \
+       strace-io.$(OBJEXT) strace-ioctl.$(OBJEXT) \
+       strace-ioprio.$(OBJEXT) strace-ipc.$(OBJEXT) \
+       strace-kexec.$(OBJEXT) strace-keyctl.$(OBJEXT) \
+       strace-ldt.$(OBJEXT) strace-loop.$(OBJEXT) \
+       strace-mem.$(OBJEXT) strace-mtd.$(OBJEXT) strace-net.$(OBJEXT) \
+       strace-pathtrace.$(OBJEXT) strace-process.$(OBJEXT) \
+       strace-ptp.$(OBJEXT) strace-quota.$(OBJEXT) \
+       strace-reboot.$(OBJEXT) strace-resource.$(OBJEXT) \
+       strace-scsi.$(OBJEXT) strace-signal.$(OBJEXT) \
+       strace-sock.$(OBJEXT) strace-strace.$(OBJEXT) \
+       strace-stream.$(OBJEXT) strace-syscall.$(OBJEXT) \
+       strace-system.$(OBJEXT) strace-term.$(OBJEXT) \
+       strace-time.$(OBJEXT) strace-util.$(OBJEXT) \
+       strace-vsprintf.$(OBJEXT) $(am__objects_1)
 strace_OBJECTS = $(am_strace_OBJECTS)
-strace_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+@USE_LIBUNWIND_TRUE@strace_DEPENDENCIES = $(am__DEPENDENCIES_1)
+strace_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(strace_LDFLAGS) \
+       $(LDFLAGS) -o $@
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -118,35 +165,48 @@ am__uninstall_files_from_dir = { \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
 SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(strace_SOURCES)
-DIST_SOURCES = $(strace_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-       html-recursive info-recursive install-data-recursive \
-       install-dvi-recursive install-exec-recursive \
-       install-html-recursive install-info-recursive \
-       install-pdf-recursive install-ps-recursive install-recursive \
-       installcheck-recursive installdirs-recursive pdf-recursive \
-       ps-recursive uninstall-recursive
+DIST_SOURCES = $(am__strace_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -158,11 +218,33 @@ MANS = $(man_MANS)
 HEADERS = $(noinst_HEADERS)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-       distdir dist dist-all distcheck
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+       cscope distdir dist dist-all distcheck
+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.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
@@ -173,6 +255,7 @@ am__remove_distdir = \
       && rm -rf "$(distdir)" \
       || { sleep 5 && rm -rf "$(distdir)"; }; \
   else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -200,6 +283,7 @@ am__relativize = \
   reldir="$$dir2"
 GZIP_ENV = --best
 DIST_ARCHIVES = $(distdir).tar.xz
+DIST_TARGETS = dist-xz
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -286,6 +370,9 @@ infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
+libunwind_LDFLAGS = @libunwind_LDFLAGS@
+libunwind_LIBS = @libunwind_LIBS@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
@@ -312,35 +399,159 @@ ARCH = @arch@
 ACLOCAL_AMFLAGS = -I m4
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(srcdir)/$(OS)/$(ARCH) -I$(srcdir)/$(OS) -I$(builddir)/$(OS)
-strace_SOURCES = \
-       bjm.c           \
-       block.c         \
-       count.c         \
-       desc.c          \
-       file.c          \
-       io.c            \
-       ioctl.c         \
-       ipc.c           \
-       loop.c          \
-       mem.c           \
-       mtd.c           \
-       net.c           \
-       pathtrace.c     \
-       process.c       \
-       quota.c         \
-       resource.c      \
-       scsi.c          \
-       signal.c        \
-       sock.c          \
-       strace.c        \
-       stream.c        \
-       syscall.c       \
-       system.c        \
-       term.c          \
-       time.c          \
-       util.c          \
-       vsprintf.c
-
+XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclcmds.in xlat/aclipc.in \
+       xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in \
+       xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in \
+       xlat/archvals.in xlat/at_flags.in xlat/atomic_ops.in \
+       xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in \
+       xlat/bootflags2.in xlat/bootflags3.in xlat/cacheflush_scope.in \
+       xlat/cap_version.in xlat/capabilities.in xlat/clockflags.in \
+       xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in \
+       xlat/delete_module_flags.in xlat/direnttypes.in \
+       xlat/domains.in xlat/epollctls.in xlat/epollevents.in \
+       xlat/epollflags.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/fileflags.in \
+       xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in \
+       xlat/futexwakecmps.in xlat/futexwakeops.in \
+       xlat/icmpfilterflags.in xlat/if_dqblk_valid.in \
+       xlat/if_dqinfo_valid.in xlat/iffflags.in \
+       xlat/inet_protocols.in xlat/inotify_flags.in \
+       xlat/inotify_init_flags.in xlat/ioprio_class.in \
+       xlat/ioprio_who.in xlat/ipc_msg_flags.in xlat/itimer_which.in \
+       xlat/kexec_arch_values.in xlat/kexec_flags.in \
+       xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in \
+       xlat/keyctl_commands.in xlat/lockfcmds.in \
+       xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \
+       xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_funcs.in \
+       xlat/mctl_lockas.in xlat/mctl_sync.in xlat/mempolicyflags.in \
+       xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in \
+       xlat/modem_flags.in xlat/modetypes.in xlat/modflags.in \
+       xlat/module_init_flags.in xlat/mount_flags.in \
+       xlat/move_pages_flags.in xlat/mremap_flags.in \
+       xlat/msg_flags.in xlat/msgctl_flags.in xlat/msgflags.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/netlink_protocols.in \
+       xlat/notifyflags.in xlat/nt_descriptor_types.in \
+       xlat/open_access_modes.in xlat/open_mode_flags.in \
+       xlat/openmodessol.in xlat/perf_event_open_flags.in \
+       xlat/personality_options.in xlat/pmsgflags.in xlat/policies.in \
+       xlat/pollflags.in xlat/prctl_options.in xlat/priorities.in \
+       xlat/ptp_flags_options.in xlat/ptrace_cmds.in \
+       xlat/ptrace_setoptions_flags.in xlat/qm_which.in \
+       xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in \
+       xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in \
+       xlat/schedulers.in xlat/scmvals.in xlat/semctl_flags.in \
+       xlat/semop_flags.in xlat/sg_io_dxfer_direction.in \
+       xlat/shm_flags.in xlat/shm_resource_flags.in \
+       xlat/shmctl_flags.in xlat/shutdown_modes.in \
+       xlat/sigact_flags.in xlat/sigaltstack_flags.in \
+       xlat/sigbus_codes.in xlat/sigchld_codes.in \
+       xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in \
+       xlat/sigill_codes.in xlat/siginfo_codes.in \
+       xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in \
+       xlat/sigprof_codes.in xlat/sigsegv_codes.in \
+       xlat/sigsys_codes.in xlat/sigtrap_codes.in \
+       xlat/sock_type_flags.in xlat/socketlayers.in \
+       xlat/sockipoptions.in xlat/sockipv6options.in \
+       xlat/sockipxoptions.in xlat/sockoptions.in \
+       xlat/sockpacketoptions.in xlat/sockrawoptions.in \
+       xlat/socksctpoptions.in xlat/socktcpoptions.in \
+       xlat/socktypes.in xlat/splice_flags.in \
+       xlat/sram_alloc_flags.in xlat/swap_flags.in \
+       xlat/sync_file_range_flags.in xlat/sysctl_kern.in \
+       xlat/sysctl_net.in xlat/sysctl_net_core.in \
+       xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in \
+       xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in \
+       xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in \
+       xlat/sysctl_root.in xlat/sysctl_vm.in \
+       xlat/syslog_action_type.in xlat/sysmips_operations.in \
+       xlat/tcflsh_options.in xlat/tcxonc_options.in \
+       xlat/timerfdflags.in xlat/ubi_volume_props.in \
+       xlat/ubi_volume_types.in xlat/umount_flags.in xlat/usagewho.in \
+       xlat/wait4_options.in xlat/waitid_types.in \
+       xlat/whence_codes.in xlat/xattrflags.in \
+       xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in
+XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclcmds.h xlat/aclipc.h \
+       xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h \
+       xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h \
+       xlat/archvals.h xlat/at_flags.h xlat/atomic_ops.h \
+       xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h \
+       xlat/bootflags2.h xlat/bootflags3.h xlat/cacheflush_scope.h \
+       xlat/cap_version.h xlat/capabilities.h xlat/clockflags.h \
+       xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h \
+       xlat/delete_module_flags.h xlat/direnttypes.h xlat/domains.h \
+       xlat/epollctls.h xlat/epollevents.h xlat/epollflags.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/fileflags.h xlat/flockcmds.h \
+       xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h \
+       xlat/futexwakeops.h xlat/icmpfilterflags.h \
+       xlat/if_dqblk_valid.h xlat/if_dqinfo_valid.h xlat/iffflags.h \
+       xlat/inet_protocols.h xlat/inotify_flags.h \
+       xlat/inotify_init_flags.h xlat/ioprio_class.h \
+       xlat/ioprio_who.h xlat/ipc_msg_flags.h xlat/itimer_which.h \
+       xlat/kexec_arch_values.h xlat/kexec_flags.h xlat/key_perms.h \
+       xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h \
+       xlat/lockfcmds.h xlat/loop_crypt_type_options.h \
+       xlat/loop_flags_options.h xlat/madvise_cmds.h \
+       xlat/mbindflags.h xlat/mctl_funcs.h xlat/mctl_lockas.h \
+       xlat/mctl_sync.h xlat/mempolicyflags.h xlat/mlockall_flags.h \
+       xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h \
+       xlat/modetypes.h xlat/modflags.h xlat/module_init_flags.h \
+       xlat/mount_flags.h xlat/move_pages_flags.h xlat/mremap_flags.h \
+       xlat/msg_flags.h xlat/msgctl_flags.h xlat/msgflags.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/netlink_protocols.h \
+       xlat/notifyflags.h xlat/nt_descriptor_types.h \
+       xlat/open_access_modes.h xlat/open_mode_flags.h \
+       xlat/openmodessol.h xlat/perf_event_open_flags.h \
+       xlat/personality_options.h xlat/pmsgflags.h xlat/policies.h \
+       xlat/pollflags.h xlat/prctl_options.h xlat/priorities.h \
+       xlat/ptp_flags_options.h xlat/ptrace_cmds.h \
+       xlat/ptrace_setoptions_flags.h xlat/qm_which.h \
+       xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h \
+       xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h \
+       xlat/schedulers.h xlat/scmvals.h xlat/semctl_flags.h \
+       xlat/semop_flags.h xlat/sg_io_dxfer_direction.h \
+       xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h \
+       xlat/shutdown_modes.h xlat/sigact_flags.h \
+       xlat/sigaltstack_flags.h xlat/sigbus_codes.h \
+       xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h \
+       xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h \
+       xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h \
+       xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h \
+       xlat/sigtrap_codes.h xlat/sock_type_flags.h \
+       xlat/socketlayers.h xlat/sockipoptions.h \
+       xlat/sockipv6options.h xlat/sockipxoptions.h \
+       xlat/sockoptions.h xlat/sockpacketoptions.h \
+       xlat/sockrawoptions.h xlat/socksctpoptions.h \
+       xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h \
+       xlat/sram_alloc_flags.h xlat/swap_flags.h \
+       xlat/sync_file_range_flags.h xlat/sysctl_kern.h \
+       xlat/sysctl_net.h xlat/sysctl_net_core.h \
+       xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h \
+       xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h \
+       xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h \
+       xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h \
+       xlat/sysmips_operations.h xlat/tcflsh_options.h \
+       xlat/tcxonc_options.h xlat/timerfdflags.h \
+       xlat/ubi_volume_props.h xlat/ubi_volume_types.h \
+       xlat/umount_flags.h xlat/usagewho.h xlat/wait4_options.h \
+       xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h \
+       xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
+strace_SOURCES = aio.c bjm.c block.c count.c desc.c fanotify.c file.c \
+       inotify.c io.c ioctl.c ioprio.c ipc.c kexec.c keyctl.c ldt.c \
+       loop.c mem.c mtd.c net.c pathtrace.c process.c ptp.c quota.c \
+       reboot.c resource.c scsi.c signal.c sock.c strace.c stream.c \
+       syscall.c system.c term.c time.c util.c vsprintf.c \
+       $(am__append_1)
+@USE_LIBUNWIND_FALSE@strace_CPPFLAGS = $(AM_CPPFLAGS)
+@USE_LIBUNWIND_TRUE@strace_CPPFLAGS = $(AM_CPPFLAGS) $(libunwind_CPPFLAGS)
+@USE_LIBUNWIND_TRUE@strace_LDFLAGS = $(libunwind_LDFLAGS)
+@USE_LIBUNWIND_TRUE@strace_LDADD = $(libunwind_LIBS)
 noinst_HEADERS = defs.h
 # Enable this to get link map generated
 #strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile
@@ -368,7 +579,6 @@ EXTRA_DIST = \
        debian/strace64.manpages        \
        debian/watch                    \
        errnoent.sh                     \
-       ioctlsort.c                     \
        linux/aarch64/errnoent1.h       \
        linux/aarch64/ioctlent.h.in     \
        linux/aarch64/ioctlent1.h       \
@@ -379,6 +589,8 @@ EXTRA_DIST = \
        linux/alpha/ioctlent.h.in       \
        linux/alpha/signalent.h         \
        linux/alpha/syscallent.h        \
+       linux/arc/ioctlent.h.in         \
+       linux/arc/syscallent.h          \
        linux/arm/ioctlent.h.in         \
        linux/arm/syscallent.h          \
        linux/avr32/ioctlent.h.in       \
@@ -387,6 +599,7 @@ EXTRA_DIST = \
        linux/bfin/syscallent.h         \
        linux/dummy.h                   \
        linux/errnoent.h                \
+       linux/fanotify.h                \
        linux/hppa/errnoent.h           \
        linux/hppa/ioctlent.h.in        \
        linux/hppa/signalent.h          \
@@ -396,10 +609,13 @@ EXTRA_DIST = \
        linux/ia64/ioctlent.h.in        \
        linux/ia64/signalent.h          \
        linux/ia64/syscallent.h         \
+       linux/inotify.h                 \
        linux/ioctlent-filter.awk       \
        linux/ioctlent.h.in             \
        linux/ioctlent.sh               \
        linux/ioctlsort.c               \
+       linux/kexec.h                   \
+       linux/keyctl.h                  \
        linux/m68k/ioctlent.h.in        \
        linux/m68k/syscallent.h         \
        linux/metag/ioctlent.h.in       \
@@ -418,12 +634,15 @@ EXTRA_DIST = \
        linux/mtd-abi.h                 \
        linux/or1k/ioctlent.h.in        \
        linux/or1k/syscallent.h         \
+       linux/personality.h             \
        linux/powerpc/errnoent1.h       \
        linux/powerpc/ioctlent.h.in     \
        linux/powerpc/ioctlent1.h       \
        linux/powerpc/signalent1.h      \
        linux/powerpc/syscallent.h      \
        linux/powerpc/syscallent1.h     \
+       linux/ptp_clock.h               \
+       linux/reboot.h                  \
        linux/s390/ioctlent.h.in        \
        linux/s390/syscallent.h         \
        linux/s390x/ioctlent.h.in       \
@@ -493,9 +712,12 @@ EXTRA_DIST = \
        strace-log-merge                \
        strace.spec                     \
        syscallent.sh                   \
+       $(XLAT_INPUT_FILES)             \
+       $(XLAT_HEADER_FILES)            \
+       xlat/gen.sh                     \
        xlate.el
 
-BUILT_SOURCES = .version $(am__append_1) $(ioctlent_h)
+BUILT_SOURCES = .version $(am__append_2) $(ioctlent_h)
 today = $(shell date +%Y-%m-%d)
 version_regexp = $(subst .,\.,$(VERSION))
 news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
@@ -514,7 +736,7 @@ all: $(BUILT_SOURCES) config.h
 .SUFFIXES: .c .o .obj
 am--refresh: Makefile
        @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/xlat/Makemodule.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -537,6 +759,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
        esac;
+$(srcdir)/xlat/Makemodule.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
@@ -548,8 +771,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-       @if test ! -f $@; then rm -f stamp-h1; else :; fi
-       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+       @test -f $@ || rm -f stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
@@ -570,10 +793,11 @@ install-binPROGRAMS: $(bin_PROGRAMS)
        fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p; \
-         then echo "$$p"; echo "$$p"; else :; fi; \
+       while read p p1; do if test -f $$p \
+         then echo "$$p"; echo "$$p"; else :; fi; \
        done | \
-       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
        sed 'N;N;N;s,\n, ,g' | \
        $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -594,16 +818,18 @@ uninstall-binPROGRAMS:
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
        files=`for p in $$list; do echo "$$p"; done | \
          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-             -e 's/$$/$(EXEEXT)/' `; \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
        test -n "$$list" || exit 0; \
        echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
        -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
 strace$(EXEEXT): $(strace_OBJECTS) $(strace_DEPENDENCIES) $(EXTRA_strace_DEPENDENCIES) 
        @rm -f strace$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(strace_OBJECTS) $(strace_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(strace_LINK) $(strace_OBJECTS) $(strace_LDADD) $(LIBS)
 install-binSCRIPTS: $(bin_SCRIPTS)
        @$(NORMAL_INSTALL)
        @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
@@ -646,47 +872,575 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bjm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/desc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathtrace.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quota.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resource.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scsi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syscall.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/term.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vsprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-aio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bjm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-block.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-count.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-desc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fanotify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-file.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-inotify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-io.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioprio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ipc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kexec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-keyctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ldt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-loop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mem.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-net.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-pathtrace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-process.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ptp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-quota.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-reboot.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-resource.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-scsi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-signal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-strace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-stream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-system.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-term.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-time.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-util.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-vsprintf.Po@am__quote@
 
 .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
 @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 $<
+@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
 @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 `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+strace-aio.o: aio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-aio.o `test -f 'aio.c' || echo '$(srcdir)/'`aio.c
+
+strace-aio.obj: aio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-aio.obj `if test -f 'aio.c'; then $(CYGPATH_W) 'aio.c'; else $(CYGPATH_W) '$(srcdir)/aio.c'; fi`
+
+strace-bjm.o: bjm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-bjm.o `test -f 'bjm.c' || echo '$(srcdir)/'`bjm.c
+
+strace-bjm.obj: bjm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-bjm.obj `if test -f 'bjm.c'; then $(CYGPATH_W) 'bjm.c'; else $(CYGPATH_W) '$(srcdir)/bjm.c'; fi`
+
+strace-block.o: block.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-block.o `test -f 'block.c' || echo '$(srcdir)/'`block.c
+
+strace-block.obj: block.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-block.obj `if test -f 'block.c'; then $(CYGPATH_W) 'block.c'; else $(CYGPATH_W) '$(srcdir)/block.c'; fi`
+
+strace-count.o: count.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-count.o `test -f 'count.c' || echo '$(srcdir)/'`count.c
+
+strace-count.obj: count.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-count.obj `if test -f 'count.c'; then $(CYGPATH_W) 'count.c'; else $(CYGPATH_W) '$(srcdir)/count.c'; fi`
+
+strace-desc.o: desc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-desc.o `test -f 'desc.c' || echo '$(srcdir)/'`desc.c
+
+strace-desc.obj: desc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-desc.obj `if test -f 'desc.c'; then $(CYGPATH_W) 'desc.c'; else $(CYGPATH_W) '$(srcdir)/desc.c'; fi`
+
+strace-fanotify.o: fanotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-fanotify.o `test -f 'fanotify.c' || echo '$(srcdir)/'`fanotify.c
+
+strace-fanotify.obj: fanotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-fanotify.obj `if test -f 'fanotify.c'; then $(CYGPATH_W) 'fanotify.c'; else $(CYGPATH_W) '$(srcdir)/fanotify.c'; fi`
+
+strace-file.o: file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-file.o -MD -MP -MF $(DEPDIR)/strace-file.Tpo -c -o strace-file.o `test -f 'file.c' || echo '$(srcdir)/'`file.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-file.Tpo $(DEPDIR)/strace-file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file.c' object='strace-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) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-file.o `test -f 'file.c' || echo '$(srcdir)/'`file.c
+
+strace-file.obj: file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-file.obj -MD -MP -MF $(DEPDIR)/strace-file.Tpo -c -o strace-file.obj `if test -f 'file.c'; then $(CYGPATH_W) 'file.c'; else $(CYGPATH_W) '$(srcdir)/file.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-file.Tpo $(DEPDIR)/strace-file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file.c' object='strace-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) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-file.obj `if test -f 'file.c'; then $(CYGPATH_W) 'file.c'; else $(CYGPATH_W) '$(srcdir)/file.c'; fi`
+
+strace-inotify.o: inotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-inotify.o `test -f 'inotify.c' || echo '$(srcdir)/'`inotify.c
+
+strace-inotify.obj: inotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
+
+strace-io.o: io.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
+
+strace-io.obj: io.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-io.obj `if test -f 'io.c'; then $(CYGPATH_W) 'io.c'; else $(CYGPATH_W) '$(srcdir)/io.c'; fi`
+
+strace-ioctl.o: ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
+
+strace-ioctl.obj: ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
+
+strace-ioprio.o: ioprio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ioprio.o `test -f 'ioprio.c' || echo '$(srcdir)/'`ioprio.c
+
+strace-ioprio.obj: ioprio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ioprio.obj `if test -f 'ioprio.c'; then $(CYGPATH_W) 'ioprio.c'; else $(CYGPATH_W) '$(srcdir)/ioprio.c'; fi`
+
+strace-ipc.o: ipc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-ipc.o -MD -MP -MF $(DEPDIR)/strace-ipc.Tpo -c -o strace-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc.Tpo $(DEPDIR)/strace-ipc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc.c' object='strace-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) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
+
+strace-ipc.obj: ipc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-ipc.obj -MD -MP -MF $(DEPDIR)/strace-ipc.Tpo -c -o strace-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)/strace-ipc.Tpo $(DEPDIR)/strace-ipc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc.c' object='strace-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) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
+
+strace-kexec.o: kexec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-kexec.o `test -f 'kexec.c' || echo '$(srcdir)/'`kexec.c
+
+strace-kexec.obj: kexec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-kexec.obj `if test -f 'kexec.c'; then $(CYGPATH_W) 'kexec.c'; else $(CYGPATH_W) '$(srcdir)/kexec.c'; fi`
+
+strace-keyctl.o: keyctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-keyctl.o `test -f 'keyctl.c' || echo '$(srcdir)/'`keyctl.c
+
+strace-keyctl.obj: keyctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-keyctl.obj `if test -f 'keyctl.c'; then $(CYGPATH_W) 'keyctl.c'; else $(CYGPATH_W) '$(srcdir)/keyctl.c'; fi`
+
+strace-ldt.o: ldt.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ldt.o `test -f 'ldt.c' || echo '$(srcdir)/'`ldt.c
+
+strace-ldt.obj: ldt.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ldt.obj `if test -f 'ldt.c'; then $(CYGPATH_W) 'ldt.c'; else $(CYGPATH_W) '$(srcdir)/ldt.c'; fi`
+
+strace-loop.o: loop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-loop.o `test -f 'loop.c' || echo '$(srcdir)/'`loop.c
+
+strace-loop.obj: loop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-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) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-mem.o `test -f 'mem.c' || echo '$(srcdir)/'`mem.c
+
+strace-mem.obj: mem.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-mem.obj `if test -f 'mem.c'; then $(CYGPATH_W) 'mem.c'; else $(CYGPATH_W) '$(srcdir)/mem.c'; fi`
+
+strace-mtd.o: mtd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-mtd.o `test -f 'mtd.c' || echo '$(srcdir)/'`mtd.c
+
+strace-mtd.obj: mtd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
+
+strace-net.o: net.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-net.o `test -f 'net.c' || echo '$(srcdir)/'`net.c
+
+strace-net.obj: net.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-net.obj `if test -f 'net.c'; then $(CYGPATH_W) 'net.c'; else $(CYGPATH_W) '$(srcdir)/net.c'; fi`
+
+strace-pathtrace.o: pathtrace.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-pathtrace.o `test -f 'pathtrace.c' || echo '$(srcdir)/'`pathtrace.c
+
+strace-pathtrace.obj: pathtrace.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-pathtrace.obj `if test -f 'pathtrace.c'; then $(CYGPATH_W) 'pathtrace.c'; else $(CYGPATH_W) '$(srcdir)/pathtrace.c'; fi`
+
+strace-process.o: process.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-process.o `test -f 'process.c' || echo '$(srcdir)/'`process.c
+
+strace-process.obj: process.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-process.obj `if test -f 'process.c'; then $(CYGPATH_W) 'process.c'; else $(CYGPATH_W) '$(srcdir)/process.c'; fi`
+
+strace-ptp.o: ptp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ptp.o `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
+
+strace-ptp.obj: ptp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-ptp.obj `if test -f 'ptp.c'; then $(CYGPATH_W) 'ptp.c'; else $(CYGPATH_W) '$(srcdir)/ptp.c'; fi`
+
+strace-quota.o: quota.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-quota.o `test -f 'quota.c' || echo '$(srcdir)/'`quota.c
+
+strace-quota.obj: quota.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-quota.obj `if test -f 'quota.c'; then $(CYGPATH_W) 'quota.c'; else $(CYGPATH_W) '$(srcdir)/quota.c'; fi`
+
+strace-reboot.o: reboot.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-reboot.o `test -f 'reboot.c' || echo '$(srcdir)/'`reboot.c
+
+strace-reboot.obj: reboot.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-reboot.obj `if test -f 'reboot.c'; then $(CYGPATH_W) 'reboot.c'; else $(CYGPATH_W) '$(srcdir)/reboot.c'; fi`
+
+strace-resource.o: resource.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-resource.o `test -f 'resource.c' || echo '$(srcdir)/'`resource.c
+
+strace-resource.obj: resource.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-resource.obj `if test -f 'resource.c'; then $(CYGPATH_W) 'resource.c'; else $(CYGPATH_W) '$(srcdir)/resource.c'; fi`
+
+strace-scsi.o: scsi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-scsi.o `test -f 'scsi.c' || echo '$(srcdir)/'`scsi.c
+
+strace-scsi.obj: scsi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-scsi.obj `if test -f 'scsi.c'; then $(CYGPATH_W) 'scsi.c'; else $(CYGPATH_W) '$(srcdir)/scsi.c'; fi`
+
+strace-signal.o: signal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-signal.o `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
+
+strace-signal.obj: signal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-signal.obj `if test -f 'signal.c'; then $(CYGPATH_W) 'signal.c'; else $(CYGPATH_W) '$(srcdir)/signal.c'; fi`
+
+strace-sock.o: sock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
+
+strace-sock.obj: sock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-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) $(AM_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) $(AM_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) $(AM_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) $(AM_CFLAGS) $(CFLAGS) -c -o strace-strace.obj `if test -f 'strace.c'; then $(CYGPATH_W) 'strace.c'; else $(CYGPATH_W) '$(srcdir)/strace.c'; fi`
+
+strace-stream.o: stream.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-stream.o -MD -MP -MF $(DEPDIR)/strace-stream.Tpo -c -o strace-stream.o `test -f 'stream.c' || echo '$(srcdir)/'`stream.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-stream.Tpo $(DEPDIR)/strace-stream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stream.c' object='strace-stream.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-stream.o `test -f 'stream.c' || echo '$(srcdir)/'`stream.c
+
+strace-stream.obj: stream.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-stream.obj -MD -MP -MF $(DEPDIR)/strace-stream.Tpo -c -o strace-stream.obj `if test -f 'stream.c'; then $(CYGPATH_W) 'stream.c'; else $(CYGPATH_W) '$(srcdir)/stream.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-stream.Tpo $(DEPDIR)/strace-stream.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stream.c' object='strace-stream.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-stream.obj `if test -f 'stream.c'; then $(CYGPATH_W) 'stream.c'; else $(CYGPATH_W) '$(srcdir)/stream.c'; fi`
+
+strace-syscall.o: syscall.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-syscall.o `test -f 'syscall.c' || echo '$(srcdir)/'`syscall.c
+
+strace-syscall.obj: syscall.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-syscall.obj `if test -f 'syscall.c'; then $(CYGPATH_W) 'syscall.c'; else $(CYGPATH_W) '$(srcdir)/syscall.c'; fi`
+
+strace-system.o: system.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-system.o -MD -MP -MF $(DEPDIR)/strace-system.Tpo -c -o strace-system.o `test -f 'system.c' || echo '$(srcdir)/'`system.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-system.Tpo $(DEPDIR)/strace-system.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='system.c' object='strace-system.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-system.o `test -f 'system.c' || echo '$(srcdir)/'`system.c
+
+strace-system.obj: system.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-system.obj -MD -MP -MF $(DEPDIR)/strace-system.Tpo -c -o strace-system.obj `if test -f 'system.c'; then $(CYGPATH_W) 'system.c'; else $(CYGPATH_W) '$(srcdir)/system.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-system.Tpo $(DEPDIR)/strace-system.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='system.c' object='strace-system.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-system.obj `if test -f 'system.c'; then $(CYGPATH_W) 'system.c'; else $(CYGPATH_W) '$(srcdir)/system.c'; fi`
+
+strace-term.o: term.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-term.o `test -f 'term.c' || echo '$(srcdir)/'`term.c
+
+strace-term.obj: term.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-term.obj `if test -f 'term.c'; then $(CYGPATH_W) 'term.c'; else $(CYGPATH_W) '$(srcdir)/term.c'; fi`
+
+strace-time.o: time.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+
+strace-time.obj: time.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
+
+strace-util.o: util.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
+
+strace-util.obj: util.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
+
+strace-vsprintf.o: vsprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-vsprintf.o -MD -MP -MF $(DEPDIR)/strace-vsprintf.Tpo -c -o strace-vsprintf.o `test -f 'vsprintf.c' || echo '$(srcdir)/'`vsprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-vsprintf.Tpo $(DEPDIR)/strace-vsprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vsprintf.c' object='strace-vsprintf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-vsprintf.o `test -f 'vsprintf.c' || echo '$(srcdir)/'`vsprintf.c
+
+strace-vsprintf.obj: vsprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT strace-vsprintf.obj -MD -MP -MF $(DEPDIR)/strace-vsprintf.Tpo -c -o strace-vsprintf.obj `if test -f 'vsprintf.c'; then $(CYGPATH_W) 'vsprintf.c'; else $(CYGPATH_W) '$(srcdir)/vsprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-vsprintf.Tpo $(DEPDIR)/strace-vsprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vsprintf.c' object='strace-vsprintf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-vsprintf.obj `if test -f 'vsprintf.c'; then $(CYGPATH_W) 'vsprintf.c'; else $(CYGPATH_W) '$(srcdir)/vsprintf.c'; fi`
+
+strace-unwind.o: unwind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-unwind.o `test -f 'unwind.c' || echo '$(srcdir)/'`unwind.c
+
+strace-unwind.obj: unwind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_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@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o strace-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
 install-man1: $(man_MANS)
        @$(NORMAL_INSTALL)
        @list1=''; \
@@ -732,22 +1486,25 @@ uninstall-man1:
        dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-       @fail= failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+       @fail=; \
+       if $(am__make_keepgoing); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -762,57 +1519,12 @@ $(RECURSIVE_TARGETS):
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-       @fail= failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
-       dot_seen=no; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       rev=''; for subdir in $$list; do \
-         if test "$$subdir" = "."; then :; else \
-           rev="$$subdir $$rev"; \
-         fi; \
-       done; \
-       rev="$$rev ."; \
-       target=`echo $@ | sed s/-recursive//`; \
-       for subdir in $$rev; do \
-         echo "Making $$target in $$subdir"; \
-         if test "$$subdir" = "."; then \
-           local_target="$$target-am"; \
-         else \
-           local_target="$$target"; \
-         fi; \
-         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
-       done && test -z "$$fail"
-tags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-       done
-ctags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-       done
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -828,12 +1540,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
              set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -845,15 +1552,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -862,24 +1565,33 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
-       @list='$(MANS)'; if test -n "$$list"; then \
-         list=`for p in $$list; do \
-           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-         if test -n "$$list" && \
-           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-           echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-           echo "       typically \`make maintainer-clean' will remove them" >&2; \
-           exit 1; \
-         else :; fi; \
-       else :; fi
        $(am__remove_distdir)
        test -d "$(distdir)" || mkdir "$(distdir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -948,39 +1660,41 @@ distdir: $(DISTFILES)
        || chmod -R a+r "$(distdir)"
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-lzip: distdir
        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__remove_distdir)
-
-dist-lzma: distdir
-       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-tarZ: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-shar: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-zip: distdir
        -rm -f $(distdir).zip
        zip -rq $(distdir).zip $(distdir)
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
-dist dist-all: distdir
-       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__remove_distdir)
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -991,8 +1705,6 @@ distcheck: dist
          GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lzma*) \
-         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
        *.tar.lz*) \
          lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
@@ -1004,18 +1716,19 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir); chmod u+w $(distdir)
-       mkdir $(distdir)/_build
-       mkdir $(distdir)/_inst
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
-         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+         && ../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1038,7 +1751,7 @@ distcheck: dist
          && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
          && cd "$$am__cwd" \
          || exit 1
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
@@ -1184,29 +1897,376 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-man
 
 uninstall-man: uninstall-man1
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
-       ctags-recursive install install-am install-strip \
-       tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       all all-am am--refresh check check-am clean clean-binPROGRAMS \
-       clean-generic ctags ctags-recursive dist dist-all dist-bzip2 \
-       dist-gzip dist-hook dist-lzip dist-lzma dist-shar dist-tarZ \
-       dist-xz dist-zip 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 \
-       install-binSCRIPTS install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-man1 install-pdf install-pdf-am install-ps \
-       install-ps-am install-strip installcheck installcheck-am \
-       installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
-       uninstall uninstall-am uninstall-binPROGRAMS \
+.MAKE: $(am__recursive_targets) all check install install-am \
+       install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--refresh check check-am clean clean-binPROGRAMS \
+       clean-cscope clean-generic 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 distclean-generic distclean-hdr \
+       distclean-tags distcleancheck distdir distuninstallcheck dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-binPROGRAMS install-binSCRIPTS install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-man1 install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
        uninstall-binSCRIPTS uninstall-man uninstall-man1
 
+$(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/aclcmds.h: $(top_srcdir)/xlat/aclcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/aclipc.h: $(top_srcdir)/xlat/aclipc.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/adjtimex_modes.h: $(top_srcdir)/xlat/adjtimex_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/adjtimex_state.h: $(top_srcdir)/xlat/adjtimex_state.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/adjtimex_status.h: $(top_srcdir)/xlat/adjtimex_status.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/advise.h: $(top_srcdir)/xlat/advise.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/af_packet_types.h: $(top_srcdir)/xlat/af_packet_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/archvals.h: $(top_srcdir)/xlat/archvals.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/at_flags.h: $(top_srcdir)/xlat/at_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/atomic_ops.h: $(top_srcdir)/xlat/atomic_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/baud_options.h: $(top_srcdir)/xlat/baud_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/blkpg_ops.h: $(top_srcdir)/xlat/blkpg_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bootflags1.h: $(top_srcdir)/xlat/bootflags1.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bootflags2.h: $(top_srcdir)/xlat/bootflags2.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bootflags3.h: $(top_srcdir)/xlat/bootflags3.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cacheflush_scope.h: $(top_srcdir)/xlat/cacheflush_scope.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cap_version.h: $(top_srcdir)/xlat/cap_version.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/capabilities.h: $(top_srcdir)/xlat/capabilities.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clockflags.h: $(top_srcdir)/xlat/clockflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clocknames.h: $(top_srcdir)/xlat/clocknames.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clone_flags.h: $(top_srcdir)/xlat/clone_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cpuclocknames.h: $(top_srcdir)/xlat/cpuclocknames.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/delete_module_flags.h: $(top_srcdir)/xlat/delete_module_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/direnttypes.h: $(top_srcdir)/xlat/direnttypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/domains.h: $(top_srcdir)/xlat/domains.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/epollctls.h: $(top_srcdir)/xlat/epollctls.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/epollevents.h: $(top_srcdir)/xlat/epollevents.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/epollflags.h: $(top_srcdir)/xlat/epollflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_classes.h: $(top_srcdir)/xlat/fan_classes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_event_flags.h: $(top_srcdir)/xlat/fan_event_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_init_flags.h: $(top_srcdir)/xlat/fan_init_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_mark_flags.h: $(top_srcdir)/xlat/fan_mark_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fcntlcmds.h: $(top_srcdir)/xlat/fcntlcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fdflags.h: $(top_srcdir)/xlat/fdflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fileflags.h: $(top_srcdir)/xlat/fileflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/futexwakecmps.h: $(top_srcdir)/xlat/futexwakecmps.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/futexwakeops.h: $(top_srcdir)/xlat/futexwakeops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/icmpfilterflags.h: $(top_srcdir)/xlat/icmpfilterflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/if_dqblk_valid.h: $(top_srcdir)/xlat/if_dqblk_valid.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/if_dqinfo_valid.h: $(top_srcdir)/xlat/if_dqinfo_valid.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/iffflags.h: $(top_srcdir)/xlat/iffflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet_protocols.h: $(top_srcdir)/xlat/inet_protocols.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inotify_flags.h: $(top_srcdir)/xlat/inotify_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inotify_init_flags.h: $(top_srcdir)/xlat/inotify_init_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ioprio_class.h: $(top_srcdir)/xlat/ioprio_class.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ioprio_who.h: $(top_srcdir)/xlat/ioprio_who.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ipc_msg_flags.h: $(top_srcdir)/xlat/ipc_msg_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/itimer_which.h: $(top_srcdir)/xlat/itimer_which.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/kexec_arch_values.h: $(top_srcdir)/xlat/kexec_arch_values.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/kexec_flags.h: $(top_srcdir)/xlat/kexec_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/key_perms.h: $(top_srcdir)/xlat/key_perms.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/key_reqkeys.h: $(top_srcdir)/xlat/key_reqkeys.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/key_spec.h: $(top_srcdir)/xlat/key_spec.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_commands.h: $(top_srcdir)/xlat/keyctl_commands.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/lockfcmds.h: $(top_srcdir)/xlat/lockfcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/loop_crypt_type_options.h: $(top_srcdir)/xlat/loop_crypt_type_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/loop_flags_options.h: $(top_srcdir)/xlat/loop_flags_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/madvise_cmds.h: $(top_srcdir)/xlat/madvise_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mctl_funcs.h: $(top_srcdir)/xlat/mctl_funcs.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mctl_lockas.h: $(top_srcdir)/xlat/mctl_lockas.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mempolicyflags.h: $(top_srcdir)/xlat/mempolicyflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mlockall_flags.h: $(top_srcdir)/xlat/mlockall_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mmap_flags.h: $(top_srcdir)/xlat/mmap_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mmap_prot.h: $(top_srcdir)/xlat/mmap_prot.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/modem_flags.h: $(top_srcdir)/xlat/modem_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/modetypes.h: $(top_srcdir)/xlat/modetypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/modflags.h: $(top_srcdir)/xlat/modflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/module_init_flags.h: $(top_srcdir)/xlat/module_init_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mount_flags.h: $(top_srcdir)/xlat/mount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/move_pages_flags.h: $(top_srcdir)/xlat/move_pages_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mremap_flags.h: $(top_srcdir)/xlat/mremap_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/msg_flags.h: $(top_srcdir)/xlat/msg_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/msgctl_flags.h: $(top_srcdir)/xlat/msgctl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/msgflags.h: $(top_srcdir)/xlat/msgflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_flags_options.h: $(top_srcdir)/xlat/mtd_flags_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_mode_options.h: $(top_srcdir)/xlat/mtd_mode_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_nandecc_options.h: $(top_srcdir)/xlat/mtd_nandecc_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/netlink_protocols.h: $(top_srcdir)/xlat/netlink_protocols.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/notifyflags.h: $(top_srcdir)/xlat/notifyflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nt_descriptor_types.h: $(top_srcdir)/xlat/nt_descriptor_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_access_modes.h: $(top_srcdir)/xlat/open_access_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/openmodessol.h: $(top_srcdir)/xlat/openmodessol.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/perf_event_open_flags.h: $(top_srcdir)/xlat/perf_event_open_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/personality_options.h: $(top_srcdir)/xlat/personality_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/pmsgflags.h: $(top_srcdir)/xlat/pmsgflags.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/prctl_options.h: $(top_srcdir)/xlat/prctl_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/priorities.h: $(top_srcdir)/xlat/priorities.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptp_flags_options.h: $(top_srcdir)/xlat/ptp_flags_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptrace_cmds.h: $(top_srcdir)/xlat/ptrace_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptrace_setoptions_flags.h: $(top_srcdir)/xlat/ptrace_setoptions_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/qm_which.h: $(top_srcdir)/xlat/qm_which.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/quota_formats.h: $(top_srcdir)/xlat/quota_formats.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/quotacmds.h: $(top_srcdir)/xlat/quotacmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/quotatypes.h: $(top_srcdir)/xlat/quotatypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rename_flags.h: $(top_srcdir)/xlat/rename_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/resource_flags.h: $(top_srcdir)/xlat/resource_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/resources.h: $(top_srcdir)/xlat/resources.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/schedulers.h: $(top_srcdir)/xlat/schedulers.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/scmvals.h: $(top_srcdir)/xlat/scmvals.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/semctl_flags.h: $(top_srcdir)/xlat/semctl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/semop_flags.h: $(top_srcdir)/xlat/semop_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sg_io_dxfer_direction.h: $(top_srcdir)/xlat/sg_io_dxfer_direction.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shm_flags.h: $(top_srcdir)/xlat/shm_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shm_resource_flags.h: $(top_srcdir)/xlat/shm_resource_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shmctl_flags.h: $(top_srcdir)/xlat/shmctl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shutdown_modes.h: $(top_srcdir)/xlat/shutdown_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigact_flags.h: $(top_srcdir)/xlat/sigact_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigaltstack_flags.h: $(top_srcdir)/xlat/sigaltstack_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigbus_codes.h: $(top_srcdir)/xlat/sigbus_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigchld_codes.h: $(top_srcdir)/xlat/sigchld_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigemt_codes.h: $(top_srcdir)/xlat/sigemt_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigev_value.h: $(top_srcdir)/xlat/sigev_value.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigfpe_codes.h: $(top_srcdir)/xlat/sigfpe_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigill_codes.h: $(top_srcdir)/xlat/sigill_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/siginfo_codes.h: $(top_srcdir)/xlat/siginfo_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigpoll_codes.h: $(top_srcdir)/xlat/sigpoll_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigprocmaskcmds.h: $(top_srcdir)/xlat/sigprocmaskcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigprof_codes.h: $(top_srcdir)/xlat/sigprof_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigsegv_codes.h: $(top_srcdir)/xlat/sigsegv_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigsys_codes.h: $(top_srcdir)/xlat/sigsys_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigtrap_codes.h: $(top_srcdir)/xlat/sigtrap_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_type_flags.h: $(top_srcdir)/xlat/sock_type_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socketlayers.h: $(top_srcdir)/xlat/socketlayers.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockipoptions.h: $(top_srcdir)/xlat/sockipoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockipv6options.h: $(top_srcdir)/xlat/sockipv6options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockipxoptions.h: $(top_srcdir)/xlat/sockipxoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockoptions.h: $(top_srcdir)/xlat/sockoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockpacketoptions.h: $(top_srcdir)/xlat/sockpacketoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockrawoptions.h: $(top_srcdir)/xlat/sockrawoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socksctpoptions.h: $(top_srcdir)/xlat/socksctpoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socktcpoptions.h: $(top_srcdir)/xlat/socktcpoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socktypes.h: $(top_srcdir)/xlat/socktypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/splice_flags.h: $(top_srcdir)/xlat/splice_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sram_alloc_flags.h: $(top_srcdir)/xlat/sram_alloc_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/swap_flags.h: $(top_srcdir)/xlat/swap_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sync_file_range_flags.h: $(top_srcdir)/xlat/sync_file_range_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_kern.h: $(top_srcdir)/xlat/sysctl_kern.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net.h: $(top_srcdir)/xlat/sysctl_net.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_core.h: $(top_srcdir)/xlat/sysctl_net_core.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv4.h: $(top_srcdir)/xlat/sysctl_net_ipv4.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv4_conf.h: $(top_srcdir)/xlat/sysctl_net_ipv4_conf.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv4_route.h: $(top_srcdir)/xlat/sysctl_net_ipv4_route.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv6.h: $(top_srcdir)/xlat/sysctl_net_ipv6.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv6_route.h: $(top_srcdir)/xlat/sysctl_net_ipv6_route.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_unix.h: $(top_srcdir)/xlat/sysctl_net_unix.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_root.h: $(top_srcdir)/xlat/sysctl_root.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_vm.h: $(top_srcdir)/xlat/sysctl_vm.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/syslog_action_type.h: $(top_srcdir)/xlat/syslog_action_type.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysmips_operations.h: $(top_srcdir)/xlat/sysmips_operations.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tcflsh_options.h: $(top_srcdir)/xlat/tcflsh_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tcxonc_options.h: $(top_srcdir)/xlat/tcxonc_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/timerfdflags.h: $(top_srcdir)/xlat/timerfdflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ubi_volume_props.h: $(top_srcdir)/xlat/ubi_volume_props.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ubi_volume_types.h: $(top_srcdir)/xlat/ubi_volume_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/umount_flags.h: $(top_srcdir)/xlat/umount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/usagewho.h: $(top_srcdir)/xlat/usagewho.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/whence_codes.h: $(top_srcdir)/xlat/whence_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/xattrflags.h: $(top_srcdir)/xlat/xattrflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/xfs_dqblk_flags.h: $(top_srcdir)/xlat/xfs_dqblk_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/xfs_quota_flags.h: $(top_srcdir)/xlat/xfs_quota_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 
 .PHONY: srpm
 srpm: dist-xz
@@ -1240,14 +2300,14 @@ news-check: NEWS
 @MAINTAINER_MODE_TRUE@$(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \
 @MAINTAINER_MODE_TRUE@            $(srcdir)/Makefile.in $(srcdir)/.version
 @MAINTAINER_MODE_TRUE@ $(AM_V_GEN)                                                     \
-@MAINTAINER_MODE_TRUE@ {                                                               \
+@MAINTAINER_MODE_TRUE@ (                                                               \
 @MAINTAINER_MODE_TRUE@   cd $(srcdir);                                                 \
 @MAINTAINER_MODE_TRUE@   sed '/^##/,$$d' CREDITS.in;                                   \
 @MAINTAINER_MODE_TRUE@   { sed -n '1,/^##>/d; s/  \+/\t/; s/^./&/p' CREDITS.in;        \
 @MAINTAINER_MODE_TRUE@     git log --pretty=format:'%aN        %aE';                   \
 @MAINTAINER_MODE_TRUE@   } | LC_ALL=C sort -u                                          \
 @MAINTAINER_MODE_TRUE@     | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}';             \
-@MAINTAINER_MODE_TRUE@ } > $@-t && mv $@-t $@
+@MAINTAINER_MODE_TRUE@ ) > $@-t && mv $@-t $@
 
 @MAINTAINER_MODE_TRUE@export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
 
diff --git a/NEWS b/NEWS
index 1ec49f7..373d36f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,45 @@
+Noteworthy changes in release 4.9 (2014-08-15)
+==============================================
+
+* Changes in behavior
+  * Disabled OABI support on ARM EABI systems by default,
+    added --enable-arm-oabi option to enable it at configure time.
+
+* Improvements
+  * Added experimental -k option to print stack trace after each traced syscall.
+  * Added -w option to produce stats on syscall latency.
+    (addresses Debian bug #457497).
+  * Added ARC architecture support.
+  * Added PTRACE_GETREGS API support on PowerPC.
+  * Enhanced Bionic libc and musl libc support.
+  * Enhanced tracing of x86 personality processes on x86_64 and x32.
+  * Enhanced tracing of ARM personality processes on AArch64.
+  * Enhanced 32/64bit personality detection on PowerPC.
+  * Implemented decoding of add_key, ioprio_get, ioprio_set, kexec_load, keyctl,
+    renameat2, and request_key syscalls.
+  * Robustified decoding of select, pselect, and io_submit syscalls.
+  * Enhanced decoding of delete_module, fanotify_init, fanotify_mark, fcntl,
+    setdomainname, sethostname, setns, and sync_file_range syscalls.
+  * Enhanced decoding of signal bitmasks.
+  * Enhanced decoding of file descriptors.
+  * Enhanced siginfo_t decoding.
+  * Enhanced PF_NETLINK decoding.
+  * Updated CLOCK_* constants
+    (addresses Fedora bug #1088455).
+  * Added new syscall entries to match Linux 3.16.
+
+* Bug fixes
+  * Added shmat and shmdt to the set of memory mapping related syscalls.
+  * Fixed detaching from stopped processes.
+  * Fixed fanotify_mark decoding on 32bit architectures.
+  * Fixed offset decoding in preadv and pwritev syscalls.
+  * Fixed select decoding for glibc in _FORTIFY_SOURCE mode.
+  * Fixed decoding of epoll_ctl syscall with EPOLL_CTL_DEL argument.
+  * Fixed build when <sys/ptrace.h> and <linux/ptrace.h> conflict
+    (addresses Fedora bug #993384).
+  * Miscellaneous corrections in the manual page.
+    (Addresses Debian bug #725987).
+
 Noteworthy changes in release 4.8 (2013-06-03)
 ==============================================
 
index 69994ae..7f5f826 100644 (file)
@@ -1,8 +1,7 @@
-# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 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'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 2002-2013 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.
 
-# serial 1
-
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.14'
 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.11.6], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -54,24 +51,22 @@ 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.11.6])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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.
 
-# serial 1
-
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -90,7 +85,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -116,22 +111,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 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.
 
-# serial 9
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -150,16 +142,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
-# 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 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.
 
-# serial 12
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -169,7 +159,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -182,12 +172,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -195,8 +186,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # 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'.
+  # 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
@@ -236,16 +227,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > 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 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # 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"
+    # 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
+    # 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
@@ -254,8 +245,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # 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
@@ -263,7 +254,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # 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}
@@ -311,7 +302,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -321,9 +312,13 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
@@ -338,20 +333,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 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.
 
-#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -364,7 +357,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -376,21 +369,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -408,7 +399,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
+# is enabled.  FIXME.  This creates each '.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -418,18 +409,21 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 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.
 
-# serial 16
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -442,7 +436,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -471,31 +465,40 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
@@ -506,34 +509,78 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
                             [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES(CC)],
-                 [define([AC_PROG_CC],
-                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES(CXX)],
-                 [define([AC_PROG_CXX],
-                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES(OBJC)],
-                 [define([AC_PROG_OBJC],
-                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
 
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -555,15 +602,12 @@ 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, 2003, 2005, 2008, 2011 Free Software Foundation,
-# Inc.
+# Copyright (C) 2001-2013 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.
 
-# serial 1
-
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
@@ -577,16 +621,14 @@ if test x"${install_sh}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 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.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -603,20 +645,17 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
-# 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 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.
 
-# serial 5
-
 # AM_MAINTAINER_MODE([DEFAULT-MODE])
 # ----------------------------------
 # Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless `enable' is passed literally.
-# For symmetry, `disable' may be passed as well.  Anyway, the user
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
 # can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
 [m4_case(m4_default([$1], [disable]),
@@ -627,10 +666,11 @@ AC_DEFUN([AM_MAINTAINER_MODE],
 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
   AC_ARG_ENABLE([maintainer-mode],
-[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
-                         (and sometimes confusing) to the casual installer],
-      [USE_MAINTAINER_MODE=$enableval],
-      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
   AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
@@ -638,18 +678,14 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 ]
 )
 
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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.
 
-# serial 4
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -667,7 +703,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -694,15 +730,12 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 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.
 
-# serial 6
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -710,11 +743,10 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -727,54 +759,22 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006, 2011 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.
-
-# serial 1
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 2001-2013 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.
 
-# serial 5
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
@@ -784,7 +784,7 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 # --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
 
 # _AM_SET_OPTIONS(OPTIONS)
 # ------------------------
@@ -798,24 +798,82 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+# Copyright (C) 1999-2013 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.
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # 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_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_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="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 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.
 
-# serial 5
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 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_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -826,32 +884,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -861,31 +927,50 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
 
-# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 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.
 
-# serial 2
-
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
 # Enable less verbose build rules; with the default set to DEFAULT
-# (`yes' being less verbose, `no' or empty being verbose).
+# ("yes" being less verbose, "no" or empty being verbose).
 AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules],
-[  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')])
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
 dnl
-dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
 dnl do not support nested variable expansions.
 dnl See automake bug#9928 and bug#10237.
 am_make=${MAKE-make}
@@ -903,7 +988,7 @@ else
   am_cv_make_support_nested_variables=no
 fi])
 if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
   AM_V='$(V)'
   AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
 else
@@ -920,44 +1005,40 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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.
 
-# serial 1
-
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 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.
 
-# serial 3
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -971,18 +1052,16 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 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.
 
-# serial 2
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -992,76 +1071,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_TAR],
 [# Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
diff --git a/aio.c b/aio.c
new file mode 100644 (file)
index 0000000..6bf8f82
--- /dev/null
+++ b/aio.c
@@ -0,0 +1,376 @@
+/*
+ * 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>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+/* --- Copied from libaio-0.3.109/src/libaio.h ---
+ * Why keep a copy instead of using external libaio.h?
+ * Because we want to properly decode 32-bit aio calls
+ * by 64-bit strace. For that, we need more definitions than
+ * libaio.h provides. (TODO).
+ * Keeping our local 32-bit compat defs in sync with libaio.h
+ * _without seeing libaio structs_ is hard/more bug-prone.
+ * A smaller benefit is that we don't need libaio installed.
+ */
+#define HAVE_LIBAIO_H 1
+typedef enum io_iocb_cmd {
+       IO_CMD_PREAD = 0,
+       IO_CMD_PWRITE = 1,
+
+       IO_CMD_FSYNC = 2,
+       IO_CMD_FDSYNC = 3,
+
+       IO_CMD_POLL = 5, /* Never implemented in mainline, see io_prep_poll */
+       IO_CMD_NOOP = 6,
+       IO_CMD_PREADV = 7,
+       IO_CMD_PWRITEV = 8,
+} io_iocb_cmd_t;
+
+#if defined(__i386__) /* little endian, 32 bits */
+#define PADDED(x, y)   x; unsigned y
+#define PADDEDptr(x, y)        x; unsigned y
+#define PADDEDul(x, y) unsigned long x; unsigned y
+#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__)
+#define PADDED(x, y)   x, y
+#define PADDEDptr(x, y)        x
+#define PADDEDul(x, y) unsigned long x
+#elif defined(__powerpc64__) /* big endian, 64 bits */
+#define PADDED(x, y)   unsigned y; x
+#define PADDEDptr(x,y) x
+#define PADDEDul(x, y) unsigned long x
+#elif defined(__PPC__)  /* big endian, 32 bits */
+#define PADDED(x, y)   unsigned y; x
+#define PADDEDptr(x, y)        unsigned y; x
+#define PADDEDul(x, y) unsigned y; unsigned long x
+#elif defined(__s390x__) /* big endian, 64 bits */
+#define PADDED(x, y)   unsigned y; x
+#define PADDEDptr(x,y) x
+#define PADDEDul(x, y) unsigned long x
+#elif defined(__s390__) /* big endian, 32 bits */
+#define PADDED(x, y)   unsigned y; x
+#define PADDEDptr(x, y) unsigned y; x
+#define PADDEDul(x, y) unsigned y; unsigned long x
+#elif defined(__arm__)
+#  if defined (__ARMEB__) /* big endian, 32 bits */
+#define PADDED(x, y)   unsigned y; x
+#define PADDEDptr(x, y)        unsigned y; x
+#define PADDEDul(x, y) unsigned y; unsigned long x
+#  else                   /* little endian, 32 bits */
+#define PADDED(x, y)   x; unsigned y
+#define PADDEDptr(x, y)        x; unsigned y
+#define PADDEDul(x, y) unsigned long x; unsigned y
+#  endif
+#else
+#  warning No AIO definitions for this architecture => no io_submit decoding
+#  undef HAVE_LIBAIO_H
+#endif
+
+#ifdef HAVE_LIBAIO_H
+struct io_iocb_poll {
+       PADDED(int events, __pad1);
+};     /* result code is the set of result flags or -'ve errno */
+
+struct io_iocb_sockaddr {
+       struct sockaddr *addr;
+       int             len;
+};     /* result code is the length of the sockaddr, or -'ve errno */
+
+struct io_iocb_common {
+       PADDEDptr(void  *buf, __pad1);
+       PADDEDul(nbytes, __pad2);
+       long long       offset;
+       long long       __pad3;
+       unsigned        flags;
+       unsigned        resfd;
+};     /* result code is the amount read or -'ve errno */
+
+struct io_iocb_vector {
+       const struct iovec      *vec;
+       int                     nr;
+       long long               offset;
+};     /* result code is the amount read or -'ve errno */
+
+struct iocb {
+       PADDEDptr(void *data, __pad1);  /* Return in the io completion event */
+       PADDED(unsigned key, __pad2);   /* For use in identifying io requests */
+
+       short           aio_lio_opcode;
+       short           aio_reqprio;
+       int             aio_fildes;
+
+       union {
+               struct io_iocb_common           c;
+               struct io_iocb_vector           v;
+               struct io_iocb_poll             poll;
+               struct io_iocb_sockaddr saddr;
+       } u;
+};
+
+struct io_event {
+       PADDEDptr(void *data, __pad1);
+       PADDEDptr(struct iocb *obj,  __pad2);
+       PADDEDul(res,  __pad3);
+       PADDEDul(res2, __pad4);
+};
+
+#undef PADDED
+#undef PADDEDptr
+#undef PADDEDul
+
+#endif /* HAVE_LIBAIO_H */
+
+/* --- End of a chunk of libaio.h --- */
+/* Not defined in libaio.h */
+#ifndef IOCB_RESFD
+# define IOCB_RESFD (1 << 0)
+#endif
+
+int
+sys_io_setup(struct tcb *tcp)
+{
+       if (entering(tcp))
+               tprintf("%ld, ", tcp->u_arg[0]);
+       else {
+               if (syserror(tcp))
+                       tprintf("0x%0lx", tcp->u_arg[1]);
+               else {
+                       unsigned long user_id;
+                       if (umove(tcp, tcp->u_arg[1], &user_id) == 0)
+                               tprintf("{%lu}", user_id);
+                       else
+                               tprints("{...}");
+               }
+       }
+       return 0;
+}
+
+int
+sys_io_destroy(struct tcb *tcp)
+{
+       if (entering(tcp))
+               tprintf("%lu", tcp->u_arg[0]);
+       return 0;
+}
+
+#ifdef HAVE_LIBAIO_H
+
+enum iocb_sub {
+       SUB_NONE, SUB_COMMON, SUB_POLL, SUB_VECTOR
+};
+
+static enum iocb_sub
+tprint_lio_opcode(unsigned cmd)
+{
+       static const struct {
+               const char *name;
+               enum iocb_sub sub;
+       } cmds[] = {
+               { "pread", SUB_COMMON },
+               { "pwrite", SUB_COMMON },
+               { "fsync", SUB_NONE },
+               { "fdsync", SUB_NONE },
+               { "op4", SUB_NONE },
+               { "poll", SUB_POLL },
+               { "noop", SUB_NONE },
+               { "preadv", SUB_VECTOR },
+               { "pwritev", SUB_VECTOR },
+       };
+
+       if (cmd < ARRAY_SIZE(cmds)) {
+               tprints(cmds[cmd].name);
+               return cmds[cmd].sub;
+       }
+       tprintf("%u /* SUB_??? */", cmd);
+       return SUB_NONE;
+}
+
+static void
+print_common_flags(struct iocb *iocb)
+{
+       if (iocb->u.c.flags & IOCB_RESFD)
+               tprintf(", resfd=%d", iocb->u.c.resfd);
+       if (iocb->u.c.flags & ~IOCB_RESFD)
+               tprintf(", flags=%x", iocb->u.c.flags);
+}
+
+#endif /* HAVE_LIBAIO_H */
+
+int
+sys_io_submit(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+#ifdef HAVE_LIBAIO_H
+               long nr = tcp->u_arg[1];
+               /* if nr <= 0, we end up printing just "{}" */
+               tprintf("%lu, %ld, {", tcp->u_arg[0], tcp->u_arg[1]);
+               {
+                       long i;
+                       struct iocb **iocbs = (void *)tcp->u_arg[2];
+//FIXME: decoding of 32-bit call by 64-bit strace
+
+                       for (i = 0; i < nr; i++, iocbs++) {
+                               enum iocb_sub sub;
+                               struct iocb *iocbp;
+                               struct iocb iocb;
+                               if (i)
+                                       tprints(", ");
+
+                               if (umove(tcp, (unsigned long)iocbs, &iocbp)) {
+                                       tprintf("%#lx", (unsigned long)iocbs);
+                                       /* No point in trying to read iocbs+1 etc */
+                                       /* (nr can be ridiculously large): */
+                                       break;
+                               }
+                               if (umove(tcp, (unsigned long)iocbp, &iocb)) {
+                                       tprintf("{%#lx}", (unsigned long)iocbp);
+                                       continue;
+                               }
+                               tprints("{");
+                               if (iocb.data)
+                                       tprintf("data:%p, ", iocb.data);
+                               if (iocb.key)
+                                       tprintf("key:%u, ", iocb.key);
+                               sub = tprint_lio_opcode(iocb.aio_lio_opcode);
+                               if (iocb.aio_reqprio)
+                                       tprintf(", reqprio:%d", iocb.aio_reqprio);
+                               tprintf(", filedes:%d", iocb.aio_fildes);
+                               switch (sub) {
+                               case SUB_COMMON:
+                                       if (iocb.aio_lio_opcode == IO_CMD_PWRITE) {
+                                               tprints(", str:");
+                                               printstr(tcp, (unsigned long)iocb.u.c.buf,
+                                                        iocb.u.c.nbytes);
+                                       } else
+                                               tprintf(", buf:%p", iocb.u.c.buf);
+                                       tprintf(", nbytes:%lu, offset:%lld",
+                                               iocb.u.c.nbytes,
+                                               iocb.u.c.offset);
+                                       print_common_flags(&iocb);
+                                       break;
+                               case SUB_VECTOR:
+                                       tprintf(", %lld", iocb.u.v.offset);
+                                       print_common_flags(&iocb);
+                                       tprints(", ");
+                                       tprint_iov(tcp, iocb.u.v.nr,
+                                                  (unsigned long)iocb.u.v.vec,
+                                                  iocb.aio_lio_opcode == IO_CMD_PWRITEV
+                                                 );
+                                       break;
+                               case SUB_POLL:
+                                       tprintf(", %x", iocb.u.poll.events);
+                                       break;
+                               case SUB_NONE:
+                                       break;
+                               }
+                               tprints("}");
+                       }
+               }
+               tprints("}");
+#else
+               tprintf("%lu, %ld, %#lx", tcp->u_arg[0], tcp->u_arg[1], tcp->u_arg[2]);
+#endif
+       }
+       return 0;
+}
+
+int
+sys_io_cancel(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+#ifdef HAVE_LIBAIO_H
+               struct iocb iocb;
+#endif
+               tprintf("%lu, ", tcp->u_arg[0]);
+#ifdef HAVE_LIBAIO_H
+               if (umove(tcp, tcp->u_arg[1], &iocb) == 0) {
+                       tprintf("{%p, %u, %u, %u, %d}, ",
+                               iocb.data, iocb.key,
+                               (unsigned)iocb.aio_lio_opcode,
+                               (unsigned)iocb.aio_reqprio, iocb.aio_fildes);
+               } else
+#endif
+                       tprints("{...}, ");
+       } else {
+               if (tcp->u_rval < 0)
+                       tprints("{...}");
+               else {
+#ifdef HAVE_LIBAIO_H
+                       struct io_event event;
+                       if (umove(tcp, tcp->u_arg[2], &event) == 0)
+                               tprintf("{%p, %p, %ld, %ld}",
+                                       event.data, event.obj,
+                                       event.res, event.res2);
+                       else
+#endif
+                               tprints("{...}");
+               }
+       }
+       return 0;
+}
+
+int
+sys_io_getevents(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               tprintf("%ld, %ld, %ld, ", tcp->u_arg[0], tcp->u_arg[1],
+                       tcp->u_arg[2]);
+       } else {
+               if (tcp->u_rval == 0) {
+                       tprints("{}");
+               } else {
+#ifdef HAVE_LIBAIO_H
+                       struct io_event *events = (void *)tcp->u_arg[3];
+                       long i, nr = tcp->u_rval;
+
+                       for (i = 0; i < nr; i++, events++) {
+                               struct io_event event;
+
+                               if (i == 0)
+                                       tprints("{");
+                               else
+                                       tprints(", ");
+
+                               if (umove(tcp, (unsigned long)events, &event) != 0) {
+                                       tprints("{...}");
+                                       continue;
+                               }
+                               tprintf("{%p, %p, %ld, %ld}", event.data,
+                                       event.obj, event.res, event.res2);
+                       }
+                       tprints("}, ");
+#else
+                       tprints("{...}");
+#endif
+               }
+
+               print_timespec(tcp, tcp->u_arg[4]);
+       }
+       return 0;
+}
diff --git a/bjm.c b/bjm.c
index cd7dc13..b34c6ed 100644 (file)
--- a/bjm.c
+++ b/bjm.c
@@ -69,26 +69,9 @@ struct module_info
        long usecount;
 };
 
-static const struct xlat which[] = {
-       { 0,            "0"             },
-       { QM_MODULES,   "QM_MODULES"    },
-       { QM_DEPS,      "QM_DEPS"       },
-       { QM_REFS,      "QM_REFS"       },
-       { QM_SYMBOLS,   "QM_SYMBOLS"    },
-       { QM_INFO,      "QM_INFO"       },
-       { 0,            NULL            },
-};
-
-static const struct xlat modflags[] = {
-       { MOD_UNINITIALIZED,    "MOD_UNINITIALIZED"     },
-       { MOD_RUNNING,          "MOD_RUNNING"           },
-       { MOD_DELETED,          "MOD_DELETED"           },
-       { MOD_AUTOCLEAN,        "MOD_AUTOCLEAN"         },
-       { MOD_VISITED,          "MOD_VISITED"           },
-       { MOD_USED_ONCE,        "MOD_USED_ONCE"         },
-       { MOD_JUST_FREED,       "MOD_JUST_FREED"        },
-       { 0,                    NULL                    },
-};
+#include "xlat/qm_which.h"
+#include "xlat/modflags.h"
+#include "xlat/delete_module_flags.h"
 
 int
 sys_query_module(struct tcb *tcp)
@@ -96,7 +79,7 @@ sys_query_module(struct tcb *tcp)
        if (entering(tcp)) {
                printstr(tcp, tcp->u_arg[0], -1);
                tprints(", ");
-               printxval(which, tcp->u_arg[1], "QM_???");
+               printxval(qm_which, tcp->u_arg[1], "QM_???");
                tprints(", ");
        } else {
                size_t ret;
@@ -192,6 +175,17 @@ sys_create_module(struct tcb *tcp)
 }
 
 int
+sys_delete_module(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               printstr(tcp, tcp->u_arg[0], -1);
+               tprints(", ");
+               printflags(delete_module_flags, tcp->u_arg[1], "O_???");
+       }
+       return 0;
+}
+
+int
 sys_init_module(struct tcb *tcp)
 {
        if (entering(tcp)) {
@@ -200,3 +194,26 @@ sys_init_module(struct tcb *tcp)
        }
        return 0;
 }
+
+#define MODULE_INIT_IGNORE_MODVERSIONS  1
+#define MODULE_INIT_IGNORE_VERMAGIC     2
+
+#include "xlat/module_init_flags.h"
+
+int
+sys_finit_module(struct tcb *tcp)
+{
+       if (exiting(tcp))
+               return 0;
+
+       /* file descriptor */
+       printfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       /* param_values */
+       printstr(tcp, tcp->u_arg[1], -1);
+       tprints(", ");
+       /* flags */
+       printflags(module_init_flags, tcp->u_arg[2], "MODULE_INIT_???");
+
+       return 0;
+}
diff --git a/block.c b/block.c
index 374002e..b281b1a 100644 (file)
--- a/block.c
+++ b/block.c
@@ -79,11 +79,7 @@ struct blk_user_trace_setup {
 #define BLKSECDISCARD _IO(0x12,125)
 #endif
 
-static const struct xlat blkpg_ops[] = {
-       { BLKPG_ADD_PARTITION,  "BLKPG_ADD_PARTITION", },
-       { BLKPG_DEL_PARTITION,  "BLKPG_DEL_PARTITION", },
-       { 0,                    NULL },
-};
+#include "xlat/blkpg_ops.h"
 
 static void
 print_blkpg_req(struct tcb *tcp, struct blkpg_ioctl_arg *blkpg)
diff --git a/compile b/compile
new file mode 100755 (executable)
index 0000000..531136b
--- /dev/null
+++ b/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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 <http://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>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+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*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
index 120cc0d..72625d4 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-05-16'
+timestamp='2014-02-12'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
        ;;
 esac
 
@@ -995,6 +995,12 @@ EOF
     ppc:Linux:*:*)
        echo powerpc-unknown-linux-${LIBC}
        exit ;;
+    ppc64le:Linux:*:*)
+       echo powerpc64le-unknown-linux-${LIBC}
+       exit ;;
+    ppcle:Linux:*:*)
+       echo powerpcle-unknown-linux-${LIBC}
+       exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
        exit ;;
@@ -1254,16 +1260,26 @@ EOF
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   grep IS_64BIT_ARCH >/dev/null
+               then
+                   case $UNAME_PROCESSOR in
+                       i386) UNAME_PROCESSOR=x86_64 ;;
+                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
+                   esac
+               fi
            fi
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
@@ -1355,154 +1371,6 @@ EOF
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
index 3cd5fd8..f8b6266 100644 (file)
 /* Define for the Alpha architecture. */
 #undef ALPHA
 
+/* Define for the ARC architecture. */
+#undef ARC
+
 /* Define for the ARM architecture. */
 #undef ARM
 
-/* Define for the AVR32 architecture. */
-#undef AVR32
+/* SA_RESTORER defined in <asm/signal.h> */
+#undef ASM_SA_RESTORER
+
+/* Define for the AVR32 architecture. */
+#undef AVR32
+
+/* Define for the Blackfin architecture. */
+#undef BFIN
+
+/* Define for the CRISv10 architecture. */
+#undef CRISV10
+
+/* Define for the CRISv32 architecture. */
+#undef CRISV32
+
+/* Define to 1 if you want OABI support on ARM EABI. */
+#undef ENABLE_ARM_OABI
+
+/* Define to the type of elements in the array set by `getgroups'. Usually
+   this is either `int' or `gid_t'. */
+#undef GETGROUPS_T
+
+/* Define to 1 if you have the <asm/cachectl.h> header file. */
+#undef HAVE_ASM_CACHECTL_H
+
+/* Define to 1 if you have the <asm/sigcontext.h> header file. */
+#undef HAVE_ASM_SIGCONTEXT_H
+
+/* Define to 1 if you have the <asm/sysmips.h> header file. */
+#undef HAVE_ASM_SYSMIPS_H
+
+/* Define to 1 if you have BLKGETSIZE64. */
+#undef HAVE_BLKGETSIZE64
+
+/* 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
+
+/* Define to 1 if you have the declaration of `CTL_PROC', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_PROC
+
+/* Define to 1 if you have the declaration of `CTL_S390DBF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_S390DBF
+
+/* Define to 1 if you have the declaration of `CTL_SUNRPC', and to 0 if you
+   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 `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
+
+/* Define to 1 if you have the declaration of `KERN_BOOTLOADER_TYPE', and to 0
+   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
+
+/* Define to 1 if you have the declaration of `KERN_IA64_UNALIGNED', and to 0
+   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
+
+/* Define to 1 if you have the declaration of `KERN_NMI_WATCHDOG', and to 0 if
+   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_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
+
+/* Define to 1 if you have the declaration of `KERN_PRINTK_RATELIMIT_BURST',
+   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
+
+/* Define to 1 if you have the declaration of `LO_FLAGS_PARTSCAN', and to 0 if
+   you don't. */
+#undef HAVE_DECL_LO_FLAGS_PARTSCAN
+
+/* Define to 1 if you have the declaration of `LO_FLAGS_READ_ONLY', and to 0
+   if you don't. */
+#undef HAVE_DECL_LO_FLAGS_READ_ONLY
+
+/* 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
+
+/* Define to 1 if you have the declaration of `NET_CIPSOV4_CACHE_ENABLE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_CIPSOV4_CACHE_ENABLE
+
+/* Define to 1 if you have the declaration of `NET_CIPSOV4_RBM_OPTFMT', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_CIPSOV4_RBM_OPTFMT
+
+/* Define to 1 if you have the declaration of `NET_CIPSOV4_RBM_STRICTVALID',
+   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
+
+/* Define to 1 if you have the declaration of `NET_CORE_AEVENT_RSEQTH', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_CORE_AEVENT_RSEQTH
+
+/* Define to 1 if you have the declaration of `NET_CORE_BUDGET', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_BUDGET
+
+/* Define to 1 if you have the declaration of `NET_CORE_DESTROY_DELAY', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_CORE_DESTROY_DELAY
+
+/* 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
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_ARP_ANNOUNCE',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_ARP_ANNOUNCE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_ARP_IGNORE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_ARP_IGNORE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_ARP_NOTIFY', and
+   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 for the Blackfin architecture. */
-#undef BFIN
+/* 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 for the CRISv10 architecture. */
-#undef CRISV10
+/* 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 for the CRISv32 architecture. */
-#undef CRISV32
+/* 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 the type of elements in the array set by `getgroups'. Usually
-   this is either `int' or `gid_t'. */
-#undef GETGROUPS_T
+/* 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 <asm/cachectl.h> header file. */
-#undef HAVE_ASM_CACHECTL_H
+/* 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 <asm/sigcontext.h> header file. */
-#undef HAVE_ASM_SIGCONTEXT_H
+/* 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 <asm/sysmips.h> header file. */
-#undef HAVE_ASM_SYSMIPS_H
+/* 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 BLKGETSIZE64. */
-#undef HAVE_BLKGETSIZE64
+/* 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 `IO_CMD_PWRITE', and to 0 if you
+/* 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_IO_CMD_PWRITE
+#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 `IO_CMD_PWRITEV', and to 0 if
+/* Define to 1 if you have the declaration of `NET_IPV6_NEIGH', and to 0 if
    you don't. */
-#undef HAVE_DECL_IO_CMD_PWRITEV
+#undef HAVE_DECL_NET_IPV6_NEIGH
 
-/* Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR', and to 0
+/* 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_LO_FLAGS_AUTOCLEAR
+#undef HAVE_DECL_NET_IPV6_ROUTE_FLUSH
 
-/* Define to 1 if you have the declaration of `LO_FLAGS_PARTSCAN', and to 0 if
+/* 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
+
+/* Define to 1 if you have the declaration of `NET_LLC', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_LLC
+
+/* Define to 1 if you have the declaration of `NET_NETFILTER', and to 0 if you
+   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_LO_FLAGS_PARTSCAN
+#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
+
+/* Define to 1 if you have the declaration of `NET_TCP_BASE_MSS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_TCP_BASE_MSS
+
+/* Define to 1 if you have the declaration of `NET_TCP_BIC_BETA', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_TCP_BIC_BETA
+
+/* Define to 1 if you have the declaration of `NET_TCP_CONG_CONTROL', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_CONG_CONTROL
+
+/* Define to 1 if you have the declaration of `NET_TCP_DEFAULT_WIN_SCALE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_TCP_DEFAULT_WIN_SCALE
+
+/* Define to 1 if you have the declaration of `NET_TCP_DMA_COPYBREAK', and to
+   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
+
+/* Define to 1 if you have the declaration of `NET_TCP_MTU_PROBING', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_MTU_PROBING
+
+/* Define to 1 if you have the declaration of `NET_TCP_NO_METRICS_SAVE', and
+   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_EVENT_CLONE', and to 0
    if you don't. */
    if you don't. */
 #undef HAVE_DECL_PTRACE_O_TRACEVFORK
 
+/* Define to 1 if you have the declaration of `PTRACE_PEEKUSER', and to 0 if
+   you don't. */
+#undef HAVE_DECL_PTRACE_PEEKUSER
+
+/* Define to 1 if you have the declaration of `PTRACE_POKEUSER', and to 0 if
+   you don't. */
+#undef HAVE_DECL_PTRACE_POKEUSER
+
 /* Define to 1 if you have the declaration of `PTRACE_SETOPTIONS', and to 0 if
    you don't. */
 #undef HAVE_DECL_PTRACE_SETOPTIONS
 
+/* Define to 1 if you have the declaration of `P_ALL', and to 0 if you don't.
+   */
+#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
+
+/* Define to 1 if you have the declaration of `P_PID', and to 0 if you don't.
+   */
+#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 `sys_errlist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_ERRLIST
 
-/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
+/* 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
+
+/* Define to 1 if you have the declaration of `VM_LEGACY_VA_LAYOUT', and to 0
+   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_SYS_SIGLIST
+#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 `_sys_siglist', and to 0 if you
+/* Define to 1 if you have the declaration of `VM_SWAPPINESS', and to 0 if you
    don't. */
-#undef HAVE_DECL__SYS_SIGLIST
+#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
+
+/* Define to 1 if you have the declaration of `VM_VFS_CACHE_PRESSURE', and to
+   0 if you don't. */
+#undef HAVE_DECL_VM_VFS_CACHE_PRESSURE
 
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
 /* Define to 1 if you have the <elf.h> header file. */
 #undef HAVE_ELF_H
 
+/* Define to 1 if you have the `fopen64' function. */
+#undef HAVE_FOPEN64
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
+/* Define to 1 if you have the `fputs_unlocked' function. */
+#undef HAVE_FPUTS_UNLOCKED
+
 /* Define to 1 if you have the `if_indextoname' function. */
 #undef HAVE_IF_INDEXTONAME
 
 /* Define to 1 if you have the <ioctls.h> header file. */
 #undef HAVE_IOCTLS_H
 
-/* Define to 1 if you have the <libaio.h> header file. */
-#undef HAVE_LIBAIO_H
+/* Define to 1 if you have the <libunwind-ptrace.h> header file. */
+#undef HAVE_LIBUNWIND_PTRACE_H
 
 /* Define to 1 if you have the <linux/capability.h> header file. */
 #undef HAVE_LINUX_CAPABILITY_H
 /* Define if long long is little-endian. */
 #undef HAVE_LITTLE_ENDIAN_LONG_LONG
 
-/* Define to 1 if the system has the type `long long'. */
-#undef HAVE_LONG_LONG
-
-/* Define if off_t is a long long. */
-#undef HAVE_LONG_LONG_OFF_T
-
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_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 `process_vm_readv' function. */
 #undef HAVE_PROCESS_VM_READV
 
+/* Define to 1 if you have the `pwritev' function. */
+#undef HAVE_PWRITEV
+
+/* Define to 1 if you have the <scsi/sg.h> header file. */
+#undef HAVE_SCSI_SG_H
+
 /* Define to 1 if you have the `sendmsg' function. */
 #undef HAVE_SENDMSG
 
 /* Define to 1 if the system has the type `siginfo_t'. */
 #undef HAVE_SIGINFO_T
 
+/* Define to 1 if `si_syscall' is a member of `siginfo_t'. */
+#undef HAVE_SIGINFO_T_SI_SYSCALL
+
 /* Define to 1 if the system has the type `sig_atomic_t'. */
 #undef HAVE_SIG_ATOMIC_T
 
 /* Define to 1 if you have the `strsignal' function. */
 #undef HAVE_STRSIGNAL
 
-/* Define to 1 if `dqb_curblocks' is a member of `struct dqblk'. */
-#undef HAVE_STRUCT_DQBLK_DQB_CURBLOCKS
+/* Define to 1 if the system has the type `struct flock64'. */
+#undef HAVE_STRUCT_FLOCK64
 
 /* Define to 1 if the system has the type `struct ia64_fpreg'. */
 #undef HAVE_STRUCT_IA64_FPREG
 
-/* Define to 1 if `u.c.flags' is a member of `struct iocb'. */
-#undef HAVE_STRUCT_IOCB_U_C_FLAGS
-
 /* Define to 1 if `msg_control' is a member of `struct msghdr'. */
 #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL
 
-/* Define to 1 if the system has the type `struct opthdr'. */
-#undef HAVE_STRUCT_OPTHDR
+/* 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 pt_all_user_regs'. */
 #undef HAVE_STRUCT_PT_ALL_USER_REGS
 /* Define to 1 if the system has the type `struct sigcontext'. */
 #undef HAVE_STRUCT_SIGCONTEXT
 
-/* Define to 1 if `sc_hi2' is a member of `struct sigcontext'. */
-#undef HAVE_STRUCT_SIGCONTEXT_SC_HI2
+/* Define to 1 if `_sigev_un._pad' is a member of `struct sigevent'. */
+#undef HAVE_STRUCT_SIGEVENT__SIGEV_UN__PAD
 
-/* Define to 1 if the system has the type `struct sigcontext_struct'. */
-#undef HAVE_STRUCT_SIGCONTEXT_STRUCT
+/* Define to 1 if `__pad' is a member of `struct sigevent'. */
+#undef HAVE_STRUCT_SIGEVENT___PAD
 
 /* Define to 1 if `sin6_scope_id' is a member of `struct sockaddr_in6'. */
 #undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
 /* Define to 1 if `st_rdev' is a member of `struct stat'. */
 #undef HAVE_STRUCT_STAT_ST_RDEV
 
-/* Define to 1 if `ACCEPTOR_id' is a member of `struct T_conn_res'. */
-#undef HAVE_STRUCT_T_CONN_RES_ACCEPTOR_ID
-
-/* Define to 1 if `QUEUE_ptr' is a member of `struct T_conn_res'. */
-#undef HAVE_STRUCT_T_CONN_RES_QUEUE_PTR
-
-/* Define to 1 if the system has the type `struct t_opthdr'. */
-#undef HAVE_STRUCT_T_OPTHDR
-
-/* Define to 1 if the system has the type `struct user_desc'. */
-#undef HAVE_STRUCT_USER_DESC
-
 /* Define to 1 if `domainname' is a member of `struct utsname'. */
 #undef HAVE_STRUCT_UTSNAME_DOMAINNAME
 
 /* Define to 1 if you have the <sys/reg.h> header file. */
 #undef HAVE_SYS_REG_H
 
-/* Define to 1 if you have the `sys_siglist' function. */
-#undef HAVE_SYS_SIGLIST
-
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
 /* Define to 1 if the system has the type `_Bool'. */
 #undef HAVE__BOOL
 
-/* Define to 1 if you have the `_sys_siglist' function. */
-#undef HAVE__SYS_SIGLIST
+/* Define to 1 if the system provides __builtin_popcount function */
+#undef HAVE___BUILTIN_POPCOUNT
 
 /* Define for the HPPA architecture. */
 #undef HPPA
 /* The size of `long long', as computed by sizeof. */
 #undef SIZEOF_LONG_LONG
 
-/* The size of `rlim_t', as computed by sizeof. */
-#undef SIZEOF_RLIM_T
+/* The size of `off_t', as computed by sizeof. */
+#undef SIZEOF_OFF_T
 
 /* Define for the SPARC architecture. */
 #undef SPARC
 /* Define for the Tile architecture */
 #undef TILE
 
+/* Compile stack tracing functionality */
+#undef USE_LIBUNWIND
+
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
index cd7c0f7..c3e202d 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-04-24'
+timestamp='2014-01-01'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -257,7 +257,7 @@ case $basic_machine in
        | avr | avr32 \
        | be32 | be64 \
        | bfin \
-       | c4x | clipper \
+       | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
        | fido | fr30 | frv \
@@ -265,6 +265,7 @@ case $basic_machine in
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -324,7 +325,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -372,7 +373,7 @@ case $basic_machine in
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -381,6 +382,7 @@ case $basic_machine in
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -794,7 +796,7 @@ case $basic_machine in
                os=-mingw64
                ;;
        mingw32)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-mingw32
                ;;
        mingw32ce)
@@ -830,7 +832,7 @@ case $basic_machine in
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-msys
                ;;
        mvs)
@@ -1546,6 +1548,9 @@ case $basic_machine in
        c4x-* | tic4x-*)
                os=-coff
                ;;
+       c8051-*)
+               os=-elf
+               ;;
        hexagon-*)
                os=-elf
                ;;
index a8fe965..67f5e9c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for strace 4.8.
+# Generated by GNU Autoconf 2.69 for strace 4.9.
 #
 # Report bugs to <strace-devel@lists.sourceforge.net>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -214,21 +238,25 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-       # neutralization value for shells without unset; and this also
-       # works around shells that cannot unset nonexistent variables.
-       # Preserve -v and -x to the replacement shell.
-       BASH_ENV=/dev/null
-       ENV=/dev/null
-       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-       export CONFIG_SHELL
-       case $- in # ((((
-         *v*x* | *x*v* ) as_opts=-vx ;;
-         *v* ) as_opts=-v ;;
-         *x* ) as_opts=-x ;;
-         * ) as_opts= ;;
-       esac
-       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -331,6 +359,14 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -452,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -486,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -507,28 +547,8 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -560,8 +580,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='strace'
 PACKAGE_TARNAME='strace'
-PACKAGE_VERSION='4.8'
-PACKAGE_STRING='strace 4.8'
+PACKAGE_VERSION='4.9'
+PACKAGE_STRING='strace 4.9'
 PACKAGE_BUGREPORT='strace-devel@lists.sourceforge.net'
 PACKAGE_URL=''
 
@@ -606,6 +626,11 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
+USE_LIBUNWIND_FALSE
+USE_LIBUNWIND_TRUE
+libunwind_CPPFLAGS
+libunwind_LDFLAGS
+libunwind_LIBS
 PERL
 WARN_CFLAGS
 X32_FALSE
@@ -717,7 +742,9 @@ enable_option_checking
 enable_silent_rules
 enable_maintainer_mode
 enable_dependency_tracking
+enable_arm_oabi
 enable_gcc_Werror
+with_libunwind
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1183,8 +1210,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1270,7 +1295,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures strace 4.8 to adapt to many kinds of systems.
+\`configure' configures strace 4.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1340,7 +1365,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of strace 4.8:";;
+     short | recursive ) echo "Configuration of strace 4.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1348,14 +1373,23 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-                         (and sometimes confusing) to the casual installer
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-arm-oabi       enable OABI support on ARM EABI
   --enable-gcc-Werror     turn on gcc's -Werror option
 
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-libunwind        use libunwind to implement stack tracing support
+
 Some influential environment variables:
   CC          C compiler command
   CFLAGS      C compiler flags
@@ -1432,10 +1466,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-strace configure 4.8
-generated by GNU Autoconf 2.68
+strace configure 4.9
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+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.
 _ACEOF
@@ -1766,7 +1800,7 @@ $as_echo "$ac_try_echo"; } >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
+        test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -2001,7 +2035,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2017,7 +2052,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2043,7 +2079,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2059,7 +2096,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2093,7 +2131,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2165,8 +2204,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by strace $as_me 4.8, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by strace $as_me 4.9, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2272,6 +2311,8 @@ done
 # WARNING: Use '\'' to represent an apostrophe within the trap.
 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
+  # Sanitize IFS.
+  IFS=" ""     $as_nl"
   # Save into config.log some information that might help in debugging.
   {
     echo
@@ -2545,7 +2586,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 ac_config_headers="$ac_config_headers config.h"
 
-am__api_version='1.11'
+am__api_version='1.14'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2584,7 +2625,7 @@ case $as_dir/ in #((
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
          if test $ac_prog = install &&
            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
@@ -2642,9 +2683,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -2655,32 +2693,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
@@ -2692,6 +2738,16 @@ Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -2714,12 +2770,12 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
 if test x"${install_sh}" != xset; then
@@ -2731,10 +2787,10 @@ if test x"${install_sh}" != xset; then
   esac
 fi
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
 if test "$cross_compiling" != no; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -2753,7 +2809,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2793,7 +2849,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2844,7 +2900,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
         for ac_exec_ext in '' $ac_executable_extensions; do
-          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
           case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
             'mkdir (GNU coreutils) '* | \
             'mkdir (coreutils) '* | \
@@ -2873,12 +2929,6 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -2897,7 +2947,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2966,10 +3016,10 @@ if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
 fi
 
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=1;;
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
 esac
 am_make=${MAKE-make}
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
@@ -3022,7 +3072,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='strace'
- VERSION='4.8'
+ VERSION='4.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3050,12 +3100,22 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
 
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
@@ -3063,6 +3123,48 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
     # Check whether --enable-maintainer-mode was given.
@@ -3179,7 +3281,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3219,7 +3321,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3272,7 +3374,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3313,7 +3415,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  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
@@ -3371,7 +3473,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3415,7 +3517,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3861,8 +3963,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.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);
@@ -3946,6 +4047,65 @@ 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
+
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_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_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_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_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_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="$am_aux_dir/compile $CC"
+fi
+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
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -3965,7 +4125,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -4021,8 +4181,8 @@ else
   # 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'.
+  # 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
@@ -4057,16 +4217,16 @@ else
     : > 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 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # 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"
+    # 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
+    # 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
@@ -4075,8 +4235,8 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # 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
@@ -4084,7 +4244,7 @@ else
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # 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}
@@ -4293,7 +4453,7 @@ do
     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"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      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
@@ -4359,7 +4519,7 @@ do
     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"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      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
@@ -4566,8 +4726,8 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#        define __EXTENSIONS__ 1
-         $ac_includes_default
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
 int
 main ()
 {
@@ -4660,7 +4820,26 @@ powerpc*)
 
 $as_echo "#define POWERPC 1" >>confdefs.h
 
-       if test $host_cpu = powerpc64; then
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __LP64__
+# error 32 bit
+#endif
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ppc_bits=64
+else
+  ppc_bits=32
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if test "$ppc_bits" = "64"; then
 
 $as_echo "#define POWERPC64 1" >>confdefs.h
 
@@ -4684,6 +4863,12 @@ avr32*)
 $as_echo "#define AVR32 1" >>confdefs.h
 
        ;;
+arc*)
+       arch=arc
+
+$as_echo "#define ARC 1" >>confdefs.h
+
+       ;;
 s390)
        arch=s390
 
@@ -4841,6 +5026,24 @@ fi
 $as_echo "$includedir" >&6; }
 
 
+# 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
+
+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
+_ACEOF
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wall" >&5
 $as_echo_n "checking whether compiler handles -Wall... " >&6; }
 if ${gl_cv_warn__Wall+:} false; then :
@@ -5103,11 +5306,11 @@ else
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
+
 #ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
+  /* Ultrix mips cc rejects this sort of thing.  */
   typedef int charset[2];
-  const charset cs;
+  const charset cs = { 0, 0 };
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *pcpcc;
   char **ppc;
@@ -5124,8 +5327,9 @@ main ()
   ++pcpcc;
   ppc = (char**) pcpcc;
   pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
@@ -5141,10 +5345,10 @@ main ()
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this saying
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
@@ -5516,60 +5720,60 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <stdbool.h>
-#ifndef bool
- "error: bool is not defined"
-#endif
-#ifndef false
- "error: false is not defined"
-#endif
-#if false
- "error: false is not 0"
-#endif
-#ifndef true
- "error: true is not defined"
-#endif
-#if true != 1
- "error: true is not 1"
-#endif
-#ifndef __bool_true_false_are_defined
- "error: __bool_true_false_are_defined is not defined"
-#endif
-
-       struct s { _Bool s: 1; _Bool t; } s;
-
-       char a[true == 1 ? 1 : -1];
-       char b[false == 0 ? 1 : -1];
-       char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-       char d[(bool) 0.5 == true ? 1 : -1];
-       /* See body of main program for 'e'.  */
-       char f[(_Bool) 0.0 == false ? 1 : -1];
-       char g[true];
-       char h[sizeof (_Bool)];
-       char i[sizeof s.t];
-       enum { j = false, k = true, l = false * true, m = true * 256 };
-       /* The following fails for
-          HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
-       _Bool n[m];
-       char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-       char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-       /* Catch a bug in an HP-UX C compiler.  See
-          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-        */
-       _Bool q = true;
-       _Bool *pq = &q;
+             #include <stdbool.h>
+             #ifndef bool
             "error: bool is not defined"
+             #endif
+             #ifndef false
             "error: false is not defined"
+             #endif
+             #if false
             "error: false is not 0"
+             #endif
+             #ifndef true
             "error: true is not defined"
+             #endif
+             #if true != 1
             "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
             "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
 
 int
 main ()
 {
 
-       bool e = &s;
-       *pq |= q;
-       *pq |= ! q;
-       /* Refer to every declared value, to avoid compiler optimizations.  */
-       return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-               + !m + !n + !o + !p + !q + !pq);
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
 
   ;
   return 0;
@@ -5584,7 +5788,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
-ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+   ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
@@ -5594,6 +5798,7 @@ _ACEOF
 
 fi
 
+
 if test $ac_cv_header_stdbool_h = yes; then
 
 $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
@@ -6172,16 +6377,6 @@ _ACEOF
 
 fi
 
-ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
-if test "x$ac_cv_type_long_long" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LONG_LONG 1
-_ACEOF
-
-
-fi
-
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for little endian long long" >&5
 $as_echo_n "checking for little endian long long... " >&6; }
 if ${ac_cv_have_little_endian_long_long+:} false; then :
@@ -6231,59 +6426,8 @@ $as_echo "#define HAVE_LITTLE_ENDIAN_LONG_LONG 1" >>confdefs.h
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long off_t" >&5
-$as_echo_n "checking for long long off_t... " >&6; }
-if ${ac_cv_have_long_long_off_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-char a[(sizeof (off_t) == sizeof (long long) &&
-        sizeof (off_t) > sizeof (long)) - 1];
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_have_long_long_off_t=yes
-else
-  ac_cv_have_long_long_off_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_long_long_off_t" >&5
-$as_echo "$ac_cv_have_long_long_off_t" >&6; }
-if test "$ac_cv_have_long_long_off_t" = yes
-then
-
-$as_echo "#define HAVE_LONG_LONG_OFF_T 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_type "$LINENO" "struct opthdr" "ac_cv_type_struct_opthdr" "#include <sys/socket.h>
-"
-if test "x$ac_cv_type_struct_opthdr" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_OPTHDR 1
-_ACEOF
-
-
-fi
-
-ac_fn_c_check_type "$LINENO" "struct t_opthdr" "ac_cv_type_struct_t_opthdr" "#include <sys/tiuser.h>
-"
-if test "x$ac_cv_type_struct_t_opthdr" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_T_OPTHDR 1
-_ACEOF
-
-
-fi
-
 
-for ac_func in fork if_indextoname inet_ntop prctl process_vm_readv sendmsg sigaction stpcpy strerror strsignal _sys_siglist sys_siglist
+for ac_func in fopen64 fork fputs_unlocked if_indextoname inet_ntop prctl preadv process_vm_readv pwritev sendmsg sigaction stpcpy strerror strsignal
 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"
@@ -6295,7 +6439,7 @@ _ACEOF
 fi
 done
 
-for ac_header in asm/cachectl.h asm/sysmips.h elf.h inttypes.h ioctls.h linux/capability.h linux/perf_event.h linux/ptrace.h linux/utsname.h mqueue.h netinet/sctp.h poll.h stropts.h sys/acl.h sys/asynch.h sys/conf.h sys/epoll.h sys/filio.h sys/ioctl.h sys/poll.h sys/ptrace.h sys/reg.h sys/uio.h sys/vfs.h
+for ac_header in asm/cachectl.h asm/sysmips.h elf.h inttypes.h ioctls.h linux/capability.h linux/perf_event.h linux/ptrace.h linux/utsname.h mqueue.h netinet/sctp.h poll.h scsi/sg.h stropts.h sys/acl.h sys/asynch.h sys/conf.h sys/epoll.h sys/filio.h sys/ioctl.h sys/poll.h sys/ptrace.h sys/reg.h sys/uio.h sys/vfs.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"
@@ -6337,16 +6481,6 @@ fi
 
 done
 
-ac_fn_c_check_type "$LINENO" "struct sigcontext_struct" "ac_cv_type_struct_sigcontext_struct" "#include <signal.h>
-"
-if test "x$ac_cv_type_struct_sigcontext_struct" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SIGCONTEXT_STRUCT 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 :
@@ -6385,30 +6519,6 @@ _ACEOF
 fi
 
 
-ac_fn_c_check_member "$LINENO" "struct T_conn_res" "QUEUE_ptr" "ac_cv_member_struct_T_conn_res_QUEUE_ptr" "#include <sys/stream.h>
-#include <sys/tihdr.h>
-"
-if test "x$ac_cv_member_struct_T_conn_res_QUEUE_ptr" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_T_CONN_RES_QUEUE_PTR 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct T_conn_res" "ACCEPTOR_id" "ac_cv_member_struct_T_conn_res_ACCEPTOR_id" "#include <sys/stream.h>
-#include <sys/tihdr.h>
-"
-if test "x$ac_cv_member_struct_T_conn_res_ACCEPTOR_id" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_T_CONN_RES_ACCEPTOR_ID 1
-_ACEOF
-
-
-fi
-
-
 ac_fn_c_check_type "$LINENO" "struct __old_kernel_stat" "ac_cv_type_struct___old_kernel_stat" "#include <asm/stat.h>
 "
 if test "x$ac_cv_type_struct___old_kernel_stat" = xyes; then :
@@ -6441,91 +6551,83 @@ _ACEOF
 
 
 fi
-
-
-ac_fn_c_check_type "$LINENO" "struct user_desc" "ac_cv_type_struct_user_desc" "#include <asm/ldt.h>
+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_user_desc" = xyes; then :
+if test "x$ac_cv_type_struct_ptrace_peeksiginfo_args" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_DESC 1
+#define HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS 1
 _ACEOF
 
 
 fi
 
 
-ac_fn_c_check_member "$LINENO" "struct dqblk" "dqb_curblocks" "ac_cv_member_struct_dqblk_dqb_curblocks" "#include <sys/quota.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_dqblk_dqb_curblocks" = xyes; then :
+if test "x$ac_cv_member_struct_utsname_domainname" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_DQBLK_DQB_CURBLOCKS 1
+#define HAVE_STRUCT_UTSNAME_DOMAINNAME 1
 _ACEOF
 
 
 fi
 
 
-ac_fn_c_check_member "$LINENO" "struct sigcontext" "sc_hi2" "ac_cv_member_struct_sigcontext_sc_hi2" "#include <signal.h>
-#ifdef HAVE_ASM_SIGCONTEXT_H
-# include <asm/sigcontext.h>
-#endif
+ac_fn_c_check_member "$LINENO" "struct sigevent" "_sigev_un._pad" "ac_cv_member_struct_sigevent__sigev_un__pad" "#include <signal.h>
 "
-if test "x$ac_cv_member_struct_sigcontext_sc_hi2" = xyes; then :
+if test "x$ac_cv_member_struct_sigevent__sigev_un__pad" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SIGCONTEXT_SC_HI2 1
+#define HAVE_STRUCT_SIGEVENT__SIGEV_UN__PAD 1
 _ACEOF
 
 
 fi
+ac_fn_c_check_member "$LINENO" "struct sigevent" "__pad" "ac_cv_member_struct_sigevent___pad" "#include <signal.h>
+"
+if test "x$ac_cv_member_struct_sigevent___pad" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SIGEVENT___PAD 1
+_ACEOF
 
 
-ac_fn_c_check_member "$LINENO" "struct utsname" "domainname" "ac_cv_member_struct_utsname_domainname" "#include <sys/utsname.h>
+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_struct_utsname_domainname" = xyes; then :
+if test "x$ac_cv_member_siginfo_t_si_syscall" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTSNAME_DOMAINNAME 1
+#define HAVE_SIGINFO_T_SI_SYSCALL 1
 _ACEOF
 
 
 fi
 
 
-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
+ac_fn_c_check_type "$LINENO" "struct flock64" "ac_cv_type_struct_flock64" "#include <fcntl.h>
+"
+if test "x$ac_cv_type_struct_flock64" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_ERRLIST $ac_have_decl
+#define HAVE_STRUCT_FLOCK64 1
 _ACEOF
 
-ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include <signal.h>
-"
-if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
+
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "#include <signal.h>
-"
-if test "x$ac_cv_have_decl__sys_siglist" = 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__SYS_SIGLIST $ac_have_decl
+#define HAVE_DECL_SYS_ERRLIST $ac_have_decl
 _ACEOF
 
 ac_fn_c_check_decl "$LINENO" "PTRACE_EVENT_CLONE" "ac_cv_have_decl_PTRACE_EVENT_CLONE" "#include <sys/ptrace.h>
@@ -6682,6 +6784,28 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_PTRACE_O_TRACEVFORK $ac_have_decl
 _ACEOF
+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 :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PTRACE_PEEKUSER $ac_have_decl
+_ACEOF
+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_PTRACE_POKEUSER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PTRACE_POKEUSER $ac_have_decl
+_ACEOF
 ac_fn_c_check_decl "$LINENO" "PTRACE_SETOPTIONS" "ac_cv_have_decl_PTRACE_SETOPTIONS" "#include <sys/ptrace.h>
 "
 if test "x$ac_cv_have_decl_PTRACE_SETOPTIONS" = xyes; then :
@@ -6695,54 +6819,3768 @@ cat >>confdefs.h <<_ACEOF
 _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" "P_PID" "ac_cv_have_decl_P_PID" "#include <sys/wait.h>
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_AUTOCLEAR" = 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_LO_FLAGS_AUTOCLEAR $ac_have_decl
+#define HAVE_DECL_P_PID $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" "P_PPID" "ac_cv_have_decl_P_PPID" "#include <sys/wait.h>
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_PARTSCAN" = xyes; then :
+if test "x$ac_cv_have_decl_P_PPID" = 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_P_PPID $ac_have_decl
 _ACEOF
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BLKGETSIZE64" >&5
-$as_echo_n "checking for BLKGETSIZE64... " >&6; }
-if ${ac_cv_have_blkgetsize64+:} false; then :
-  $as_echo_n "(cached) " >&6
+ac_fn_c_check_decl "$LINENO" "P_PGID" "ac_cv_have_decl_P_PGID" "#include <sys/wait.h>
+"
+if test "x$ac_cv_have_decl_P_PGID" = xyes; then :
+  ac_have_decl=1
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  ac_have_decl=0
+fi
 
-#include <stdlib.h>
-#include <linux/fs.h>
-int
-main ()
-{
-return !BLKGETSIZE64;
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_P_PGID $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_have_blkgetsize64=yes
+ac_fn_c_check_decl "$LINENO" "P_SID" "ac_cv_have_decl_P_SID" "#include <sys/wait.h>
+"
+if test "x$ac_cv_have_decl_P_SID" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_have_blkgetsize64=no
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_P_SID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "P_CID" "ac_cv_have_decl_P_CID" "#include <sys/wait.h>
+"
+if test "x$ac_cv_have_decl_P_CID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_P_CID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "P_UID" "ac_cv_have_decl_P_UID" "#include <sys/wait.h>
+"
+if test "x$ac_cv_have_decl_P_UID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_P_UID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "P_GID" "ac_cv_have_decl_P_GID" "#include <sys/wait.h>
+"
+if test "x$ac_cv_have_decl_P_GID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_P_GID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "P_ALL" "ac_cv_have_decl_P_ALL" "#include <sys/wait.h>
+"
+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_P_ALL $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "P_LWPID" "ac_cv_have_decl_P_LWPID" "#include <sys/wait.h>
+"
+if test "x$ac_cv_have_decl_P_LWPID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_P_LWPID $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_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
+  ac_have_decl=0
+fi
+
+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>
+"
+if test "x$ac_cv_have_decl_LO_FLAGS_PARTSCAN" = 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
+_ACEOF
+
+
+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_CTL_KERN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_KERN $ac_have_decl
+_ACEOF
+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_CTL_VM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_VM $ac_have_decl
+_ACEOF
+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_CTL_NET" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_NET $ac_have_decl
+_ACEOF
+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_CTL_PROC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_PROC $ac_have_decl
+_ACEOF
+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_CTL_FS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_FS $ac_have_decl
+_ACEOF
+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_CTL_DEBUG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_DEBUG $ac_have_decl
+_ACEOF
+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_CTL_DEV" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_DEV $ac_have_decl
+_ACEOF
+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_CTL_BUS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_BUS $ac_have_decl
+_ACEOF
+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_CTL_ABI" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_ABI $ac_have_decl
+_ACEOF
+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_CTL_CPU" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_CPU $ac_have_decl
+_ACEOF
+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_CTL_ARLAN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_ARLAN $ac_have_decl
+_ACEOF
+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_CTL_S390DBF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_S390DBF $ac_have_decl
+_ACEOF
+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_CTL_SUNRPC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_SUNRPC $ac_have_decl
+_ACEOF
+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_CTL_PM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_PM $ac_have_decl
+_ACEOF
+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_CTL_FRV" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CTL_FRV $ac_have_decl
+_ACEOF
+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_have_decl_KERN_OSTYPE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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
+
+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
+
+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
+
+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
+
+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
+
+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
+
+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>
+"
+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
+
+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
+
+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>
+"
+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_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
+
+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
+
+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>
+"
+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_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>
+"
+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_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>
+"
+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_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
+
+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_have_decl_KERN_SPARC_STOP_A" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_KERN_PANIC_ON_NMI $ac_have_decl
+_ACEOF
+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_have_decl_NET_CORE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_NET_IRDA $ac_have_decl
+_ACEOF
+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_have_decl_NET_CORE_WMEM_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_NET_CORE_RMEM_DEFAULT $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>
+"
+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_DECL_NET_CORE_DESTROY_DELAY $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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_NET_CORE_SOMAXCONN $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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_NET_CORE_WARNINGS $ac_have_decl
+_ACEOF
+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_have_decl_NET_IPV4_FORWARD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_NET_IPV4_TCP_RETRIES2 $ac_have_decl
+_ACEOF
+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_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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_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>
+"
+if test "x$ac_cv_have_decl_NET_TCP_ORPHAN_RETRIES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+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>
+"
+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_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
+
+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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_NET_TCP_BIC_BETA $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>
+#include <linux/sysctl.h>
+"
+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_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR $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>
+#include <linux/sysctl.h>
+"
+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_NET_TCP_CONG_CONTROL $ac_have_decl
+_ACEOF
+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_NET_TCP_ABC" = 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
+_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_DECL_NET_TCP_FRTO_RESPONSE $ac_have_decl
+_ACEOF
+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>
+"
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_FLUSH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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
+
+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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_NET_IPV4_ROUTE_GC_INTERVAL $ac_have_decl
+_ACEOF
+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_NET_IPV4_ROUTE_REDIRECT_LOAD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_LOAD $ac_have_decl
+_ACEOF
+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_NET_IPV4_ROUTE_REDIRECT_NUMBER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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
+
+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>
+"
+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_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>
+"
+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_NET_IPV4_ROUTE_ERROR_BURST $ac_have_decl
+_ACEOF
+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_NET_IPV4_ROUTE_GC_ELASTICITY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_NET_IPV4_ROUTE_MTU_EXPIRES $ac_have_decl
+_ACEOF
+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_NET_IPV4_ROUTE_MIN_PMTU" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ROUTE_MIN_PMTU $ac_have_decl
+_ACEOF
+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_NET_IPV4_ROUTE_MIN_ADVMSS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ROUTE_MIN_ADVMSS $ac_have_decl
+_ACEOF
+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_NET_IPV4_ROUTE_SECRET_INTERVAL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ROUTE_SECRET_INTERVAL $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>
+"
+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_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS $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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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>
+"
+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_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
+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_NET_IPV6_CONF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_CONF $ac_have_decl
+_ACEOF
+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_NET_IPV6_NEIGH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_NEIGH $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE $ac_have_decl
+_ACEOF
+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_NET_IPV6_ICMP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#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>
+"
+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_NET_IPV6_BINDV6ONLY $ac_have_decl
+_ACEOF
+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_NET_IPV6_IP6FRAG_HIGH_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH $ac_have_decl
+_ACEOF
+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_NET_IPV6_IP6FRAG_LOW_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH $ac_have_decl
+_ACEOF
+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_NET_IPV6_IP6FRAG_TIME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_IP6FRAG_TIME $ac_have_decl
+_ACEOF
+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_NET_IPV6_IP6FRAG_SECRET_INTERVAL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL $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>
+"
+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_NET_IPV6_MLD_MAX_MSF $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_FLUSH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_FLUSH $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_GC_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_MAX_SIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE $ac_have_decl
+_ACEOF
+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_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_NET_IPV6_ROUTE_GC_MIN_INTERVAL $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_GC_TIMEOUT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_GC_INTERVAL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_GC_ELASTICITY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_MTU_EXPIRES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES $ac_have_decl
+_ACEOF
+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_NET_IPV6_ROUTE_MIN_ADVMSS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS $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>
+"
+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_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS $ac_have_decl
+_ACEOF
+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_NET_UNIX_DESTROY_DELAY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_UNIX_DESTROY_DELAY $ac_have_decl
+_ACEOF
+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_NET_UNIX_DELETE_DELAY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_UNIX_DELETE_DELAY $ac_have_decl
+_ACEOF
+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_NET_UNIX_MAX_DGRAM_QLEN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_UNIX_MAX_DGRAM_QLEN $ac_have_decl
+_ACEOF
+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_VM_OVERCOMMIT_MEMORY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_OVERCOMMIT_MEMORY $ac_have_decl
+_ACEOF
+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_VM_PAGE_CLUSTER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_PAGE_CLUSTER $ac_have_decl
+_ACEOF
+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_VM_DIRTY_BACKGROUND" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_DIRTY_BACKGROUND $ac_have_decl
+_ACEOF
+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_VM_DIRTY_RATIO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_DIRTY_RATIO $ac_have_decl
+_ACEOF
+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_VM_DIRTY_WB_CS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_DIRTY_WB_CS $ac_have_decl
+_ACEOF
+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_VM_DIRTY_EXPIRE_CS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_DIRTY_EXPIRE_CS $ac_have_decl
+_ACEOF
+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_VM_NR_PDFLUSH_THREADS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_NR_PDFLUSH_THREADS $ac_have_decl
+_ACEOF
+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_VM_OVERCOMMIT_RATIO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_OVERCOMMIT_RATIO $ac_have_decl
+_ACEOF
+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_VM_PAGEBUF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_PAGEBUF $ac_have_decl
+_ACEOF
+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_VM_HUGETLB_PAGES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_HUGETLB_PAGES $ac_have_decl
+_ACEOF
+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_VM_SWAPPINESS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_SWAPPINESS $ac_have_decl
+_ACEOF
+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_VM_LOWMEM_RESERVE_RATIO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_LOWMEM_RESERVE_RATIO $ac_have_decl
+_ACEOF
+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_VM_MIN_FREE_KBYTES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VM_MIN_FREE_KBYTES $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>
+"
+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_VM_MAX_MAP_COUNT $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>
+"
+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_VM_LAPTOP_MODE $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>
+"
+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_VM_BLOCK_DUMP $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>
+"
+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_VM_HUGETLB_GROUP $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>
+"
+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_VM_VFS_CACHE_PRESSURE $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>
+"
+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_VM_LEGACY_VA_LAYOUT $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>
+"
+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_VM_SWAP_TOKEN_TIMEOUT $ac_have_decl
+_ACEOF
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BLKGETSIZE64" >&5
+$as_echo_n "checking for BLKGETSIZE64... " >&6; }
+if ${ac_cv_have_blkgetsize64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <linux/fs.h>
+int
+main ()
+{
+return !BLKGETSIZE64;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_have_blkgetsize64=yes
+else
+  ac_cv_have_blkgetsize64=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
        if test $ac_cv_have_blkgetsize64 = yes; then
 
 $as_echo "#define HAVE_BLKGETSIZE64 1" >>confdefs.h
@@ -6822,84 +10660,88 @@ _ACEOF
 # 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 rlim_t" >&5
-$as_echo_n "checking size of rlim_t... " >&6; }
-if ${ac_cv_sizeof_rlim_t+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+$as_echo_n "checking size of off_t... " >&6; }
+if ${ac_cv_sizeof_off_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (rlim_t))" "ac_cv_sizeof_rlim_t"        "#include <sys/resource.h>
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "#include <sys/types.h>
 "; then :
 
 else
-  if test "$ac_cv_type_rlim_t" = yes; then
+  if test "$ac_cv_type_off_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (rlim_t)
+as_fn_error 77 "cannot compute sizeof (off_t)
 See \`config.log' for more details" "$LINENO" 5; }
    else
-     ac_cv_sizeof_rlim_t=0
+     ac_cv_sizeof_off_t=0
    fi
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_rlim_t" >&5
-$as_echo "$ac_cv_sizeof_rlim_t" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
+$as_echo "$ac_cv_sizeof_off_t" >&6; }
 
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_RLIM_T $ac_cv_sizeof_rlim_t
+#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
 _ACEOF
 
 
 
-for ac_header in libaio.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "libaio.h" "ac_cv_header_libaio_h" "$ac_includes_default"
-if test "x$ac_cv_header_libaio_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBAIO_H 1
-_ACEOF
-
-       ac_fn_c_check_member "$LINENO" "struct iocb" "u.c.flags" "ac_cv_member_struct_iocb_u_c_flags" "#include <libaio.h>
-"
-if test "x$ac_cv_member_struct_iocb_u_c_flags" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SA_RESTORER" >&5
+$as_echo_n "checking for SA_RESTORER... " >&6; }
+if ${st_cv_sa_restorer+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  st_cv_sa_restorer="$(echo SA_RESTORER |
+                       $CPP $CPPFLAGS -P -imacros asm/signal.h - |
+                       grep ^0x)"
+               test -n "$st_cv_sa_restorer" || st_cv_sa_restorer=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_sa_restorer" >&5
+$as_echo "$st_cv_sa_restorer" >&6; }
+if test "x$st_cv_sa_restorer" != xno; then
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IOCB_U_C_FLAGS 1
+#define ASM_SA_RESTORER $st_cv_sa_restorer
 _ACEOF
 
-
 fi
 
-       ac_fn_c_check_decl "$LINENO" "IO_CMD_PWRITE" "ac_cv_have_decl_IO_CMD_PWRITE" "#include <libaio.h>
-"
-if test "x$ac_cv_have_decl_IO_CMD_PWRITE" = xyes; then :
-  ac_have_decl=1
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_popcount" >&5
+$as_echo_n "checking for __builtin_popcount... " >&6; }
+if ${st_cv_have___builtin_popcount+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_have_decl=0
-fi
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IO_CMD_PWRITE $ac_have_decl
+int
+main ()
+{
+__builtin_popcount(0)
+  ;
+  return 0;
+}
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "IO_CMD_PWRITEV" "ac_cv_have_decl_IO_CMD_PWRITEV" "#include <libaio.h>
-"
-if test "x$ac_cv_have_decl_IO_CMD_PWRITEV" = xyes; then :
-  ac_have_decl=1
+if ac_fn_c_try_link "$LINENO"; then :
+  st_cv_have___builtin_popcount=yes
 else
-  ac_have_decl=0
+  st_cv_have___builtin_popcount=no
 fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IO_CMD_PWRITEV $ac_have_decl
-_ACEOF
-
-
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_have___builtin_popcount" >&5
+$as_echo "$st_cv_have___builtin_popcount" >&6; }
+if test "x$st_cv_have___builtin_popcount" = xyes; then
 
-done
+$as_echo "#define HAVE___BUILTIN_POPCOUNT 1" >>confdefs.h
 
+fi
 
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
@@ -6919,7 +10761,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  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
 
 
 
+libunwind_CPPFLAGS=
+libunwind_LDFLAGS=
+libunwind_LIBS=
+
+# Check whether --with-libunwind was given.
+if test "${with_libunwind+set}" = set; then :
+  withval=$with_libunwind; case "${withval}" in
+             yes|no|check) ;;
+             *) with_libunwind=yes
+                libunwind_CPPFLAGS="-I${withval}/include"
+                libunwind_LDFLAGS="-L${withval}/lib" ;;
+             esac
+else
+  with_libunwind=check
+
+fi
+
+
+use_libunwind=no
+if test "x$with_libunwind" != xno; then :
+  saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
+
+       for ac_header in libunwind-ptrace.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ptrace.h" "ac_cv_header_libunwind_ptrace_h" "$ac_includes_default"
+if test "x$ac_cv_header_libunwind_ptrace_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBUNWIND_PTRACE_H 1
+_ACEOF
+ saved_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS $libunwind_LDFLAGS"
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for backtrace in -lunwind" >&5
+$as_echo_n "checking for backtrace in -lunwind... " >&6; }
+if ${ac_cv_lib_unwind_backtrace+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lunwind $libunwind_LIBS
+           $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char backtrace ();
+int
+main ()
+{
+return backtrace ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_unwind_backtrace=yes
+else
+  ac_cv_lib_unwind_backtrace=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_unwind_backtrace" >&5
+$as_echo "$ac_cv_lib_unwind_backtrace" >&6; }
+if test "x$ac_cv_lib_unwind_backtrace" = xyes; then :
+  libunwind_LIBS="-lunwind $libunwind_LIBS"
+
+             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unw_create_addr_space in libunwind-generic" >&5
+$as_echo_n "checking for unw_create_addr_space in libunwind-generic... " >&6; }
+             saved_LIBS="$LIBS"
+             LIBS="-lunwind-generic $libunwind_LIBS $LIBS"
+
+             cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libunwind-ptrace.h>
+int
+main ()
+{
+return !unw_create_addr_space(0, 0)
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+                libunwind_LIBS="-lunwind-generic $libunwind_LIBS"
+
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _UPT_create in -lunwind-ptrace" >&5
+$as_echo_n "checking for _UPT_create in -lunwind-ptrace... " >&6; }
+if ${ac_cv_lib_unwind_ptrace__UPT_create+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lunwind-ptrace $libunwind_LIBS
+                 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char _UPT_create ();
+int
+main ()
+{
+return _UPT_create ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_unwind_ptrace__UPT_create=yes
+else
+  ac_cv_lib_unwind_ptrace__UPT_create=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_unwind_ptrace__UPT_create" >&5
+$as_echo "$ac_cv_lib_unwind_ptrace__UPT_create" >&6; }
+if test "x$ac_cv_lib_unwind_ptrace__UPT_create" = xyes; then :
+  libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
+                   use_libunwind=yes
+
+else
+  if test "x$with_libunwind" != xcheck; then
+                     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find _UPT_create in libunwind-ptrace
+See \`config.log' for more details" "$LINENO" 5; }
+                   fi
+
+fi
+
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                if test "x$with_libunwind" != xcheck; then
+                  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find unw_create_addr_space in libunwind-generic
+See \`config.log' for more details" "$LINENO" 5; }
+                fi
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+             LIBS="$saved_LIBS"
+
+else
+  if test "x$with_libunwind" != xcheck; then
+               { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find libunwind
+See \`config.log' for more details" "$LINENO" 5; }
+             fi
+
+fi
+
+
+          LDFLAGS="$saved_LDFLAGS"
+
+else
+  if test "x$with_libunwind" != xcheck; then
+            { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find libunwind-ptrace.h
+See \`config.log' for more details" "$LINENO" 5; }
+          fi
+
+
+fi
+
+done
+
+
+       CPPFLAGS="$saved_CPPFLAGS"
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable stack tracing support using libunwind" >&5
+$as_echo_n "checking whether to enable stack tracing support using libunwind... " >&6; }
+if test "x$use_libunwind" = xyes; then
+
+$as_echo "#define USE_LIBUNWIND 1" >>confdefs.h
+
+
+
+
+fi
+ if test "x$use_libunwind" = xyes; then
+  USE_LIBUNWIND_TRUE=
+  USE_LIBUNWIND_FALSE='#'
+else
+  USE_LIBUNWIND_TRUE='#'
+  USE_LIBUNWIND_FALSE=
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_libunwind" >&5
+$as_echo "$use_libunwind" >&6; }
+
 ac_config_files="$ac_config_files Makefile tests/Makefile"
 
 cat >confcache <<\_ACEOF
@@ -7053,6 +11112,14 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -7086,6 +11153,10 @@ if test -z "${X32_TRUE}" && test -z "${X32_FALSE}"; then
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
+if test -z "${USE_LIBUNWIND_TRUE}" && test -z "${USE_LIBUNWIND_FALSE}"; then
+  as_fn_error $? "conditional \"USE_LIBUNWIND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
@@ -7384,16 +11455,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -7453,28 +11524,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -7495,8 +11554,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by strace $as_me 4.8, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by strace $as_me 4.9, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -7561,11 +11620,11 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-strace config.status 4.8
-configured by $0, generated by GNU Autoconf 2.68,
+strace config.status 4.9
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2011 Free Software Foundation, Inc.
+Copyright (C)  Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -7656,7 +11715,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -8286,7 +12345,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -8299,7 +12358,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -8333,21 +12392,19 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
index c4896f3..054f85b 100644 (file)
@@ -6,7 +6,7 @@ AC_INIT([strace],
 AC_CONFIG_SRCDIR([strace.c])
 AC_CONFIG_AUX_DIR([.])
 AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip silent-rules])
+AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip silent-rules parallel-tests])
 AM_MAINTAINER_MODE
 AC_CANONICAL_HOST
 
@@ -54,7 +54,11 @@ alpha*)
 powerpc*)
        arch=powerpc
        AC_DEFINE([POWERPC], 1, [Define for the PowerPC architecture.])
-       if test $host_cpu = powerpc64; then
+       AC_TRY_COMPILE(
+[#ifndef __LP64__
+# error 32 bit
+#endif], [], ppc_bits=64, ppc_bits=32)
+       if test "$ppc_bits" = "64"; then
                AC_DEFINE([POWERPC64], 1, [Define for the PowerPC64 architecture.])
        fi
        ;;
@@ -70,6 +74,10 @@ avr32*)
        arch=avr32
        AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.])
        ;;
+arc*)
+       arch=arc
+       AC_DEFINE([ARC], 1, [Define for the ARC architecture.])
+       ;;
 s390)
        arch=s390
        AC_DEFINE([S390], 1, [Define for the S390 architecture.])
@@ -142,6 +150,18 @@ AM_CONDITIONAL([X32], [test x$arch = xx32])
 
 AC_INCLUDEDIR
 
+AC_ARG_ENABLE([arm-oabi],
+             [AS_HELP_STRING([--enable-arm-oabi],
+                             [enable OABI support on ARM EABI])],
+             [], [enable_arm_oabi=no])
+case "$enable_arm_oabi" in
+       yes) enable_arm_oabi=1 ;;
+       no) enable_arm_oabi=0 ;;
+       *) AC_MSG_ERROR([bad value $enable_arm_oabi for arm-oabi option]) ;;
+esac
+AC_DEFINE_UNQUOTED([ENABLE_ARM_OABI], [$enable_arm_oabi],
+                  [Define to 1 if you want OABI support on ARM EABI.])
+
 gl_WARN_ADD([-Wall])
 gl_WARN_ADD([-Wwrite-strings])
 AC_ARG_ENABLE([gcc-Werror],
@@ -185,25 +205,23 @@ AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
 [#include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>])
-AC_CHECK_TYPES([long long])
 AC_LITTLE_ENDIAN_LONG_LONG
-AC_OFF_T_IS_LONG_LONG
-AC_CHECK_TYPES([struct opthdr],,, [#include <sys/socket.h>])
-AC_CHECK_TYPES([struct t_opthdr],,, [#include <sys/tiuser.h>])
 
 AC_CHECK_FUNCS(m4_normalize([
+       fopen64
        fork
+       fputs_unlocked
        if_indextoname
        inet_ntop
        prctl
+       preadv
        process_vm_readv
+       pwritev
        sendmsg
        sigaction
        stpcpy
        strerror
        strsignal
-       _sys_siglist
-       sys_siglist
 ]))
 AC_CHECK_HEADERS(m4_normalize([
        asm/cachectl.h
@@ -218,6 +236,7 @@ AC_CHECK_HEADERS(m4_normalize([
        mqueue.h
        netinet/sctp.h
        poll.h
+       scsi/sg.h
        stropts.h
        sys/acl.h
        sys/asynch.h
@@ -236,35 +255,25 @@ AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h],
 #include <sys/socket.h>
 #include <asm/types.h>])
 AC_CHECK_HEADERS([asm/sigcontext.h], [], [], [#include <signal.h>])
-AC_CHECK_TYPES([struct sigcontext_struct,
-               struct sigcontext],,, [#include <signal.h>])
+AC_CHECK_TYPES([struct sigcontext],,, [#include <signal.h>])
 AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])
 
 AC_CHECK_MEMBERS([struct msghdr.msg_control],,, [#include <sys/socket.h>])
 
-AC_CHECK_MEMBERS([struct T_conn_res.QUEUE_ptr,
-                  struct T_conn_res.ACCEPTOR_id],,,
-[#include <sys/stream.h>
-#include <sys/tihdr.h>])
-
 AC_CHECK_TYPES([struct __old_kernel_stat],,, [#include <asm/stat.h>])
 
-AC_CHECK_TYPES([struct pt_all_user_regs, struct ia64_fpreg],,,
+AC_CHECK_TYPES([struct pt_all_user_regs, struct ia64_fpreg, struct ptrace_peeksiginfo_args],,,
               [#include <sys/ptrace.h>])
 
-AC_CHECK_TYPES([struct user_desc],,, [#include <asm/ldt.h>])
-
-AC_CHECK_MEMBERS([struct dqblk.dqb_curblocks],,, [#include <sys/quota.h>])
+AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
 
-AC_CHECK_MEMBERS([struct sigcontext.sc_hi2],,, [#include <signal.h>
-#ifdef HAVE_ASM_SIGCONTEXT_H
-# include <asm/sigcontext.h>
-#endif])
+AC_CHECK_MEMBERS([struct sigevent._sigev_un._pad,
+                 struct sigevent.__pad,
+                 siginfo_t.si_syscall],,, [#include <signal.h>])
 
-AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
+AC_CHECK_TYPES([struct flock64],,, [#include <fcntl.h>])
 
 AC_CHECK_DECLS([sys_errlist])
-AC_CHECK_DECLS([sys_siglist, _sys_siglist],,, [#include <signal.h>])
 AC_CHECK_DECLS(m4_normalize([
        PTRACE_EVENT_CLONE,
        PTRACE_EVENT_EXEC,
@@ -280,14 +289,334 @@ AC_CHECK_DECLS(m4_normalize([
        PTRACE_O_TRACEFORK,
        PTRACE_O_TRACESYSGOOD,
        PTRACE_O_TRACEVFORK,
+       PTRACE_PEEKUSER,
+       PTRACE_POKEUSER,
        PTRACE_SETOPTIONS
 ]),,, [#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_AUTOCLEAR,
        LO_FLAGS_PARTSCAN
 ]),,, [#include <linux/loop.h>])
 
+AC_CHECK_DECLS(m4_normalize([
+       CTL_KERN,
+       CTL_VM,
+       CTL_NET,
+       CTL_PROC,
+       CTL_FS,
+       CTL_DEBUG,
+       CTL_DEV,
+       CTL_BUS,
+       CTL_ABI,
+       CTL_CPU,
+       CTL_ARLAN,
+       CTL_S390DBF,
+       CTL_SUNRPC,
+       CTL_PM,
+       CTL_FRV,
+       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,
+       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,
+       NET_CORE_WMEM_MAX,
+       NET_CORE_RMEM_MAX,
+       NET_CORE_WMEM_DEFAULT,
+       NET_CORE_RMEM_DEFAULT,
+       NET_CORE_DESTROY_DELAY,
+       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_BUDGET,
+       NET_CORE_AEVENT_ETIME,
+       NET_CORE_AEVENT_RSEQTH,
+       NET_CORE_WARNINGS,
+       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,
+       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,
+       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,
+       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,
+       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,
+       NET_UNIX_DESTROY_DELAY,
+       NET_UNIX_DELETE_DELAY,
+       NET_UNIX_MAX_DGRAM_QLEN,
+       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>])
+
 AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
        [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
 #include <stdlib.h>
@@ -299,14 +628,117 @@ AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
 
 AC_CHECK_SIZEOF([long])
 AC_CHECK_SIZEOF([long long])
-AC_CHECK_SIZEOF([rlim_t],,[#include <sys/resource.h>])
+AC_CHECK_SIZEOF([off_t],,[#include <sys/types.h>])
+
+AC_CACHE_CHECK([for SA_RESTORER], [st_cv_sa_restorer],
+              [st_cv_sa_restorer="$(echo SA_RESTORER |
+                       $CPP $CPPFLAGS -P -imacros asm/signal.h - |
+                       grep ^0x)"
+               test -n "$st_cv_sa_restorer" || st_cv_sa_restorer=no])
+if test "x$st_cv_sa_restorer" != xno; then
+       AC_DEFINE_UNQUOTED([ASM_SA_RESTORER], [$st_cv_sa_restorer],
+                          [SA_RESTORER defined in <asm/signal.h>])
+fi
 
-AC_CHECK_HEADERS([libaio.h], [
-       AC_CHECK_MEMBERS([struct iocb.u.c.flags],,, [#include <libaio.h>])
-       AC_CHECK_DECLS([IO_CMD_PWRITE, IO_CMD_PWRITEV],,, [#include <libaio.h>])
-])
+AC_CACHE_CHECK([for __builtin_popcount], [st_cv_have___builtin_popcount],
+              [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_popcount(0)])],
+                              [st_cv_have___builtin_popcount=yes],
+                              [st_cv_have___builtin_popcount=no])])
+if test "x$st_cv_have___builtin_popcount" = xyes; then
+       AC_DEFINE([HAVE___BUILTIN_POPCOUNT], [1],
+                 [Define to 1 if the system provides __builtin_popcount function])
+fi
 
 AC_PATH_PROG([PERL], [perl])
 
+dnl stack trace with libunwind
+libunwind_CPPFLAGS=
+libunwind_LDFLAGS=
+libunwind_LIBS=
+AC_ARG_WITH([libunwind],
+            [AS_HELP_STRING([--with-libunwind],
+                            [use libunwind to implement stack tracing support])],
+            [case "${withval}" in
+             yes|no|check) ;;
+             *) with_libunwind=yes
+                libunwind_CPPFLAGS="-I${withval}/include"
+                libunwind_LDFLAGS="-L${withval}/lib" ;;
+             esac],
+            [with_libunwind=check]
+)
+
+use_libunwind=no
+AS_IF([test "x$with_libunwind" != xno],
+      [saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
+
+       AC_CHECK_HEADERS([libunwind-ptrace.h],
+         [saved_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS $libunwind_LDFLAGS"
+
+          AC_CHECK_LIB([unwind], [backtrace],
+            [libunwind_LIBS="-lunwind $libunwind_LIBS"
+
+             AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic])
+             saved_LIBS="$LIBS"
+             LIBS="-lunwind-generic $libunwind_LIBS $LIBS"
+
+             AC_LINK_IFELSE(
+               [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]],
+                                [[return !unw_create_addr_space(0, 0)]])
+               ],
+               [AC_MSG_RESULT([yes])
+                libunwind_LIBS="-lunwind-generic $libunwind_LIBS"
+
+                AC_CHECK_LIB([unwind-ptrace], [_UPT_create],
+                  [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
+                   use_libunwind=yes
+                  ],
+                  [if test "x$with_libunwind" != xcheck; then
+                     AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace])
+                   fi
+                  ],
+                  [$libunwind_LIBS]
+                )
+               ],
+               [AC_MSG_RESULT([no])
+                if test "x$with_libunwind" != xcheck; then
+                  AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic])
+                fi
+               ]
+             )
+
+             LIBS="$saved_LIBS"
+            ],
+            [if test "x$with_libunwind" != xcheck; then
+               AC_MSG_FAILURE([failed to find libunwind])
+             fi
+            ],
+            [$libunwind_LIBS]
+          )
+
+          LDFLAGS="$saved_LDFLAGS"
+         ],
+         [if test "x$with_libunwind" != xcheck; then
+            AC_MSG_FAILURE([failed to find libunwind-ptrace.h])
+          fi
+         ]
+       )
+
+       CPPFLAGS="$saved_CPPFLAGS"
+      ]
+)
+
+dnl enable libunwind
+AC_MSG_CHECKING([whether to enable stack tracing support using libunwind])
+if test "x$use_libunwind" = xyes; then
+       AC_DEFINE([USE_LIBUNWIND], 1, [Compile stack tracing functionality])
+       AC_SUBST(libunwind_LIBS)
+       AC_SUBST(libunwind_LDFLAGS)
+       AC_SUBST(libunwind_CPPFLAGS)
+fi
+AM_CONDITIONAL([USE_LIBUNWIND], [test "x$use_libunwind" = xyes])
+AC_MSG_RESULT([$use_libunwind])
+
 AC_CONFIG_FILES([Makefile tests/Makefile])
 AC_OUTPUT
diff --git a/count.c b/count.c
index 8395466..e41994d 100644 (file)
--- a/count.c
+++ b/count.c
@@ -37,7 +37,7 @@
 
 /* Per-syscall stats structure */
 struct call_counts {
-       /* system time spent in syscall (not wall clock time) */
+       /* time may be total latency or system time */
        struct timeval time;
        int calls, errors;
 };
@@ -47,10 +47,11 @@ static struct call_counts *countv[SUPPORTED_PERSONALITIES];
 
 static struct timeval shortest = { 1000000, 0 };
 
-/* On entry, tv is syscall exit timestamp */
 void
-count_syscall(struct tcb *tcp, struct timeval *tv)
+count_syscall(struct tcb *tcp, const struct timeval *syscall_exiting_tv)
 {
+       struct timeval wtv;
+       struct timeval *tv = &wtv;
        struct call_counts *cc;
        unsigned long scno = tcp->scno;
 
@@ -69,7 +70,7 @@ count_syscall(struct tcb *tcp, struct timeval *tv)
                cc->errors++;
 
        /* tv = wall clock time spent while in syscall */
-       tv_sub(tv, tv, &tcp->etime);
+       tv_sub(tv, syscall_exiting_tv, &tcp->etime);
 
        /* Spent more wall clock time than spent system time? (usually yes) */
        if (tv_cmp(tv, &tcp->dtime) > 0) {
@@ -90,18 +91,18 @@ count_syscall(struct tcb *tcp, struct timeval *tv)
 
                if (tv_nz(&tcp->dtime))
                        /* tv = system time spent, if it isn't 0 */
-                       *tv = tcp->dtime;
+                       tv = &tcp->dtime;
                else if (tv_cmp(tv, &one_tick) > 0) {
                        /* tv = smallest "sane" time interval */
                        if (tv_cmp(&shortest, &one_tick) < 0)
-                               *tv = shortest;
+                               tv = &shortest;
                        else
-                               *tv = one_tick;
+                               tv = &one_tick;
                }
        }
        if (tv_cmp(tv, &shortest) < 0)
                shortest = *tv;
-       tv_add(&cc->time, &cc->time, tv);
+       tv_add(&cc->time, &cc->time, count_wallclock ? &wtv : tv);
 }
 
 static int
index 39bb56f..52845b2 100644 (file)
@@ -1,3 +1,30 @@
+strace (4.9-1) experimental; urgency=low
+
+  * New upstream version.
+    + added -w option to produce stats on syscall latency, closes: #457497
+    + applied miscellaneous corrections to the manpage, closes: #725987
+    + fixed a typo in package description, closes: #697625
+    + enabled or1k build, closes: #742235
+    + enabled maximum security hardening, thanks to Markus <waldeck@gmx.de>
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Fri, 15 Aug 2014 13:14:15 +0000
+
+strace (4.8-1.1) unstable; urgency=low
+
+  * NMU
+  * Uploading 4.8 to unstable to fix long-standing bugs that have been
+    fixed for ages in experimental only.
+  * enable arm64 build, Closes: #749956
+  * enable x32 build, Closes: #727018
+  * lintian-inspired fixes:
+    + add build-arch and build-indep targets in debian/rules
+    + update standards-version to 3.9.5
+    + remove ancient changelog entries causing syntax checker errors
+    + add hardening using buildflags.mk
+    + trivial changes to Description: fields
+
+ -- Steve McIntyre <93sam@debian.org>  Thu, 10 Jul 2014 14:22:18 +0000
+
 strace (4.8-1) experimental; urgency=low
 
   * New upstream version.
@@ -528,7 +555,7 @@ strace (4.2-2) frozen unstable; urgency=low
 
  -- Wichert Akkerman <wakkerma@debian.org>  Thu, 27 Jan 2000 03:22:55 +0100
 
-strace (4.2-1) frozen  unstable; urgency=low
+strace (4.2-1) frozen unstable; urgency=low
 
   * New upstream version:
     + Builds correctly on glibc2.0 again, Closes: Bug# 51648
@@ -713,14 +740,14 @@ strace (3.1-12) unstable; urgency=low
 
  -- Wichert Akkerman <wakkerma@debian.org>  Mon,  6 Oct 1997 15:42:25 +0200
 
-strace (3.1-11) unstable; urgency=LOW
+strace (3.1-11) unstable; urgency=low
 
   * Ported to libc6 / glibc2 (Bug# 11729)
   * Compress manpage
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Fri,  1 Aug 1997 00:13:38 +02
 
-strace (3.1-10) unstable; urgency=LOW
+strace (3.1-10) unstable; urgency=low
 
   * Install upstream changelog
   * Added dependencies to control file for libc
@@ -728,7 +755,7 @@ strace (3.1-10) unstable; urgency=LOW
 
  -- Wichert Akkerman <wakkerma@debian.org>  Fri, 11 Jul 1997 12:26:12 +0200
 
-strace (3.1-9) stable; urgency=LOW
+strace (3.1-9) stable; urgency=low
 
   * Fixed bug with hanging children. Patch by Matthias Urlichs
   * Added some more constants to net.c.
@@ -736,25 +763,26 @@ strace (3.1-9) stable; urgency=LOW
 
  -- Wichert Akkerman <wakkerma@debian.org>  Mon, 21 Apr 1997 11:59:45 +0200
 
-strace (3.1-8) frozen unstable; urgency=LOW
+strace (3.1-8) frozen unstable; urgency=low
 
   * Added detection of ROSE networking
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Tue, 12 Nov 1996 22:21:22 +0100
 
-strace (3.1-7) stable; urgency=LOW
+strace (3.1-7) stable; urgency=low
 
   * Install manpage with correct mode (0644) (Bug#4813)
   * Renamed debian changelog to changelog.Debian
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Sat, 26 Oct 1996 18:15:41 +0200
 
-strace (3.1-6) stable; urgency=LOW
+strace (3.1-6) stable; urgency=low
 
   * Small patch for compilation on kernels 2.1.0 and later (see signal.c)
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Fri, 18 Oct 1996 00:28:47 +0200
-strace (3.1-5) stable unstable; urgency=LOW
+
+strace (3.1-5) stable unstable; urgency=low
 
   * Moved to new packagingformat
   * Fixed umoven bug (Bug# 4523)
@@ -762,21 +790,20 @@ strace (3.1-5) stable unstable; urgency=LOW
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Sat, 23 Sep 1996 23:33:58 +0200
 
-strace (3.1-4) unstable; urgency=LOW
+strace (3.1-4) unstable; urgency=low
 
   * Fixed changestemplate
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>, Thu Sep 12 14:59:44 MET DST 1996
 
-
-strace (3.1-3) unstable; priority=LOW
+strace (3.1-3) unstable; urgency=low
 
   * Revamped debian files
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>, Thu Jul 11 20:19:11 MET DST 1996
 
 
-strace (3.1-2) unstable; priority=LOW
+strace (3.1-2) unstable; urgency=low
   * Added some #ifdef's around IPX stuff to make it compilable on non-Linux
     systems.
   * changed debian.control and debian.rules to conform to new debian naming
@@ -785,8 +812,7 @@ strace (3.1-2) unstable; priority=LOW
 
  -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>
 
-
-strace (3.1-1) unstable; priority=LOW
+strace (3.1-1) unstable; urgency=low
 
   * Moved to new upstream version
   * added more protocol families to domains
index 417a909..3673d2e 100644 (file)
@@ -3,13 +3,13 @@ Maintainer: Frederik Schüler <fs@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 [i386 powerpc s390 sparc], debhelper (>= 7.0.0)
-Standards-Version: 3.8.4
+Standards-Version: 3.9.5
 Homepage: http://sourceforge.net/projects/strace/
 
 Package: strace
-Architecture: alpha amd64 arm armeb armel armhf hppa i386 ia64 m68k mips mipsel powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64
+Architecture: alpha amd64 arm64 armeb armel armhf hppa i386 ia64 m68k mips mipsel or1k powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64 x32
 Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: A system call tracer
+Description: System call tracer
  strace is a system call tracer, i.e. a debugging tool which prints out
  a trace of all the system calls made by a another process/program.
  The program to be traced need not be recompiled for this, so you can
@@ -23,13 +23,13 @@ Package: strace64
 Architecture: i386 powerpc s390 sparc
 Priority: extra
 Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: A system call tracer for 64bit binaries
+Description: System call tracer for 64bit binaries
  strace is a system call tracer, i.e. a debugging tool which prints out
  a trace of all the system calls made by a another process/program.
  The program to be traced need not be recompiled for this, so you can
  use it on binaries for which you don't have source.
  .
- This package containts the 64bit version of the binary, intended for
+ This package contains the 64bit version of the binary, intended for
  biarch systems with 32bit userland and 64bit kernel.
  .
  System calls and signals are events that happen at the user/kernel
@@ -40,9 +40,9 @@ Package: strace-udeb
 Section: debian-installer
 XC-Package-Type: udeb
 Priority: extra
-Architecture: alpha amd64 arm armeb armel armhf hppa i386 ia64 m68k mips mipsel powerpc powerpcspe ppc64 s390 sh4 sparc sparc64
+Architecture: alpha amd64 arm64 armeb armel armhf hppa i386 ia64 m68k mips mipsel or1k powerpc powerpcspe ppc64 s390 sh4 sparc sparc64 x32
 Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: A system call tracer
+Description: System call tracer
  strace is a system call tracer, i.e. a debugging tool which prints out
  a trace of all the system calls made by a another process/program.
  The program to be traced need not be recompiled for this, so you can
index b997182..912b410 100755 (executable)
@@ -2,7 +2,11 @@
 
 #export DH_VERBOSE=1
 
-CFLAGS = -Wall -g
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
+
+CFLAGS += -Wall -g
 
 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
   CFLAGS += -O0
@@ -33,7 +37,12 @@ else
   CONFIG_OPTS = --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
 endif
 
-all build: build-stamp $(extra_build_targets)
+all: build
+
+build: build-arch build-indep
+
+build-arch: build-stamp $(extra_build_targets)
+build-indep: build-stamp $(extra_build_targets)
 
 %-stamp: %/Makefile
        $(MAKE) -C $*
diff --git a/defs.h b/defs.h
index 3f07c4f..625cac6 100644 (file)
--- a/defs.h
+++ b/defs.h
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
-#ifdef _LARGEFILE64_SOURCE
-/* This is the macro everything checks before using foo64 names.  */
-# ifndef _LFS64_LARGEFILE
-#  define _LFS64_LARGEFILE 1
-# endif
-#endif
 
 #ifdef MIPS
 # include <sgidefs.h>
@@ -146,34 +140,46 @@ extern char *stpcpy(char *dst, const char *src);
 #define USE_SEIZE 1
 /* To force NOMMU build, set to 1 */
 #define NOMMU_SYSTEM 0
+/*
+ * Set to 1 to use speed-optimized vfprintf implementation.
+ * It results in strace using about 5% less CPU in user space
+ * (compared to glibc version).
+ * But strace spends a lot of time in kernel space,
+ * so overall it does not appear to be a significant win.
+ * Thus disabled by default.
+ */
+#define USE_CUSTOM_PRINTF 0
 
-#if (defined(SPARC) || defined(SPARC64) \
-    || defined(I386) || defined(X32) || defined(X86_64) \
-    || defined(ARM) || defined(AARCH64) \
-    || defined(AVR32) \
-    || defined(OR1K) \
-    || defined(METAG) \
-    || defined(TILE) \
-    || defined(XTENSA) \
-    ) && defined(__GLIBC__)
-# include <sys/ptrace.h>
-#else
-/* Work around awkward prototype in ptrace.h. */
+#ifdef NEED_PTRACE_PROTOTYPE_WORKAROUND
 # define ptrace xptrace
 # include <sys/ptrace.h>
 # undef ptrace
-# ifdef POWERPC
-#  define __KERNEL__
-#  include <asm/ptrace.h>
-#  undef __KERNEL__
-# endif
 extern long ptrace(int, int, char *, long);
+#else
+# include <sys/ptrace.h>
+#endif
+
+#if defined(POWERPC)
+# include <asm/ptrace.h>
 #endif
 
 #if defined(TILE)
 # include <asm/ptrace.h>  /* struct pt_regs */
 #endif
 
+#ifndef ERESTARTSYS
+# define ERESTARTSYS    512
+#endif
+#ifndef ERESTARTNOINTR
+# define ERESTARTNOINTR 513
+#endif
+#ifndef ERESTARTNOHAND
+# define ERESTARTNOHAND 514
+#endif
+#ifndef ERESTART_RESTARTBLOCK
+# define ERESTART_RESTARTBLOCK 516
+#endif
+
 #if !HAVE_DECL_PTRACE_SETOPTIONS
 # define PTRACE_SETOPTIONS     0x4200
 #endif
@@ -222,21 +228,21 @@ extern long ptrace(int, int, char *, long);
 # define PTRACE_EVENT_EXIT     6
 #endif
 
-#if !defined(__GLIBC__)
+#if !HAVE_DECL_PTRACE_PEEKUSER
 # define PTRACE_PEEKUSER PTRACE_PEEKUSR
+#endif
+#if !HAVE_DECL_PTRACE_POKEUSER
 # define PTRACE_POKEUSER PTRACE_POKEUSR
 #endif
 
-#if USE_SEIZE
-# undef PTRACE_SEIZE
-# define PTRACE_SEIZE          0x4206
-# undef PTRACE_INTERRUPT
-# define PTRACE_INTERRUPT      0x4207
-# undef PTRACE_LISTEN
-# define PTRACE_LISTEN         0x4208
-# undef PTRACE_EVENT_STOP
-# define PTRACE_EVENT_STOP     128
-#endif
+#undef PTRACE_SEIZE
+#define PTRACE_SEIZE           0x4206
+#undef PTRACE_INTERRUPT
+#define PTRACE_INTERRUPT       0x4207
+#undef PTRACE_LISTEN
+#define PTRACE_LISTEN          0x4208
+#undef PTRACE_EVENT_STOP
+#define PTRACE_EVENT_STOP      128
 
 #ifdef ALPHA
 # define REG_R0 0
@@ -364,19 +370,21 @@ struct arm_pt_regs {
 # define DEFAULT_PERSONALITY 0
 #endif
 #ifndef PERSONALITY0_WORDSIZE
-# define PERSONALITY0_WORDSIZE (int)(sizeof(long))
+# define PERSONALITY0_WORDSIZE SIZEOF_LONG
 #endif
 
-#if defined(I386)
-extern struct user_regs_struct i386_regs;
+#if defined(I386) || defined(X86_64)
+extern uint32_t *const i386_esp_ptr;
 #elif defined(IA64)
-extern long ia32;
+extern bool ia64_ia32mode;
 #elif defined(SPARC) || defined(SPARC64)
 extern struct pt_regs sparc_regs;
 #elif defined(ARM)
 extern struct pt_regs arm_regs;
 #elif defined(TILE)
 extern struct pt_regs tile_regs;
+#elif defined(POWERPC)
+extern struct pt_regs ppc_regs;
 #endif
 
 typedef struct sysent {
@@ -395,7 +403,7 @@ typedef struct ioctlent {
 /* Trace Control Block */
 struct tcb {
        int flags;              /* See below for TCB_ values */
-       int pid;                /* Process Id of this entry */
+       int pid;                /* If 0, this tcb is free */
        int qual_flg;           /* qual_flags[scno] or DEFAULT_QUAL_FLAGS + RAW */
        int u_error;            /* Error code */
        long scno;              /* System call number */
@@ -417,13 +425,20 @@ struct tcb {
        struct timeval etime;   /* Syscall entry time */
                                /* Support for tracing forked processes: */
        long inst[2];           /* Saved clone args (badly named) */
+
+#ifdef USE_LIBUNWIND
+       struct UPT_info* libunwind_ui;
+       struct mmap_cache_t* mmap_cache;
+       unsigned int mmap_cache_size;
+       unsigned int mmap_cache_generation;
+       struct queue_t* queue;
+#endif
 };
 
 /* TCB flags */
-#define TCB_INUSE              00001   /* This table entry is in use */
 /* We have attached to this process, but did not see it stopping yet */
-#define TCB_STARTUP            00002
-#define TCB_IGNORE_ONE_SIGSTOP 00004   /* Next SIGSTOP is to be ignored */
+#define TCB_STARTUP            0x01
+#define TCB_IGNORE_ONE_SIGSTOP 0x02    /* Next SIGSTOP is to be ignored */
 /*
  * Are we in system call entry or in syscall exit?
  *
@@ -442,14 +457,13 @@ struct tcb {
  *
  * Use entering(tcp) / exiting(tcp) to check this bit to make code more readable.
  */
-#define TCB_INSYSCALL  00010
-#define TCB_ATTACHED   00020   /* It is attached already */
-/* Are we PROG from "strace PROG [ARGS]" invocation? */
-#define TCB_STRACE_CHILD 0040
-#define TCB_BPTSET     00100   /* "Breakpoint" set after fork(2) */
-#define TCB_REPRINT    00200   /* We should reprint this syscall on exit */
-#define TCB_FILTERED   00400   /* This system call has been filtered out */
-/* x86 does not need TCB_WAITEXECVE.
+#define TCB_INSYSCALL  0x04
+#define TCB_ATTACHED   0x08    /* We attached to it already */
+#define TCB_BPTSET     0x10    /* "Breakpoint" set after fork(2) */
+#define TCB_REPRINT    0x20    /* We should reprint this syscall on exit */
+#define TCB_FILTERED   0x40    /* This system call has been filtered out */
+/*
+ * x86 does not need TCB_WAITEXECVE.
  * It can detect post-execve SIGTRAP by looking at eax/rax.
  * See "not a syscall entry (eax = %ld)\n" message.
  *
@@ -470,7 +484,7 @@ struct tcb {
 /* This tracee has entered into execve syscall. Expect post-execve SIGTRAP
  * to happen. (When it is detected, tracee is continued and this bit is cleared.)
  */
-# define TCB_WAITEXECVE        01000
+# define TCB_WAITEXECVE        0x80
 #endif
 
 /* qualifier flags */
@@ -497,6 +511,8 @@ struct xlat {
        int val;
        const char *str;
 };
+#define XLAT(x) { x, #x }
+#define XLAT_END { 0, NULL }
 
 extern const struct xlat open_mode_flags[];
 extern const struct xlat addrfams[];
@@ -517,10 +533,11 @@ extern const struct xlat whence_codes[];
 # endif
 # define RVAL_LUDECIMAL        007     /* long unsigned decimal format */
 #endif
-#define RVAL_MASK      007     /* mask for these values */
+#define RVAL_FD                010     /* file descriptor */
+#define RVAL_MASK      017     /* mask for these values */
 
-#define RVAL_STR       010     /* Print `auxstr' field after return val */
-#define RVAL_NONE      020     /* Print nothing */
+#define RVAL_STR       020     /* Print `auxstr' field after return val */
+#define RVAL_NONE      040     /* Print nothing */
 
 #define TRACE_FILE     001     /* Trace file-related syscalls. */
 #define TRACE_IPC      002     /* Trace IPC-related syscalls. */
@@ -530,6 +547,8 @@ extern const struct xlat whence_codes[];
 #define TRACE_DESC     040     /* Trace file descriptor-related syscalls. */
 #define TRACE_MEMORY   0100    /* Trace memory mapping-related syscalls. */
 #define SYSCALL_NEVER_FAILS    0200    /* Syscall is always successful. */
+#define STACKTRACE_INVALIDATE_CACHE 0400  /* Trigger proc/maps cache updating */
+#define STACKTRACE_CAPTURE_ON_ENTER 01000 /* Capture stacktrace on "entering" stage */
 
 typedef enum {
        CFLAG_NONE = 0,
@@ -539,9 +558,11 @@ typedef enum {
 extern cflag_t cflag;
 extern bool debug_flag;
 extern bool Tflag;
+extern bool iflag;
+extern bool count_wallclock;
 extern unsigned int qflag;
 extern bool not_failing_only;
-extern bool show_fd_path;
+extern unsigned int show_fd_path;
 extern bool hide_log_until_execve;
 /* are we filtering traces based on paths? */
 extern const char **paths_selected;
@@ -549,6 +570,10 @@ extern const char **paths_selected;
 extern bool need_fork_exec_workarounds;
 extern unsigned xflag;
 extern unsigned followfork;
+#ifdef USE_LIBUNWIND
+/* if this is true do the stack trace for every system call */
+extern bool stack_trace_enabled;
+#endif
 extern unsigned ptrace_setoptions;
 extern unsigned max_strlen;
 extern unsigned os_release;
@@ -563,17 +588,10 @@ void error_msg_and_die(const char *fmt, ...) __attribute__ ((noreturn, format(pr
 void perror_msg_and_die(const char *fmt, ...) __attribute__ ((noreturn, format(printf, 1, 2)));
 void die_out_of_memory(void) __attribute__ ((noreturn));
 
-#ifdef USE_CUSTOM_PRINTF
+#if USE_CUSTOM_PRINTF
 /*
- * Speed-optimized vfprintf implementation.
  * See comment in vsprintf.c for allowed formats.
  * Short version: %h[h]u, %zu, %tu are not allowed, use %[l[l]]u.
- *
- * It results in strace using about 5% less CPU in user space
- * (compared to glibc version).
- * But strace spends a lot of time in kernel space,
- * so overall it does not appear to be a significant win.
- * Thus disabled by default.
  */
 int strace_vfprintf(FILE *fp, const char *fmt, va_list args);
 #else
@@ -583,8 +601,9 @@ int strace_vfprintf(FILE *fp, const char *fmt, va_list args);
 extern void set_sortby(const char *);
 extern void set_overhead(int);
 extern void qualify(const char *);
+extern void print_pc(struct tcb *);
 extern int trace_syscall(struct tcb *);
-extern void count_syscall(struct tcb *, struct timeval *);
+extern void count_syscall(struct tcb *, const struct timeval *);
 extern void call_summary(FILE *);
 
 #if defined(AVR32) \
@@ -595,7 +614,9 @@ extern void call_summary(FILE *);
  || defined(SPARC) || defined(SPARC64) \
  || defined(TILE) \
  || defined(OR1K) \
- || defined(METAG)
+ || defined(METAG) \
+ || defined(ARC) \
+ || defined(POWERPC)
 extern long get_regs_error;
 # define clear_regs()  (get_regs_error = -1)
 extern void get_regs(pid_t pid);
@@ -608,7 +629,7 @@ extern int umoven(struct tcb *, long, int, char *);
 #define umove(pid, addr, objp) \
        umoven((pid), (addr), sizeof(*(objp)), (char *) (objp))
 extern int umovestr(struct tcb *, long, int, char *);
-extern int upeek(struct tcb *, long, long *);
+extern int upeek(int pid, long, long *);
 #if defined(SPARC) || defined(SPARC64) || defined(IA64) || defined(SH)
 extern long getrval2(struct tcb *);
 #endif
@@ -622,7 +643,6 @@ extern int setbpt(struct tcb *);
 extern int clearbpt(struct tcb *);
 
 extern const char *signame(int);
-extern int is_restart_error(struct tcb *);
 extern void pathtrace_select(const char *);
 extern int pathtrace_match(struct tcb *);
 extern int getfdpath(struct tcb *, int, char *, unsigned);
@@ -631,6 +651,7 @@ extern const char *xlookup(const struct xlat *, int);
 
 extern int string_to_uint(const char *str);
 extern int string_quote(const char *, char *, long, int);
+extern int next_set_bit(const void *bit_array, unsigned cur_bit, unsigned size_bits);
 
 /* a refers to the lower numbered u_arg,
  * b refers to the higher numbered u_arg
@@ -673,6 +694,7 @@ extern void printsiginfo(siginfo_t *, int);
 extern void printsiginfo_at(struct tcb *tcp, long addr);
 #endif
 extern void printfd(struct tcb *, int);
+extern void print_dirfd(struct tcb *, int);
 extern void printsock(struct tcb *, long, int);
 extern void print_sock_optmgmt(struct tcb *, long, int);
 extern void printrusage(struct tcb *, long);
@@ -680,8 +702,7 @@ extern void printrusage(struct tcb *, long);
 extern void printrusage32(struct tcb *, long);
 #endif
 extern void printuid(const char *, unsigned long);
-extern void printcall(struct tcb *);
-extern void print_sigset(struct tcb *, long, int);
+extern void print_sigset_addr_len(struct tcb *, long, long);
 extern void printsignal(int);
 extern void tprint_iov(struct tcb *, unsigned long, unsigned long, int decode_iov);
 extern void tprint_iov_upto(struct tcb *, unsigned long, unsigned long, int decode_iov, unsigned long);
@@ -701,14 +722,24 @@ extern int block_ioctl(struct tcb *, long, long);
 extern int mtd_ioctl(struct tcb *, long, long);
 extern int ubi_ioctl(struct tcb *, long, long);
 extern int loop_ioctl(struct tcb *, long, long);
-
-extern int tv_nz(struct timeval *);
-extern int tv_cmp(struct timeval *, struct timeval *);
-extern double tv_float(struct timeval *);
-extern void tv_add(struct timeval *, struct timeval *, struct timeval *);
-extern void tv_sub(struct timeval *, struct timeval *, struct timeval *);
-extern void tv_mul(struct timeval *, struct timeval *, int);
-extern void tv_div(struct timeval *, struct timeval *, int);
+extern int ptp_ioctl(struct tcb *, long, long);
+
+extern int tv_nz(const struct timeval *);
+extern int tv_cmp(const struct timeval *, const struct timeval *);
+extern double tv_float(const struct timeval *);
+extern void tv_add(struct timeval *, const struct timeval *, const struct timeval *);
+extern void tv_sub(struct timeval *, const struct timeval *, const struct timeval *);
+extern void tv_mul(struct timeval *, const struct timeval *, int);
+extern void tv_div(struct timeval *, const struct timeval *, int);
+
+#ifdef USE_LIBUNWIND
+extern void unwind_init(void);
+extern void unwind_tcb_init(struct tcb *tcp);
+extern void unwind_tcb_fin(struct tcb *tcp);
+extern void unwind_cache_invalidate(struct tcb* tcp);
+extern void unwind_print_stacktrace(struct tcb* tcp);
+extern void unwind_capture_stacktrace(struct tcb* tcp);
+#endif
 
 /* Strace log generation machinery.
  *
diff --git a/depcomp b/depcomp
index 25a39e6..4ebd5b3 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2012-03-27.16; # UTC
+scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 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
@@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -57,11 +56,65 @@ EOF
     ;;
 esac
 
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
 # A tabulation character.
 tab='  '
 # A newline character.
 nl='
 '
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
 
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
 
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -86,32 +142,32 @@ if test "$depmode" = hp; then
 fi
 
 if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvisualcpp
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
 fi
 
 if test "$depmode" = msvc7msys; then
-   # This is just like msvc7 but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvc7
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
 fi
 
 if test "$depmode" = xlc; then
-   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
-   gccflag=-qmakedep=gcc,-MF
-   depmode=gcc
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
 fi
 
 case "$depmode" in
@@ -134,8 +190,7 @@ gcc3)
   done
   "$@"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -143,13 +198,17 @@ gcc3)
   ;;
 
 gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -157,15 +216,14 @@ gcc)
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
 ## This next piece of magic avoids the "deleted header file" problem.
@@ -174,15 +232,15 @@ gcc)
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' "$nl" < "$tmpdepfile" |
 ## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
 ## well.  hp depmode also adds that space, but also prefixes the VPATH
 ## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-      | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -200,8 +258,7 @@ sgi)
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -209,7 +266,6 @@ sgi)
 
   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     echo "$object : \\" > "$depfile"
-
     # Clip off the initial element (the dependent).  Don't try to be
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
@@ -217,19 +273,15 @@ sgi)
     # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
     tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr "$nl" ' ' >> "$depfile"
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
-
     # The second pass generates a dummy entry for each header file.
     tr ' ' "$nl" < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
   else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile"
   ;;
@@ -247,9 +299,8 @@ aix)
   # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -262,9 +313,7 @@ aix)
     "$@" -M
   fi
   stat=$?
-
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -273,65 +322,113 @@ aix)
   do
     test -f "$tmpdepfile" && break
   done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # '$object: dependent.h' and one to simply 'dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
   fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-icc)
-  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
-  # However on
-  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\':
+  # and will wrap long lines using '\' :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-  # tcc 0.9.26 (FIXME still under development at the moment of writing)
-  # will emit a similar output, but also prepend the continuation lines
-  # with horizontal tabulation characters.
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form 'foo.o: dependent.h',
-  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # '$object: dependent.h' and one to simply 'dependent.h:'.
-  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
-    < "$tmpdepfile" > "$depfile"
-  sed '
-    s/[ '"$tab"'][ '"$tab"']*/ /g
-    s/^ *//
-    s/ *\\*$//
-    s/^[^:]*: *//
-    /^$/d
-    /:$/d
-    s/$/ :/
-  ' < "$tmpdepfile" >> "$depfile"
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -342,9 +439,8 @@ hp2)
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from  "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -355,8 +451,7 @@ hp2)
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -366,76 +461,61 @@ hp2)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
     # Add 'dependent.h:' lines.
     sed -ne '2,${
-              s/^ *//
-              s/ \\*$//
-              s/$/:/
-              p
-            }' "$tmpdepfile" >> "$depfile"
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
   else
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in 'foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
 
 msvc7)
   if test "$libtool" = yes; then
@@ -446,8 +526,7 @@ msvc7)
   "$@" $showIncludes > "$tmpdepfile"
   stat=$?
   grep -v '^Note: including file: ' "$tmpdepfile"
-  if test "$stat" = 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -473,6 +552,7 @@ $ {
   G
   p
 }' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
   rm -f "$tmpdepfile"
   ;;
 
@@ -524,13 +604,14 @@ dashmstdout)
   # in the target name.  This is to cope with DOS-style filenames:
   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -583,10 +664,12 @@ makedepend)
   # makedepend may prepend the VPATH from the source file name to the object.
   # No need to regex-escape $object, excess matching of '.' is harmless.
   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -622,10 +705,10 @@ cpp)
     esac
   done
 
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E \
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -657,15 +740,15 @@ msvisualcpp)
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-       set fnord "$@"
-       shift
-       shift
-       ;;
+        set fnord "$@"
+        shift
+        shift
+        ;;
     *)
-       set fnord "$@" "$arg"
-       shift
-       shift
-       ;;
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
     esac
   done
   "$@" -E 2>/dev/null |
diff --git a/desc.c b/desc.c
index a420feb..5b8869b 100644 (file)
--- a/desc.c
+++ b/desc.c
 #ifdef HAVE_SYS_EPOLL_H
 # include <sys/epoll.h>
 #endif
-#ifdef HAVE_LIBAIO_H
-# include <libaio.h>
-#endif
 #ifdef HAVE_LINUX_PERF_EVENT_H
 # include  <linux/perf_event.h>
 #endif
 
-static const struct xlat fcntlcmds[] = {
-       { F_DUPFD,      "F_DUPFD"       },
-       { F_GETFD,      "F_GETFD"       },
-       { F_SETFD,      "F_SETFD"       },
-       { F_GETFL,      "F_GETFL"       },
-       { F_SETFL,      "F_SETFL"       },
-       { F_GETLK,      "F_GETLK"       },
-       { F_SETLK,      "F_SETLK"       },
-       { F_SETLKW,     "F_SETLKW"      },
-       { F_GETOWN,     "F_GETOWN"      },
-       { F_SETOWN,     "F_SETOWN"      },
-#ifdef F_RSETLK
-       { F_RSETLK,     "F_RSETLK"      },
-#endif
-#ifdef F_RSETLKW
-       { F_RSETLKW,    "F_RSETLKW"     },
-#endif
-#ifdef F_RGETLK
-       { F_RGETLK,     "F_RGETLK"      },
-#endif
-#ifdef F_CNVT
-       { F_CNVT,       "F_CNVT"        },
-#endif
-#ifdef F_SETSIG
-       { F_SETSIG,     "F_SETSIG"      },
-#endif
-#ifdef F_GETSIG
-       { F_GETSIG,     "F_GETSIG"      },
-#endif
-#ifdef F_CHKFL
-       { F_CHKFL,      "F_CHKFL"       },
-#endif
-#ifdef F_DUP2FD
-       { F_DUP2FD,     "F_DUP2FD"      },
-#endif
-#ifdef F_ALLOCSP
-       { F_ALLOCSP,    "F_ALLOCSP"     },
-#endif
-#ifdef F_ISSTREAM
-       { F_ISSTREAM,   "F_ISSTREAM"    },
-#endif
-#ifdef F_PRIV
-       { F_PRIV,       "F_PRIV"        },
-#endif
-#ifdef F_NPRIV
-       { F_NPRIV,      "F_NPRIV"       },
-#endif
-#ifdef F_QUOTACL
-       { F_QUOTACL,    "F_QUOTACL"     },
-#endif
-#ifdef F_BLOCKS
-       { F_BLOCKS,     "F_BLOCKS"      },
-#endif
-#ifdef F_BLKSIZE
-       { F_BLKSIZE,    "F_BLKSIZE"     },
-#endif
-#ifdef F_GETOWN
-       { F_GETOWN,     "F_GETOWN"      },
-#endif
-#ifdef F_SETOWN
-       { F_SETOWN,     "F_SETOWN"      },
-#endif
-#ifdef F_REVOKE
-       { F_REVOKE,     "F_REVOKE"      },
-#endif
-#ifdef F_SETLK
-       { F_SETLK,      "F_SETLK"       },
-#endif
-#ifdef F_SETLKW
-       { F_SETLKW,     "F_SETLKW"      },
-#endif
-#ifdef F_FREESP
-       { F_FREESP,     "F_FREESP"      },
-#endif
-#ifdef F_GETLK
-       { F_GETLK,      "F_GETLK"       },
-#endif
-#ifdef F_SETLK64
-       { F_SETLK64,    "F_SETLK64"     },
-#endif
-#ifdef F_SETLKW64
-       { F_SETLKW64,   "F_SETLKW64"    },
-#endif
-#ifdef F_FREESP64
-       { F_FREESP64,   "F_FREESP64"    },
-#endif
-#ifdef F_GETLK64
-       { F_GETLK64,    "F_GETLK64"     },
-#endif
-#ifdef F_SHARE
-       { F_SHARE,      "F_SHARE"       },
-#endif
-#ifdef F_UNSHARE
-       { F_UNSHARE,    "F_UNSHARE"     },
-#endif
-#ifdef F_SETLEASE
-       { F_SETLEASE,   "F_SETLEASE"    },
-#endif
-#ifdef F_GETLEASE
-       { F_GETLEASE,   "F_GETLEASE"    },
-#endif
-#ifdef F_NOTIFY
-       { F_NOTIFY,     "F_NOTIFY"      },
-#endif
-#ifdef F_DUPFD_CLOEXEC
-       { F_DUPFD_CLOEXEC,"F_DUPFD_CLOEXEC"},
-#endif
-       { 0,            NULL            },
-};
-
-static const struct xlat fdflags[] = {
-#ifdef FD_CLOEXEC
-       { FD_CLOEXEC,   "FD_CLOEXEC"    },
-#endif
-       { 0,            NULL            },
-};
-
-#ifdef LOCK_SH
-
-static const struct xlat flockcmds[] = {
-       { LOCK_SH,      "LOCK_SH"       },
-       { LOCK_EX,      "LOCK_EX"       },
-       { LOCK_NB,      "LOCK_NB"       },
-       { LOCK_UN,      "LOCK_UN"       },
-       { 0,            NULL            },
-};
+#include "xlat/fcntlcmds.h"
+#include "xlat/fdflags.h"
+#include "xlat/flockcmds.h"
+#include "xlat/lockfcmds.h"
+#include "xlat/notifyflags.h"
+#include "xlat/perf_event_open_flags.h"
 
-#endif /* LOCK_SH */
-
-static const struct xlat lockfcmds[] = {
-       { F_RDLCK,      "F_RDLCK"       },
-       { F_WRLCK,      "F_WRLCK"       },
-       { F_UNLCK,      "F_UNLCK"       },
-#ifdef F_EXLCK
-       { F_EXLCK,      "F_EXLCK"       },
-#endif
-#ifdef F_SHLCK
-       { F_SHLCK,      "F_SHLCK"       },
+/*
+ * Assume that F_SETLK64, F_SETLKW64, and F_GETLK64 are either defined
+ * or not defined altogether.
+ */
+#if defined(F_SETLK64) && F_SETLK64 + 0 != F_SETLK
+# define USE_PRINTFLOCK64 1
+#else
+# define USE_PRINTFLOCK64 0
 #endif
-       { 0,            NULL            },
-};
 
-#ifdef F_NOTIFY
-static const struct xlat notifyflags[] = {
-#ifdef DN_ACCESS
-       { DN_ACCESS,    "DN_ACCESS"     },
-#endif
-#ifdef DN_MODIFY
-       { DN_MODIFY,    "DN_MODIFY"     },
-#endif
-#ifdef DN_CREATE
-       { DN_CREATE,    "DN_CREATE"     },
-#endif
-#ifdef DN_DELETE
-       { DN_DELETE,    "DN_DELETE"     },
-#endif
-#ifdef DN_RENAME
-       { DN_RENAME,    "DN_RENAME"     },
-#endif
-#ifdef DN_ATTRIB
-       { DN_ATTRIB,    "DN_ATTRIB"     },
-#endif
-#ifdef DN_MULTISHOT
-       { DN_MULTISHOT, "DN_MULTISHOT"  },
-#endif
-       { 0,            NULL            },
-};
-#endif
+#if USE_PRINTFLOCK64
 
-static const struct xlat perf_event_open_flags[] = {
-#ifdef PERF_FLAG_FD_NO_GROUP
-       { PERF_FLAG_FD_NO_GROUP,        "PERF_FLAG_FD_NO_GROUP" },
-#endif
-#ifdef PERF_FLAG_FD_OUTPUT
-       { PERF_FLAG_FD_OUTPUT,          "PERF_FLAG_FD_OUTPUT"   },
-#endif
-#ifdef PERF_FLAG_PID_CGROUP
-       { PERF_FLAG_PID_CGROUP,         "PERF_FLAG_PID_CGROUP"  },
-#endif
-       { 0,                            NULL                    },
+# ifndef HAVE_STRUCT_FLOCK64
+struct flock64 {
+       short int l_type, l_whence;
+       int64_t l_start, l_len;
+       int l_pid;
 };
+# endif
 
-#if _LFS64_LARGEFILE
-/* fcntl/lockf */
 static void
 printflock64(struct tcb *tcp, long addr, int getlk)
 {
@@ -244,22 +84,20 @@ printflock64(struct tcb *tcp, long addr, int getlk)
        else
                tprints("}");
 }
-#endif
+#endif /* USE_PRINTFLOCK64 */
 
-/* fcntl/lockf */
 static void
 printflock(struct tcb *tcp, long addr, int getlk)
 {
        struct flock fl;
+       int r;
 
 #if SUPPORTED_PERSONALITIES > 1
-# ifdef X32
-       if (current_personality == 0) {
-               printflock64(tcp, addr, getlk);
-               return;
-       }
-# endif
-       if (current_wordsize != sizeof(fl.l_start)) {
+       if (
+# if SIZEOF_OFF_T > SIZEOF_LONG
+           current_personality > 0 &&
+#endif
+           current_wordsize != sizeof(fl.l_start)) {
                if (current_wordsize == 4) {
                        /* 32-bit x86 app on x86_64 and similar cases */
                        struct {
@@ -269,15 +107,14 @@ printflock(struct tcb *tcp, long addr, int getlk)
                                int32_t l_len; /* off_t */
                                int32_t l_pid; /* pid_t */
                        } fl32;
-                       if (umove(tcp, addr, &fl32) < 0) {
-                               tprints("{...}");
-                               return;
+                       r = umove(tcp, addr, &fl32);
+                       if (r >= 0) {
+                               fl.l_type = fl32.l_type;
+                               fl.l_whence = fl32.l_whence;
+                               fl.l_start = fl32.l_start;
+                               fl.l_len = fl32.l_len;
+                               fl.l_pid = fl32.l_pid;
                        }
-                       fl.l_type = fl32.l_type;
-                       fl.l_whence = fl32.l_whence;
-                       fl.l_start = fl32.l_start;
-                       fl.l_len = fl32.l_len;
-                       fl.l_pid = fl32.l_pid;
                } else {
                        /* let people know we have a problem here */
                        tprintf("<decode error: unsupported wordsize %d>",
@@ -287,16 +124,17 @@ printflock(struct tcb *tcp, long addr, int getlk)
        } else
 #endif
        {
-               if (umove(tcp, addr, &fl) < 0) {
-                       tprints("{...}");
-                       return;
-               }
+               r = umove(tcp, addr, &fl);
+       }
+       if (r < 0) {
+               tprints("{...}");
+               return;
        }
        tprints("{type=");
        printxval(lockfcmds, fl.l_type, "F_???");
        tprints(", whence=");
        printxval(whence_codes, fl.l_whence, "SEEK_???");
-#ifdef X32
+#if SIZEOF_OFF_T > SIZEOF_LONG
        tprintf(", start=%lld, len=%lld", fl.l_start, fl.l_len);
 #else
        tprintf(", start=%ld, len=%ld", fl.l_start, fl.l_len);
@@ -330,28 +168,15 @@ sys_fcntl(struct tcb *tcp)
                        tprint_open_modes(tcp->u_arg[2]);
                        break;
                case F_SETLK: case F_SETLKW:
-#ifdef F_FREESP
-               case F_FREESP:
-#endif
                        tprints(", ");
                        printflock(tcp, tcp->u_arg[2], 0);
                        break;
-#if _LFS64_LARGEFILE
-#ifdef F_FREESP64
-               case F_FREESP64:
-#endif
-               /* Linux glibc defines SETLK64 as SETLK,
-                  even though the kernel has different values - as does Solaris. */
-#if defined(F_SETLK64) && F_SETLK64 + 0 != F_SETLK
-               case F_SETLK64:
-#endif
-#if defined(F_SETLKW64) && F_SETLKW64 + 0 != F_SETLKW
-               case F_SETLKW64:
-#endif
+#if USE_PRINTFLOCK64
+               case F_SETLK64: case F_SETLKW64:
                        tprints(", ");
                        printflock64(tcp, tcp->u_arg[2], 0);
                        break;
-#endif
+#endif /* USE_PRINTFLOCK64 */
 #ifdef F_NOTIFY
                case F_NOTIFY:
                        tprints(", ");
@@ -396,10 +221,8 @@ sys_fcntl(struct tcb *tcp)
                        tprints(", ");
                        printflock(tcp, tcp->u_arg[2], 1);
                        break;
-#if _LFS64_LARGEFILE
-#if defined(F_GETLK64) && F_GETLK64+0 != F_GETLK
+#if USE_PRINTFLOCK64
                case F_GETLK64:
-#endif
                        tprints(", ");
                        printflock64(tcp, tcp->u_arg[2], 1);
                        break;
@@ -442,6 +265,15 @@ sys_close(struct tcb *tcp)
        return 0;
 }
 
+int
+sys_dup(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               printfd(tcp, tcp->u_arg[0]);
+       }
+       return RVAL_FD;
+}
+
 static int
 do_dup2(struct tcb *tcp, int flags_arg)
 {
@@ -454,7 +286,7 @@ do_dup2(struct tcb *tcp, int flags_arg)
                        printflags(open_mode_flags, tcp->u_arg[flags_arg], "O_???");
                }
        }
-       return 0;
+       return RVAL_FD;
 }
 
 int
@@ -481,32 +313,44 @@ static int
 decode_select(struct tcb *tcp, long *args, enum bitness_t bitness)
 {
        int i, j;
-       unsigned nfds, fdsize;
+       int nfds, fdsize;
        fd_set *fds;
        const char *sep;
        long arg;
 
-       fdsize = args[0];
+       /* Kernel truncates arg[0] to int, we do the same. */
+       nfds = (int) args[0];
+
+       /* Kernel rejects negative nfds, so we don't parse it either. */
+       if (nfds < 0) {
+               nfds = 0;
+               fds = NULL;
+       }
        /* Beware of select(2^31-1, NULL, NULL, NULL) and similar... */
-       if (args[0] > 1024*1024)
-               fdsize = 1024*1024;
-       if (args[0] < 0)
-               fdsize = 0;
-       fdsize = (((fdsize + 7) / 8) + sizeof(long)-1) & -sizeof(long);
+       if (nfds > 1024*1024)
+               nfds = 1024*1024;
+
+       /*
+        * We had bugs a-la "while (j < args[0])" and "umoven(args[0])" below.
+        * Instead of args[0], use nfds for fd count, fdsize for array lengths.
+        */
+       fdsize = (((nfds + 7) / 8) + current_wordsize-1) & -current_wordsize;
 
        if (entering(tcp)) {
-               fds = malloc(fdsize);
-               if (!fds)
-                       die_out_of_memory();
-               nfds = args[0];
-               tprintf("%d", nfds);
+               tprintf("%d", (int) args[0]);
+
+               if (fdsize > 0) {
+                       fds = malloc(fdsize);
+                       if (!fds)
+                               die_out_of_memory();
+               }
                for (i = 0; i < 3; i++) {
                        arg = args[i+1];
                        if (arg == 0) {
                                tprints(", NULL");
                                continue;
                        }
-                       if (!verbose(tcp)) {
+                       if (!verbose(tcp) || !fds) {
                                tprintf(", %#lx", arg);
                                continue;
                        }
@@ -515,12 +359,13 @@ decode_select(struct tcb *tcp, long *args, enum bitness_t bitness)
                                continue;
                        }
                        tprints(", [");
-                       for (j = 0, sep = ""; j < nfds; j++) {
-                               if (FD_ISSET(j, fds)) {
-                                       tprints(sep);
-                                       printfd(tcp, j);
-                                       sep = " ";
-                               }
+                       for (j = 0, sep = "";; j++) {
+                               j = next_set_bit(fds, j, nfds);
+                               if (j < 0)
+                                       break;
+                               tprints(sep);
+                               printfd(tcp, j);
+                               sep = " ";
                        }
                        tprints("]");
                }
@@ -532,13 +377,13 @@ decode_select(struct tcb *tcp, long *args, enum bitness_t bitness)
                static char outstr[1024];
                char *outptr;
 #define end_outstr (outstr + sizeof(outstr))
-               const char *sep;
+               int ready_fds;
 
                if (syserror(tcp))
                        return 0;
 
-               nfds = tcp->u_rval;
-               if (nfds == 0) {
+               ready_fds = tcp->u_rval;
+               if (ready_fds == 0) {
                        tcp->auxstr = "Timeout";
                        return RVAL_STR;
                }
@@ -549,36 +394,36 @@ decode_select(struct tcb *tcp, long *args, enum bitness_t bitness)
 
                outptr = outstr;
                sep = "";
-               for (i = 0; i < 3; i++) {
+               for (i = 0; i < 3 && ready_fds > 0; i++) {
                        int first = 1;
 
                        arg = args[i+1];
                        if (!arg || umoven(tcp, arg, fdsize, (char *) fds) < 0)
                                continue;
-                       for (j = 0; j < args[0]; j++) {
-                               if (FD_ISSET(j, fds)) {
-                                       /* +2 chars needed at the end: ']',NUL */
-                                       if (outptr < end_outstr - (sizeof(", except [") + sizeof(int)*3 + 2)) {
-                                               if (first) {
-                                                       outptr += sprintf(outptr, "%s%s [%u",
-                                                               sep,
-                                                               i == 0 ? "in" : i == 1 ? "out" : "except",
-                                                               j
-                                                       );
-                                                       first = 0;
-                                                       sep = ", ";
-                                               }
-                                               else {
-                                                       outptr += sprintf(outptr, " %u", j);
-                                               }
+                       for (j = 0;; j++) {
+                               j = next_set_bit(fds, j, nfds);
+                               if (j < 0)
+                                       break;
+                               /* +2 chars needed at the end: ']',NUL */
+                               if (outptr < end_outstr - (sizeof(", except [") + sizeof(int)*3 + 2)) {
+                                       if (first) {
+                                               outptr += sprintf(outptr, "%s%s [%u",
+                                                       sep,
+                                                       i == 0 ? "in" : i == 1 ? "out" : "except",
+                                                       j
+                                               );
+                                               first = 0;
+                                               sep = ", ";
+                                       }
+                                       else {
+                                               outptr += sprintf(outptr, " %u", j);
                                        }
-                                       nfds--;
                                }
+                               if (--ready_fds == 0)
+                                       break;
                        }
                        if (outptr != outstr)
                                *outptr++ = ']';
-                       if (nfds == 0)
-                               break;
                }
                free(fds);
                /* This contains no useful information on SunOS.  */
@@ -617,61 +462,9 @@ sys_osf_select(struct tcb *tcp)
 }
 #endif
 
-static const struct xlat epollctls[] = {
-#ifdef EPOLL_CTL_ADD
-       { EPOLL_CTL_ADD,        "EPOLL_CTL_ADD" },
-#endif
-#ifdef EPOLL_CTL_MOD
-       { EPOLL_CTL_MOD,        "EPOLL_CTL_MOD" },
-#endif
-#ifdef EPOLL_CTL_DEL
-       { EPOLL_CTL_DEL,        "EPOLL_CTL_DEL" },
-#endif
-       { 0,                    NULL            }
-};
-
-static const struct xlat epollevents[] = {
-#ifdef EPOLLIN
-       { EPOLLIN,      "EPOLLIN"       },
-#endif
-#ifdef EPOLLPRI
-       { EPOLLPRI,     "EPOLLPRI"      },
-#endif
-#ifdef EPOLLOUT
-       { EPOLLOUT,     "EPOLLOUT"      },
-#endif
-#ifdef EPOLLRDNORM
-       { EPOLLRDNORM,  "EPOLLRDNORM"   },
-#endif
-#ifdef EPOLLRDBAND
-       { EPOLLRDBAND,  "EPOLLRDBAND"   },
-#endif
-#ifdef EPOLLWRNORM
-       { EPOLLWRNORM,  "EPOLLWRNORM"   },
-#endif
-#ifdef EPOLLWRBAND
-       { EPOLLWRBAND,  "EPOLLWRBAND"   },
-#endif
-#ifdef EPOLLMSG
-       { EPOLLMSG,     "EPOLLMSG"      },
-#endif
-#ifdef EPOLLERR
-       { EPOLLERR,     "EPOLLERR"      },
-#endif
-#ifdef EPOLLHUP
-       { EPOLLHUP,     "EPOLLHUP"      },
-#endif
-#ifdef EPOLLRDHUP
-       { EPOLLRDHUP,   "EPOLLRDHUP"    },
-#endif
-#ifdef EPOLLONESHOT
-       { EPOLLONESHOT, "EPOLLONESHOT"  },
-#endif
-#ifdef EPOLLET
-       { EPOLLET,      "EPOLLET"       },
-#endif
-       { 0,            NULL            }
-};
+#include "xlat/epollctls.h"
+#include "xlat/epollevents.h"
+#include "xlat/epollflags.h"
 
 /* Not aliased to printargs_ld: we want it to have a distinct address */
 int
@@ -680,16 +473,6 @@ sys_epoll_create(struct tcb *tcp)
        return printargs_ld(tcp);
 }
 
-static const struct xlat epollflags[] = {
-#ifdef EPOLL_CLOEXEC
-       { EPOLL_CLOEXEC,        "EPOLL_CLOEXEC" },
-#endif
-#ifdef EPOLL_NONBLOCK
-       { EPOLL_NONBLOCK,       "EPOLL_NONBLOCK"        },
-#endif
-       { 0,            NULL            }
-};
-
 int
 sys_epoll_create1(struct tcb *tcp)
 {
@@ -726,11 +509,15 @@ sys_epoll_ctl(struct tcb *tcp)
                else {
 #ifdef HAVE_SYS_EPOLL_H
                        struct epoll_event ev;
-                       if (umove(tcp, tcp->u_arg[3], &ev) == 0)
+                       if (
+#ifdef EPOLL_CTL_DEL
+                           (tcp->u_arg[1] != EPOLL_CTL_DEL) &&
+#endif
+                           umove(tcp, tcp->u_arg[3], &ev) == 0)
                                print_epoll_event(&ev);
                        else
 #endif
-                               tprints("{...}");
+                               tprintf("%lx", tcp->u_arg[3]);
                }
        }
        return 0;
@@ -790,247 +577,9 @@ sys_epoll_pwait(struct tcb *tcp)
        epoll_wait_common(tcp);
        if (exiting(tcp)) {
                tprints(", ");
-               print_sigset(tcp, tcp->u_arg[4], 0);
-       }
-       return 0;
-}
-
-int
-sys_io_setup(struct tcb *tcp)
-{
-       if (entering(tcp))
-               tprintf("%ld, ", tcp->u_arg[0]);
-       else {
-               if (syserror(tcp))
-                       tprintf("0x%0lx", tcp->u_arg[1]);
-               else {
-                       unsigned long user_id;
-                       if (umove(tcp, tcp->u_arg[1], &user_id) == 0)
-                               tprintf("{%lu}", user_id);
-                       else
-                               tprints("{...}");
-               }
-       }
-       return 0;
-}
-
-int
-sys_io_destroy(struct tcb *tcp)
-{
-       if (entering(tcp))
-               tprintf("%lu", tcp->u_arg[0]);
-       return 0;
-}
-
-#ifdef HAVE_LIBAIO_H
-
-enum iocb_sub {
-       SUB_NONE, SUB_COMMON, SUB_POLL, SUB_VECTOR
-};
-
-static const char *
-iocb_cmd_lookup(unsigned cmd, enum iocb_sub *sub)
-{
-       static char buf[sizeof("%u /* SUB_??? */") + sizeof(int)*3];
-       static const struct {
-               const char *name;
-               enum iocb_sub sub;
-       } cmds[] = {
-               { "pread", SUB_COMMON },
-               { "pwrite", SUB_COMMON },
-               { "fsync", SUB_NONE },
-               { "fdsync", SUB_NONE },
-               { "op4", SUB_NONE },
-               { "poll", SUB_POLL },
-               { "noop", SUB_NONE },
-               { "preadv", SUB_VECTOR },
-               { "pwritev", SUB_VECTOR },
-       };
-
-       if (cmd < ARRAY_SIZE(cmds)) {
-               *sub = cmds[cmd].sub;
-               return cmds[cmd].name;
-       }
-       *sub = SUB_NONE;
-       sprintf(buf, "%u /* SUB_??? */", cmd);
-       return buf;
-}
-
-/* Not defined in libaio.h */
-#ifndef IOCB_RESFD
-# define IOCB_RESFD (1 << 0)
-#endif
-
-static void
-print_common_flags(struct iocb *iocb)
-{
-#if HAVE_STRUCT_IOCB_U_C_FLAGS
-       if (iocb->u.c.flags & IOCB_RESFD)
-               tprintf(", resfd=%d", iocb->u.c.resfd);
-       if (iocb->u.c.flags & ~IOCB_RESFD)
-               tprintf(", flags=%x", iocb->u.c.flags);
-#else
-# warning "libaio.h is too old => limited io_submit decoding"
-#endif
-}
-
-#endif /* HAVE_LIBAIO_H */
-
-int
-sys_io_submit(struct tcb *tcp)
-{
-       long nr;
-       if (entering(tcp)) {
-               tprintf("%lu, %ld, ", tcp->u_arg[0], tcp->u_arg[1]);
-               nr = tcp->u_arg[1];
-               /* and if nr is negative? */
-               if (nr == 0)
-                       tprints("{}");
-               else {
-#ifdef HAVE_LIBAIO_H
-                       long i;
-                       struct iocb *iocbp, **iocbs = (void *)tcp->u_arg[2];
-
-                       for (i = 0; i < nr; i++, iocbs++) {
-                               enum iocb_sub sub;
-                               struct iocb iocb;
-                               if (i == 0)
-                                       tprints("{");
-                               else
-                                       tprints(", ");
-
-                               if (umove(tcp, (unsigned long)iocbs, &iocbp) ||
-                                   umove(tcp, (unsigned long)iocbp, &iocb)) {
-                                       tprints("{...}");
-                                       continue;
-                               }
-                               tprints("{");
-                               if (iocb.data)
-                                       tprintf("data:%p, ", iocb.data);
-                               if (iocb.key)
-                                       tprintf("key:%u, ", iocb.key);
-                               tprintf("%s, ", iocb_cmd_lookup(iocb.aio_lio_opcode, &sub));
-                               if (iocb.aio_reqprio)
-                                       tprintf("reqprio:%d, ", iocb.aio_reqprio);
-                               tprintf("filedes:%d", iocb.aio_fildes);
-                               switch (sub) {
-                               case SUB_COMMON:
-#if HAVE_DECL_IO_CMD_PWRITE
-                                       if (iocb.aio_lio_opcode == IO_CMD_PWRITE) {
-                                               tprints(", str:");
-                                               printstr(tcp, (unsigned long)iocb.u.c.buf,
-                                                        iocb.u.c.nbytes);
-                                       } else
-#endif
-                                               tprintf(", buf:%p", iocb.u.c.buf);
-                                       tprintf(", nbytes:%lu, offset:%lld",
-                                               iocb.u.c.nbytes,
-                                               iocb.u.c.offset);
-                                       print_common_flags(&iocb);
-                                       break;
-                               case SUB_VECTOR:
-                                       tprintf(", %lld", iocb.u.v.offset);
-                                       print_common_flags(&iocb);
-                                       tprints(", ");
-                                       tprint_iov(tcp, iocb.u.v.nr,
-                                                  (unsigned long)iocb.u.v.vec,
-#if HAVE_DECL_IO_CMD_PWRITEV
-                                                  iocb.aio_lio_opcode == IO_CMD_PWRITEV
-#else
-                                                  0
-#endif
-                                                 );
-                                       break;
-                               case SUB_POLL:
-                                       tprintf(", %x", iocb.u.poll.events);
-                                       break;
-                               case SUB_NONE:
-                                       break;
-                               }
-                               tprints("}");
-                       }
-                       if (i)
-                               tprints("}");
-#else
-#warning "libaio.h is not available => no io_submit decoding"
-                       tprintf("%#lx", tcp->u_arg[2]);
-#endif
-               }
-       }
-       return 0;
-}
-
-int
-sys_io_cancel(struct tcb *tcp)
-{
-       if (entering(tcp)) {
-#ifdef HAVE_LIBAIO_H
-               struct iocb iocb;
-#endif
-               tprintf("%lu, ", tcp->u_arg[0]);
-#ifdef HAVE_LIBAIO_H
-               if (umove(tcp, tcp->u_arg[1], &iocb) == 0) {
-                       tprintf("{%p, %u, %u, %u, %d}, ",
-                               iocb.data, iocb.key,
-                               (unsigned)iocb.aio_lio_opcode,
-                               (unsigned)iocb.aio_reqprio, iocb.aio_fildes);
-               } else
-#endif
-                       tprints("{...}, ");
-       } else {
-               if (tcp->u_rval < 0)
-                       tprints("{...}");
-               else {
-#ifdef HAVE_LIBAIO_H
-                       struct io_event event;
-                       if (umove(tcp, tcp->u_arg[2], &event) == 0)
-                               tprintf("{%p, %p, %ld, %ld}",
-                                       event.data, event.obj,
-                                       event.res, event.res2);
-                       else
-#endif
-                               tprints("{...}");
-               }
-       }
-       return 0;
-}
-
-int
-sys_io_getevents(struct tcb *tcp)
-{
-       if (entering(tcp)) {
-               tprintf("%ld, %ld, %ld, ", tcp->u_arg[0], tcp->u_arg[1],
-                       tcp->u_arg[2]);
-       } else {
-               if (tcp->u_rval == 0) {
-                       tprints("{}");
-               } else {
-#ifdef HAVE_LIBAIO_H
-                       struct io_event *events = (void *)tcp->u_arg[3];
-                       long i, nr = tcp->u_rval;
-
-                       for (i = 0; i < nr; i++, events++) {
-                               struct io_event event;
-
-                               if (i == 0)
-                                       tprints("{");
-                               else
-                                       tprints(", ");
-
-                               if (umove(tcp, (unsigned long)events, &event) != 0) {
-                                       tprints("{...}");
-                                       continue;
-                               }
-                               tprintf("{%p, %p, %ld, %ld}", event.data,
-                                       event.obj, event.res, event.res2);
-                       }
-                       tprints("}, ");
-#else
-                       tprints("{...}");
-#endif
-               }
-
-               print_timespec(tcp, tcp->u_arg[4]);
+               /* NB: kernel requires arg[5] == NSIG / 8 */
+               print_sigset_addr_len(tcp, tcp->u_arg[4], tcp->u_arg[5]);
+               tprintf(", %lu", tcp->u_arg[5]);
        }
        return 0;
 }
@@ -1046,18 +595,29 @@ sys_pselect6(struct tcb *tcp)
 {
        int rc = decode_select(tcp, tcp->u_arg, BITNESS_CURRENT);
        if (entering(tcp)) {
+               long r;
                struct {
-                       void *ss;
+                       unsigned long ptr;
                        unsigned long len;
                } data;
-               if (umove(tcp, tcp->u_arg[5], &data) < 0)
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+               if (current_wordsize == 4) {
+                       struct {
+                               uint32_t ptr;
+                               uint32_t len;
+                       } data32;
+                       r = umove(tcp, tcp->u_arg[5], &data32);
+                       data.ptr = data32.ptr;
+                       data.len = data32.len;
+               } else
+#endif
+                       r = umove(tcp, tcp->u_arg[5], &data);
+               if (r < 0)
                        tprintf(", %#lx", tcp->u_arg[5]);
                else {
                        tprints(", {");
-                       if (data.len < sizeof(long))
-                               tprintf("%#lx", (long)data.ss);
-                       else
-                               print_sigset(tcp, (long)data.ss, 0);
+                       /* NB: kernel requires data.len == NSIG / 8 */
+                       print_sigset_addr_len(tcp, data.ptr, data.len);
                        tprintf(", %lu}", data.len);
                }
        }
diff --git a/fanotify.c b/fanotify.c
new file mode 100644 (file)
index 0000000..32a3667
--- /dev/null
@@ -0,0 +1,50 @@
+#include "defs.h"
+#include <linux/fanotify.h>
+
+#include "xlat/fan_classes.h"
+#include "xlat/fan_init_flags.h"
+
+int
+sys_fanotify_init(struct tcb *tcp)
+{
+       unsigned flags;
+
+       if (exiting(tcp))
+               return 0;
+
+       flags = tcp->u_arg[0];
+       printxval(fan_classes, flags & FAN_ALL_CLASS_BITS, "FAN_CLASS_???");
+       flags &= ~FAN_ALL_CLASS_BITS;
+       if (flags) {
+               tprints("|");
+               printflags(fan_init_flags, flags, "FAN_???");
+       }
+       tprints(", ");
+       tprint_open_modes((unsigned) tcp->u_arg[1]);
+
+       return 0;
+}
+
+#include "xlat/fan_mark_flags.h"
+#include "xlat/fan_event_flags.h"
+
+int
+sys_fanotify_mark(struct tcb *tcp)
+{
+       if (exiting(tcp))
+               return 0;
+
+       printfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       printflags(fan_mark_flags, (unsigned) tcp->u_arg[1], "FAN_MARK_???");
+       tprints(", ");
+       printflags(fan_event_flags, tcp->u_arg[2], "FAN_???");
+       tprints(", ");
+       if ((int) tcp->u_arg[3] == FAN_NOFD)
+               tprints("FAN_NOFD, ");
+       else
+               print_dirfd(tcp, tcp->u_arg[3]);
+       printpath(tcp, tcp->u_arg[4]);
+
+       return 0;
+}
diff --git a/file.c b/file.c
index 9a83287..986f446 100644 (file)
--- a/file.c
+++ b/file.c
@@ -211,116 +211,19 @@ struct kernel_dirent {
        char            d_name[1];
 };
 
-const struct xlat open_access_modes[] = {
-       { O_RDONLY,     "O_RDONLY"      },
-       { O_WRONLY,     "O_WRONLY"      },
-       { O_RDWR,       "O_RDWR"        },
-#ifdef O_ACCMODE
-       { O_ACCMODE,    "O_ACCMODE"     },
-#endif
-       { 0,            NULL            },
-};
-
-const struct xlat open_mode_flags[] = {
-       { O_CREAT,      "O_CREAT"       },
-       { O_EXCL,       "O_EXCL"        },
-       { O_NOCTTY,     "O_NOCTTY"      },
-       { O_TRUNC,      "O_TRUNC"       },
-       { O_APPEND,     "O_APPEND"      },
-       { O_NONBLOCK,   "O_NONBLOCK"    },
-#ifdef O_SYNC
-       { O_SYNC,       "O_SYNC"        },
-#endif
-#ifdef O_ASYNC
-       { O_ASYNC,      "O_ASYNC"       },
-#endif
-#ifdef O_DSYNC
-       { O_DSYNC,      "O_DSYNC"       },
-#endif
-#ifdef O_RSYNC
-       { O_RSYNC,      "O_RSYNC"       },
-#endif
-#if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
-       { O_NDELAY,     "O_NDELAY"      },
-#endif
-#ifdef O_PRIV
-       { O_PRIV,       "O_PRIV"        },
-#endif
-#ifdef O_DIRECT
-       { O_DIRECT,     "O_DIRECT"      },
-#endif
 #ifdef O_LARGEFILE
-# if O_LARGEFILE == 0          /* biarch platforms in 64-bit mode */
+# if O_LARGEFILE == 0          /* biarch platforms in 64-bit mode */
 #  undef O_LARGEFILE
 #  ifdef SPARC64
-#   define O_LARGEFILE 0x40000
+#   define O_LARGEFILE 0x40000
 #  elif defined X86_64 || defined S390X
-#   define O_LARGEFILE 0100000
+#   define O_LARGEFILE 0100000
 #  endif
 # endif
-# ifdef O_LARGEFILE
-       { O_LARGEFILE,  "O_LARGEFILE"   },
-# endif
-#endif
-#ifdef O_DIRECTORY
-       { O_DIRECTORY,  "O_DIRECTORY"   },
-#endif
-#ifdef O_NOFOLLOW
-       { O_NOFOLLOW,   "O_NOFOLLOW"    },
-#endif
-#ifdef O_NOATIME
-       { O_NOATIME,    "O_NOATIME"     },
-#endif
-#ifdef O_CLOEXEC
-       { O_CLOEXEC,    "O_CLOEXEC"     },
-#endif
-#ifdef FNDELAY
-       { FNDELAY,      "FNDELAY"       },
-#endif
-#ifdef FAPPEND
-       { FAPPEND,      "FAPPEND"       },
-#endif
-#ifdef FMARK
-       { FMARK,        "FMARK"         },
-#endif
-#ifdef FDEFER
-       { FDEFER,       "FDEFER"        },
-#endif
-#ifdef FASYNC
-       { FASYNC,       "FASYNC"        },
-#endif
-#ifdef FSHLOCK
-       { FSHLOCK,      "FSHLOCK"       },
-#endif
-#ifdef FEXLOCK
-       { FEXLOCK,      "FEXLOCK"       },
-#endif
-#ifdef FCREAT
-       { FCREAT,       "FCREAT"        },
-#endif
-#ifdef FTRUNC
-       { FTRUNC,       "FTRUNC"        },
-#endif
-#ifdef FEXCL
-       { FEXCL,        "FEXCL"         },
-#endif
-#ifdef FNBIO
-       { FNBIO,        "FNBIO"         },
-#endif
-#ifdef FSYNC
-       { FSYNC,        "FSYNC"         },
-#endif
-#ifdef FNOCTTY
-       { FNOCTTY,      "FNOCTTY"       },
-#endif
-#ifdef O_SHLOCK
-       { O_SHLOCK,     "O_SHLOCK"      },
-#endif
-#ifdef O_EXLOCK
-       { O_EXLOCK,     "O_EXLOCK"      },
 #endif
-       { 0,            NULL            },
-};
+
+#include "xlat/open_access_modes.h"
+#include "xlat/open_mode_flags.h"
 
 #ifndef AT_FDCWD
 # define AT_FDCWD                -100
@@ -329,7 +232,7 @@ const struct xlat open_mode_flags[] = {
 /* The fd is an "int", so when decoding x86 on x86_64, we need to force sign
  * extension to get the right value.  We do this by declaring fd as int here.
  */
-static void
+void
 print_dirfd(struct tcb *tcp, int fd)
 {
        if (fd == AT_FDCWD)
@@ -400,7 +303,7 @@ decode_open(struct tcb *tcp, int offset)
                        tprintf(", %#lo", tcp->u_arg[offset + 2]);
                }
        }
-       return 0;
+       return RVAL_FD;
 }
 
 int
@@ -418,23 +321,7 @@ sys_openat(struct tcb *tcp)
 }
 
 #if defined(SPARC) || defined(SPARC64)
-static const struct xlat openmodessol[] = {
-       { 0,            "O_RDWR"        },
-       { 1,            "O_RDONLY"      },
-       { 2,            "O_WRONLY"      },
-       { 0x80,         "O_NONBLOCK"    },
-       { 8,            "O_APPEND"      },
-       { 0x100,        "O_CREAT"       },
-       { 0x200,        "O_TRUNC"       },
-       { 0x400,        "O_EXCL"        },
-       { 0x800,        "O_NOCTTY"      },
-       { 0x10,         "O_SYNC"        },
-       { 0x40,         "O_DSYNC"       },
-       { 0x8000,       "O_RSYNC"       },
-       { 4,            "O_NDELAY"      },
-       { 0x1000,       "O_PRIV"        },
-       { 0,            NULL            },
-};
+#include "xlat/openmodessol.h"
 
 int
 solaris_open(struct tcb *tcp)
@@ -461,22 +348,10 @@ sys_creat(struct tcb *tcp)
                printpath(tcp, tcp->u_arg[0]);
                tprintf(", %#lo", tcp->u_arg[1]);
        }
-       return 0;
+       return RVAL_FD;
 }
 
-static const struct xlat access_flags[] = {
-       { F_OK,         "F_OK",         },
-       { R_OK,         "R_OK"          },
-       { W_OK,         "W_OK"          },
-       { X_OK,         "X_OK"          },
-#ifdef EFF_ONLY_OK
-       { EFF_ONLY_OK,  "EFF_ONLY_OK"   },
-#endif
-#ifdef EX_OK
-       { EX_OK,        "EX_OK"         },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/access_flags.h"
 
 static int
 decode_access(struct tcb *tcp, int offset)
@@ -512,18 +387,7 @@ sys_umask(struct tcb *tcp)
        return RVAL_OCTAL;
 }
 
-const struct xlat whence_codes[] = {
-       { SEEK_SET,     "SEEK_SET"      },
-       { SEEK_CUR,     "SEEK_CUR"      },
-       { SEEK_END,     "SEEK_END"      },
-#ifdef SEEK_DATA
-       { SEEK_DATA,    "SEEK_DATA"     },
-#endif
-#ifdef SEEK_HOLE
-       { SEEK_HOLE,    "SEEK_HOLE"     },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/whence_codes.h"
 
 /* Linux kernel has exactly one version of lseek:
  * fs/read_write.c::SYSCALL_DEFINE3(lseek, unsigned, fd, off_t, offset, unsigned, origin)
@@ -632,7 +496,6 @@ sys_truncate(struct tcb *tcp)
        return 0;
 }
 
-#if _LFS64_LARGEFILE
 int
 sys_truncate64(struct tcb *tcp)
 {
@@ -642,7 +505,6 @@ sys_truncate64(struct tcb *tcp)
        }
        return 0;
 }
-#endif
 
 int
 sys_ftruncate(struct tcb *tcp)
@@ -654,7 +516,6 @@ sys_ftruncate(struct tcb *tcp)
        return 0;
 }
 
-#if _LFS64_LARGEFILE
 int
 sys_ftruncate64(struct tcb *tcp)
 {
@@ -664,20 +525,10 @@ sys_ftruncate64(struct tcb *tcp)
        }
        return 0;
 }
-#endif
 
 /* several stats */
 
-static const struct xlat modetypes[] = {
-       { S_IFREG,      "S_IFREG"       },
-       { S_IFSOCK,     "S_IFSOCK"      },
-       { S_IFIFO,      "S_IFIFO"       },
-       { S_IFLNK,      "S_IFLNK"       },
-       { S_IFDIR,      "S_IFDIR"       },
-       { S_IFBLK,      "S_IFBLK"       },
-       { S_IFCHR,      "S_IFCHR"       },
-       { 0,            NULL            },
-};
+#include "xlat/modetypes.h"
 
 static const char *
 sprintmode(int mode)
@@ -908,9 +759,7 @@ printstat_powerpc32(struct tcb *tcp, long addr)
 }
 #endif /* POWERPC64 */
 
-static const struct xlat fileflags[] = {
-       { 0,            NULL            },
-};
+#include "xlat/fileflags.h"
 
 static void
 realprintstat(struct tcb *tcp, struct stat *statbuf)
@@ -1023,12 +872,16 @@ printstat(struct tcb *tcp, long addr)
 # define printstat printstat64
 #endif
 
-#if !defined HAVE_STAT64 && defined X86_64
+#if !defined HAVE_STAT64 && (defined AARCH64 || defined X86_64)
 /*
  * Linux x86_64 has unified `struct stat' but its i386 biarch needs
  * `struct stat64'.  Its <asm-i386/stat.h> definition expects 32-bit `long'.
  * <linux/include/asm-x86_64/ia32.h> is not in the public includes set.
  * __GNUC__ is needed for the required __attribute__ below.
+ *
+ * Similarly, aarch64 has a unified `struct stat' but its arm personality
+ * needs `struct stat64' (which also expects a 32-bit `long' but which
+ * shouldn't be packed).
  */
 struct stat64 {
        unsigned long long      st_dev;
@@ -1050,9 +903,15 @@ struct stat64 {
        unsigned int    st_ctime;
        unsigned int    st_ctime_nsec;
        unsigned long long      st_ino;
-} __attribute__((packed));
+}
+# if defined X86_64
+   __attribute__((packed))
+#  define STAT64_SIZE  96
+#else
+#  define STAT64_SIZE  104
+# endif
+;
 # define HAVE_STAT64   1
-# define STAT64_SIZE   96
 #endif
 
 #ifdef HAVE_STAT64
@@ -1091,6 +950,12 @@ printstat64(struct tcb *tcp, long addr)
 # endif
 #endif /* SPARC[64] */
 
+#if defined AARCH64
+       if (current_personality != 0) {
+               printstat(tcp, addr);
+               return;
+       }
+#endif
 #if defined X86_64
        if (current_personality != 1) {
                printstat(tcp, addr);
@@ -1104,18 +969,10 @@ printstat64(struct tcb *tcp, long addr)
        }
 
        if (!abbrev(tcp)) {
-#ifdef HAVE_LONG_LONG
                tprintf("{st_dev=makedev(%lu, %lu), st_ino=%llu, st_mode=%s, ",
-#else
-               tprintf("{st_dev=makedev(%lu, %lu), st_ino=%lu, st_mode=%s, ",
-#endif
                        (unsigned long) major(statbuf.st_dev),
                        (unsigned long) minor(statbuf.st_dev),
-#ifdef HAVE_LONG_LONG
                        (unsigned long long) statbuf.st_ino,
-#else
-                       (unsigned long) statbuf.st_ino,
-#endif
                        sprintmode(statbuf.st_mode));
                tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ",
                        (unsigned long) statbuf.st_nlink,
@@ -1144,11 +1001,7 @@ printstat64(struct tcb *tcp, long addr)
 #endif /* !HAVE_STRUCT_STAT_ST_RDEV */
                break;
        default:
-#ifdef HAVE_LONG_LONG
                tprintf("st_size=%llu, ", (unsigned long long) statbuf.st_size);
-#else
-               tprintf("st_size=%lu, ", (unsigned long) statbuf.st_size);
-#endif
                break;
        }
        if (!abbrev(tcp)) {
@@ -1335,14 +1188,7 @@ sys_stat64(struct tcb *tcp)
 # define AT_EMPTY_PATH         0x1000
 #endif
 
-static const struct xlat at_flags[] = {
-       { AT_SYMLINK_NOFOLLOW,  "AT_SYMLINK_NOFOLLOW"   },
-       { AT_REMOVEDIR,         "AT_REMOVEDIR"          },
-       { AT_SYMLINK_FOLLOW,    "AT_SYMLINK_FOLLOW"     },
-       { AT_NO_AUTOMOUNT,      "AT_NO_AUTOMOUNT"       },
-       { AT_EMPTY_PATH,        "AT_EMPTY_PATH"         },
-       { 0,                    NULL                    }
-};
+#include "xlat/at_flags.h"
 
 int
 sys_newfstatat(struct tcb *tcp)
@@ -1508,27 +1354,7 @@ sys_xmknod(struct tcb *tcp)
 
 #  include <sys/acl.h>
 
-static const struct xlat aclcmds[] = {
-#  ifdef SETACL
-       { SETACL,       "SETACL"        },
-#  endif
-#  ifdef GETACL
-       { GETACL,       "GETACL"        },
-#  endif
-#  ifdef GETACLCNT
-       { GETACLCNT,    "GETACLCNT"     },
-#  endif
-#  ifdef ACL_GET
-       { ACL_GET,      "ACL_GET"       },
-#  endif
-#  ifdef ACL_SET
-       { ACL_SET,      "ACL_SET"       },
-#  endif
-#  ifdef ACL_CNT
-       { ACL_CNT,      "ACL_CNT"       },
-#  endif
-       { 0,            NULL            },
-};
+#include "xlat/aclcmds.h"
 
 int
 sys_acl(struct tcb *tcp)
@@ -1569,18 +1395,7 @@ sys_facl(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat aclipc[] = {
-#  ifdef IPC_SHM
-       { IPC_SHM,      "IPC_SHM"       },
-#  endif
-#  ifdef IPC_SEM
-       { IPC_SEM,      "IPC_SEM"       },
-#  endif
-#  ifdef IPC_MSG
-       { IPC_MSG,      "IPC_MSG"       },
-#  endif
-       { 0,            NULL            },
-};
+#include "xlat/aclipc.h"
 
 int
 sys_aclipc(struct tcb *tcp)
@@ -1606,38 +1421,7 @@ sys_aclipc(struct tcb *tcp)
 
 #endif /* SPARC[64] */
 
-static const struct xlat fsmagic[] = {
-       { 0x73757245,   "CODA_SUPER_MAGIC"      },
-       { 0x012ff7b7,   "COH_SUPER_MAGIC"       },
-       { 0x1373,       "DEVFS_SUPER_MAGIC"     },
-       { 0x1cd1,       "DEVPTS_SUPER_MAGIC"    },
-       { 0x414A53,     "EFS_SUPER_MAGIC"       },
-       { 0xef51,       "EXT2_OLD_SUPER_MAGIC"  },
-       { 0xef53,       "EXT2_SUPER_MAGIC"      },
-       { 0x137d,       "EXT_SUPER_MAGIC"       },
-       { 0xf995e849,   "HPFS_SUPER_MAGIC"      },
-       { 0x9660,       "ISOFS_SUPER_MAGIC"     },
-       { 0x137f,       "MINIX_SUPER_MAGIC"     },
-       { 0x138f,       "MINIX_SUPER_MAGIC2"    },
-       { 0x2468,       "MINIX2_SUPER_MAGIC"    },
-       { 0x2478,       "MINIX2_SUPER_MAGIC2"   },
-       { 0x4d44,       "MSDOS_SUPER_MAGIC"     },
-       { 0x564c,       "NCP_SUPER_MAGIC"       },
-       { 0x6969,       "NFS_SUPER_MAGIC"       },
-       { 0x9fa0,       "PROC_SUPER_MAGIC"      },
-       { 0x002f,       "QNX4_SUPER_MAGIC"      },
-       { 0x52654973,   "REISERFS_SUPER_MAGIC"  },
-       { 0x02011994,   "SHMFS_SUPER_MAGIC"     },
-       { 0x517b,       "SMB_SUPER_MAGIC"       },
-       { 0x012ff7b6,   "SYSV2_SUPER_MAGIC"     },
-       { 0x012ff7b5,   "SYSV4_SUPER_MAGIC"     },
-       { 0x00011954,   "UFS_MAGIC"             },
-       { 0x54190100,   "UFS_CIGAM"             },
-       { 0x012ff7b4,   "XENIX_SUPER_MAGIC"     },
-       { 0x012fd16d,   "XIAFS_SUPER_MAGIC"     },
-       { 0x62656572,   "SYSFS_MAGIC"           },
-       { 0,            NULL                    },
-};
+#include "xlat/fsmagic.h"
 
 static const char *
 sprintfstype(int magic)
@@ -1983,15 +1767,34 @@ sys_readlinkat(struct tcb *tcp)
        return decode_readlink(tcp, 1);
 }
 
+static void
+decode_renameat(struct tcb *tcp)
+{
+       print_dirfd(tcp, tcp->u_arg[0]);
+       printpath(tcp, tcp->u_arg[1]);
+       tprints(", ");
+       print_dirfd(tcp, tcp->u_arg[2]);
+       printpath(tcp, tcp->u_arg[3]);
+}
+
 int
 sys_renameat(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               print_dirfd(tcp, tcp->u_arg[0]);
-               printpath(tcp, tcp->u_arg[1]);
+               decode_renameat(tcp);
+       }
+       return 0;
+}
+
+#include "xlat/rename_flags.h"
+
+int
+sys_renameat2(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               decode_renameat(tcp);
                tprints(", ");
-               print_dirfd(tcp, tcp->u_arg[2]);
-               printpath(tcp, tcp->u_arg[3]);
+               printflags(rename_flags, tcp->u_arg[4], "RENAME_??");
        }
        return 0;
 }
@@ -2252,18 +2055,7 @@ sys_readdir(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat direnttypes[] = {
-       { DT_UNKNOWN,   "DT_UNKNOWN"    },
-       { DT_FIFO,      "DT_FIFO"       },
-       { DT_CHR,       "DT_CHR"        },
-       { DT_DIR,       "DT_DIR"        },
-       { DT_BLK,       "DT_BLK"        },
-       { DT_REG,       "DT_REG"        },
-       { DT_LNK,       "DT_LNK"        },
-       { DT_SOCK,      "DT_SOCK"       },
-       { DT_WHT,       "DT_WHT"        },
-       { 0,            NULL            },
-};
+#include "xlat/direnttypes.h"
 
 int
 sys_getdents(struct tcb *tcp)
@@ -2322,7 +2114,6 @@ sys_getdents(struct tcb *tcp)
        return 0;
 }
 
-#if _LFS64_LARGEFILE
 int
 sys_getdents64(struct tcb *tcp)
 {
@@ -2384,7 +2175,6 @@ sys_getdents64(struct tcb *tcp)
        free(buf);
        return 0;
 }
-#endif
 
 int
 sys_getcwd(struct tcb *tcp)
@@ -2477,13 +2267,7 @@ sys_aiocancel(struct tcb *tcp)
 
 #endif /* HAVE_SYS_ASYNCH_H */
 
-static const struct xlat xattrflags[] = {
-#ifdef XATTR_CREATE
-       { XATTR_CREATE,  "XATTR_CREATE" },
-       { XATTR_REPLACE, "XATTR_REPLACE" },
-#endif
-       { 0,             NULL }
-};
+#include "xlat/xattrflags.h"
 
 static void
 print_xattr_val(struct tcb *tcp, int failed,
@@ -2646,15 +2430,7 @@ sys_fremovexattr(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat advise[] = {
-       { POSIX_FADV_NORMAL,            "POSIX_FADV_NORMAL"     },
-       { POSIX_FADV_RANDOM,            "POSIX_FADV_RANDOM"     },
-       { POSIX_FADV_SEQUENTIAL,        "POSIX_FADV_SEQUENTIAL" },
-       { POSIX_FADV_WILLNEED,          "POSIX_FADV_WILLNEED"   },
-       { POSIX_FADV_DONTNEED,          "POSIX_FADV_DONTNEED"   },
-       { POSIX_FADV_NOREUSE,           "POSIX_FADV_NOREUSE"    },
-       { 0,                            NULL                    }
-};
+#include "xlat/advise.h"
 
 int
 sys_fadvise64(struct tcb *tcp)
@@ -2686,68 +2462,37 @@ sys_fadvise64_64(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat inotify_modes[] = {
-       { 0x00000001,   "IN_ACCESS"     },
-       { 0x00000002,   "IN_MODIFY"     },
-       { 0x00000004,   "IN_ATTRIB"     },
-       { 0x00000008,   "IN_CLOSE_WRITE"},
-       { 0x00000010,   "IN_CLOSE_NOWRITE"},
-       { 0x00000020,   "IN_OPEN"       },
-       { 0x00000040,   "IN_MOVED_FROM" },
-       { 0x00000080,   "IN_MOVED_TO"   },
-       { 0x00000100,   "IN_CREATE"     },
-       { 0x00000200,   "IN_DELETE"     },
-       { 0x00000400,   "IN_DELETE_SELF"},
-       { 0x00000800,   "IN_MOVE_SELF"  },
-       { 0x00002000,   "IN_UNMOUNT"    },
-       { 0x00004000,   "IN_Q_OVERFLOW" },
-       { 0x00008000,   "IN_IGNORED"    },
-       { 0x01000000,   "IN_ONLYDIR"    },
-       { 0x02000000,   "IN_DONT_FOLLOW"},
-       { 0x20000000,   "IN_MASK_ADD"   },
-       { 0x40000000,   "IN_ISDIR"      },
-       { 0x80000000,   "IN_ONESHOT"    },
-       { 0,            NULL            }
-};
-
-static const struct xlat inotify_init_flags[] = {
-       { 0x00000800,   "IN_NONBLOCK"   },
-       { 0x00080000,   "IN_CLOEXEC"    },
-       { 0,            NULL            }
-};
+#include "xlat/sync_file_range_flags.h"
 
 int
-sys_inotify_add_watch(struct tcb *tcp)
+sys_sync_file_range(struct tcb *tcp)
 {
        if (entering(tcp)) {
+               int argn;
                printfd(tcp, tcp->u_arg[0]);
-               tprints(", ");
-               printpath(tcp, tcp->u_arg[1]);
-               tprints(", ");
-               printflags(inotify_modes, tcp->u_arg[2], "IN_???");
+               argn = printllval(tcp, ", %lld, ", 1);
+               argn = printllval(tcp, "%lld, ", argn);
+               printflags(sync_file_range_flags, tcp->u_arg[argn],
+                          "SYNC_FILE_RANGE_???");
        }
        return 0;
 }
 
 int
-sys_inotify_rm_watch(struct tcb *tcp)
+sys_sync_file_range2(struct tcb *tcp)
 {
        if (entering(tcp)) {
+               int argn;
                printfd(tcp, tcp->u_arg[0]);
-               tprintf(", %d", (int) tcp->u_arg[1]);
+               printflags(sync_file_range_flags, 1,
+                          "SYNC_FILE_RANGE_???");
+               argn = printllval(tcp, ", %lld, ", 2);
+               argn = printllval(tcp, "%lld, ", argn);
        }
        return 0;
 }
 
 int
-sys_inotify_init1(struct tcb *tcp)
-{
-       if (entering(tcp))
-               printflags(inotify_init_flags, tcp->u_arg[0], "IN_???");
-       return 0;
-}
-
-int
 sys_fallocate(struct tcb *tcp)
 {
        if (entering(tcp)) {
@@ -2766,11 +2511,7 @@ sys_fallocate(struct tcb *tcp)
 #ifndef SWAP_FLAG_DISCARD
 # define SWAP_FLAG_DISCARD 0x10000
 #endif
-static const struct xlat swap_flags[] = {
-       { SWAP_FLAG_PREFER,     "SWAP_FLAG_PREFER"      },
-       { SWAP_FLAG_DISCARD,    "SWAP_FLAG_DISCARD"     },
-       { 0,                    NULL                    }
-};
+#include "xlat/swap_flags.h"
 
 int
 sys_swapon(struct tcb *tcp)
diff --git a/inotify.c b/inotify.c
new file mode 100644 (file)
index 0000000..32f6b31
--- /dev/null
+++ b/inotify.c
@@ -0,0 +1,42 @@
+#include "defs.h"
+#include <fcntl.h>
+#include <linux/inotify.h>
+
+#include "xlat/inotify_flags.h"
+#include "xlat/inotify_init_flags.h"
+
+int
+sys_inotify_add_watch(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               /* file descriptor */
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
+               /* pathname */
+               printpath(tcp, tcp->u_arg[1]);
+               tprints(", ");
+               /* mask */
+               printflags(inotify_flags, tcp->u_arg[2], "IN_???");
+       }
+       return 0;
+}
+
+int
+sys_inotify_rm_watch(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               /* file descriptor */
+               printfd(tcp, tcp->u_arg[0]);
+               /* watch descriptor */
+               tprintf(", %d", (int) tcp->u_arg[1]);
+       }
+       return 0;
+}
+
+int
+sys_inotify_init1(struct tcb *tcp)
+{
+       if (entering(tcp))
+               printflags(inotify_init_flags, tcp->u_arg[0], "IN_???");
+       return 0;
+}
index a9244eb..377bb86 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2011-11-20.07; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2011-01-19.21; # UTC
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
@@ -156,7 +156,7 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
-       # Protect names problematic for `test' and other utilities.
+       # Protect names problematic for 'test' and other utilities.
        case $dst_arg in
          -* | [=\(\)!]) dst_arg=./$dst_arg;;
        esac
@@ -190,7 +190,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
-    # Protect names problematic for `test' and other utilities.
+    # Protect names problematic for 'test' and other utilities.
     case $dst_arg in
       -* | [=\(\)!]) dst_arg=./$dst_arg;;
     esac
@@ -202,7 +202,7 @@ if test $# -eq 0; then
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call `install-sh -d' without argument.
+  # It's OK to call 'install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
@@ -240,7 +240,7 @@ fi
 
 for src
 do
-  # Protect names problematic for `test' and other utilities.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
     -* | [=\(\)!]) src=./$src;;
   esac
@@ -354,7 +354,7 @@ do
              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-writeable bit of parent directory when it shouldn't.
+                  # other-writable bit of parent directory when it shouldn't.
                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
                   case $ls_ld_tmpdir in
diff --git a/io.c b/io.c
index b7bf832..7238a8f 100644 (file)
--- a/io.c
+++ b/io.c
@@ -218,6 +218,26 @@ sys_pwrite(struct tcb *tcp)
 }
 
 #if HAVE_SYS_UIO_H
+
+static void
+print_llu_from_low_high_val(struct tcb *tcp, int arg)
+{
+#if SIZEOF_LONG == SIZEOF_LONG_LONG
+       tprintf("%lu", (unsigned long) tcp->u_arg[arg]);
+#elif defined(LINUX_MIPSN32)
+       tprintf("%llu", (unsigned long long) tcp->ext_arg[arg]);
+#else
+# ifdef X32
+       if (current_personality == 0)
+               tprintf("%llu", (unsigned long long) tcp->ext_arg[arg]);
+       else
+# endif
+       tprintf("%llu",
+               ((unsigned long long) (unsigned long) tcp->u_arg[arg + 1] << sizeof(long) * 8)
+               | (unsigned long long) (unsigned long) tcp->u_arg[arg]);
+#endif
+}
+
 int
 sys_preadv(struct tcb *tcp)
 {
@@ -231,7 +251,7 @@ sys_preadv(struct tcb *tcp)
                }
                tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
                tprintf(", %lu, ", tcp->u_arg[2]);
-               printllval(tcp, "%llu", PREAD_OFFSET_ARG);
+               print_llu_from_low_high_val(tcp, 3);
        }
        return 0;
 }
@@ -244,7 +264,7 @@ sys_pwritev(struct tcb *tcp)
                tprints(", ");
                tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
                tprintf(", %lu, ", tcp->u_arg[2]);
-               printllval(tcp, "%llu", PREAD_OFFSET_ARG);
+               print_llu_from_low_high_val(tcp, 3);
        }
        return 0;
 }
@@ -317,21 +337,7 @@ sys_sendfile64(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat splice_flags[] = {
-#ifdef SPLICE_F_MOVE
-       { SPLICE_F_MOVE,     "SPLICE_F_MOVE"     },
-#endif
-#ifdef SPLICE_F_NONBLOCK
-       { SPLICE_F_NONBLOCK, "SPLICE_F_NONBLOCK" },
-#endif
-#ifdef SPLICE_F_MORE
-       { SPLICE_F_MORE,     "SPLICE_F_MORE"     },
-#endif
-#ifdef SPLICE_F_GIFT
-       { SPLICE_F_GIFT,     "SPLICE_F_GIFT"     },
-#endif
-       { 0,                 NULL                },
-};
+#include "xlat/splice_flags.h"
 
 int
 sys_tee(struct tcb *tcp)
diff --git a/ioctl.c b/ioctl.c
index 2280439..3f6c410 100644 (file)
--- a/ioctl.c
+++ b/ioctl.c
@@ -86,8 +86,10 @@ ioctl_decode(struct tcb *tcp, long code, long arg)
        case 0x03:
        case 0x12:
                return block_ioctl(tcp, code, arg);
+#ifdef HAVE_SCSI_SG_H
        case 0x22:
                return scsi_ioctl(tcp, code, arg);
+#endif
        case 'L':
                return loop_ioctl(tcp, code, arg);
        case 'M':
@@ -95,6 +97,8 @@ ioctl_decode(struct tcb *tcp, long code, long arg)
        case 'o':
        case 'O':
                return ubi_ioctl(tcp, code, arg);
+       case '=':
+               return ptp_ioctl(tcp, code, arg);
        default:
                break;
        }
diff --git a/ioctlsort.c b/ioctlsort.c
deleted file mode 100644 (file)
index 0e6608e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
- * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-#endif
-
-struct ioctlent {
-       const char *doth;
-       const char *symbol;
-       unsigned long code;
-};
-
-#include "ioctlent.raw"
-
-int nioctlents = sizeof ioctlent / sizeof ioctlent[0];
-
-int
-compare(const void *a, const void *b)
-{
-       unsigned long code1 = ((struct ioctlent *) a)->code;
-       unsigned long code2 = ((struct ioctlent *) b)->code;
-       return (code1 > code2) ? 1 : (code1 < code2) ? -1 : 0;
-}
-
-int
-main(int argc, const char *argv[])
-{
-       int i;
-
-       qsort(ioctlent, nioctlents, sizeof ioctlent[0], compare);
-       for (i = 0; i < nioctlents; i++) {
-               printf("{\"%s\", \"%s\", %#lx},\n",
-                       ioctlent[i].doth, ioctlent[i].symbol, ioctlent[i].code);
-       }
-       return 0;
-}
diff --git a/ioprio.c b/ioprio.c
new file mode 100644 (file)
index 0000000..6826e56
--- /dev/null
+++ b/ioprio.c
@@ -0,0 +1,75 @@
+#include "defs.h"
+
+enum {
+       IOPRIO_WHO_PROCESS = 1,
+       IOPRIO_WHO_PGRP,
+       IOPRIO_WHO_USER
+};
+
+#include "xlat/ioprio_who.h"
+
+enum {
+       IOPRIO_CLASS_NONE,
+       IOPRIO_CLASS_RT,
+       IOPRIO_CLASS_BE,
+       IOPRIO_CLASS_IDLE
+};
+
+#include "xlat/ioprio_class.h"
+
+#define IOPRIO_CLASS_SHIFT     (13)
+#define IOPRIO_PRIO_MASK       ((1ul << IOPRIO_CLASS_SHIFT) - 1)
+
+#define IOPRIO_PRIO_CLASS(mask)        ((mask) >> IOPRIO_CLASS_SHIFT)
+#define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK)
+
+static const char *
+sprint_ioprio(int ioprio)
+{
+       static char outstr[256];
+       const char *str;
+       int class, data;
+
+       class = IOPRIO_PRIO_CLASS(ioprio);
+       data = IOPRIO_PRIO_DATA(ioprio);
+       str = xlookup(ioprio_class, class);
+       if (str)
+               sprintf(outstr, "IOPRIO_PRIO_VALUE(%s,%d)", str, data);
+       else
+               sprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */,%d)",
+                       class, "IOPRIO_CLASS_???", data);
+
+       return outstr;
+}
+
+int
+sys_ioprio_get(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               /* int which */
+               printxval(ioprio_who, tcp->u_arg[0], "IOPRIO_WHO_???");
+               /* int who */
+               tprintf(", %d", (int) tcp->u_arg[1]);
+               return 0;
+       } else {
+               if (syserror(tcp))
+                       return 0;
+
+               tcp->auxstr = sprint_ioprio(tcp->u_rval);
+               return RVAL_STR;
+       }
+}
+
+int
+sys_ioprio_set(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               /* int which */
+               printxval(ioprio_who, tcp->u_arg[0], "IOPRIO_WHO_???");
+               /* int who */
+               tprintf(", %d, ", (int) tcp->u_arg[1]);
+               /* int ioprio */
+               tprints(sprint_ioprio(tcp->u_arg[2]));
+       }
+       return 0;
+}
diff --git a/ipc.c b/ipc.c
index 0b91a52..e04a618 100644 (file)
--- a/ipc.c
+++ b/ipc.c
 
 extern void printsigevent(struct tcb *tcp, long arg);
 
-static const struct xlat msgctl_flags[] = {
-       { IPC_RMID,     "IPC_RMID"      },
-       { IPC_SET,      "IPC_SET"       },
-       { IPC_STAT,     "IPC_STAT"      },
-       { IPC_INFO,     "IPC_INFO"      },
-       { MSG_STAT,     "MSG_STAT"      },
-       { MSG_INFO,     "MSG_INFO"      },
-       { 0,            NULL            },
-};
-
-static const struct xlat semctl_flags[] = {
-       { IPC_RMID,     "IPC_RMID"      },
-       { IPC_SET,      "IPC_SET"       },
-       { IPC_STAT,     "IPC_STAT"      },
-       { IPC_INFO,     "IPC_INFO"      },
-       { SEM_STAT,     "SEM_STAT"      },
-       { SEM_INFO,     "SEM_INFO"      },
-       { GETPID,       "GETPID"        },
-       { GETVAL,       "GETVAL"        },
-       { GETALL,       "GETALL"        },
-       { GETNCNT,      "GETNCNT"       },
-       { GETZCNT,      "GETZCNT"       },
-       { SETVAL,       "SETVAL"        },
-       { SETALL,       "SETALL"        },
-       { 0,            NULL            },
-};
-
-static const struct xlat shmctl_flags[] = {
-       { IPC_RMID,     "IPC_RMID"      },
-       { IPC_SET,      "IPC_SET"       },
-       { IPC_STAT,     "IPC_STAT"      },
-       { IPC_INFO,     "IPC_INFO"      },
-       { SHM_STAT,     "SHM_STAT"      },
-       { SHM_INFO,     "SHM_INFO"      },
-#ifdef SHM_LOCK
-       { SHM_LOCK,     "SHM_LOCK"      },
-#endif
-#ifdef SHM_UNLOCK
-       { SHM_UNLOCK,   "SHM_UNLOCK"    },
-#endif
-       { 0,            NULL            },
-};
-
-static const struct xlat resource_flags[] = {
-       { IPC_CREAT,    "IPC_CREAT"     },
-       { IPC_EXCL,     "IPC_EXCL"      },
-       { IPC_NOWAIT,   "IPC_NOWAIT"    },
-       { 0,            NULL            },
-};
-
-static const struct xlat shm_resource_flags[] = {
-       { IPC_CREAT,    "IPC_CREAT"     },
-       { IPC_EXCL,     "IPC_EXCL"      },
-#ifdef SHM_HUGETLB
-       { SHM_HUGETLB,  "SHM_HUGETLB"   },
-#endif
-       { 0,            NULL            },
-};
-
-static const struct xlat shm_flags[] = {
-       { SHM_REMAP,    "SHM_REMAP"     },
-       { SHM_RDONLY,   "SHM_RDONLY"    },
-       { SHM_RND,      "SHM_RND"       },
-       { 0,            NULL            },
-};
-
-static const struct xlat msg_flags[] = {
-       { MSG_NOERROR,  "MSG_NOERROR"   },
-       { MSG_EXCEPT,   "MSG_EXCEPT"    },
-       { IPC_NOWAIT,   "IPC_NOWAIT"    },
-       { 0,            NULL            },
-};
-
-static const struct xlat semop_flags[] = {
-       { SEM_UNDO,     "SEM_UNDO"      },
-       { IPC_NOWAIT,   "IPC_NOWAIT"    },
-       { 0,            NULL            },
-};
+#include "xlat/msgctl_flags.h"
+#include "xlat/semctl_flags.h"
+#include "xlat/shmctl_flags.h"
+#include "xlat/resource_flags.h"
+#include "xlat/shm_resource_flags.h"
+#include "xlat/shm_flags.h"
+#include "xlat/ipc_msg_flags.h"
+#include "xlat/semop_flags.h"
 
 int sys_msgget(struct tcb *tcp)
 {
@@ -203,7 +133,7 @@ tprint_msgsnd(struct tcb *tcp, long addr, unsigned long count,
                tprints("}");
        }
        tprintf(", %lu, ", count);
-       printflags(msg_flags, flags, "MSG_???");
+       printflags(ipc_msg_flags, flags, "MSG_???");
 }
 
 int sys_msgsnd(struct tcb *tcp)
@@ -254,11 +184,11 @@ int sys_msgrcv(struct tcb *tcp)
                                tprint_msgrcv(tcp, (long) tmp.msgp,
                                        tcp->u_arg[1], tmp.msgtyp);
                        }
-                       printflags(msg_flags, tcp->u_arg[2], "MSG_???");
+                       printflags(ipc_msg_flags, tcp->u_arg[2], "MSG_???");
                } else {
                        tprint_msgrcv(tcp, tcp->u_arg[1],
                                tcp->u_arg[2], tcp->u_arg[3]);
-                       printflags(msg_flags, tcp->u_arg[4], "MSG_???");
+                       printflags(ipc_msg_flags, tcp->u_arg[4], "MSG_???");
                }
        }
        return 0;
diff --git a/kexec.c b/kexec.c
new file mode 100644 (file)
index 0000000..f95bea2
--- /dev/null
+++ b/kexec.c
@@ -0,0 +1,90 @@
+#include "defs.h"
+#include <linux/kexec.h>
+
+#include "xlat/kexec_arch_values.h"
+#include "xlat/kexec_flags.h"
+
+static void
+print_kexec_segments(struct tcb *tcp, unsigned long addr, unsigned long len)
+{
+#if SUPPORTED_PERSONALITIES > 1
+       union {
+               struct { u_int32_t buf, bufsz, mem, memsz; } seg32;
+               struct { u_int64_t buf, bufsz, mem, memsz; } seg64;
+       } seg;
+# define sizeof_seg \
+       (current_wordsize == 4 ? sizeof(seg.seg32) : sizeof(seg.seg64))
+# define seg_buf \
+       (current_wordsize == 4 ? (uint64_t) seg.seg32.buf : seg.seg64.buf)
+# define seg_bufsz \
+       (current_wordsize == 4 ? (uint64_t) seg.seg32.bufsz : seg.seg64.bufsz)
+# define seg_mem \
+       (current_wordsize == 4 ? (uint64_t) seg.seg32.mem : seg.seg64.mem)
+# define seg_memsz \
+       (current_wordsize == 4 ? (uint64_t) seg.seg32.memsz : seg.seg64.memsz)
+#else
+       struct kexec_segment seg;
+# define sizeof_seg sizeof(seg)
+# define seg_buf seg.buf
+# define seg_bufsz seg.bufsz
+# define seg_mem seg.mem
+# define seg_memsz seg.memsz
+#endif
+       unsigned int i, failed;
+
+       if (!len) {
+               tprints("[]");
+               return;
+       }
+
+       if (len > KEXEC_SEGMENT_MAX) {
+               tprintf("%#lx", addr);
+               return;
+       }
+
+       failed = 0;
+       tprints("[");
+       for (i = 0; i < len; ++i) {
+               if (i)
+                       tprints(", ");
+               if (umoven(tcp, addr + i * sizeof_seg, sizeof_seg,
+                          (char *) &seg) < 0) {
+                       tprints("?");
+                       failed = 1;
+                       break;
+               }
+               tprintf("{%#lx, %lu, %#lx, %lu}",
+                       (long) seg_buf, (unsigned long) seg_bufsz,
+                       (long) seg_mem, (unsigned long) seg_memsz);
+       }
+       tprints("]");
+       if (failed)
+               tprintf(" %#lx", addr);
+}
+
+int
+sys_kexec_load(struct tcb *tcp)
+{
+       unsigned long n;
+
+       if (exiting(tcp))
+               return 0;
+
+       /* entry, nr_segments */
+       tprintf("%#lx, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
+
+       /* segments */
+       print_kexec_segments(tcp, tcp->u_arg[2], tcp->u_arg[1]);
+       tprints(", ");
+
+       /* flags */
+       n = tcp->u_arg[3];
+       printxval(kexec_arch_values, n & KEXEC_ARCH_MASK, "KEXEC_ARCH_???");
+       n &= ~KEXEC_ARCH_MASK;
+       if (n) {
+               tprints("|");
+               printflags(kexec_flags, n, "KEXEC_???");
+       }
+
+       return 0;
+}
diff --git a/keyctl.c b/keyctl.c
new file mode 100644 (file)
index 0000000..a12bd54
--- /dev/null
+++ b/keyctl.c
@@ -0,0 +1,379 @@
+#include "defs.h"
+#include <linux/keyctl.h>
+
+typedef int32_t key_serial_t;
+
+#include "xlat/key_spec.h"
+
+static void
+print_keyring_serial_number(key_serial_t id)
+{
+       const char *str = xlookup(key_spec, id);
+
+       if (str)
+               tprints(str);
+       else
+               tprintf("%d", id);
+}
+
+int
+sys_add_key(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               /* type */
+               printstr(tcp, tcp->u_arg[0], -1);
+               /* description */
+               tprints(", ");
+               printstr(tcp, tcp->u_arg[1], -1);
+               /* payload */
+               tprints(", ");
+               printstr(tcp, tcp->u_arg[2], tcp->u_arg[3]);
+               /* payload length */
+               tprintf(", %lu, ", tcp->u_arg[3]);
+               /* keyring serial number */
+               print_keyring_serial_number(tcp->u_arg[4]);
+       }
+       return 0;
+}
+
+int
+sys_request_key(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               /* type */
+               printstr(tcp, tcp->u_arg[0], -1);
+               /* description */
+               tprints(", ");
+               printstr(tcp, tcp->u_arg[1], -1);
+               /* callout_info */
+               tprints(", ");
+               printstr(tcp, tcp->u_arg[2], -1);
+               /* keyring serial number */
+               tprints(", ");
+               print_keyring_serial_number(tcp->u_arg[3]);
+       }
+       return 0;
+}
+
+static int
+keyctl_get_keyring_id(struct tcb *tcp, key_serial_t id, int create)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+               tprintf(", %d", create);
+       }
+       return 0;
+}
+
+static int
+keyctl_join_session_keyring(struct tcb *tcp, long addr)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               printstr(tcp, addr, -1);
+       }
+       return 0;
+}
+
+static int
+keyctl_update_key(struct tcb *tcp, key_serial_t id, long addr, long len)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+               tprints(", ");
+               printstr(tcp, addr, len);
+               tprintf(", %lu", len);
+       }
+       return 0;
+}
+
+static int
+keyctl_handle_key(struct tcb *tcp, key_serial_t id)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+       }
+       return 0;
+}
+
+static int
+keyctl_handle_key_key(struct tcb *tcp, key_serial_t id1, key_serial_t id2)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id1);
+               tprints(", ");
+               print_keyring_serial_number(id2);
+       }
+       return 0;
+}
+
+static int
+keyctl_read_key(struct tcb *tcp, key_serial_t id, long addr, long len)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+               tprints(", ");
+       } else {
+               if (addr && syserror(tcp))
+                       tprintf("%#lx", addr);
+               else {
+                       long rval = tcp->u_rval > len ?
+                                   len : (tcp->u_rval ? -1 : 0);
+                       printstr(tcp, addr, rval);
+               }
+               tprintf(", %lu", len);
+       }
+       return 0;
+}
+
+static int
+keyctl_keyring_search(struct tcb *tcp, key_serial_t id1, long addr1,
+                     long addr2, key_serial_t id2)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id1);
+               tprints(", ");
+               printstr(tcp, addr1, -1);
+               tprints(", ");
+               printstr(tcp, addr2, -1);
+               tprints(", ");
+               print_keyring_serial_number(id2);
+       }
+       return 0;
+}
+
+static int
+keyctl_chown_key(struct tcb *tcp, key_serial_t id, int user, int group)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+               tprintf(", %d, %d", user, group);
+       }
+       return 0;
+}
+
+static int
+keyctl_instantiate_key(struct tcb *tcp, key_serial_t id1, long addr,
+                      long len, key_serial_t id2)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id1);
+               tprints(", ");
+               printstr(tcp, addr, len);
+               tprintf(", %lu, ", len);
+               print_keyring_serial_number(id2);
+       }
+       return 0;
+}
+
+static int
+keyctl_instantiate_key_iov(struct tcb *tcp, key_serial_t id1,
+                          long addr, long len, key_serial_t id2)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id1);
+               tprints(", ");
+               tprint_iov(tcp, len, addr, 1);
+               tprintf(", %lu, ", len);
+               print_keyring_serial_number(id2);
+       }
+       return 0;
+}
+
+static int
+keyctl_negate_key(struct tcb *tcp, key_serial_t id1, unsigned timeout,
+                 key_serial_t id2)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id1);
+               tprintf(", %u, ", timeout);
+               print_keyring_serial_number(id2);
+       }
+       return 0;
+}
+
+static int
+keyctl_reject_key(struct tcb *tcp, key_serial_t id1, unsigned timeout,
+                 unsigned error, key_serial_t id2)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id1);
+               tprintf(", %u, %u, ", timeout, error);
+               print_keyring_serial_number(id2);
+       }
+       return 0;
+}
+
+static int
+keyctl_set_timeout(struct tcb *tcp, key_serial_t id, unsigned timeout)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+               tprintf(", %u", timeout);
+       }
+       return 0;
+}
+
+static int
+keyctl_get_persistent(struct tcb *tcp, int uid, key_serial_t id)
+{
+       if (entering(tcp)) {
+               tprintf(", %d, ", uid);
+               print_keyring_serial_number(id);
+       }
+       return 0;
+}
+
+#define KEY_POS_VIEW   0x01000000
+#define KEY_POS_READ   0x02000000
+#define KEY_POS_WRITE  0x04000000
+#define KEY_POS_SEARCH 0x08000000
+#define KEY_POS_LINK   0x10000000
+#define KEY_POS_SETATTR        0x20000000
+#define KEY_POS_ALL    0x3f000000
+#define KEY_USR_VIEW   0x00010000
+#define KEY_USR_READ   0x00020000
+#define KEY_USR_WRITE  0x00040000
+#define KEY_USR_SEARCH 0x00080000
+#define KEY_USR_LINK   0x00100000
+#define KEY_USR_SETATTR        0x00200000
+#define KEY_USR_ALL    0x003f0000
+#define KEY_GRP_VIEW   0x00000100
+#define KEY_GRP_READ   0x00000200
+#define KEY_GRP_WRITE  0x00000400
+#define KEY_GRP_SEARCH 0x00000800
+#define KEY_GRP_LINK   0x00001000
+#define KEY_GRP_SETATTR        0x00002000
+#define KEY_GRP_ALL    0x00003f00
+#define KEY_OTH_VIEW   0x00000001
+#define KEY_OTH_READ   0x00000002
+#define KEY_OTH_WRITE  0x00000004
+#define KEY_OTH_SEARCH 0x00000008
+#define KEY_OTH_LINK   0x00000010
+#define KEY_OTH_SETATTR        0x00000020
+#define KEY_OTH_ALL    0x0000003f
+
+#include "xlat/key_perms.h"
+
+static int
+keyctl_setperm_key(struct tcb *tcp, key_serial_t id, uint32_t perm)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               print_keyring_serial_number(id);
+               tprints(", ");
+               printflags(key_perms, perm, "KEY_???");
+       }
+       return 0;
+}
+
+#include "xlat/key_reqkeys.h"
+
+static int
+keyctl_set_reqkey_keyring(struct tcb *tcp, int reqkey)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+               printxval(key_reqkeys, reqkey, "KEY_REQKEY_DEFL_???");
+       }
+       return 0;
+}
+
+#include "xlat/keyctl_commands.h"
+
+int
+sys_keyctl(struct tcb *tcp)
+{
+       int cmd = tcp->u_arg[0];
+
+       if (entering(tcp))
+               printxval(keyctl_commands, cmd, "KEYCTL_???");
+
+       switch (cmd) {
+       case KEYCTL_GET_KEYRING_ID:
+               return keyctl_get_keyring_id(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+
+       case KEYCTL_JOIN_SESSION_KEYRING:
+               return keyctl_join_session_keyring(tcp, tcp->u_arg[1]);
+
+       case KEYCTL_UPDATE:
+               return keyctl_update_key(tcp, tcp->u_arg[1],
+                                        tcp->u_arg[2], tcp->u_arg[3]);
+
+       case KEYCTL_REVOKE:
+       case KEYCTL_CLEAR:
+       case KEYCTL_INVALIDATE:
+       case KEYCTL_ASSUME_AUTHORITY:
+               return keyctl_handle_key(tcp, tcp->u_arg[1]);
+
+       case KEYCTL_LINK:
+       case KEYCTL_UNLINK:
+               return keyctl_handle_key_key(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+
+       case KEYCTL_DESCRIBE:
+       case KEYCTL_READ:
+       case KEYCTL_GET_SECURITY:
+               return keyctl_read_key(tcp, tcp->u_arg[1],
+                                      tcp->u_arg[2], tcp->u_arg[3]);
+
+       case KEYCTL_SEARCH:
+               return keyctl_keyring_search(tcp, tcp->u_arg[1], tcp->u_arg[2],
+                                            tcp->u_arg[3], tcp->u_arg[4]);
+
+       case KEYCTL_CHOWN:
+               return keyctl_chown_key(tcp, tcp->u_arg[1],
+                                       tcp->u_arg[2], tcp->u_arg[3]);
+
+       case KEYCTL_SETPERM:
+               return keyctl_setperm_key(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+
+       case KEYCTL_INSTANTIATE:
+               return keyctl_instantiate_key(tcp, tcp->u_arg[1], tcp->u_arg[2],
+                                             tcp->u_arg[3], tcp->u_arg[4]);
+
+       case KEYCTL_NEGATE:
+               return keyctl_negate_key(tcp, tcp->u_arg[1],
+                                        tcp->u_arg[2], tcp->u_arg[3]);
+
+       case KEYCTL_SET_REQKEY_KEYRING:
+               return keyctl_set_reqkey_keyring(tcp, tcp->u_arg[1]);
+
+       case KEYCTL_SET_TIMEOUT:
+               return keyctl_set_timeout(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+
+       case KEYCTL_SESSION_TO_PARENT:
+               return 0;
+
+       case KEYCTL_REJECT:
+               return keyctl_reject_key(tcp, tcp->u_arg[1], tcp->u_arg[2],
+                                        tcp->u_arg[3], tcp->u_arg[4]);
+
+       case KEYCTL_INSTANTIATE_IOV:
+               return keyctl_instantiate_key_iov(tcp, tcp->u_arg[1],
+                                                 tcp->u_arg[2], tcp->u_arg[3],
+                                                 tcp->u_arg[4]);
+
+       case KEYCTL_GET_PERSISTENT:
+               return keyctl_get_persistent(tcp, tcp->u_arg[1], tcp->u_arg[2]);
+
+       default:
+               if (entering(tcp))
+                       tprintf(", %#lx, %#lx, %#lx, %#lx",
+                               tcp->u_arg[1], tcp->u_arg[2],
+                               tcp->u_arg[3], tcp->u_arg[4]);
+       }
+
+       return 0;
+}
diff --git a/ldt.c b/ldt.c
new file mode 100644 (file)
index 0000000..0376d2b
--- /dev/null
+++ b/ldt.c
@@ -0,0 +1,110 @@
+#include "defs.h"
+
+#if defined I386 || defined X86_64 || defined X32
+
+# include <asm/ldt.h>
+
+void
+print_user_desc(struct tcb *tcp, long addr)
+{
+       struct user_desc desc;
+
+       if (umove(tcp, addr, &desc) < 0) {
+               tprintf("%lx", addr);
+               return;
+       }
+
+       if (!verbose(tcp)) {
+               tprintf("{entry_number:%d, ...}", desc.entry_number);
+               return;
+       }
+
+       tprintf("{entry_number:%d, "
+               "base_addr:%#08x, "
+               "limit:%d, "
+               "seg_32bit:%d, "
+               "contents:%d, "
+               "read_exec_only:%d, "
+               "limit_in_pages:%d, "
+               "seg_not_present:%d, "
+               "useable:%d}",
+               desc.entry_number,
+               desc.base_addr,
+               desc.limit,
+               desc.seg_32bit,
+               desc.contents,
+               desc.read_exec_only,
+               desc.limit_in_pages,
+               desc.seg_not_present,
+               desc.useable);
+}
+
+int
+sys_modify_ldt(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               tprintf("%ld, ", tcp->u_arg[0]);
+               if (tcp->u_arg[1] == 0
+                   || tcp->u_arg[2] != sizeof(struct user_desc)) {
+                       tprintf("%lx", tcp->u_arg[1]);
+               } else {
+                       print_user_desc(tcp, tcp->u_arg[1]);
+               }
+               tprintf(", %lu", tcp->u_arg[2]);
+       }
+       return 0;
+}
+
+int
+sys_set_thread_area(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               print_user_desc(tcp, tcp->u_arg[0]);
+       } else {
+               struct user_desc desc;
+
+               if (syserror(tcp) || umove(tcp, tcp->u_arg[0], &desc) < 0) {
+                       /* returned entry_number is not available */
+               } else {
+                       static char outstr[32];
+
+                       sprintf(outstr, "entry_number:%d", desc.entry_number);
+                       tcp->auxstr = outstr;
+                       return RVAL_STR;
+               }
+       }
+       return 0;
+}
+
+int
+sys_get_thread_area(struct tcb *tcp)
+{
+       if (exiting(tcp)) {
+               if (syserror(tcp))
+                       tprintf("%lx", tcp->u_arg[0]);
+               else
+                       print_user_desc(tcp, tcp->u_arg[0]);
+       }
+       return 0;
+}
+
+#endif /* I386 || X86_64 || X32 */
+
+#if defined(M68K) || defined(MIPS)
+int
+sys_set_thread_area(struct tcb *tcp)
+{
+       if (entering(tcp))
+               tprintf("%#lx", tcp->u_arg[0]);
+       return 0;
+
+}
+#endif
+
+#if defined(M68K)
+int
+sys_get_thread_area(struct tcb *tcp)
+{
+       return RVAL_HEX;
+}
+#endif
index e772a5e..c7c1496 100644 (file)
@@ -91,8 +91,8 @@
        { 2,    0,      sys_capget,                     "capget"                        }, /*   90 */
        { 2,    0,      sys_capset,                     "capset"                        }, /*   91 */
        { 1,    0,      sys_personality,                "personality"                   }, /*   92 */
-       { 1,    TP,     sys_exit,                       "exit"                          }, /*   93 */
-       { 1,    TP,     sys_exit,                       "exit_group"                    }, /*   94 */
+       { 1,    TP|SE,  sys_exit,                       "exit"                          }, /*   93 */
+       { 1,    TP|SE,  sys_exit,                       "exit_group"                    }, /*   94 */
        { 5,    TP,     sys_waitid,                     "waitid"                        }, /*   95 */
        { 1,    0,      sys_set_tid_address,            "set_tid_address"               }, /*   96 */
        { 1,    TP,     sys_unshare,                    "unshare"                       }, /*   97 */
        { 4,    TI,     sys_semop,                      "semop"                         }, /*  193 */
        { 4,    TI,     sys_shmget,                     "shmget"                        }, /*  194 */
        { 4,    TI,     sys_shmctl,                     "shmctl"                        }, /*  195 */
-       { 4,    TI,     sys_shmat,                      "shmat"                         }, /*  196 */
-       { 4,    TI,     sys_shmdt,                      "shmdt"                         }, /*  197 */
+       { 4,    TI|TM|SI,       sys_shmat,                      "shmat"                         }, /*  196 */
+       { 4,    TI|TM|SI,       sys_shmdt,                      "shmdt"                         }, /*  197 */
        { 3,    TN,     sys_socket,                     "socket"                        }, /*  198 */
        { 4,    TN,     sys_socketpair,                 "socketpair"                    }, /*  199 */
        { 3,    TN,     sys_bind,                       "bind"                          }, /*  200 */
        { 3,    TN,     sys_sendmsg,                    "sendmsg"                       }, /*  211 */
        { 3,    TN,     sys_recvmsg,                    "recvmsg"                       }, /*  212 */
        { 3,    TD,     sys_readahead,                  "readahead"                     }, /*  213 */
-       { 1,    TM,     sys_brk,                        "brk"                           }, /*  214 */
-       { 2,    TM,     sys_munmap,                     "munmap"                        }, /*  215 */
-       { 5,    TM,     sys_mremap,                     "mremap"                        }, /*  216 */
+       { 1,    TM|SI,  sys_brk,                        "brk"                           }, /*  214 */
+       { 2,    TM|SI,  sys_munmap,                     "munmap"                        }, /*  215 */
+       { 5,    TM|SI,  sys_mremap,                     "mremap"                        }, /*  216 */
        { 5,    0,      sys_add_key,                    "add_key"                       }, /*  217 */
        { 4,    0,      sys_request_key,                "request_key"                   }, /*  218 */
        { 5,    0,      sys_keyctl,                     "keyctl"                        }, /*  219 */
        { 5,    TP,     sys_clone,                      "clone"                         }, /*  220 */
-       { 3,    TF|TP,  sys_execve,                     "execve"                        }, /*  221 */
-       { 6,    TD|TM,  sys_mmap,                       "mmap"                          }, /*  222 */
+       { 3,    TF|TP|SE|SI,    sys_execve,                     "execve"                        }, /*  221 */
+       { 6,    TD|TM|SI,       sys_mmap,                       "mmap"                          }, /*  222 */
        { 4,    TD,     sys_fadvise64,                  "fadvise64"                     }, /*  223 */
        { 2,    TF,     sys_swapon,                     "swapon"                        }, /*  224 */
        { 1,    TF,     sys_swapoff,                    "swapoff"                       }, /*  225 */
-       { 3,    TM,     sys_mprotect,                   "mprotect"                      }, /*  226 */
+       { 3,    TM|SI,  sys_mprotect,                   "mprotect"                      }, /*  226 */
        { 3,    TM,     sys_msync,                      "msync"                         }, /*  227 */
        { 3,    TM,     sys_msync,                      "msync"                         }, /*  228 */
        { 2,    TM,     sys_munlock,                    "munlock"                       }, /*  229 */
        { 0,    TM,     sys_munlockall,                 "munlockall"                    }, /*  231 */
        { 3,    TM,     sys_mincore,                    "mincore"                       }, /*  232 */
        { 3,    TM,     sys_madvise,                    "madvise"                       }, /*  233 */
-       { 5,    TM,     sys_remap_file_pages,           "remap_file_pages"              }, /*  234 */
+       { 5,    TM|SI,  sys_remap_file_pages,           "remap_file_pages"              }, /*  234 */
        { 6,    TM,     sys_mbind,                      "mbind"                         }, /*  235 */
        { 5,    TM,     sys_get_mempolicy,              "get_mempolicy"                 }, /*  236 */
        { 3,    TM,     sys_set_mempolicy,              "set_mempolicy"                 }, /*  237 */
        { 4,    TN,     sys_sendmmsg,                   "sendmmsg"                      }, /*  269 */
        { 6,    0,      sys_process_vm_readv,           "process_vm_readv"              }, /*  270 */
        { 6,    0,      sys_process_vm_writev,          "process_vm_writev"             }, /*  271 */
+       { 5,    0,      sys_kcmp,                       "kcmp"                          }, /*  272 */
+       { 3,    TD,     sys_finit_module,               "finit_module"                  }, /*  273 */
+       { 3,    0,      sys_sched_setattr,              "sched_setattr"                 }, /*  274 */
+       { 4,    0,      sys_sched_getattr,              "sched_getattr"                 }, /*  275 */
+       { 5,    TD|TF,  sys_renameat2,                  "renameat2"                     }, /*  276 */
 
        /* Blank down to 1023 */
-       [272 ... 1023] = { },
+       [277 ... 1023] = { },
 
        /* Quote from asm-generic/unistd.h:
         *
        { 2,    TD,     sys_fstatfs,                    "fstatfs"                       }, /* 1055 */
        { 2,    TF,     sys_statfs,                     "statfs"                        }, /* 1056 */
        { 3,    TD,     sys_lseek,                      "lseek"                         }, /* 1057 */
-       { 6,    TD|TM,  sys_mmap,                       "mmap"                          }, /* 1058 */
+       { 6,    TD|TM|SI,       sys_mmap,                       "mmap"                          }, /* 1058 */
        { 1,    0,      sys_alarm,                      "alarm"                         }, /* 1059 */
        { 0,    0,      sys_getpgrp,                    "getpgrp"                       }, /* 1060 */
        { 0,    TS,     sys_pause,                      "pause"                         }, /* 1061 */
index 28e2eeb..408854e 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 6,    0,      printargs,              "osf_syscall"           }, /* 0, not implemented */
-       { 1,    TP,     sys_exit,               "exit"                  }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "exit"                  }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"                  }, /* 2 */
        { 3,    TD,     sys_read,               "read"                  }, /* 3 */
        { 3,    TD,     sys_write,              "write"                 }, /* 4 */
@@ -43,7 +43,7 @@
        { 3,    TF,     sys_mknod,              "mknod"                 }, /* 14 */
        { 2,    TF,     sys_chmod,              "chmod"                 }, /* 15 */
        { 3,    TF,     sys_chown,              "chown"                 }, /* 16 */
-       { 1,    TM,     sys_brk,                "brk"                   }, /* 17 */
+       { 1,    TM|SI,  sys_brk,                "brk"                   }, /* 17 */
        { 5,    0,      printargs,              "osf_getfsstat"         }, /* 18, not implemented */
        { 3,    TD,     sys_lseek,              "lseek"                 }, /* 19 */
        { 0,    0,      sys_getpid,             "getxpid"               }, /* 20 */
        { 5,    0,      printargs,              "osf_revoke"            }, /* 56, not implemented */
        { 2,    TF,     sys_symlink,            "symlink"               }, /* 57 */
        { 3,    TF,     sys_readlink,           "readlink"              }, /* 58 */
-       { 3,    TF|TP,  sys_execve,             "execve"                }, /* 59 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"                }, /* 59 */
        { 1,    0,      sys_umask,              "umask"                 }, /* 60 */
        { 1,    TF,     sys_chroot,             "chroot"                }, /* 61 */
        { 5,    0,      printargs,              "osf_old_fstat"         }, /* 62, not implemented */
        { 0,    0,      sys_getpgrp,            "getpgrp"               }, /* 63 */
        { 0,    0,      sys_getpagesize,        "getpagesize"           }, /* 64 */
        { 5,    TM,     printargs,              "osf_mremap"            }, /* 65, not implemented */
-       { 0,    TP,     sys_fork,               "vfork"                 }, /* 66 */
+       { 0,    TP,     sys_vfork,              "vfork"                 }, /* 66 */
        { 2,    TF,     sys_stat,               "stat"                  }, /* 67 */
        { 2,    TF,     sys_lstat,              "lstat"                 }, /* 68 */
        { 5,    TM,     printargs,              "osf_sbrk"              }, /* 69, not implemented */
        { 5,    0,      printargs,              "osf_sstk"              }, /* 70, not implemented */
-       { 6,    TD|TM,  sys_mmap,               "mmap"                  }, /* 71 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"                  }, /* 71 */
        { 5,    0,      printargs,              "osf_old_vadvise"       }, /* 72, not implemented */
-       { 2,    TM,     sys_munmap,             "munmap"                }, /* 73 */
-       { 3,    TM,     sys_mprotect,           "mprotect"              }, /* 74 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"                }, /* 73 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"              }, /* 74 */
        { 3,    TM,     sys_madvise,            "madvise"               }, /* 75 */
        { 0,    0,      sys_vhangup,            "vhangup"               }, /* 76 */
        { 5,    0,      printargs,              "osf_kmodcall"          }, /* 77, not implemented */
        { 4,    TI,     printargs,              "semop"                 }, /* 206 */
        { 1,    0,      printargs,              "osf_utsname"           }, /* 207 */
        { 3,    TF,     sys_chown,              "lchown"                }, /* 208 */
-       { 3,    TI,     printargs,              "osf_shmat"             }, /* 209 */
+       { 3,    TI|TM,  printargs,              "osf_shmat"             }, /* 209 */
        { 4,    TI,     sys_shmctl,             "shmctl"                }, /* 210 */
-       { 4,    TI,     sys_shmdt,              "shmdt"                 }, /* 211 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"                 }, /* 211 */
        { 4,    TI,     sys_shmget,             "shmget"                }, /* 212 */
        { 5,    0,      printargs,              "osf_mvalid"            }, /* 213, not implemented */
        { 5,    0,      printargs,              "osf_getaddressconf"    }, /* 214, not implemented */
        { 5,    0,      sys_afs_syscall,        "afs_syscall"           }, /* 338 */
        { 1,    0,      sys_uname,              "uname"                 }, /* 339 */
        { 2,    0,      sys_nanosleep,          "nanosleep"             }, /* 340 */
-       { 5,    TM,     sys_mremap,             "mremap"                }, /* 341 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"                }, /* 341 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"            }, /* 342 */
        { 3,    0,      sys_setresuid,          "setresuid"             }, /* 343 */
        { 3,    0,      sys_getresuid,          "getresuid"             }, /* 344 */
        { 4,    TD,     sys_pread,              "pread"                 }, /* 349 */
        { 4,    TD,     sys_pwrite,             "pwrite"                }, /* 350 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"          }, /* 351 */
-       { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"          }, /* 352 */
+       { 5,    TS,     sys_rt_sigaction,       "rt_sigaction"          }, /* 352 */
        { 4,    TS,     sys_rt_sigprocmask,     "rt_sigprocmask"        }, /* 353 */
        { 2,    TS,     sys_rt_sigpending,      "rt_sigpending"         }, /* 354 */
        { 4,    TS,     sys_rt_sigtimedwait,    "rt_sigtimedwait"       }, /* 355 */
        { 3,    0,      sys_io_cancel,          "io_cancel"             }, /* 402 */
        { 5,    0,      NULL,                   NULL                    }, /* 403 */
        { 5,    0,      NULL,                   NULL                    }, /* 404 */
-       { 1,    TP,     sys_exit,               "exit_group"            }, /* 405 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"            }, /* 405 */
        { 3,    0,      sys_lookup_dcookie,     "lookup_dcookie"        }, /* 406 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"          }, /* 407 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"             }, /* 408 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"            }, /* 409 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"      }, /* 410 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"      }, /* 410 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"       }, /* 411 */
        { 0,    0,      sys_restart_syscall,    "restart_syscall"       }, /* 412 */
        { 4,    TD,     sys_fadvise64,          "fadvise"               }, /* 413 */
        { 5,    0,      sys_mq_timedreceive,    "mq_timedreceive"       }, /* 435 */
        { 2,    0,      sys_mq_notify,          "mq_notify"             }, /* 436 */
        { 3,    0,      sys_mq_getsetattr,      "mq_getsetattr"         }, /* 437 */
-       { 4,    0,      printargs,              "waitid"                }, /* 438 */
+       { 5,    TP,     sys_waitid,             "waitid"                }, /* 438 */
        { 5,    0,      sys_add_key,            "add_key"               }, /* 439 */
        { 4,    0,      sys_request_key,        "request_key"           }, /* 440 */
        { 5,    0,      sys_keyctl,             "keyctl"                }, /* 441 */
        { 4,    TN,     sys_sendmmsg,           "sendmmsg"              }, /* 503 */
        { 6,    0,      sys_process_vm_readv,   "process_vm_readv"      }, /* 504 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 505 */
+       { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 506 */
+       { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 507 */
diff --git a/linux/arc/ioctlent.h.in b/linux/arc/ioctlent.h.in
new file mode 100644 (file)
index 0000000..52ac99b
--- /dev/null
@@ -0,0 +1 @@
+#include "../i386/ioctlent.h.in"
diff --git a/linux/arc/syscallent.h b/linux/arc/syscallent.h
new file mode 100644 (file)
index 0000000..6bc9f27
--- /dev/null
@@ -0,0 +1,264 @@
+       { 2,    0,      sys_io_setup,                   "io_setup"              }, /* 0 */
+       { 1,    0,      sys_io_destroy,                 "io_destroy"            }, /* 1 */
+       { 3,    0,      sys_io_submit,                  "io_submit"             }, /* 2 */
+       { 3,    0,      sys_io_cancel,                  "io_cancel"             }, /* 3 */
+       { 5,    0,      sys_io_getevents,               "io_getevents"          }, /* 4 */
+       { 5,    TF,     sys_setxattr,                   "setxattr"              }, /* 5 */
+       { 5,    TF,     sys_setxattr,                   "lsetxattr"             }, /* 6 */
+       { 5,    TD,     sys_fsetxattr,                  "fsetxattr"             }, /* 7 */
+       { 4,    TF,     sys_getxattr,                   "getxattr"              }, /* 8 */
+       { 4,    TF,     sys_getxattr,                   "lgetxattr"             }, /* 9 */
+       { 4,    TD,     sys_fgetxattr,                  "fgetxattr"             }, /* 10 */
+       { 3,    TF,     sys_listxattr,                  "listxattr"             }, /* 11 */
+       { 3,    TF,     sys_listxattr,                  "llistxattr"            }, /* 12 */
+       { 3,    TD,     sys_flistxattr,                 "flistxattr"            }, /* 13 */
+       { 2,    TF,     sys_removexattr,                "removexattr"           }, /* 14 */
+       { 2,    TF,     sys_removexattr,                "lremovexattr"          }, /* 15 */
+       { 2,    TD,     sys_fremovexattr,               "fremovexattr"          }, /* 16 */
+       { 2,    TF,     sys_getcwd,                     "getcwd"                }, /* 17 */
+       { 4,    0,      sys_lookup_dcookie,             "lookup_dcookie"        }, /* 18 */
+       { 2,    TD,     sys_eventfd2,                   "eventfd2"              }, /* 19 */
+       { 1,    TD,     sys_epoll_create1,              "epoll_create1"         }, /* 20 */
+       { 4,    TD,     sys_epoll_ctl,                  "epoll_ctl"             }, /* 21 */
+       { 6,    TD,     sys_epoll_pwait,                "epoll_pwait"           }, /* 22 */
+       { 1,    TD,     sys_dup,                        "dup"                   }, /* 23 */
+       { 3,    TD,     sys_dup3,                       "dup3"                  }, /* 24 */
+       { 3,    TD,     sys_fcntl,                      "fcntl64"               }, /* 25 */
+       { 1,    TD,     sys_inotify_init1,              "inotify_init1"         }, /* 26 */
+       { 3,    TD,     sys_inotify_add_watch,          "inotify_add_watch"     }, /* 27 */
+       { 2,    TD,     sys_inotify_rm_watch,           "inotify_rm_watch"      }, /* 28 */
+       { 3,    TD,     sys_ioctl,                      "ioctl"                 }, /* 29 */
+       { 3,    0,      sys_ioprio_set,                 "ioprio_set"            }, /* 30 */
+       { 2,    0,      sys_ioprio_get,                 "ioprio_get"            }, /* 31 */
+       { 2,    TD,     sys_flock,                      "flock"                 }, /* 32 */
+       { 4,    TD|TF,  sys_mknodat,                    "mknodat"               }, /* 33 */
+       { 3,    TD|TF,  sys_mkdirat,                    "mkdirat"               }, /* 34 */
+       { 3,    TD|TF,  sys_unlinkat,                   "unlinkat"              }, /* 35 */
+       { 3,    TD|TF,  sys_symlinkat,                  "symlinkat"             }, /* 36 */
+       { 5,    TD|TF,  sys_linkat,                     "linkat"                }, /* 37 */
+       { 4,    TD|TF,  sys_renameat,                   "renameat"              }, /* 38 */
+       { 2,    TF,     sys_umount2,                    "umount2"               }, /* 39 */
+       { 5,    TF,     sys_mount,                      "mount"                 }, /* 40 */
+       { 2,    TF,     sys_pivotroot,                  "pivot_root"            }, /* 41 */
+       {                                                                       }, /* 42 */
+       { 3,    TF,     sys_statfs64,                   "statfs64"              }, /* 43 */
+       { 3,    TD,     sys_fstatfs64,                  "fstatfs64"             }, /* 44 */
+       { 3,    TF,     sys_truncate64,                 "truncate64"            }, /* 45 */
+       { 3,    TD,     sys_ftruncate64,                "ftruncate64"           }, /* 46 */
+       { 6,    TD,     sys_fallocate,                  "fallocate"             }, /* 47 */
+       { 3,    TD|TF,  sys_faccessat,                  "faccessat"             }, /* 48 */
+       { 1,    TF,     sys_chdir,                      "chdir"                 }, /* 49 */
+       { 1,    TD,     sys_fchdir,                     "fchdir"                }, /* 50 */
+       { 1,    TF,     sys_chroot,                     "chroot"                }, /* 51 */
+       { 2,    TD,     sys_fchmod,                     "fchmod"                }, /* 52 */
+       { 3,    TD|TF,  sys_fchmodat,                   "fchmodat"              }, /* 53 */
+       { 5,    TD|TF,  sys_fchownat,                   "fchownat"              }, /* 54 */
+       { 3,    TD,     sys_fchown,                     "fchown"                }, /* 55 */
+       { 4,    TD|TF,  sys_openat,                     "openat"                }, /* 56 */
+       { 1,    TD,     sys_close,                      "close"                 }, /* 57 */
+       { 0,    0,      sys_vhangup,                    "vhangup"               }, /* 58 */
+       { 2,    TD,     sys_pipe2,                      "pipe2"                 }, /* 59 */
+       { 4,    TF,     sys_quotactl,                   "quotactl"              }, /* 60 */
+       { 3,    TD,     sys_getdents64,                 "getdents64"            }, /* 61 */
+       { 5,    TD,     sys_llseek,                     "_llseek"               }, /* 62 */
+       { 3,    TD,     sys_read,                       "read"                  }, /* 63 */
+       { 3,    TD,     sys_write,                      "write"                 }, /* 64 */
+       { 3,    TD,     sys_readv,                      "readv"                 }, /* 65 */
+       { 3,    TD,     sys_writev,                     "writev"                }, /* 66 */
+       { 5,    TD,     sys_pread,                      "pread64"               }, /* 67 */
+       { 5,    TD,     sys_pwrite,                     "pwrite64"              }, /* 68 */
+       { 5,    TD,     sys_preadv,                     "preadv"                }, /* 69 */
+       { 5,    TD,     sys_pwritev,                    "pwritev"               }, /* 70 */
+       { 4,    TD|TN,  sys_sendfile64,                 "sendfile"              }, /* 71 */
+       { 6,    TD,     sys_pselect6,                   "pselect6"              }, /* 72 */
+       { 5,    TD,     sys_ppoll,                      "ppoll"                 }, /* 73 */
+       { 4,    TD|TS,  sys_signalfd4,                  "signalfd4"             }, /* 74 */
+       { 4,    TD,     sys_vmsplice,                   "vmsplice"              }, /* 75 */
+       { 6,    TD,     sys_splice,                     "splice"                }, /* 76 */
+       { 4,    TD,     sys_tee,                        "tee"                   }, /* 77 */
+       { 4,    TD|TF,  sys_readlinkat,                 "readlinkat"            }, /* 78 */
+       { 4,    TD|TF,  sys_newfstatat,                 "fstatat64"             }, /* 79 */
+       { 2,    TD,     sys_fstat64,                    "fstat64"               }, /* 80 */
+       { 0,    0,      sys_sync,                       "sync"                  }, /* 81 */
+       { 1,    TD,     sys_fsync,                      "fsync"                 }, /* 82 */
+       { 1,    TD,     sys_fdatasync,                  "fdatasync"             }, /* 83 */
+       { 6,    TD,     sys_sync_file_range,            "sync_file_range"       }, /* 84 */
+       { 2,    TD,     sys_timerfd_create,             "timerfd_create"        }, /* 85 */
+       { 4,    TD,     sys_timerfd_settime,            "timerfd_settime"       }, /* 86 */
+       { 2,    TD,     sys_timerfd_gettime,            "timerfd_gettime"       }, /* 87 */
+       { 4,    TD|TF,  sys_utimensat,                  "utimensat"             }, /* 88 */
+       { 1,    TF,     sys_acct,                       "acct"                  }, /* 89 */
+       { 2,    0,      sys_capget,                     "capget"                }, /* 90 */
+       { 2,    0,      sys_capset,                     "capset"                }, /* 91 */
+       { 1,    0,      sys_personality,                "personality"           }, /* 92 */
+       { 1,    TP|SE,  sys_exit,                       "exit"                  }, /* 93 */
+       { 1,    TP|SE,  sys_exit,                       "exit_group"            }, /* 94 */
+       { 5,    TP,     sys_waitid,                     "waitid"                }, /* 95 */
+       { 1,    0,      sys_set_tid_address,            "set_tid_address"       }, /* 96 */
+       { 1,    TP,     sys_unshare,                    "unshare"               }, /* 97 */
+       { 6,    0,      sys_futex,                      "futex"                 }, /* 98 */
+       { 2,    0,      sys_set_robust_list,            "set_robust_list"       }, /* 99 */
+       { 3,    0,      sys_get_robust_list,            "get_robust_list"       }, /* 100 */
+       { 2,    0,      sys_nanosleep,                  "nanosleep"             }, /* 101 */
+       { 2,    0,      sys_getitimer,                  "getitimer"             }, /* 102 */
+       { 3,    0,      sys_setitimer,                  "setitimer"             }, /* 103 */
+       { 4,    0,      sys_kexec_load,                 "kexec_load"            }, /* 104 */
+       { 3,    0,      sys_init_module,                "init_module"           }, /* 105 */
+       { 2,    0,      sys_delete_module,              "delete_module"         }, /* 106 */
+       { 3,    0,      sys_timer_create,               "timer_create"          }, /* 107 */
+       { 2,    0,      sys_timer_gettime,              "timer_gettime"         }, /* 108 */
+       { 1,    0,      sys_timer_getoverrun,           "timer_getoverrun"      }, /* 109 */
+       { 4,    0,      sys_timer_settime,              "timer_settime"         }, /* 110 */
+       { 1,    0,      sys_timer_delete,               "timer_delete"          }, /* 111 */
+       { 2,    0,      sys_clock_settime,              "clock_settime"         }, /* 112 */
+       { 2,    0,      sys_clock_gettime,              "clock_gettime"         }, /* 113 */
+       { 2,    0,      sys_clock_getres,               "clock_getres"          }, /* 114 */
+       { 4,    0,      sys_clock_nanosleep,            "clock_nanosleep"       }, /* 115 */
+       { 3,    0,      sys_syslog,                     "syslog"                }, /* 116 */
+       { 4,    0,      sys_ptrace,                     "ptrace"                }, /* 117 */
+       { 2,    0,      sys_sched_setparam,             "sched_setparam"        }, /* 118 */
+       { 3,    0,      sys_sched_setscheduler,         "sched_setscheduler"    }, /* 119 */
+       { 1,    0,      sys_sched_getscheduler,         "sched_getscheduler"    }, /* 120 */
+       { 2,    0,      sys_sched_getparam,             "sched_getparam"        }, /* 121 */
+       { 3,    0,      sys_sched_setaffinity,          "sched_setaffinity"     }, /* 122 */
+       { 3,    0,      sys_sched_getaffinity,          "sched_getaffinity"     }, /* 123 */
+       { 0,    0,      sys_sched_yield,                "sched_yield"           }, /* 124 */
+       { 1,    0,      sys_sched_get_priority_max,     "sched_get_priority_max"}, /* 125 */
+       { 1,    0,      sys_sched_get_priority_min,     "sched_get_priority_min"}, /* 126 */
+       { 2,    0,      sys_sched_rr_get_interval,      "sched_rr_get_interval" }, /* 127 */
+       { 0,    0,      sys_restart_syscall,            "restart_syscall"       }, /* 128 */
+       { 2,    TS,     sys_kill,                       "kill"                  }, /* 129 */
+       { 2,    TS,     sys_kill,                       "tkill"                 }, /* 130 */
+       { 3,    TS,     sys_tgkill,                     "tgkill"                }, /* 131 */
+       { 2,    TS,     sys_sigaltstack,                "sigaltstack"           }, /* 132 */
+       { 2,    TS,     sys_rt_sigsuspend,              "rt_sigsuspend"         }, /* 133 */
+       { 4,    TS,     sys_rt_sigaction,               "rt_sigaction"          }, /* 134 */
+       { 4,    TS,     sys_rt_sigprocmask,             "rt_sigprocmask"        }, /* 135 */
+       { 2,    TS,     sys_rt_sigpending,              "rt_sigpending"         }, /* 136 */
+       { 4,    TS,     sys_rt_sigtimedwait,            "rt_sigtimedwait"       }, /* 137 */
+       { 3,    TS,     sys_rt_sigqueueinfo,            "rt_sigqueueinfo"       }, /* 138 */
+       { 0,    TS,     sys_rt_sigreturn,               "rt_sigreturn"          }, /* 139 */
+       { 3,    0,      sys_setpriority,                "setpriority"           }, /* 140 */
+       { 2,    0,      sys_getpriority,                "getpriority"           }, /* 141 */
+       { 4,    0,      sys_reboot,                     "reboot"                }, /* 142 */
+       { 2,    0,      sys_setregid,                   "setregid"              }, /* 143 */
+       { 1,    0,      sys_setgid,                     "setgid"                }, /* 144 */
+       { 2,    0,      sys_setreuid,                   "setreuid"              }, /* 145 */
+       { 1,    0,      sys_setuid,                     "setuid"                }, /* 146 */
+       { 3,    0,      sys_setresuid,                  "setresuid"             }, /* 147 */
+       { 3,    0,      sys_getresuid,                  "getresuid"             }, /* 148 */
+       { 3,    0,      sys_setresgid,                  "setresgid"             }, /* 149 */
+       { 3,    0,      sys_getresgid,                  "getresgid"             }, /* 150 */
+       { 1,    NF,     sys_setfsuid,                   "setfsuid"              }, /* 151 */
+       { 1,    NF,     sys_setfsgid,                   "setfsgid"              }, /* 152 */
+       { 1,    0,      sys_times,                      "times"                 }, /* 153 */
+       { 2,    0,      sys_setpgid,                    "setpgid"               }, /* 154 */
+       { 1,    0,      sys_getpgid,                    "getpgid"               }, /* 155 */
+       { 1,    0,      sys_getsid,                     "getsid"                }, /* 156 */
+       { 0,    0,      sys_setsid,                     "setsid"                }, /* 157 */
+       { 2,    0,      sys_getgroups,                  "getgroups"             }, /* 158 */
+       { 2,    0,      sys_setgroups,                  "setgroups"             }, /* 159 */
+       { 1,    0,      sys_uname,                      "uname"                 }, /* 160 */
+       { 2,    0,      sys_sethostname,                "sethostname"           }, /* 161 */
+       { 2,    0,      sys_setdomainname,              "setdomainname"         }, /* 162 */
+       { 2,    0,      sys_getrlimit,                  "getrlimit"             }, /* 163 */
+       { 2,    0,      sys_setrlimit,                  "setrlimit"             }, /* 164 */
+       { 2,    0,      sys_getrusage,                  "getrusage"             }, /* 165 */
+       { 1,    0,      sys_umask,                      "umask"                 }, /* 166 */
+       { 5,    0,      sys_prctl,                      "prctl"                 }, /* 167 */
+       { 3,    0,      sys_getcpu,                     "getcpu"                }, /* 168 */
+       { 2,    0,      sys_gettimeofday,               "gettimeofday"          }, /* 169 */
+       { 2,    0,      sys_settimeofday,               "settimeofday"          }, /* 170 */
+       { 1,    0,      sys_adjtimex,                   "adjtimex"              }, /* 171 */
+       { 0,    0,      sys_getpid,                     "getpid"                }, /* 172 */
+       { 0,    0,      sys_getppid,                    "getppid"               }, /* 173 */
+       { 0,    NF,     sys_getuid,                     "getuid"                }, /* 174 */
+       { 0,    NF,     sys_geteuid,                    "geteuid"               }, /* 175 */
+       { 0,    NF,     sys_getgid,                     "getgid"                }, /* 176 */
+       { 0,    NF,     sys_getegid,                    "getegid"               }, /* 177 */
+       { 0,    0,      sys_gettid,                     "gettid"                }, /* 178 */
+       { 1,    0,      sys_sysinfo,                    "sysinfo"               }, /* 179 */
+       { 4,    0,      sys_mq_open,                    "mq_open"               }, /* 180 */
+       { 1,    0,      sys_mq_unlink,                  "mq_unlink"             }, /* 181 */
+       { 5,    0,      sys_mq_timedsend,               "mq_timedsend"          }, /* 182 */
+       { 5,    0,      sys_mq_timedreceive,            "mq_timedreceive"       }, /* 183 */
+       { 2,    0,      sys_mq_notify,                  "mq_notify"             }, /* 184 */
+       { 3,    0,      sys_mq_getsetattr,              "mq_getsetattr"         }, /* 185 */
+       { 2,    TI,     sys_msgget,                     "msgget"                }, /* 186 */
+       { 3,    TI,     sys_msgctl,                     "msgctl"                }, /* 187 */
+       { 5,    TI,     sys_msgrcv,                     "msgrcv"                }, /* 188 */
+       { 4,    TI,     sys_msgsnd,                     "msgsnd"                }, /* 189 */
+       { 3,    TI,     sys_semget,                     "semget"                }, /* 190 */
+       { 4,    TI,     sys_semctl,                     "semctl"                }, /* 191 */
+       { 4,    TI,     sys_semtimedop,                 "semtimedop"            }, /* 192 */
+       { 3,    TI,     sys_semop,                      "semop"                 }, /* 193 */
+       { 3,    TI,     sys_shmget,                     "shmget"                }, /* 194 */
+       { 3,    TI,     sys_shmctl,                     "shmctl"                }, /* 195 */
+       { 3,    TI|TM|SI,       sys_shmat,                      "shmat"                 }, /* 196 */
+       { 1,    TI|TM|SI,       sys_shmdt,                      "shmdt"                 }, /* 197 */
+       { 3,    TN,     sys_socket,                     "socket"                }, /* 198 */
+       { 4,    TN,     sys_socketpair,                 "socketpair"            }, /* 199 */
+       { 3,    TN,     sys_bind,                       "bind"                  }, /* 200 */
+       { 2,    TN,     sys_listen,                     "listen"                }, /* 201 */
+       { 3,    TN,     sys_accept,                     "accept"                }, /* 202 */
+       { 3,    TN,     sys_connect,                    "connect"               }, /* 203 */
+       { 3,    TN,     sys_getsockname,                "getsockname"           }, /* 204 */
+       { 3,    TN,     sys_getpeername,                "getpeername"           }, /* 205 */
+       { 6,    TN,     sys_sendto,                     "sendto"                }, /* 206 */
+       { 6,    TN,     sys_recvfrom,                   "recvfrom"              }, /* 207 */
+       { 5,    TN,     sys_setsockopt,                 "setsockopt"            }, /* 208 */
+       { 5,    TN,     sys_getsockopt,                 "getsockopt"            }, /* 209 */
+       { 2,    TN,     sys_shutdown,                   "shutdown"              }, /* 210 */
+       { 3,    TN,     sys_sendmsg,                    "sendmsg"               }, /* 211 */
+       { 3,    TN,     sys_recvmsg,                    "recvmsg"               }, /* 212 */
+       { 4,    TD,     sys_readahead,                  "readahead"             }, /* 213 */
+       { 1,    TM|SI,  sys_brk,                        "brk"                   }, /* 214 */
+       { 2,    TM|SI,  sys_munmap,                     "munmap"                }, /* 215 */
+       { 5,    TM|SI,  sys_mremap,                     "mremap"                }, /* 216 */
+       { 5,    0,      sys_add_key,                    "add_key"               }, /* 217 */
+       { 4,    0,      sys_request_key,                "request_key"           }, /* 218 */
+       { 5,    0,      sys_keyctl,                     "keyctl"                }, /* 219 */
+       { 5,    TP,     sys_clone,                      "clone"                 }, /* 220 */
+       { 3,    TF|TP|SE|SI,    sys_execve,                     "execve"                }, /* 221 */
+       { 6,    TD|TM|SI,       sys_mmap,                       "mmap2"                 }, /* 222 */
+       { 6,    TD,     sys_fadvise64_64,               "fadvise64_64"          }, /* 223 */
+       { 2,    TF,     sys_swapon,                     "swapon"                }, /* 224 */
+       { 1,    TF,     sys_swapoff,                    "swapoff"               }, /* 225 */
+       { 3,    TM|SI,  sys_mprotect,                   "mprotect"              }, /* 226 */
+       { 3,    TM,     sys_msync,                      "msync"                 }, /* 227 */
+       { 2,    TM,     sys_mlock,                      "mlock"                 }, /* 228 */
+       { 2,    TM,     sys_munlock,                    "munlock"               }, /* 229 */
+       { 1,    TM,     sys_mlockall,                   "mlockall"              }, /* 230 */
+       { 0,    TM,     sys_munlockall,                 "munlockall"            }, /* 231 */
+       { 3,    TM,     sys_mincore,                    "mincore"               }, /* 232 */
+       { 3,    TM,     sys_madvise,                    "madvise"               }, /* 233 */
+       { 5,    TM|SI,  sys_remap_file_pages,           "remap_file_pages"      }, /* 234 */
+       { 6,    TM,     sys_mbind,                      "mbind"                 }, /* 235 */
+       { 5,    TM,     sys_get_mempolicy,              "get_mempolicy"         }, /* 236 */
+       { 3,    TM,     sys_set_mempolicy,              "set_mempolicy"         }, /* 237 */
+       { 4,    TM,     sys_migrate_pages,              "migrate_pages"         }, /* 238 */
+       { 6,    TM,     sys_move_pages,                 "move_pages"            }, /* 239 */
+       { 4,    TP|TS,  sys_rt_tgsigqueueinfo,          "rt_tgsigqueueinfo"     }, /* 240 */
+       { 5,    TD,     sys_perf_event_open,            "perf_event_open"       }, /* 241 */
+       { 4,    TN,     sys_accept4,                    "accept4"               }, /* 242 */
+       { 5,    TN,     sys_recvmmsg,                   "recvmmsg"              }, /* 243 */
+       { 3,    0,      printargs,                      "arc_cacheflush"        }, /* 244 */
+       { 1,    0,      printargs,                      "arc_settls"            }, /* 245 */
+       { 0,    0,      printargs,                      "arc_gettls"            }, /* 246 */
+
+       [247 ... 259] = { },
+
+       { 4,    TP,     sys_wait4,                      "wait4"                 }, /* 260 */
+       { 4,    0,      sys_prlimit64,                  "prlimit64"             }, /* 261 */
+       { 2,    TD,     sys_fanotify_init,              "fanotify_init"         }, /* 262 */
+       { 5,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"         }, /* 263 */
+       { 5,    TD|TF,  sys_name_to_handle_at,          "name_to_handle_at"     }, /* 264 */
+       { 3,    TD,     sys_open_by_handle_at,          "open_by_handle_at"     }, /* 265 */
+       { 2,    0,      sys_clock_adjtime,              "clock_adjtime"         }, /* 266 */
+       { 1,    TD,     sys_syncfs,                     "syncfs"                }, /* 267 */
+       { 2,    TD,     sys_setns,                      "setns"                 }, /* 268 */
+       { 4,    TN,     sys_sendmmsg,                   "sendmmsg"              }, /* 269 */
+       { 6,    0,      sys_process_vm_readv,           "process_vm_readv"      }, /* 270 */
+       { 6,    0,      sys_process_vm_writev,          "process_vm_writev"     }, /* 271 */
+       { 5,    0,      sys_kcmp,                       "kcmp"                  }, /* 272 */
+       { 3,    TD,     sys_finit_module,               "finit_module"          }, /* 273 */
index 132b22a..adaa172 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall"}, /* 0 */
-       { 1,    TP,     sys_exit,               "exit"          }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "exit"          }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 1,    TD|TM,  sys_old_mmap,           "old_mmap"      }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 1,    TD|TM|SI,       sys_old_mmap,           "old_mmap"      }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 3,    0,      sys_modify_ldt,         "modify_ldt"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_putpmsg,            "putpmsg"       }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      sys_getrlimit,          "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 192 */
        { 4,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 4,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 5,    0,      sys_io_getevents,       "io_getevents"  }, /* 245 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 246 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 247 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 248 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 248 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 249 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 250 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 251 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 252 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 253 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 253 */
        { 5,    0,      NULL,                   NULL            }, /* 254 */
        { 5,    0,      NULL,                   NULL            }, /* 255 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 256 */
        { 4,    TI,     sys_msgrcv,             "msgrcv"        }, /* 302 */
        { 4,    TI,     sys_msgget,             "msgget"        }, /* 303 */
        { 4,    TI,     sys_msgctl,             "msgctl"        }, /* 304 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 305 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 306 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 305 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 306 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 307 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 308 */
        { 5,    0,      sys_add_key,            "add_key"       }, /* 309 */
        { 3,    TD,     sys_dup3,               "dup3"          }, /* 358 */
        { 2,    TD,     sys_pipe2,              "pipe2"         }, /* 359 */
        { 1,    TD,     sys_inotify_init1,      "inotify_init1" }, /* 360 */
-       { 6,    TD,     sys_preadv,             "preadv"        }, /* 361 */
-       { 6,    TD,     sys_pwritev,            "pwritev"       }, /* 362 */
+       { 5,    TD,     sys_preadv,             "preadv"        }, /* 361 */
+       { 5,    TD,     sys_pwritev,            "pwritev"       }, /* 362 */
        { 4,    TP|TS,  sys_rt_tgsigqueueinfo,  "rt_tgsigqueueinfo"}, /* 363 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"}, /* 364 */
        { 5,    TN,     sys_recvmmsg,           "recvmmsg"      }, /* 365 */
        { 4,    TN,     sys_accept4,            "accept4"       }, /* 366 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 367 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 368 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 368 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 369 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 370 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 371 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 377 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 378 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 379 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 380 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 381 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 382 */
 #ifdef __ARM_EABI__
-# define ARM_LAST_ORDINARY_SYSCALL 379
+# define ARM_LAST_ORDINARY_SYSCALL 382
 #else
-       { 5,    0,      NULL,                   NULL            }, /* 380 */
-       { 5,    0,      NULL,                   NULL            }, /* 381 */
-       { 5,    0,      NULL,                   NULL            }, /* 382 */
        { 5,    0,      NULL,                   NULL            }, /* 383 */
        { 5,    0,      NULL,                   NULL            }, /* 384 */
        { 5,    0,      NULL,                   NULL            }, /* 385 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
 # define ARM_LAST_ORDINARY_SYSCALL 444
index 527d11a..b47653c 100644 (file)
@@ -26,7 +26,7 @@
  */
 
        { 0,    0,      sys_setup,              "setup"         }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -36,7 +36,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -70,7 +70,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 5,    TP,     sys_clone,              "clone"         }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 2,    TF,     sys_getcwd,             "getcwd"        }, /* 48 */
@@ -82,7 +82,7 @@
        { 3,    TD,     sys_ioctl,              "ioctl"         }, /* 54 */
        { 3,    TD,     sys_fcntl,              "fcntl"         }, /* 55 */
        { 2,    0,      sys_setpgid,            "setpgid"       }, /* 56 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 57 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 57 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 58 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 59 */
        { 2,    0,      sys_setreuid,           "setreuid"      }, /* 60 */
        { 5,    TD,     sys_pwrite,             "pwrite"        }, /* 87 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 88 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 89 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap"          }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap"          }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 2,    0,      sys_setdomainname,      "setdomainname" }, /* 110 */
        { 1,    0,      sys_uname,              "uname"         }, /* 111 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 112 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 113 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 113 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 114 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 115 */
        { 2,    0,      sys_delete_module,      "delete_module" }, /* 116 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 200 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 201 */
        { 5,    TD,     sys_fadvise64,          "fadvise64"     }, /* 202 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 203 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 203 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 204 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 205 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 206 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 207 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 208 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 208 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 209 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 210 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 211 */
        { 4,    TI,     sys_semop,              "semop"         }, /* 271 */
        { 4,    TI,     sys_semctl,             "semctl"        }, /* 272 */
        { 5,    TI,     sys_semtimedop,         "semtimedop"    }, /* 273 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 274 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 274 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 275 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 276 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 276 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 277 */
        { 4,    TD|TF,  sys_utimensat,          "utimensat"     }, /* 278 */
        { 3,    TD|TS,  sys_signalfd,           "signalfd"      }, /* 279 */
index cc03eaf..8df6a4d 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall"       }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 6,    TD|TM,  printargs,              "old_mmap"      }, /* 90: not implemented in kernel */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       printargs,              "old_mmap"      }, /* 90: not implemented in kernel */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 3,    0,      sys_modify_ldt,         "modify_ldt"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,     "sched_get_priority_min"        }, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,      "sched_rr_get_interval" }, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_putpmsg,            "putpmsg"       }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      sys_getrlimit,          "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 192 */
        { 3,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 3,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 249 */
        { 5,    0,      printargs,              "alloc_hugepages"       }, /* 250 */
        { 1,    0,      printargs,              "free_hugepages"        }, /* 251 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 252 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 252 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"        }, /* 253 */
        { 1,    0,      printargs,              "bfin_spinlock" }, /* 254 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 255 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 256 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 257 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"      }, /* 258 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"      }, /* 258 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"       }, /* 259 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 260 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 261 */
        { 4,    TI,     sys_msgget,             "msgget"        }, /* 335 */
        { 4,    TI,     sys_msgrcv,             "msgrcv"        }, /* 336 */
        { 4,    TI,     sys_msgsnd,             "msgsnd"        }, /* 337 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 338 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 338 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 339 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 340 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 340 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 341 */
        { 6,    TD,     sys_splice,             "splice"        }, /* 342 */
        { 6,    TD,     sys_sync_file_range,    "sync_file_range"       }, /* 343 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"       }, /* 369 */
        { 5,    TN,     sys_recvmmsg,           "recvmmsg"      }, /* 370 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 371 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 372 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 372 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 373 */
        { 3,    0,      sys_cacheflush,         "cacheflush"    }, /* 374 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"     }, /* 375 */
index 9d33fe1..31be7b7 100644 (file)
 #endif
 
 /* still unfinished */
-#define        sys_add_key             printargs
-#define        sys_fanotify_init       printargs
-#define        sys_fanotify_mark       printargs
-#define        sys_finit_module        printargs
 #define        sys_ioperm              printargs
 #define        sys_iopl                printargs
-#define        sys_ioprio_get          printargs
-#define        sys_ioprio_set          printargs
 #define        sys_kcmp                printargs
-#define        sys_kexec_load          printargs
-#define        sys_keyctl              printargs
 #define        sys_lookup_dcookie      printargs
 #define        sys_name_to_handle_at   printargs
 #define        sys_open_by_handle_at   printargs
-#define        sys_request_key         printargs
-#define        sys_sync_file_range     printargs
-#define        sys_sync_file_range2    printargs
+#define        sys_sched_getattr       printargs
+#define        sys_sched_setattr       printargs
 #define        sys_sysfs               printargs
 #define        sys_vm86old             printargs
 #define        sys_vm86                printargs
 
 /* machine-specific */
-#ifndef I386
-#define        sys_modify_ldt          printargs
-#ifndef M68K
-#define        sys_get_thread_area     printargs
-#define        sys_set_thread_area     printargs
-#endif
+#if !(defined I386 || defined X86_64 || defined X32)
+# define       sys_modify_ldt          printargs
+# ifndef M68K
+#  define      sys_get_thread_area     printargs
+#  ifndef MIPS
+#   define     sys_set_thread_area     printargs
+#  endif
+# endif
 #endif
 
 /* like another call */
 #define        sys_acct                sys_chdir
 #define        sys_chroot              sys_chdir
 #define        sys_clock_getres        sys_clock_gettime
-#define        sys_delete_module       sys_open
-#define        sys_dup                 sys_close
 #define        sys_fchdir              sys_close
 #define        sys_fdatasync           sys_close
 #define        sys_fsync               sys_close
@@ -88,7 +79,6 @@
 #define        sys_set_robust_list     sys_munmap
 #define        sys_setfsgid            sys_setfsuid
 #define        sys_setgid              sys_setuid
-#define        sys_setns               sys_inotify_rm_watch
 #define        sys_setregid            sys_setreuid
 #define        sys_setresgid           sys_setresuid
 #define        sys_swapoff             sys_chdir
@@ -97,6 +87,7 @@
 #define        sys_umount              sys_chdir
 #define        sys_unlink              sys_chdir
 #define        sys_uselib              sys_chdir
+#define        sys_vfork               sys_fork
 
 /* printargs does the right thing */
 #define        sys_getpgid             printargs
diff --git a/linux/fanotify.h b/linux/fanotify.h
new file mode 100644 (file)
index 0000000..f780e5a
--- /dev/null
@@ -0,0 +1,116 @@
+#ifndef _LINUX_FANOTIFY_H
+#define _LINUX_FANOTIFY_H
+
+#include <linux/types.h>
+
+/* the following events that user-space can register for */
+#define FAN_ACCESS             0x00000001      /* File was accessed */
+#define FAN_MODIFY             0x00000002      /* File was modified */
+#define FAN_CLOSE_WRITE                0x00000008      /* Writtable file closed */
+#define FAN_CLOSE_NOWRITE      0x00000010      /* Unwrittable file closed */
+#define FAN_OPEN               0x00000020      /* File was opened */
+
+#define FAN_Q_OVERFLOW         0x00004000      /* Event queued overflowed */
+
+#define FAN_OPEN_PERM          0x00010000      /* File open in perm check */
+#define FAN_ACCESS_PERM                0x00020000      /* File accessed in perm check */
+
+#define FAN_ONDIR              0x40000000      /* event occurred against dir */
+
+#define FAN_EVENT_ON_CHILD     0x08000000      /* interested in child events */
+
+/* helper events */
+#define FAN_CLOSE              (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE) /* close */
+
+/* flags used for fanotify_init() */
+#define FAN_CLOEXEC            0x00000001
+#define FAN_NONBLOCK           0x00000002
+
+/* These are NOT bitwise flags.  Both bits are used togther.  */
+#define FAN_CLASS_NOTIF                0x00000000
+#define FAN_CLASS_CONTENT      0x00000004
+#define FAN_CLASS_PRE_CONTENT  0x00000008
+#define FAN_ALL_CLASS_BITS     (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | \
+                                FAN_CLASS_PRE_CONTENT)
+
+#define FAN_UNLIMITED_QUEUE    0x00000010
+#define FAN_UNLIMITED_MARKS    0x00000020
+
+#define FAN_ALL_INIT_FLAGS     (FAN_CLOEXEC | FAN_NONBLOCK | \
+                                FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE |\
+                                FAN_UNLIMITED_MARKS)
+
+/* flags used for fanotify_modify_mark() */
+#define FAN_MARK_ADD           0x00000001
+#define FAN_MARK_REMOVE                0x00000002
+#define FAN_MARK_DONT_FOLLOW   0x00000004
+#define FAN_MARK_ONLYDIR       0x00000008
+#define FAN_MARK_MOUNT         0x00000010
+#define FAN_MARK_IGNORED_MASK  0x00000020
+#define FAN_MARK_IGNORED_SURV_MODIFY   0x00000040
+#define FAN_MARK_FLUSH         0x00000080
+
+#define FAN_ALL_MARK_FLAGS     (FAN_MARK_ADD |\
+                                FAN_MARK_REMOVE |\
+                                FAN_MARK_DONT_FOLLOW |\
+                                FAN_MARK_ONLYDIR |\
+                                FAN_MARK_MOUNT |\
+                                FAN_MARK_IGNORED_MASK |\
+                                FAN_MARK_IGNORED_SURV_MODIFY |\
+                                FAN_MARK_FLUSH)
+
+/*
+ * All of the events - we build the list by hand so that we can add flags in
+ * the future and not break backward compatibility.  Apps will get only the
+ * events that they originally wanted.  Be sure to add new events here!
+ */
+#define FAN_ALL_EVENTS (FAN_ACCESS |\
+                       FAN_MODIFY |\
+                       FAN_CLOSE |\
+                       FAN_OPEN)
+
+/*
+ * All events which require a permission response from userspace
+ */
+#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM |\
+                            FAN_ACCESS_PERM)
+
+#define FAN_ALL_OUTGOING_EVENTS        (FAN_ALL_EVENTS |\
+                                FAN_ALL_PERM_EVENTS |\
+                                FAN_Q_OVERFLOW)
+
+#define FANOTIFY_METADATA_VERSION      3
+
+struct fanotify_event_metadata {
+       __u32 event_len;
+       __u8 vers;
+       __u8 reserved;
+       __u16 metadata_len;
+       __aligned_u64 mask;
+       __s32 fd;
+       __s32 pid;
+};
+
+struct fanotify_response {
+       __s32 fd;
+       __u32 response;
+};
+
+/* Legit userspace responses to a _PERM event */
+#define FAN_ALLOW      0x01
+#define FAN_DENY       0x02
+/* No fd set in event */
+#define FAN_NOFD       -1
+
+/* Helper functions to deal with fanotify_event_metadata buffers */
+#define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata))
+
+#define FAN_EVENT_NEXT(meta, len) ((len) -= (meta)->event_len, \
+                                  (struct fanotify_event_metadata*)(((char *)(meta)) + \
+                                  (meta)->event_len))
+
+#define FAN_EVENT_OK(meta, len)        ((long)(len) >= (long)FAN_EVENT_METADATA_LEN && \
+                               (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN && \
+                               (long)(meta)->event_len <= (long)(len))
+
+#endif /* _LINUX_FANOTIFY_H */
index 4ce2dc2..0a58c5d 100644 (file)
@@ -3,7 +3,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall"       }, /* 0 */
-       { 1,    TP,     sys_exit,               "exit"                  }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "exit"                  }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"                  }, /* 2 */
        { 3,    TD,     sys_read,               "read"                  }, /* 3 */
        { 3,    TD,     sys_write,              "write"                 }, /* 4 */
@@ -13,7 +13,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"                 }, /* 8 */
        { 2,    TF,     sys_link,               "link"                  }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"                }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"                }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"                }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"                 }, /* 12 */
        { 1,    0,      sys_time,               "time"                  }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"                 }, /* 14 */
@@ -47,7 +47,7 @@
        { 1,    TD,     sys_pipe,               "pipe"                  }, /* 42 */
        { 1,    0,      sys_times,              "times"                 }, /* 43 */
        { 3,    TN,     sys_getsockname,        "getsockname"           }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"                   }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"                   }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"                }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"                }, /* 47 */
        { 2,    TS,     sys_signal,             "signal"                }, /* 48 */
@@ -91,9 +91,9 @@
        { 1,    TF,     sys_uselib,             "uselib"                }, /* 86 */
        { 2,    TF,     sys_swapon,             "swapon"                }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"                }, /* 88 */
-       { 6,    TD|TM,  sys_mmap_4koff,         "mmap2"                 }, /* 89 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"                  }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"                }, /* 91 */
+       { 6,    TD|TM|SI,       sys_mmap_4koff,         "mmap2"                 }, /* 89 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"                  }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"                }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"              }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"             }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"                }, /* 94 */
        { 4,    TD|TN,  sys_sendfile,           "sendfile"              }, /* 122 */
        { 6,    TN,     sys_recvfrom,           "recvfrom"              }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"              }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"              }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"              }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"           }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module"         }, /* 127 */
        { 4,    0,      sys_init_module,        "init_module"           }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"             }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"                }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"                }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"             }, /* 164 */
        { 3,    0,      sys_setresuid,          "getresuid"             }, /* 165 */
        { 2,    TS,     sys_sigaltstack,        "sigaltstack"           }, /* 166 */
        { 4,    TI,     sys_msgrcv,             "msgrcv"                }, /* 189 */
        { 4,    TI,     sys_msgget,             "msgget"                }, /* 190 */
        { 4,    TI,     sys_msgctl,             "msgctl"                }, /* 191 */
-       { 3,    TI,     sys_shmat,              "shmat"                 }, /* 192 */
-       { 1,    TI,     sys_shmdt,              "shmdt"                 }, /* 193 */
+       { 3,    TI|TM|SI,       sys_shmat,              "shmat"                 }, /* 192 */
+       { 1,    TI|TM|SI,       sys_shmdt,              "shmdt"                 }, /* 193 */
        { 3,    TI,     sys_shmget,             "shmget"                }, /* 194 */
        { 3,    TI,     sys_shmctl,             "shmctl"                }, /* 195 */
        { 5,    0,      sys_getpmsg,            "getpmsg"               }, /* 196 */
        { 4,    0,      sys_io_cancel,          "io_cancel"             }, /* 219 */
        { 5,    0,      printargs,              "alloc_hugepages"       }, /* 220 */
        { 1,    0,      printargs,              "free_hugepages"        }, /* 221 */
-       { 1,    TP,     sys_exit,               "exit_group"            }, /* 222 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"            }, /* 222 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"        }, /* 223 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"          }, /* 224 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"             }, /* 225 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"            }, /* 226 */
-       { 5,    TM,     printargs,              "remap_file_pages"      }, /* 227 */
+       { 5,    TM|SI,  printargs,              "remap_file_pages"      }, /* 227 */
        { 5,    TI,     sys_semtimedop,         "semtimedop"            }, /* 228 */
        { 5,    0,      printargs,              "mq_open"               }, /* 229 */
        { 5,    0,      printargs,              "mq_unlink"             }, /* 230 */
        { 5,    0,      printargs,              "mq_timedreceive"               }, /* 232 */
        { 5,    0,      printargs,              "mq_notify"             }, /* 233 */
        { 5,    0,      printargs,              "mq_getsetattr"         }, /* 234 */
-       { 4,    0,      printargs,              "waitid"                }, /* 235 */
+       { 5,    TP,     sys_waitid,             "waitid"                }, /* 235 */
        { 6,    TD,     sys_fadvise64_64,       "fadvise64_64"          }, /* 236 */
        { 5,    0,      sys_set_tid_address,    "set_tid_address"       }, /* 237 */
        { 5,    TF,     sys_setxattr,           "setxattr"              }, /* 238 */
        { 4,    TN,     sys_accept4,            "accept4"               }, /* 320 */
        { 4,    0,      sys_prlimit64,          "prlimit64"             }, /* 321 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init"         }, /* 322 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark"         }, /* 323 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark"         }, /* 323 */
        { 2,    0,      sys_clock_adjtime,      "clock_adjtime"         }, /* 324 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"     }, /* 325 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"     }, /* 326 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 331 */
        { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 332 */
        { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 333 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr"         }, /* 334 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr"         }, /* 335 */
+       { 2,    TF,     sys_utimes,             "utimes"                }, /* 336 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"             }, /* 337 */
index 480a28e..f7d2cef 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall" }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 6,    TD|TM,  sys_old_mmap,           "old_mmap"      }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       sys_old_mmap,           "old_mmap"      }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 3,    0,      sys_modify_ldt,         "modify_ldt"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_putpmsg,            "putpmsg"       }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      sys_getrlimit,          "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 192 */
        { 3,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 3,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 249 */
        { 5,    TD,     sys_fadvise64,          "fadvise64"     }, /* 250 */
        { 6,    0,      NULL,                   NULL            }, /* 251 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 252 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 252 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 253 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 254 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 255 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 256 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 257 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 257 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 258 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 259 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 260 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"}, /* 336 */
        { 5,    TN,     sys_recvmmsg,           "recvmmsg"      }, /* 337 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 338 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 339 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 339 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 340 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 341 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 342 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 348 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 349 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 350 */
-       { 5,    0,      NULL,                   NULL            }, /* 351 */
-       { 5,    0,      NULL,                   NULL            }, /* 352 */
-       { 5,    0,      NULL,                   NULL            }, /* 353 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 351 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 352 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 353 */
        { 5,    0,      NULL,                   NULL            }, /* 354 */
        { 5,    0,      NULL,                   NULL            }, /* 355 */
        { 5,    0,      NULL,                   NULL            }, /* 356 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
index 0242280..48422d9 100644 (file)
        { MA,   0,      NULL,                   NULL            }, /* 1022 */
        { MA,   0,      NULL,                   NULL            }, /* 1023 */
        { 0,    0,      printargs,              "ni_syscall"    }, /* 1024 */
-       { 1,    TP,     sys_exit,               "exit"          }, /* 1025 */
+       { 1,    TP|SE,  sys_exit,               "exit"          }, /* 1025 */
        { 3,    TD,     sys_read,               "read"          }, /* 1026 */
        { 3,    TD,     sys_write,              "write"         }, /* 1027 */
        { 3,    TD|TF,  sys_open,               "open"          }, /* 1028 */
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 1030 */
        { 2,    TF,     sys_link,               "link"          }, /* 1031 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 1032 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 1033 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 1033 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 1034 */
        { 1,    TD,     sys_fchdir,             "fchdir"        }, /* 1035 */
        { 2,    TF,     sys_utimes,             "utimes"        }, /* 1036 */
        { 1,    TD,     sys_dup,                "dup"           }, /* 1057 */
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 1058 */
        { 1,    0,      sys_times,              "times"         }, /* 1059 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 1060 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 1060 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 1061 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 1062 */
        { 0,    NF,     sys_getegid,            "getegid"       }, /* 1063 */
        { 5,    TI,     sys_msgrcv,             "msgrcv"        }, /* 1111 */
        { 3,    TI,     sys_msgctl,             "msgctl"        }, /* 1112 */
        { 3,    TI,     sys_shmget,             "shmget"        }, /* 1113 */
-       { 3,    TI,     sys_shmat,              "shmat"         }, /* 1114 */
-       { 1,    TI,     sys_shmdt,              "shmdt"         }, /* 1115 */
+       { 3,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 1114 */
+       { 1,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 1115 */
        { 3,    TI,     sys_shmctl,             "shmctl"        }, /* 1116 */
        { 3,    0,      sys_syslog,             "syslog"        }, /* 1117 */
        { 3,    0,      sys_setitimer,          "setitimer"     }, /* 1118 */
        { 4,    TD,     sys_pread,              "pread"         }, /* 1148 */
        { 4,    TD,     sys_pwrite,             "pwrite"        }, /* 1149 */
        { 1,    0,      printargs,              "_sysctl"       }, /* 1150 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"          }, /* 1151 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 1152 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"          }, /* 1151 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 1152 */
        { 2,    TM,     sys_mlock,              "mlock"         }, /* 1153 */
        { 1,    TM,     sys_mlockall,           "mlockall"      }, /* 1154 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 1155 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 1156 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 1155 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 1156 */
        { 3,    TM,     sys_msync,              "msync"         }, /* 1157 */
        { 2,    TM,     sys_munlock,            "munlock"       }, /* 1158 */
        { 0,    TM,     sys_munlockall,         "munlockall"    }, /* 1159 */
        { 3,    0,      sys_nfsservctl,         "nfsservctl"    }, /* 1169 */
        { 5,    0,      sys_prctl,              "prctl"         }, /* 1170 */
        { 1,    0,      sys_getpagesize,        "getpagesize"   }, /* 1171 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 1172 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 1172 */
        { 5,    0,      printargs,              "pciconfig_read"}, /* 1173 */
        { 5,    0,      printargs,              "pciconfig_write"}, /* 1174 */
        { MA,   0,      printargs,              "perfmonctl"    }, /* 1175 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 1233 */
        { 4,    TD,     sys_fadvise64,          "fadvise64"     }, /* 1234 */
        { 3,    TS,     sys_tgkill,             "tgkill"        }, /* 1235 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 1236 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 1236 */
        { 3,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 1237 */
        { 2,    0,      sys_io_setup,           "io_setup"      }, /* 1238 */
        { 1,    0,      sys_io_destroy,         "io_destroy"    }, /* 1239 */
        { 3,    TD|TS,  sys_signalfd,           "signalfd"      }, /* 1307 */
        { 4,    TD,     sys_timerfd,            "timerfd"       }, /* 1308 */
        { 1,    TD,     sys_eventfd,            "eventfd"       }, /* 1309 */
+       { 2,    TD,     sys_timerfd_create,     "timerfd_create"}, /* 1310 */
+       { 4,    TD,     sys_timerfd_settime,    "timerfd_settime"}, /* 1311 */
+       { 2,    TD,     sys_timerfd_gettime,    "timerfd_gettime"}, /* 1312 */
+       { 4,    TD|TS,  sys_signalfd4,          "signalfd4"     }, /* 1313 */
+       { 2,    TD,     sys_eventfd2,           "eventfd2"      }, /* 1314 */
+       { 1,    TD,     sys_epoll_create1,      "epoll_create1" }, /* 1315 */
+       { 3,    TD,     sys_dup3,               "dup3"          }, /* 1316 */
+       { 2,    TD,     sys_pipe2,              "pipe2"         }, /* 1317 */
+       { 1,    TD,     sys_inotify_init1,      "inotify_init1" }, /* 1318 */
        { 4,    TD,     sys_preadv,             "preadv"        }, /* 1319 */
        { 4,    TD,     sys_pwritev,            "pwritev"       }, /* 1320 */
        { 4,    TP|TS,  sys_rt_tgsigqueueinfo,  "rt_tgsigqueueinfo"}, /* 1321 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 1333 */
        { 4,    TN,     sys_accept4,            "accept4"       }, /* 1334 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 1335 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 1336 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 1337 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 1338 */
diff --git a/linux/inotify.h b/linux/inotify.h
new file mode 100644 (file)
index 0000000..0af0307
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Inode based directory notification for Linux
+ *
+ * Copyright (C) 2005 John McCutchan
+ */
+
+#ifndef _LINUX_INOTIFY_H
+#define _LINUX_INOTIFY_H
+
+/* the following are legal, implemented events that user-space can watch for */
+#define IN_ACCESS              0x00000001      /* File was accessed */
+#define IN_MODIFY              0x00000002      /* File was modified */
+#define IN_ATTRIB              0x00000004      /* Metadata changed */
+#define IN_CLOSE_WRITE         0x00000008      /* Writtable file was closed */
+#define IN_CLOSE_NOWRITE       0x00000010      /* Unwrittable file closed */
+#define IN_OPEN                        0x00000020      /* File was opened */
+#define IN_MOVED_FROM          0x00000040      /* File was moved from X */
+#define IN_MOVED_TO            0x00000080      /* File was moved to Y */
+#define IN_CREATE              0x00000100      /* Subfile was created */
+#define IN_DELETE              0x00000200      /* Subfile was deleted */
+#define IN_DELETE_SELF         0x00000400      /* Self was deleted */
+#define IN_MOVE_SELF           0x00000800      /* Self was moved */
+
+/* the following are legal events.  they are sent as needed to any watch */
+#define IN_UNMOUNT             0x00002000      /* Backing fs was unmounted */
+#define IN_Q_OVERFLOW          0x00004000      /* Event queued overflowed */
+#define IN_IGNORED             0x00008000      /* File was ignored */
+
+/* helper events */
+#define IN_CLOSE               (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
+#define IN_MOVE                        (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
+
+/* special flags */
+#define IN_ONLYDIR             0x01000000      /* only watch the path if it is a directory */
+#define IN_DONT_FOLLOW         0x02000000      /* don't follow a sym link */
+#define IN_EXCL_UNLINK         0x04000000      /* exclude events on unlinked objects */
+#define IN_MASK_ADD            0x20000000      /* add to the mask of an already existing watch */
+#define IN_ISDIR               0x40000000      /* event occurred against dir */
+#define IN_ONESHOT             0x80000000      /* only send event once */
+
+
+#endif /* _LINUX_INOTIFY_H */
index 78f1b54..9b2bd72 100644 (file)
        {"linux/hdreg.h",       "HDIO_SET_BUSSTATE",    0x032d},
        {"linux/hdreg.h",       "HDIO_SET_QDMA",        0x032e},
        {"linux/hdreg.h",       "HDIO_SET_ADDRESS",     0x032f},
-       {"linux/vm_sockets.h",  "IOCTL_VM_SOCKETS_GET_LOCAL_CID",       0x07b9},
-       {"linux/raid/md_u.h",   "RAID_VERSION", 0x0910},
-       {"linux/raid/md_u.h",   "GET_ARRAY_INFO",       0x0911},
-       {"linux/raid/md_u.h",   "GET_DISK_INFO",        0x0912},
-       {"linux/raid/md_u.h",   "PRINT_RAID_DEBUG",     0x0913},
-       {"linux/raid/md_u.h",   "RAID_AUTORUN", 0x0914},
-       {"linux/raid/md_u.h",   "GET_BITMAP_FILE",      0x0915},
-       {"linux/raid/md_u.h",   "CLEAR_ARRAY",  0x0920},
-       {"linux/raid/md_u.h",   "ADD_NEW_DISK", 0x0921},
-       {"linux/raid/md_u.h",   "HOT_REMOVE_DISK",      0x0922},
-       {"linux/raid/md_u.h",   "SET_ARRAY_INFO",       0x0923},
-       {"linux/raid/md_u.h",   "SET_DISK_INFO",        0x0924},
-       {"linux/raid/md_u.h",   "WRITE_RAID_INFO",      0x0925},
-       {"linux/raid/md_u.h",   "UNPROTECT_ARRAY",      0x0926},
-       {"linux/raid/md_u.h",   "PROTECT_ARRAY",        0x0927},
-       {"linux/raid/md_u.h",   "HOT_ADD_DISK", 0x0928},
-       {"linux/raid/md_u.h",   "SET_DISK_FAULTY",      0x0929},
-       {"linux/raid/md_u.h",   "HOT_GENERATE_ERROR",   0x092a},
-       {"linux/raid/md_u.h",   "SET_BITMAP_FILE",      0x092b},
-       {"linux/raid/md_u.h",   "RUN_ARRAY",    0x0930},
-       {"linux/raid/md_u.h",   "STOP_ARRAY",   0x0932},
-       {"linux/raid/md_u.h",   "STOP_ARRAY_RO",        0x0933},
-       {"linux/raid/md_u.h",   "RESTART_ARRAY_RW",     0x0934},
        {"linux/fs.h",  "BLKROSET",     0x125d},
        {"linux/fs.h",  "BLKROGET",     0x125e},
        {"linux/fs.h",  "BLKRRPART",    0x125f},
        {"linux/fs.h",  "BLKSECDISCARD",        0x127d},
        {"linux/fs.h",  "BLKROTATIONAL",        0x127e},
        {"linux/fs.h",  "BLKZEROOUT",   0x127f},
-       {"rdma/ib_user_mad.h",  "IB_USER_MAD_REGISTER_AGENT",   0x1b01},
-       {"rdma/ib_user_mad.h",  "IB_USER_MAD_UNREGISTER_AGENT", 0x1b02},
-       {"rdma/ib_user_mad.h",  "IB_USER_MAD_ENABLE_PKEY",      0x1b03},
        {"scsi/sg.h",   "SG_SET_TIMEOUT",       0x2201},
        {"scsi/sg.h",   "SG_GET_TIMEOUT",       0x2202},
        {"scsi/sg.h",   "SG_EMULATED_HOST",     0x2203},
        {"scsi/sg.h",   "SG_GET_REQUEST_TABLE", 0x2286},
        {"scsi/sg.h",   "SG_SET_KEEP_ORPHAN",   0x2287},
        {"scsi/sg.h",   "SG_GET_KEEP_ORPHAN",   0x2288},
-       {"scsi/sg.h",   "SG_GET_ACCESS_COUNT",  0x2289},
        {"linux/firewire-cdev.h",       "FW_CDEV_IOC_GET_INFO", 0x2300},
        {"linux/firewire-cdev.h",       "FW_CDEV_IOC_SEND_REQUEST",     0x2301},
        {"linux/firewire-cdev.h",       "FW_CDEV_IOC_ALLOCATE", 0x2302},
        {"linux/perf_event.h",  "PERF_EVENT_IOC_PERIOD",        0x2404},
        {"linux/perf_event.h",  "PERF_EVENT_IOC_SET_OUTPUT",    0x2405},
        {"linux/perf_event.h",  "PERF_EVENT_IOC_SET_FILTER",    0x2406},
+       {"linux/perf_event.h",  "PERF_EVENT_IOC_ID",    0x2407},
        {"linux/suspend_ioctls.h",      "SNAPSHOT_FREEZE",      0x3301},
        {"linux/suspend_ioctls.h",      "SNAPSHOT_UNFREEZE",    0x3302},
        {"linux/suspend_ioctls.h",      "SNAPSHOT_ATOMIC_RESTORE",      0x3304},
        {"linux/vfio.h",        "VFIO_DEVICE_GET_IRQ_INFO",     0x3b6d},
        {"linux/vfio.h",        "VFIO_DEVICE_SET_IRQS", 0x3b6e},
        {"linux/vfio.h",        "VFIO_DEVICE_RESET",    0x3b6f},
+       {"linux/vfio.h",        "VFIO_DEVICE_GET_PCI_HOT_RESET_INFO",   0x3b70},
        {"linux/vfio.h",        "VFIO_IOMMU_GET_INFO",  0x3b70},
+       {"linux/vfio.h",        "VFIO_IOMMU_SPAPR_TCE_GET_INFO",        0x3b70},
+       {"linux/vfio.h",        "VFIO_DEVICE_PCI_HOT_RESET",    0x3b71},
        {"linux/vfio.h",        "VFIO_IOMMU_MAP_DMA",   0x3b71},
        {"linux/vfio.h",        "VFIO_IOMMU_UNMAP_DMA", 0x3b72},
+       {"linux/vfio.h",        "VFIO_IOMMU_ENABLE",    0x3b73},
+       {"linux/vfio.h",        "VFIO_IOMMU_DISABLE",   0x3b74},
        {"linux/ptp_clock.h",   "PTP_CLOCK_GETCAPS",    0x3d01},
        {"linux/ptp_clock.h",   "PTP_EXTTS_REQUEST",    0x3d02},
        {"linux/ptp_clock.h",   "PTP_PEROUT_REQUEST",   0x3d03},
        {"linux/input.h",       "EVIOCRMFF",    0x4581},
        {"linux/input.h",       "EVIOCGEFFECTS",        0x4584},
        {"linux/input.h",       "EVIOCGRAB",    0x4590},
+       {"linux/input.h",       "EVIOCREVOKE",  0x4591},
        {"linux/input.h",       "EVIOCSCLOCKID",        0x45a0},
        {"linux/fb.h",  "FBIOGET_VSCREENINFO",  0x4600},
-       {"video/da8xx-fb.h",    "FBIOGET_CONTRAST",     0x4601},
        {"linux/fb.h",  "FBIOPUT_VSCREENINFO",  0x4601},
        {"linux/fb.h",  "FBIOGET_FSCREENINFO",  0x4602},
-       {"video/da8xx-fb.h",    "FBIOPUT_CONTRAST",     0x4602},
-       {"video/da8xx-fb.h",    "FBIGET_BRIGHTNESS",    0x4603},
-       {"video/da8xx-fb.h",    "FBIPUT_BRIGHTNESS",    0x4603},
        {"linux/fb.h",  "FBIOGETCMAP",  0x4604},
-       {"video/da8xx-fb.h",    "FBIGET_COLOR", 0x4605},
        {"linux/fb.h",  "FBIOPUTCMAP",  0x4605},
        {"linux/fb.h",  "FBIOPAN_DISPLAY",      0x4606},
-       {"video/da8xx-fb.h",    "FBIPUT_COLOR", 0x4606},
        {"linux/fb.h",  "FBIO_CURSOR",  0x4608},
-       {"video/da8xx-fb.h",    "FBIPUT_HSYNC", 0x4609},
-       {"video/da8xx-fb.h",    "FBIPUT_VSYNC", 0x460a},
        {"linux/fb.h",  "FBIOGET_CON2FBMAP",    0x460f},
        {"linux/fb.h",  "FBIOPUT_CON2FBMAP",    0x4610},
        {"linux/fb.h",  "FBIOBLANK",    0x4611},
        {"linux/fb.h",  "FBIO_WAITFORVSYNC",    0x4620},
        {"linux/arcfb.h",       "FBIO_WAITEVENT",       0x4688},
        {"linux/arcfb.h",       "FBIO_GETCONTROL2",     0x4689},
-       {"video/sstfb.h",       "SSTFB_GET_VGAPASS",    0x46dd},
-       {"video/sstfb.h",       "SSTFB_SET_VGAPASS",    0x46dd},
        {"linux/gigaset_dev.h", "GIGASET_REDIR",        0x4700},
        {"linux/gigaset_dev.h", "GIGASET_CONFIG",       0x4701},
        {"linux/gigaset_dev.h", "GIGASET_BRKCHARS",     0x4702},
        {"sound/emu10k1.h",     "SNDRV_EMU10K1_IOCTL_DBG_READ", 0x4884},
        {"sound/sfnt_info.h",   "SNDRV_EMUX_IOCTL_MEM_AVAIL",   0x4884},
        {"sound/sfnt_info.h",   "SNDRV_EMUX_IOCTL_MISC_MODE",   0x4884},
-       {"net/bluetooth/hci.h", "HCIDEVUP",     0x48c9},
-       {"net/bluetooth/hci.h", "HCIDEVDOWN",   0x48ca},
-       {"net/bluetooth/hci.h", "HCIDEVRESET",  0x48cb},
-       {"net/bluetooth/hci.h", "HCIDEVRESTAT", 0x48cc},
-       {"net/bluetooth/hci.h", "HCIGETDEVLIST",        0x48d2},
-       {"net/bluetooth/hci.h", "HCIGETDEVINFO",        0x48d3},
-       {"net/bluetooth/hci.h", "HCIGETCONNLIST",       0x48d4},
-       {"net/bluetooth/hci.h", "HCIGETCONNINFO",       0x48d5},
-       {"net/bluetooth/hci.h", "HCIGETAUTHINFO",       0x48d7},
-       {"net/bluetooth/hci.h", "HCISETRAW",    0x48dc},
-       {"net/bluetooth/hci.h", "HCISETSCAN",   0x48dd},
-       {"net/bluetooth/hci.h", "HCISETAUTH",   0x48de},
-       {"net/bluetooth/hci.h", "HCISETENCRYPT",        0x48df},
-       {"net/bluetooth/hci.h", "HCISETPTYPE",  0x48e0},
-       {"net/bluetooth/hci.h", "HCISETLINKPOL",        0x48e1},
-       {"net/bluetooth/hci.h", "HCISETLINKMODE",       0x48e2},
-       {"net/bluetooth/hci.h", "HCISETACLMTU", 0x48e3},
-       {"net/bluetooth/hci.h", "HCISETSCOMTU", 0x48e4},
-       {"net/bluetooth/hci.h", "HCIBLOCKADDR", 0x48e6},
-       {"net/bluetooth/hci.h", "HCIUNBLOCKADDR",       0x48e7},
-       {"net/bluetooth/hci.h", "HCIINQUIRY",   0x48f0},
        {"linux/isdn.h",        "IIOCNETAIF",   0x4901},
        {"linux/isdn.h",        "IIOCNETDIF",   0x4902},
        {"linux/isdn.h",        "IIOCNETSCF",   0x4903},
        {"linux/loop.h",        "LOOP_CTL_ADD", 0x4c80},
        {"linux/loop.h",        "LOOP_CTL_REMOVE",      0x4c81},
        {"linux/loop.h",        "LOOP_CTL_GET_FREE",    0x4c82},
-       {"mtd/mtd-abi.h",       "MEMGETINFO",   0x4d01},
-       {"mtd/mtd-abi.h",       "MEMERASE",     0x4d02},
-       {"mtd/mtd-abi.h",       "MEMWRITEOOB",  0x4d03},
-       {"mtd/mtd-abi.h",       "MEMREADOOB",   0x4d04},
-       {"mtd/mtd-abi.h",       "MEMLOCK",      0x4d05},
-       {"mtd/mtd-abi.h",       "MEMUNLOCK",    0x4d06},
-       {"mtd/mtd-abi.h",       "MEMGETREGIONCOUNT",    0x4d07},
-       {"mtd/mtd-abi.h",       "MEMGETREGIONINFO",     0x4d08},
-       {"mtd/mtd-abi.h",       "MEMGETOOBSEL", 0x4d0a},
-       {"mtd/mtd-abi.h",       "MEMGETBADBLOCK",       0x4d0b},
-       {"mtd/mtd-abi.h",       "MEMSETBADBLOCK",       0x4d0c},
-       {"mtd/mtd-abi.h",       "OTPSELECT",    0x4d0d},
-       {"mtd/mtd-abi.h",       "OTPGETREGIONCOUNT",    0x4d0e},
-       {"mtd/mtd-abi.h",       "OTPGETREGIONINFO",     0x4d0f},
-       {"mtd/mtd-abi.h",       "OTPLOCK",      0x4d10},
-       {"mtd/mtd-abi.h",       "ECCGETLAYOUT", 0x4d11},
-       {"mtd/mtd-abi.h",       "ECCGETSTATS",  0x4d12},
-       {"mtd/mtd-abi.h",       "MTDFILEMODE",  0x4d13},
-       {"mtd/mtd-abi.h",       "MEMERASE64",   0x4d14},
-       {"mtd/mtd-abi.h",       "MEMWRITEOOB64",        0x4d15},
-       {"mtd/mtd-abi.h",       "MEMREADOOB64", 0x4d16},
-       {"mtd/mtd-abi.h",       "MEMISLOCKED",  0x4d17},
-       {"mtd/mtd-abi.h",       "MEMWRITE",     0x4d18},
+       {"asm/mtrr.h",  "MTRRIOC_ADD_ENTRY",    0x4d00},
+       {"asm/mce.h",   "MCE_GET_RECORD_LEN",   0x4d01},
+       {"asm/mtrr.h",  "MTRRIOC_SET_ENTRY",    0x4d01},
+       {"asm/mce.h",   "MCE_GET_LOG_LEN",      0x4d02},
+       {"asm/mtrr.h",  "MTRRIOC_DEL_ENTRY",    0x4d02},
+       {"asm/mce.h",   "MCE_GETCLEAR_FLAGS",   0x4d03},
+       {"asm/mtrr.h",  "MTRRIOC_GET_ENTRY",    0x4d03},
+       {"asm/mtrr.h",  "MTRRIOC_KILL_ENTRY",   0x4d04},
+       {"asm/mtrr.h",  "MTRRIOC_ADD_PAGE_ENTRY",       0x4d05},
+       {"asm/mtrr.h",  "MTRRIOC_SET_PAGE_ENTRY",       0x4d06},
+       {"asm/mtrr.h",  "MTRRIOC_DEL_PAGE_ENTRY",       0x4d07},
+       {"asm/mtrr.h",  "MTRRIOC_GET_PAGE_ENTRY",       0x4d08},
+       {"asm/mtrr.h",  "MTRRIOC_KILL_PAGE_ENTRY",      0x4d09},
        {"linux/soundcard.h",   "SOUND_MIXER_INFO",     0x4d65},
        {"linux/soundcard.h",   "SOUND_OLD_MIXER_INFO", 0x4d65},
        {"linux/soundcard.h",   "SOUND_MIXER_ACCESS",   0x4d66},
        {"linux/soundcard.h",   "SOUND_MIXER_GETLEVELS",        0x4d74},
        {"linux/soundcard.h",   "SOUND_MIXER_SETLEVELS",        0x4d75},
        {"linux/soundcard.h",   "OSS_GETVERSION",       0x4d76},
-       {"mtd/ubi-user.h",      "UBI_IOCVOLUP", 0x4f00},
-       {"mtd/ubi-user.h",      "UBI_IOCEBER",  0x4f01},
-       {"mtd/ubi-user.h",      "UBI_IOCEBCH",  0x4f02},
-       {"mtd/ubi-user.h",      "UBI_IOCEBMAP", 0x4f03},
-       {"mtd/ubi-user.h",      "UBI_IOCEBUNMAP",       0x4f04},
-       {"mtd/ubi-user.h",      "UBI_IOCEBISMAP",       0x4f05},
-       {"mtd/ubi-user.h",      "UBI_IOCSETVOLPROP",    0x4f06},
+       {"linux/nvme.h",        "NVME_IOCTL_ID",        0x4e40},
+       {"linux/nvme.h",        "NVME_IOCTL_ADMIN_CMD", 0x4e41},
+       {"linux/nvme.h",        "NVME_IOCTL_SUBMIT_IO", 0x4e42},
        {"linux/soundcard.h",   "SNDCTL_DSP_RESET",     0x5000},
        {"linux/soundcard.h",   "SNDCTL_DSP_SYNC",      0x5001},
        {"linux/soundcard.h",   "SNDCTL_DSP_SPEED",     0x5002},
        {"linux/random.h",      "RNDGETENTCNT", 0x5200},
        {"linux/rfkill.h",      "RFKILL_IOCTL_NOINPUT", 0x5201},
        {"linux/random.h",      "RNDADDTOENTCNT",       0x5201},
-       {"media/saa6588.h",     "SAA6588_CMD_OPEN",     0x5201},
        {"linux/random.h",      "RNDGETPOOL",   0x5202},
-       {"media/saa6588.h",     "SAA6588_CMD_CLOSE",    0x5202},
        {"linux/random.h",      "RNDADDENTROPY",        0x5203},
-       {"media/saa6588.h",     "SAA6588_CMD_READ",     0x5203},
        {"linux/random.h",      "RNDZAPENTCNT", 0x5204},
-       {"media/saa6588.h",     "SAA6588_CMD_POLL",     0x5204},
        {"linux/random.h",      "RNDCLEARPOOL", 0x5206},
-       {"net/bluetooth/rfcomm.h",      "RFCOMMCREATEDEV",      0x52c8},
-       {"net/bluetooth/rfcomm.h",      "RFCOMMRELEASEDEV",     0x52c9},
-       {"net/bluetooth/rfcomm.h",      "RFCOMMGETDEVLIST",     0x52d2},
-       {"net/bluetooth/rfcomm.h",      "RFCOMMGETDEVINFO",     0x52d3},
-       {"net/bluetooth/rfcomm.h",      "RFCOMMSTEALDLC",       0x52dc},
        {"sound/asequencer.h",  "SNDRV_SEQ_IOCTL_PVERSION",     0x5300},
        {"linux/cdrom.h",       "CDROMPAUSE",   0x5301},
        {"sound/asequencer.h",  "SNDRV_SEQ_IOCTL_CLIENT_ID",    0x5301},
        {"scsi/scsi_ioctl.h",   "SCSI_IOCTL_DOORUNLOCK",        0x5381},
        {"linux/cdrom.h",       "CDROMAUDIOBUFSIZ",     0x5382},
        {"scsi/scsi.h", "SCSI_IOCTL_GET_IDLUN", 0x5382},
+       {"scsi/scsi.h", "SCSI_IOCTL_TAGGED_ENABLE",     0x5383},
+       {"scsi/scsi.h", "SCSI_IOCTL_TAGGED_DISABLE",    0x5384},
        {"scsi/scsi.h", "SCSI_IOCTL_PROBE_HOST",        0x5385},
        {"scsi/scsi.h", "SCSI_IOCTL_GET_BUS_NUMBER",    0x5386},
-       {"scsi/scsi.h", "SCSI_IOCTL_GET_PCI",   0x5387},
        {"linux/cdrom.h",       "DVD_READ_STRUCT",      0x5390},
        {"linux/cdrom.h",       "DVD_WRITE_STRUCT",     0x5391},
        {"linux/cdrom.h",       "DVD_AUTH",     0x5392},
        {"linux/if_tun.h",      "TUNGETVNETHDRSZ",      0x54d7},
        {"linux/if_tun.h",      "TUNSETVNETHDRSZ",      0x54d8},
        {"linux/if_tun.h",      "TUNSETQUEUE",  0x54d9},
+       {"linux/if_tun.h",      "TUNSETIFINDEX",        0x54da},
+       {"linux/if_tun.h",      "TUNGETFILTER", 0x54db},
        {"sound/asound.h",      "SNDRV_CTL_IOCTL_PVERSION",     0x5500},
        {"linux/usbdevice_fs.h",        "USBDEVFS_CONTROL",     0x5500},
        {"linux/usbdevice_fs.h",        "USBDEVFS_CONTROL32",   0x5500},
        {"linux/videodev2.h",   "VIDIOC_TRY_ENCODER_CMD",       0x564e},
        {"linux/videodev2.h",   "VIDIOC_DBG_S_REGISTER",        0x564f},
        {"linux/videodev2.h",   "VIDIOC_DBG_G_REGISTER",        0x5650},
-       {"linux/videodev2.h",   "VIDIOC_DBG_G_CHIP_IDENT",      0x5651},
        {"linux/videodev2.h",   "VIDIOC_S_HW_FREQ_SEEK",        0x5652},
-       {"linux/videodev2.h",   "VIDIOC_ENUM_DV_PRESETS",       0x5653},
-       {"linux/videodev2.h",   "VIDIOC_S_DV_PRESET",   0x5654},
-       {"linux/videodev2.h",   "VIDIOC_G_DV_PRESET",   0x5655},
-       {"linux/videodev2.h",   "VIDIOC_QUERY_DV_PRESET",       0x5656},
        {"linux/videodev2.h",   "VIDIOC_S_DV_TIMINGS",  0x5657},
        {"linux/videodev2.h",   "VIDIOC_G_DV_TIMINGS",  0x5658},
        {"linux/videodev2.h",   "VIDIOC_DQEVENT",       0x5659},
        {"linux/videodev2.h",   "VIDIOC_QUERY_DV_TIMINGS",      0x5663},
        {"linux/videodev2.h",   "VIDIOC_DV_TIMINGS_CAP",        0x5664},
        {"linux/videodev2.h",   "VIDIOC_ENUM_FREQ_BANDS",       0x5665},
+       {"linux/videodev2.h",   "VIDIOC_DBG_G_CHIP_INFO",       0x5666},
        {"linux/ivtvfb.h",      "IVTVFB_IOC_DMA_FRAME", 0x56c0},
        {"linux/ivtv.h",        "IVTV_IOC_DMA_FRAME",   0x56c0},
-       {"media/si4713.h",      "SI4713_IOC_MEASURE_RNL",       0x56c0},
        {"linux/ivtv.h",        "IVTV_IOC_PASSTHROUGH_MODE",    0x56c1},
        {"sound/asound.h",      "SNDRV_RAWMIDI_IOCTL_PVERSION", 0x5700},
        {"linux/watchdog.h",    "WDIOC_GETSUPPORT",     0x5700},
        {"linux/fs.h",  "FIFREEZE",     0x5877},
        {"linux/fs.h",  "FITHAW",       0x5878},
        {"linux/fs.h",  "FITRIM",       0x5879},
-       {"linux/usb/tmc.h",     "USBTMC_IOCTL_INDICATOR_PULSE", 0x5b01},
-       {"linux/usb/tmc.h",     "USBTMC_IOCTL_CLEAR",   0x5b02},
-       {"linux/usb/tmc.h",     "USBTMC_IOCTL_ABORT_BULK_OUT",  0x5b03},
-       {"linux/usb/tmc.h",     "USBTMC_IOCTL_ABORT_BULK_IN",   0x5b04},
-       {"linux/usb/tmc.h",     "USBTMC_IOCTL_CLEAR_OUT_HALT",  0x5b06},
-       {"linux/usb/tmc.h",     "USBTMC_IOCTL_CLEAR_IN_HALT",   0x5b07},
        {"linux/sonet.h",       "SONET_GETSTAT",        0x6110},
        {"linux/sonet.h",       "SONET_GETSTATZ",       0x6111},
        {"linux/sonet.h",       "SONET_SETDIAG",        0x6112},
        {"linux/atmdev.h",      "ATM_ADDPARTY", 0x61f4},
        {"linux/atmdev.h",      "COMPAT_ATM_ADDPARTY",  0x61f4},
        {"linux/atmdev.h",      "ATM_DROPPARTY",        0x61f5},
-       {"media/bt819.h",       "BT819_FIFO_RESET_LOW", 0x6200},
-       {"media/bt819.h",       "BT819_FIFO_RESET_HIGH",        0x6201},
        {"linux/cm4000_cs.h",   "CM_IOCGSTATUS",        0x6300},
        {"linux/chio.h",        "CHIOMOVE",     0x6301},
        {"linux/cm4000_cs.h",   "CM_IOCGATR",   0x6301},
        {"linux/chio.h",        "CHIOINITELEM", 0x6311},
        {"linux/chio.h",        "CHIOSVOLTAG",  0x6312},
        {"linux/chio.h",        "CHIOGVPARAMS", 0x6313},
+       {"asm/msr.h",   "X86_IOC_RDMSR_REGS",   0x63a0},
+       {"asm/msr.h",   "X86_IOC_WRMSR_REGS",   0x63a1},
        {"linux/cm4000_cs.h",   "CM_IOSDBGLVL", 0x63fa},
-       {"media/v4l2-common.h", "TUNER_SET_CONFIG",     0x645c},
-       {"media/v4l2-common.h", "VIDIOC_INT_RESET",     0x6466},
-       {"media/s5p_fimc.h",    "S5P_FIMC_TX_END_NOTIFY",       0x6500},
        {"linux/fs.h",  "FS_IOC32_GETFLAGS",    0x6601},
        {"linux/fs.h",  "FS_IOC_GETFLAGS",      0x6601},
        {"linux/fs.h",  "FS_IOC32_SETFLAGS",    0x6602},
        {"linux/fs.h",  "FS_IOC_SETFLAGS",      0x6602},
        {"linux/fs.h",  "FS_IOC_FIEMAP",        0x660b},
-       {"linux/usb/functionfs.h",      "FUNCTIONFS_FIFO_STATUS",       0x6701},
-       {"linux/usb/gadgetfs.h",        "GADGETFS_FIFO_STATUS", 0x6701},
-       {"linux/usb/functionfs.h",      "FUNCTIONFS_FIFO_FLUSH",        0x6702},
-       {"linux/usb/gadgetfs.h",        "GADGETFS_FIFO_FLUSH",  0x6702},
-       {"linux/usb/functionfs.h",      "FUNCTIONFS_CLEAR_HALT",        0x6703},
-       {"linux/usb/gadgetfs.h",        "GADGETFS_CLEAR_HALT",  0x6703},
-       {"linux/usb/g_printer.h",       "GADGET_GET_PRINTER_STATUS",    0x6721},
-       {"linux/usb/g_printer.h",       "GADGET_SET_PRINTER_STATUS",    0x6722},
-       {"linux/usb/functionfs.h",      "FUNCTIONFS_INTERFACE_REVMAP",  0x6780},
-       {"linux/usb/functionfs.h",      "FUNCTIONFS_ENDPOINT_REVMAP",   0x6781},
        {"linux/hpet.h",        "HPET_IE_ON",   0x6801},
        {"linux/hpet.h",        "HPET_IE_OFF",  0x6802},
        {"linux/hpet.h",        "HPET_INFO",    0x6803},
        {"linux/hpet.h",        "HPET_DPI",     0x6805},
        {"linux/hpet.h",        "HPET_IRQFREQ", 0x6806},
        {"linux/i2o-dev.h",     "I2OGETIOPS",   0x6900},
-       {"media/lirc.h",        "LIRC_GET_FEATURES",    0x6900},
        {"linux/i2o-dev.h",     "I2OHRTGET",    0x6901},
-       {"media/lirc.h",        "LIRC_GET_SEND_MODE",   0x6901},
        {"linux/i2o-dev.h",     "I2OLCTGET",    0x6902},
-       {"media/lirc.h",        "LIRC_GET_REC_MODE",    0x6902},
        {"linux/i2o-dev.h",     "I2OPARMSET",   0x6903},
-       {"media/lirc.h",        "LIRC_GET_SEND_CARRIER",        0x6903},
        {"linux/i2o-dev.h",     "I2OPARMGET",   0x6904},
-       {"media/lirc.h",        "LIRC_GET_REC_CARRIER", 0x6904},
        {"linux/i2o-dev.h",     "I2OSWDL",      0x6905},
-       {"media/lirc.h",        "LIRC_GET_SEND_DUTY_CYCLE",     0x6905},
        {"linux/i2o-dev.h",     "I2OSWUL",      0x6906},
-       {"media/lirc.h",        "LIRC_GET_REC_DUTY_CYCLE",      0x6906},
        {"linux/i2o-dev.h",     "I2OSWDEL",     0x6907},
-       {"media/lirc.h",        "LIRC_GET_REC_RESOLUTION",      0x6907},
        {"linux/i2o-dev.h",     "I2OVALIDATE",  0x6908},
-       {"media/lirc.h",        "LIRC_GET_MIN_TIMEOUT", 0x6908},
        {"linux/i2o-dev.h",     "I2OHTML",      0x6909},
-       {"media/lirc.h",        "LIRC_GET_MAX_TIMEOUT", 0x6909},
        {"linux/i2o-dev.h",     "I2OEVTREG",    0x690a},
-       {"media/lirc.h",        "LIRC_GET_MIN_FILTER_PULSE",    0x690a},
        {"linux/i2o-dev.h",     "I2OEVTGET",    0x690b},
        {"linux/ipmi.h",        "IPMICTL_RECEIVE_MSG_TRUNC",    0x690b},
-       {"media/lirc.h",        "LIRC_GET_MAX_FILTER_PULSE",    0x690b},
        {"linux/i2o-dev.h",     "I2OPASSTHRU",  0x690c},
        {"linux/i2o-dev.h",     "I2OPASSTHRU32",        0x690c},
        {"linux/ipmi.h",        "IPMICTL_RECEIVE_MSG",  0x690c},
-       {"media/lirc.h",        "LIRC_GET_MIN_FILTER_SPACE",    0x690c},
        {"linux/ipmi.h",        "IPMICTL_SEND_COMMAND", 0x690d},
-       {"media/lirc.h",        "LIRC_GET_MAX_FILTER_SPACE",    0x690d},
        {"linux/ipmi.h",        "IPMICTL_REGISTER_FOR_CMD",     0x690e},
        {"linux/ipmi.h",        "IPMICTL_UNREGISTER_FOR_CMD",   0x690f},
-       {"media/lirc.h",        "LIRC_GET_LENGTH",      0x690f},
        {"linux/ipmi.h",        "IPMICTL_SET_GETS_EVENTS_CMD",  0x6910},
        {"linux/ipmi.h",        "IPMICTL_SET_MY_ADDRESS_CMD",   0x6911},
-       {"media/lirc.h",        "LIRC_SET_SEND_MODE",   0x6911},
        {"linux/ipmi.h",        "IPMICTL_GET_MY_ADDRESS_CMD",   0x6912},
-       {"media/lirc.h",        "LIRC_SET_REC_MODE",    0x6912},
        {"linux/ipmi.h",        "IPMICTL_SET_MY_LUN_CMD",       0x6913},
-       {"media/lirc.h",        "LIRC_SET_SEND_CARRIER",        0x6913},
        {"linux/ipmi.h",        "IPMICTL_GET_MY_LUN_CMD",       0x6914},
-       {"media/lirc.h",        "LIRC_SET_REC_CARRIER", 0x6914},
        {"linux/ipmi.h",        "IPMICTL_SEND_COMMAND_SETTIME", 0x6915},
-       {"media/lirc.h",        "LIRC_SET_SEND_DUTY_CYCLE",     0x6915},
        {"linux/ipmi.h",        "IPMICTL_SET_TIMING_PARMS_CMD", 0x6916},
-       {"media/lirc.h",        "LIRC_SET_REC_DUTY_CYCLE",      0x6916},
        {"linux/ipmi.h",        "IPMICTL_GET_TIMING_PARMS_CMD", 0x6917},
-       {"media/lirc.h",        "LIRC_SET_TRANSMITTER_MASK",    0x6917},
-       {"media/lirc.h",        "LIRC_SET_REC_TIMEOUT", 0x6918},
-       {"media/lirc.h",        "LIRC_SET_REC_TIMEOUT_REPORTS", 0x6919},
-       {"media/lirc.h",        "LIRC_SET_REC_FILTER_PULSE",    0x691a},
-       {"media/lirc.h",        "LIRC_SET_REC_FILTER_SPACE",    0x691b},
        {"linux/ipmi.h",        "IPMICTL_REGISTER_FOR_CMD_CHANS",       0x691c},
-       {"media/lirc.h",        "LIRC_SET_REC_FILTER",  0x691c},
        {"linux/ipmi.h",        "IPMICTL_UNREGISTER_FOR_CMD_CHANS",     0x691d},
-       {"media/lirc.h",        "LIRC_SET_MEASURE_CARRIER_MODE",        0x691d},
        {"linux/ipmi.h",        "IPMICTL_GET_MAINTENANCE_MODE_CMD",     0x691e},
-       {"media/lirc.h",        "LIRC_SET_REC_DUTY_CYCLE_RANGE",        0x691e},
        {"linux/ipmi.h",        "IPMICTL_SET_MAINTENANCE_MODE_CMD",     0x691f},
-       {"media/lirc.h",        "LIRC_SET_REC_CARRIER_RANGE",   0x691f},
-       {"media/lirc.h",        "LIRC_NOTIFY_DECODE",   0x6920},
-       {"media/lirc.h",        "LIRC_SETUP_START",     0x6921},
-       {"media/lirc.h",        "LIRC_SETUP_END",       0x6922},
-       {"media/lirc.h",        "LIRC_SET_WIDEBAND_RECEIVER",   0x6923},
        {"linux/i8k.h", "I8K_BIOS_VERSION",     0x6980},
        {"linux/i8k.h", "I8K_MACHINE_ID",       0x6981},
        {"linux/i8k.h", "I8K_POWER_STATUS",     0x6982},
        {"linux/joystick.h",    "JSIOCGAXMAP",  0x6a32},
        {"linux/joystick.h",    "JSIOCSBTNMAP", 0x6a33},
        {"linux/joystick.h",    "JSIOCGBTNMAP", 0x6a34},
-       {"video/kyro.h",        "KYRO_IOCTL_OVERLAY_CREATE",    0x6b00},
-       {"video/kyro.h",        "KYRO_IOCTL_OVERLAY_VIEWPORT_SET",      0x6b01},
-       {"linux/spi/spidev.h",  "SPI_IOC_RD_MODE",      0x6b01},
-       {"linux/spi/spidev.h",  "SPI_IOC_WR_MODE",      0x6b01},
-       {"video/kyro.h",        "KYRO_IOCTL_SET_VIDEO_MODE",    0x6b02},
-       {"linux/spi/spidev.h",  "SPI_IOC_RD_LSB_FIRST", 0x6b02},
-       {"linux/spi/spidev.h",  "SPI_IOC_WR_LSB_FIRST", 0x6b02},
-       {"video/kyro.h",        "KYRO_IOCTL_UVSTRIDE",  0x6b03},
-       {"linux/spi/spidev.h",  "SPI_IOC_RD_BITS_PER_WORD",     0x6b03},
-       {"linux/spi/spidev.h",  "SPI_IOC_WR_BITS_PER_WORD",     0x6b03},
-       {"video/kyro.h",        "KYRO_IOCTL_OVERLAY_OFFSET",    0x6b04},
-       {"linux/spi/spidev.h",  "SPI_IOC_RD_MAX_SPEED_HZ",      0x6b04},
-       {"linux/spi/spidev.h",  "SPI_IOC_WR_MAX_SPEED_HZ",      0x6b04},
-       {"video/kyro.h",        "KYRO_IOCTL_STRIDE",    0x6b05},
        {"linux/udf_fs_i.h",    "UDF_GETEASIZE",        0x6c40},
        {"linux/udf_fs_i.h",    "UDF_GETEABLOCK",       0x6c41},
        {"linux/udf_fs_i.h",    "UDF_GETVOLIDENT",      0x6c42},
        {"linux/ncp_fs.h",      "NCP_IOC_SETDENTRYTTL", 0x6e0c},
        {"linux/matroxfb.h",    "MATROXFB_GET_OUTPUT_CONNECTION",       0x6ef8},
        {"linux/matroxfb.h",    "MATROXFB_SET_OUTPUT_CONNECTION",       0x6ef8},
-       {"video/sisfb.h",       "SISFB_GET_INFO_OLD",   0x6ef8},
        {"linux/matroxfb.h",    "MATROXFB_GET_AVAILABLE_OUTPUTS",       0x6ef9},
-       {"video/sisfb.h",       "SISFB_GET_VBRSTATUS_OLD",      0x6ef9},
        {"linux/matroxfb.h",    "MATROXFB_GET_OUTPUT_MODE",     0x6efa},
        {"linux/matroxfb.h",    "MATROXFB_SET_OUTPUT_MODE",     0x6efa},
-       {"video/sisfb.h",       "SISFB_GET_AUTOMAXIMIZE_OLD",   0x6efa},
-       {"video/sisfb.h",       "SISFB_SET_AUTOMAXIMIZE_OLD",   0x6efa},
        {"linux/matroxfb.h",    "MATROXFB_GET_ALL_OUTPUTS",     0x6efb},
-       {"mtd/ubi-user.h",      "UBI_IOCMKVOL", 0x6f00},
-       {"linux/dvb/audio.h",   "AUDIO_STOP",   0x6f01},
-       {"mtd/ubi-user.h",      "UBI_IOCRMVOL", 0x6f01},
-       {"linux/dvb/audio.h",   "AUDIO_PLAY",   0x6f02},
-       {"mtd/ubi-user.h",      "UBI_IOCRSVOL", 0x6f02},
-       {"linux/dvb/audio.h",   "AUDIO_PAUSE",  0x6f03},
-       {"mtd/ubi-user.h",      "UBI_IOCRNVOL", 0x6f03},
-       {"linux/dvb/audio.h",   "AUDIO_CONTINUE",       0x6f04},
-       {"linux/dvb/audio.h",   "AUDIO_SELECT_SOURCE",  0x6f05},
-       {"linux/dvb/audio.h",   "AUDIO_SET_MUTE",       0x6f06},
-       {"linux/dvb/audio.h",   "AUDIO_SET_AV_SYNC",    0x6f07},
-       {"linux/dvb/audio.h",   "AUDIO_SET_BYPASS_MODE",        0x6f08},
-       {"linux/dvb/audio.h",   "AUDIO_CHANNEL_SELECT", 0x6f09},
-       {"linux/dvb/audio.h",   "AUDIO_GET_STATUS",     0x6f0a},
-       {"linux/dvb/audio.h",   "AUDIO_GET_CAPABILITIES",       0x6f0b},
-       {"linux/dvb/audio.h",   "AUDIO_CLEAR_BUFFER",   0x6f0c},
-       {"linux/dvb/audio.h",   "AUDIO_SET_ID", 0x6f0d},
-       {"linux/dvb/audio.h",   "AUDIO_SET_MIXER",      0x6f0e},
-       {"linux/dvb/audio.h",   "AUDIO_SET_STREAMTYPE", 0x6f0f},
-       {"linux/dvb/audio.h",   "AUDIO_SET_EXT_ID",     0x6f10},
-       {"linux/dvb/audio.h",   "AUDIO_SET_ATTRIBUTES", 0x6f11},
-       {"linux/dvb/audio.h",   "AUDIO_SET_KARAOKE",    0x6f12},
-       {"linux/dvb/audio.h",   "AUDIO_GET_PTS",        0x6f13},
-       {"linux/dvb/audio.h",   "AUDIO_BILINGUAL_CHANNEL_SELECT",       0x6f14},
-       {"linux/dvb/video.h",   "VIDEO_STOP",   0x6f15},
-       {"linux/dvb/video.h",   "VIDEO_PLAY",   0x6f16},
-       {"linux/dvb/video.h",   "VIDEO_FREEZE", 0x6f17},
-       {"linux/dvb/video.h",   "VIDEO_CONTINUE",       0x6f18},
-       {"linux/dvb/video.h",   "VIDEO_SELECT_SOURCE",  0x6f19},
-       {"linux/dvb/video.h",   "VIDEO_SET_BLANK",      0x6f1a},
-       {"linux/dvb/video.h",   "VIDEO_GET_STATUS",     0x6f1b},
-       {"linux/dvb/video.h",   "VIDEO_GET_EVENT",      0x6f1c},
-       {"linux/dvb/video.h",   "VIDEO_SET_DISPLAY_FORMAT",     0x6f1d},
-       {"linux/dvb/video.h",   "VIDEO_STILLPICTURE",   0x6f1e},
-       {"linux/dvb/video.h",   "VIDEO_FAST_FORWARD",   0x6f1f},
-       {"linux/dvb/video.h",   "VIDEO_SLOWMOTION",     0x6f20},
-       {"linux/dvb/video.h",   "VIDEO_GET_CAPABILITIES",       0x6f21},
-       {"linux/dvb/video.h",   "VIDEO_CLEAR_BUFFER",   0x6f22},
-       {"linux/dvb/video.h",   "VIDEO_SET_ID", 0x6f23},
-       {"linux/dvb/video.h",   "VIDEO_SET_STREAMTYPE", 0x6f24},
-       {"linux/dvb/video.h",   "VIDEO_SET_FORMAT",     0x6f25},
-       {"linux/dvb/video.h",   "VIDEO_SET_SYSTEM",     0x6f26},
-       {"linux/dvb/video.h",   "VIDEO_SET_HIGHLIGHT",  0x6f27},
-       {"linux/dvb/dmx.h",     "DMX_START",    0x6f29},
-       {"linux/dvb/dmx.h",     "DMX_STOP",     0x6f2a},
-       {"linux/dvb/dmx.h",     "DMX_SET_FILTER",       0x6f2b},
-       {"linux/dvb/dmx.h",     "DMX_SET_PES_FILTER",   0x6f2c},
-       {"linux/dvb/dmx.h",     "DMX_SET_BUFFER_SIZE",  0x6f2d},
-       {"linux/dvb/dmx.h",     "DMX_GET_PES_PIDS",     0x6f2f},
-       {"linux/dvb/dmx.h",     "DMX_GET_CAPS", 0x6f30},
-       {"linux/dvb/dmx.h",     "DMX_SET_SOURCE",       0x6f31},
-       {"linux/dvb/dmx.h",     "DMX_GET_STC",  0x6f32},
-       {"linux/dvb/video.h",   "VIDEO_SET_SPU",        0x6f32},
-       {"linux/dvb/dmx.h",     "DMX_ADD_PID",  0x6f33},
-       {"linux/dvb/video.h",   "VIDEO_SET_SPU_PALETTE",        0x6f33},
-       {"linux/dvb/dmx.h",     "DMX_REMOVE_PID",       0x6f34},
-       {"linux/dvb/net.h",     "NET_ADD_IF",   0x6f34},
-       {"linux/dvb/video.h",   "VIDEO_GET_NAVI",       0x6f34},
-       {"linux/dvb/net.h",     "NET_REMOVE_IF",        0x6f35},
-       {"linux/dvb/video.h",   "VIDEO_SET_ATTRIBUTES", 0x6f35},
-       {"linux/dvb/net.h",     "NET_GET_IF",   0x6f36},
-       {"linux/dvb/video.h",   "VIDEO_GET_SIZE",       0x6f37},
-       {"linux/dvb/video.h",   "VIDEO_GET_FRAME_RATE", 0x6f38},
-       {"linux/dvb/video.h",   "VIDEO_GET_PTS",        0x6f39},
-       {"linux/dvb/video.h",   "VIDEO_GET_FRAME_COUNT",        0x6f3a},
-       {"linux/dvb/video.h",   "VIDEO_COMMAND",        0x6f3b},
-       {"linux/dvb/video.h",   "VIDEO_TRY_COMMAND",    0x6f3c},
-       {"linux/dvb/frontend.h",        "FE_GET_INFO",  0x6f3d},
-       {"linux/dvb/frontend.h",        "FE_DISEQC_RESET_OVERLOAD",     0x6f3e},
-       {"linux/dvb/frontend.h",        "FE_DISEQC_SEND_MASTER_CMD",    0x6f3f},
-       {"linux/dvb/frontend.h",        "FE_DISEQC_RECV_SLAVE_REPLY",   0x6f40},
-       {"mtd/ubi-user.h",      "UBI_IOCATT",   0x6f40},
-       {"linux/dvb/frontend.h",        "FE_DISEQC_SEND_BURST", 0x6f41},
-       {"mtd/ubi-user.h",      "UBI_IOCDET",   0x6f41},
-       {"linux/dvb/frontend.h",        "FE_SET_TONE",  0x6f42},
-       {"linux/dvb/frontend.h",        "FE_SET_VOLTAGE",       0x6f43},
-       {"linux/dvb/frontend.h",        "FE_ENABLE_HIGH_LNB_VOLTAGE",   0x6f44},
-       {"linux/dvb/frontend.h",        "FE_READ_STATUS",       0x6f45},
-       {"linux/dvb/frontend.h",        "FE_READ_BER",  0x6f46},
-       {"linux/dvb/frontend.h",        "FE_READ_SIGNAL_STRENGTH",      0x6f47},
-       {"linux/dvb/frontend.h",        "FE_READ_SNR",  0x6f48},
-       {"linux/dvb/frontend.h",        "FE_READ_UNCORRECTED_BLOCKS",   0x6f49},
-       {"linux/dvb/frontend.h",        "FE_SET_FRONTEND",      0x6f4c},
-       {"linux/dvb/frontend.h",        "FE_GET_FRONTEND",      0x6f4d},
-       {"linux/dvb/frontend.h",        "FE_GET_EVENT", 0x6f4e},
-       {"linux/dvb/frontend.h",        "FE_DISHNETWORK_SEND_LEGACY_CMD",       0x6f50},
-       {"linux/dvb/frontend.h",        "FE_SET_FRONTEND_TUNE_MODE",    0x6f51},
-       {"linux/dvb/frontend.h",        "FE_SET_PROPERTY",      0x6f52},
-       {"linux/dvb/frontend.h",        "FE_GET_PROPERTY",      0x6f53},
-       {"linux/dvb/ca.h",      "CA_RESET",     0x6f80},
-       {"linux/dvb/ca.h",      "CA_GET_CAP",   0x6f81},
-       {"linux/dvb/ca.h",      "CA_GET_SLOT_INFO",     0x6f82},
-       {"linux/dvb/ca.h",      "CA_GET_DESCR_INFO",    0x6f83},
-       {"linux/dvb/ca.h",      "CA_GET_MSG",   0x6f84},
-       {"linux/dvb/ca.h",      "CA_SEND_MSG",  0x6f85},
-       {"linux/dvb/ca.h",      "CA_SET_DESCR", 0x6f86},
-       {"linux/dvb/ca.h",      "CA_SET_PID",   0x6f87},
-       {"linux/dvb/osd.h",     "OSD_SEND_CMD", 0x6fa0},
-       {"linux/dvb/osd.h",     "OSD_GET_CAPABILITY",   0x6fa1},
        {"linux/phantom.h",     "PHN_GET_REG",  0x7000},
        {"linux/phantom.h",     "PHN_SET_REG",  0x7001},
        {"linux/rtc.h", "RTC_AIE_ON",   0x7001},
        {"linux/msdos_fs.h",    "VFAT_IOCTL_READDIR_SHORT",     0x7202},
        {"linux/msdos_fs.h",    "FAT_IOCTL_GET_ATTRIBUTES",     0x7210},
        {"linux/msdos_fs.h",    "FAT_IOCTL_SET_ATTRIBUTES",     0x7211},
+       {"linux/msdos_fs.h",    "FAT_IOCTL_GET_VOLUME_ID",      0x7213},
        {"linux/ppp-ioctl.h",   "PPPIOCGL2TPSTATS",     0x7436},
        {"linux/ppp-ioctl.h",   "PPPIOCGCHAN",  0x7437},
        {"linux/ppp-ioctl.h",   "PPPIOCATTCHAN",        0x7438},
        {"linux/uvcvideo.h",    "UVCIOC_CTRL_QUERY",    0x7521},
        {"linux/sonypi.h",      "SONYPI_IOCGBRT",       0x7600},
        {"linux/sonypi.h",      "SONYPI_IOCSBRT",       0x7600},
-       {"media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY",     0x7600},
        {"linux/fs.h",  "FS_IOC32_GETVERSION",  0x7601},
        {"linux/fs.h",  "FS_IOC_GETVERSION",    0x7601},
-       {"media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY",     0x7601},
        {"linux/fs.h",  "FS_IOC32_SETVERSION",  0x7602},
        {"linux/fs.h",  "FS_IOC_SETVERSION",    0x7602},
        {"linux/sonypi.h",      "SONYPI_IOCGBAT1CAP",   0x7602},
        {"linux/btrfs.h",       "BTRFS_IOC_QGROUP_ASSIGN",      0x9429},
        {"linux/btrfs.h",       "BTRFS_IOC_QGROUP_CREATE",      0x942a},
        {"linux/btrfs.h",       "BTRFS_IOC_QGROUP_LIMIT",       0x942b},
+       {"linux/btrfs.h",       "BTRFS_IOC_QUOTA_RESCAN",       0x942c},
+       {"linux/btrfs.h",       "BTRFS_IOC_QUOTA_RESCAN_STATUS",        0x942d},
+       {"linux/btrfs.h",       "BTRFS_IOC_QUOTA_RESCAN_WAIT",  0x942e},
        {"linux/btrfs.h",       "BTRFS_IOC_GET_FSLABEL",        0x9431},
        {"linux/btrfs.h",       "BTRFS_IOC_SET_FSLABEL",        0x9432},
        {"linux/btrfs.h",       "BTRFS_IOC_GET_DEV_STATS",      0x9434},
        {"linux/btrfs.h",       "BTRFS_IOC_DEV_REPLACE",        0x9435},
+       {"linux/btrfs.h",       "BTRFS_IOC_FILE_EXTENT_SAME",   0x9436},
        {"linux/nbd.h", "NBD_SET_SOCK", 0xab00},
        {"linux/nbd.h", "NBD_SET_BLKSIZE",      0xab01},
        {"linux/nbd.h", "NBD_SET_SIZE", 0xab02},
        {"linux/kvm.h", "KVM_PPC_GET_HTAB_FD",  0xaeaa},
        {"linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR",      0xaeab},
        {"linux/kvm.h", "KVM_GET_ONE_REG",      0xaeab},
+       {"linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN",    0xaeac},
        {"linux/kvm.h", "KVM_SET_ONE_REG",      0xaeac},
        {"linux/kvm.h", "KVM_KVMCLOCK_CTRL",    0xaead},
        {"linux/kvm.h", "KVM_ARM_VCPU_INIT",    0xaeae},
        {"linux/kvm.h", "KVM_GET_REG_LIST",     0xaeb0},
+       {"linux/kvm.h", "KVM_CREATE_DEVICE",    0xaee0},
+       {"linux/kvm.h", "KVM_SET_DEVICE_ATTR",  0xaee1},
+       {"linux/kvm.h", "KVM_GET_DEVICE_ATTR",  0xaee2},
+       {"linux/kvm.h", "KVM_HAS_DEVICE_ATTR",  0xaee3},
        {"linux/vhost.h",       "VHOST_GET_FEATURES",   0xaf00},
        {"linux/vhost.h",       "VHOST_SET_FEATURES",   0xaf00},
        {"linux/vhost.h",       "VHOST_SET_OWNER",      0xaf01},
        {"linux/vhost.h",       "VHOST_SET_VRING_CALL", 0xaf21},
        {"linux/vhost.h",       "VHOST_SET_VRING_ERR",  0xaf22},
        {"linux/vhost.h",       "VHOST_NET_SET_BACKEND",        0xaf30},
+       {"linux/vhost.h",       "VHOST_SCSI_SET_ENDPOINT",      0xaf40},
+       {"linux/vhost.h",       "VHOST_SCSI_CLEAR_ENDPOINT",    0xaf41},
+       {"linux/vhost.h",       "VHOST_SCSI_GET_ABI_VERSION",   0xaf42},
+       {"linux/vhost.h",       "VHOST_SCSI_SET_EVENTS_MISSED", 0xaf43},
+       {"linux/vhost.h",       "VHOST_SCSI_GET_EVENTS_MISSED", 0xaf44},
        {"linux/if_pppox.h",    "PPPOEIOCSFWD", 0xb100},
        {"linux/if_pppox.h",    "PPPOEIOCDFWD", 0xb101},
-       {"linux/mmc/ioctl.h",   "MMC_IOC_CMD",  0xb300},
        {"linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK",  0xcd01},
-       {"video/sisfb.h",       "SISFB_GET_INFO_SIZE",  0xf300},
-       {"video/sisfb.h",       "SISFB_GET_INFO",       0xf301},
-       {"video/sisfb.h",       "SISFB_GET_VBRSTATUS",  0xf302},
-       {"video/sisfb.h",       "SISFB_GET_AUTOMAXIMIZE",       0xf303},
-       {"video/sisfb.h",       "SISFB_SET_AUTOMAXIMIZE",       0xf303},
-       {"video/sisfb.h",       "SISFB_GET_TVPOSOFFSET",        0xf304},
-       {"video/sisfb.h",       "SISFB_SET_TVPOSOFFSET",        0xf304},
-       {"video/sisfb.h",       "SISFB_COMMAND",        0xf305},
-       {"video/sisfb.h",       "SISFB_SET_LOCK",       0xf306},
-       {"video/mbxfb.h",       "MBXFB_IOCX_OVERLAY",   0xf400},
-       {"video/mbxfb.h",       "MBXFB_IOCG_ALPHA",     0xf401},
-       {"video/mbxfb.h",       "MBXFB_IOCS_ALPHA",     0xf402},
-       {"video/mbxfb.h",       "MBXFB_IOCS_PLANEORDER",        0xf403},
-       {"video/mbxfb.h",       "MBXFB_IOCS_REG",       0xf404},
-       {"video/mbxfb.h",       "MBXFB_IOCX_REG",       0xf405},
        {"linux/dm-ioctl.h",    "DM_VERSION",   0xfd00},
        {"linux/dm-ioctl.h",    "DM_REMOVE_ALL",        0xfd01},
        {"linux/dm-ioctl.h",    "DM_LIST_DEVICES",      0xfd02},
diff --git a/linux/kexec.h b/linux/kexec.h
new file mode 100644 (file)
index 0000000..767ccb5
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef LINUX_KEXEC_H
+#define LINUX_KEXEC_H
+
+/* kexec system call -  It loads the new kernel to boot into.
+ * kexec does not sync, or unmount filesystems so if you need
+ * that to happen you need to do that yourself.
+ */
+
+/* kexec flags for different usage scenarios */
+#define KEXEC_ON_CRASH         0x00000001
+#define KEXEC_PRESERVE_CONTEXT 0x00000002
+#define KEXEC_ARCH_MASK                0xffff0000
+
+/* These values match the ELF architecture values.
+ * Unless there is a good reason that should continue to be the case.
+ */
+#define KEXEC_ARCH_DEFAULT ( 0 << 16)
+#define KEXEC_ARCH_386     ( 3 << 16)
+#define KEXEC_ARCH_X86_64  (62 << 16)
+#define KEXEC_ARCH_PPC     (20 << 16)
+#define KEXEC_ARCH_PPC64   (21 << 16)
+#define KEXEC_ARCH_IA_64   (50 << 16)
+#define KEXEC_ARCH_ARM     (40 << 16)
+#define KEXEC_ARCH_S390    (22 << 16)
+#define KEXEC_ARCH_SH      (42 << 16)
+#define KEXEC_ARCH_MIPS_LE (10 << 16)
+#define KEXEC_ARCH_MIPS    ( 8 << 16)
+
+/* The artificial cap on the number of segments passed to kexec_load. */
+#define KEXEC_SEGMENT_MAX 16
+
+/*
+ * This structure is used to hold the arguments that are used when
+ * loading  kernel binaries.
+ */
+struct kexec_segment {
+       const void *buf;
+       size_t bufsz;
+       const void *mem;
+       size_t memsz;
+};
+
+/* Load a new kernel image as described by the kexec_segment array
+ * consisting of passed number of segments at the entry-point address.
+ * The flags allow different useage types.
+ */
+extern int kexec_load(void *, size_t, struct kexec_segment *,
+               unsigned long int);
+
+#endif /* LINUX_KEXEC_H */
diff --git a/linux/keyctl.h b/linux/keyctl.h
new file mode 100644 (file)
index 0000000..840cb99
--- /dev/null
@@ -0,0 +1,61 @@
+/* keyctl.h: keyctl command IDs
+ *
+ * Copyright (C) 2004, 2008 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#ifndef _LINUX_KEYCTL_H
+#define _LINUX_KEYCTL_H
+
+/* special process keyring shortcut IDs */
+#define KEY_SPEC_THREAD_KEYRING                -1      /* - key ID for thread-specific keyring */
+#define KEY_SPEC_PROCESS_KEYRING       -2      /* - key ID for process-specific keyring */
+#define KEY_SPEC_SESSION_KEYRING       -3      /* - key ID for session-specific keyring */
+#define KEY_SPEC_USER_KEYRING          -4      /* - key ID for UID-specific keyring */
+#define KEY_SPEC_USER_SESSION_KEYRING  -5      /* - key ID for UID-session keyring */
+#define KEY_SPEC_GROUP_KEYRING         -6      /* - key ID for GID-specific keyring */
+#define KEY_SPEC_REQKEY_AUTH_KEY       -7      /* - key ID for assumed request_key auth key */
+#define KEY_SPEC_REQUESTOR_KEYRING     -8      /* - key ID for request_key() dest keyring */
+
+/* request-key default keyrings */
+#define KEY_REQKEY_DEFL_NO_CHANGE              -1
+#define KEY_REQKEY_DEFL_DEFAULT                        0
+#define KEY_REQKEY_DEFL_THREAD_KEYRING         1
+#define KEY_REQKEY_DEFL_PROCESS_KEYRING                2
+#define KEY_REQKEY_DEFL_SESSION_KEYRING                3
+#define KEY_REQKEY_DEFL_USER_KEYRING           4
+#define KEY_REQKEY_DEFL_USER_SESSION_KEYRING   5
+#define KEY_REQKEY_DEFL_GROUP_KEYRING          6
+#define KEY_REQKEY_DEFL_REQUESTOR_KEYRING      7
+
+/* keyctl commands */
+#define KEYCTL_GET_KEYRING_ID          0       /* ask for a keyring's ID */
+#define KEYCTL_JOIN_SESSION_KEYRING    1       /* join or start named session keyring */
+#define KEYCTL_UPDATE                  2       /* update a key */
+#define KEYCTL_REVOKE                  3       /* revoke a key */
+#define KEYCTL_CHOWN                   4       /* set ownership of a key */
+#define KEYCTL_SETPERM                 5       /* set perms on a key */
+#define KEYCTL_DESCRIBE                        6       /* describe a key */
+#define KEYCTL_CLEAR                   7       /* clear contents of a keyring */
+#define KEYCTL_LINK                    8       /* link a key into a keyring */
+#define KEYCTL_UNLINK                  9       /* unlink a key from a keyring */
+#define KEYCTL_SEARCH                  10      /* search for a key in a keyring */
+#define KEYCTL_READ                    11      /* read a key or keyring's contents */
+#define KEYCTL_INSTANTIATE             12      /* instantiate a partially constructed key */
+#define KEYCTL_NEGATE                  13      /* negate a partially constructed key */
+#define KEYCTL_SET_REQKEY_KEYRING      14      /* set default request-key keyring */
+#define KEYCTL_SET_TIMEOUT             15      /* set key timeout */
+#define KEYCTL_ASSUME_AUTHORITY                16      /* assume request_key() authorisation */
+#define KEYCTL_GET_SECURITY            17      /* get key security label */
+#define KEYCTL_SESSION_TO_PARENT       18      /* apply session keyring to parent process */
+#define KEYCTL_REJECT                  19      /* reject a partially constructed key */
+#define KEYCTL_INSTANTIATE_IOV         20      /* instantiate a partially constructed key */
+#define KEYCTL_INVALIDATE              21      /* invalidate a key */
+#define KEYCTL_GET_PERSISTENT          22      /* get a user's persistent keyring */
+
+#endif /*  _LINUX_KEYCTL_H */
index d3eec79..4543db8 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall" }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 1,    TD|TM,  sys_old_mmap,           "old_mmap"      }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 1,    TD|TM|SI,       sys_old_mmap,           "old_mmap"      }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 4,    0,      sys_cacheflush,         "cacheflush"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      printargs,              "getpagesize"   }, /* 166 */
        { 5,    0,      sys_putpmsg,            "putpmsg"       }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      sys_getrlimit,          "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 192 */
        { 3,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 3,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 244 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 245 */
        { 5,    TD,     sys_fadvise64,          "fadvise64"     }, /* 246 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 247 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 247 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 248 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 249 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 250 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 251 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 252 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 252 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 253 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 254 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 255 */
        { 6,    0,      printargs,              "atomic_comxchg_32"}, /* 335 */
        { 0,    0,      printargs,              "atomic_barrier"}, /* 336 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 337 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 338 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 338 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 339 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 340 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 341 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 346 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 347 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 348 */
-       { 5,    0,      NULL,                   NULL            }, /* 349 */
-       { 5,    0,      NULL,                   NULL            }, /* 350 */
-       { 5,    0,      NULL,                   NULL            }, /* 351 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 349 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 350 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 351 */
        { 5,    0,      NULL,                   NULL            }, /* 352 */
        { 5,    0,      NULL,                   NULL            }, /* 353 */
        { 5,    0,      NULL,                   NULL            }, /* 354 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
index 9401ca4..ac42cd2 100644 (file)
@@ -91,8 +91,8 @@
        { 2,    0,      sys_capget,                     "capget"                }, /* 90 */
        { 2,    0,      sys_capset,                     "capset"                }, /* 91 */
        { 1,    0,      sys_personality,                "personality"           }, /* 92 */
-       { 1,    TP,     sys_exit,                       "exit"                  }, /* 93 */
-       { 1,    TP,     sys_exit,                       "exit_group"            }, /* 94 */
+       { 1,    TP|SE,  sys_exit,                       "exit"                  }, /* 93 */
+       { 1,    TP|SE,  sys_exit,                       "exit_group"            }, /* 94 */
        { 5,    TP,     sys_waitid,                     "waitid"                }, /* 95 */
        { 1,    0,      sys_set_tid_address,            "set_tid_address"       }, /* 96 */
        { 1,    TP,     sys_unshare,                    "unshare"               }, /* 97 */
        { 3,    TI,     sys_semop,                      "semop"                 }, /* 193 */
        { 3,    TI,     sys_shmget,                     "shmget"                }, /* 194 */
        { 3,    TI,     sys_shmctl,                     "shmctl"                }, /* 195 */
-       { 3,    TI,     sys_shmat,                      "shmat"                 }, /* 196 */
-       { 1,    TI,     sys_shmdt,                      "shmdt"                 }, /* 197 */
+       { 3,    TI|TM|SI,       sys_shmat,                      "shmat"                 }, /* 196 */
+       { 1,    TI|TM|SI,       sys_shmdt,                      "shmdt"                 }, /* 197 */
        { 3,    TN,     sys_socket,                     "socket"                }, /* 198 */
        { 4,    TN,     sys_socketpair,                 "socketpair"            }, /* 199 */
        { 3,    TN,     sys_bind,                       "bind"                  }, /* 200 */
        { 3,    TN,     sys_sendmsg,                    "sendmsg"               }, /* 211 */
        { 3,    TN,     sys_recvmsg,                    "recvmsg"               }, /* 212 */
        { 4,    TD,     sys_readahead,                  "readahead"             }, /* 213 */
-       { 1,    TM,     sys_brk,                        "brk"                   }, /* 214 */
-       { 2,    TM,     sys_munmap,                     "munmap"                }, /* 215 */
-       { 5,    TM,     sys_mremap,                     "mremap"                }, /* 216 */
+       { 1,    TM|SI,  sys_brk,                        "brk"                   }, /* 214 */
+       { 2,    TM|SI,  sys_munmap,                     "munmap"                }, /* 215 */
+       { 5,    TM|SI,  sys_mremap,                     "mremap"                }, /* 216 */
        { 5,    0,      sys_add_key,                    "add_key"               }, /* 217 */
        { 4,    0,      sys_request_key,                "request_key"           }, /* 218 */
        { 5,    0,      sys_keyctl,                     "keyctl"                }, /* 219 */
        { 5,    TP,     sys_clone,                      "clone"                 }, /* 220 */
-       { 3,    TF|TP,  sys_execve,                     "execve"                }, /* 221 */
-       { 6,    TD|TM,  sys_mmap,                       "mmap2"                 }, /* 222 */
+       { 3,    TF|TP|SE|SI,    sys_execve,                     "execve"                }, /* 221 */
+       { 6,    TD|TM|SI,       sys_mmap,                       "mmap2"                 }, /* 222 */
        { 6,    TD,     sys_fadvise64_64,               "fadvise64_64"          }, /* 223 */
        { 2,    TF,     sys_swapon,                     "swapon"                }, /* 224 */
        { 1,    TF,     sys_swapoff,                    "swapoff"               }, /* 225 */
-       { 3,    TM,     sys_mprotect,                   "mprotect"              }, /* 226 */
+       { 3,    TM|SI,  sys_mprotect,                   "mprotect"              }, /* 226 */
        { 3,    TM,     sys_msync,                      "msync"                 }, /* 227 */
        { 2,    TM,     sys_mlock,                      "mlock"                 }, /* 228 */
        { 2,    TM,     sys_munlock,                    "munlock"               }, /* 229 */
        { 0,    TM,     sys_munlockall,                 "munlockall"            }, /* 231 */
        { 3,    TM,     sys_mincore,                    "mincore"               }, /* 232 */
        { 3,    TM,     sys_madvise,                    "madvise"               }, /* 233 */
-       { 5,    TM,     sys_remap_file_pages,           "remap_file_pages"      }, /* 234 */
+       { 5,    TM|SI,  sys_remap_file_pages,           "remap_file_pages"      }, /* 234 */
        { 6,    TM,     sys_mbind,                      "mbind"                 }, /* 235 */
        { 5,    TM,     sys_get_mempolicy,              "get_mempolicy"         }, /* 236 */
        { 3,    TM,     sys_set_mempolicy,              "set_mempolicy"         }, /* 237 */
        { 4,    TP,     sys_wait4,                      "wait4"                 }, /* 260 */
        { 4,    0,      sys_prlimit64,                  "prlimit64"             }, /* 261 */
        { 2,    TD,     sys_fanotify_init,              "fanotify_init"         }, /* 262 */
-       { 5,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"         }, /* 263 */
+       { 6,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"         }, /* 263 */
        { 5,    TD|TF,  sys_name_to_handle_at,          "name_to_handle_at"     }, /* 264 */
        { 3,    TD,     sys_open_by_handle_at,          "open_by_handle_at"     }, /* 265 */
        { 2,    0,      sys_clock_adjtime,              "clock_adjtime"         }, /* 266 */
index 22b69c4..c10e957 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall" }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 6,    TD|TM,  sys_mmap,               "old_mmap"      }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       sys_mmap,               "old_mmap"      }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 3,    0,      sys_modify_ldt,         "modify_ldt"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      sys_putpmsg,            "putpmsg"       }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      sys_getrlimit,          "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 192 */
        { 3,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 3,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 249 */
        { 5,    TD,     sys_fadvise64,          "fadvise64"     }, /* 250 */
        { 0,    0,      NULL,                   NULL            }, /* 251 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 252 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 252 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 253 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 254 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 255 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 256 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 257 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 257 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 258 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 259 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 260 */
        { 4,    TI,     sys_msgget,             "msgget"        }, /* 332 */
        { 4,    TI,     sys_msgrcv,             "msgrcv"        }, /* 333 */
        { 4,    TI,     sys_msgsnd,             "msgsnd"        }, /* 334 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 335 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 335 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 336 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 337 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 337 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 338 */
        { 4,    TD|TS,  printargs,              "signalfd4"     }, /* 339 */
        { 2,    TD,     printargs,              "eventfd2"      }, /* 340 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"       }, /* 366 */
        { 5,    TN,     printargs,              "recvmmsg"      }, /* 367 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 368 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 369 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 369 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 370 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 371 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 372 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 378 */
        { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 379 */
        { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 380 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 381 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 382 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 383 */
index 696108f..0902e40 100644 (file)
        { 0,    0,      printargs,              "svr4_priocntlset"      }, /*  0112 */
        { 0,    0,      printargs,              "svr4_pathconf" }, /*  0113 */
        { 0,    TM,     printargs,              "svr4_mincore"  }, /*  0114 */
-       { 0,    TD|TM,  printargs,              "svr4_mmap"     }, /*  0115 */
-       { 0,    TM,     printargs,              "svr4_mprotect" }, /*  0116 */
-       { 0,    TM,     printargs,              "svr4_munmap"   }, /*  0117 */
+       { 0,    TD|TM|SI,       printargs,              "svr4_mmap"     }, /*  0115 */
+       { 0,    TM|SI,  printargs,              "svr4_mprotect" }, /*  0116 */
+       { 0,    TM|SI,  printargs,              "svr4_munmap"   }, /*  0117 */
        { 0,    0,      printargs,              "svr4_fpathconf"        }, /*  0118 */
        { 0,    0,      printargs,              "svr4_vfork"    }, /*  0119 */
        { 0,    0,      printargs,              "svr4_fchdir"   }, /*  0120 */
        { 0,    0,      printargs,              "sysv_mknod"    }, /* 1014 */
        { 0,    0,      printargs,              "sysv_chmod"    }, /* 1015 */
        { 0,    0,      printargs,              "sysv_chown"    }, /* 1016 */
-       { 0,    TM,     printargs,              "sysv_brk"      }, /* 1017 */
+       { 0,    TM|SI,  printargs,              "sysv_brk"      }, /* 1017 */
        { 0,    0,      printargs,              "sysv_stat"     }, /* 1018 */
        { 0,    0,      printargs,              "sysv_lseek"    }, /* 1019 */
        { 0,    0,      printargs,              "sysv_getpid"   }, /* 1020 */
        { 0,    0,      printargs,              "sysv_procblk"  }, /* 1131 */
        { 0,    0,      printargs,              "sysv_sprocsp"  }, /* 1132 */
        { 0,    0,      printargs,              "sysv_sgigsc"   }, /* 1133 */
-       { 0,    TD|TM,  printargs,              "sysv_mmap"     }, /* 1134 */
-       { 0,    TM,     printargs,              "sysv_munmap"   }, /* 1135 */
-       { 0,    TM,     printargs,              "sysv_mprotect" }, /* 1136 */
+       { 0,    TD|TM|SI,       printargs,              "sysv_mmap"     }, /* 1134 */
+       { 0,    TM|SI,  printargs,              "sysv_munmap"   }, /* 1135 */
+       { 0,    TM|SI,  printargs,              "sysv_mprotect" }, /* 1136 */
        { 0,    TM,     printargs,              "sysv_msync"    }, /* 1137 */
        { 0,    TM,     printargs,              "sysv_madvise"  }, /* 1138 */
        { 0,    0,      printargs,              "sysv_pagelock" }, /* 1139 */
        { 0,    0,      printargs,              "sysv_writev"   }, /* 1182 */
        { 0,    0,      printargs,              "sysv_truncate64"       }, /* 1183 */
        { 0,    0,      printargs,              "sysv_ftruncate64"      }, /* 1184 */
-       { 0,    TD|TM,  printargs,              "sysv_mmap64"   }, /* 1185 */
+       { 0,    TD|TM|SI,       printargs,              "sysv_mmap64"   }, /* 1185 */
        { 0,    0,      printargs,              "sysv_dmi"      }, /* 1186 */
        { 0,    0,      printargs,              "sysv_pread"    }, /* 1187 */
        { 0,    0,      printargs,              "sysv_pwrite"   }, /* 1188 */
        { 0,    0,      printargs,              "bsd43_fstat"   }, /* 2062 */
        { 0,    0,      NULL,                   NULL            }, /* 2063 */
        { 0,    0,      printargs,              "bsd43_getpagesize"     }, /* 2064 */
-       { 0,    TM,     printargs,              "bsd43_mremap"  }, /* 2065 */
+       { 0,    TM|SI,  printargs,              "bsd43_mremap"  }, /* 2065 */
        { 0,    0,      printargs,              "bsd43_vfork"   }, /* 2066 */
        { 0,    0,      printargs,              "bsd43_vread"   }, /* 2067 */
        { 0,    0,      printargs,              "bsd43_vwrite"  }, /* 2068 */
-       { 0,    TM,     printargs,              "bsd43_sbrk"    }, /* 2069 */
+       { 0,    TM|SI,  printargs,              "bsd43_sbrk"    }, /* 2069 */
        { 0,    0,      printargs,              "bsd43_sstk"    }, /* 2070 */
-       { 0,    TD|TM,  printargs,              "bsd43_mmap"    }, /* 2071 */
+       { 0,    TD|TM|SI,       printargs,              "bsd43_mmap"    }, /* 2071 */
        { 0,    0,      printargs,              "bsd43_vadvise" }, /* 2072 */
-       { 0,    TM,     printargs,              "bsd43_munmap"  }, /* 2073 */
-       { 0,    TM,     printargs,              "bsd43_mprotect"        }, /* 2074 */
+       { 0,    TM|SI,  printargs,              "bsd43_munmap"  }, /* 2073 */
+       { 0,    TM|SI,  printargs,              "bsd43_mprotect"        }, /* 2074 */
        { 0,    TM,     printargs,              "bsd43_madvise" }, /* 2075 */
        { 0,    0,      printargs,              "bsd43_vhangup" }, /* 2076 */
        { 0,    0,      printargs,              "bsd43_vlimit"  }, /* 2077 */
        { 0,    0,      printargs,              "posix_SGI_blkproc"     }, /* 3131 */
        { 0,    0,      NULL,                   NULL            }, /* 3132 */
        { 0,    0,      printargs,              "posix_SGI_sgigsc"      }, /* 3133 */
-       { 0,    TD|TM,  printargs,              "posix_SGI_mmap"        }, /* 3134 */
-       { 0,    TM,     printargs,              "posix_SGI_munmap"      }, /* 3135 */
-       { 0,    TM,     printargs,              "posix_SGI_mprotect"    }, /* 3136 */
+       { 0,    TD|TM|SI,       printargs,              "posix_SGI_mmap"        }, /* 3134 */
+       { 0,    TM|SI,  printargs,              "posix_SGI_munmap"      }, /* 3135 */
+       { 0,    TM|SI,  printargs,              "posix_SGI_mprotect"    }, /* 3136 */
        { 0,    TM,     printargs,              "posix_SGI_msync"       }, /* 3137 */
        { 0,    TM,     printargs,              "posix_SGI_madvise"     }, /* 3138 */
        { 0,    0,      printargs,              "posix_SGI_mpin"        }, /* 3139 */
        { 0,    0,      printargs,              "posix_fchown"  }, /* 3152 */
        { 0,    0,      printargs,              "posix_fchmod"  }, /* 3153 */
        { 0,    0,      printargs,              "posix_wait3"   }, /* 3154 */
-       { 0,    TD|TM,  printargs,              "posix_mmap"    }, /* 3155 */
-       { 0,    TM,     printargs,              "posix_munmap"  }, /* 3156 */
+       { 0,    TD|TM|SI,       printargs,              "posix_mmap"    }, /* 3155 */
+       { 0,    TM|SI,  printargs,              "posix_munmap"  }, /* 3156 */
        { 0,    TM,     printargs,              "posix_madvise" }, /* 3157 */
        { 0,    0,      printargs,              "posix_BSD_getpagesize" }, /* 3158 */
        { 0,    0,      printargs,              "posix_setreuid"        }, /* 3159 */
index 69453b1..ba7c84f 100644 (file)
@@ -9,10 +9,10 @@
        { 2,    TF,     sys_lstat64,            "lstat"         }, /* 6006 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 6007 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 6008 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"          }, /* 6009 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 6010 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 6011 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 6012 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"          }, /* 6009 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 6010 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 6011 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 6012 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 6013 */
        { 4,    TS,     sys_rt_sigprocmask,     "rt_sigprocmask"}, /* 6014 */
        { 3,    TD,     sys_ioctl,              "ioctl"         }, /* 6015 */
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 6021 */
        { 5,    TD,     sys_select,             "_newselect"    }, /* 6022 */
        { 0,    0,      sys_sched_yield,        "sched_yield"   }, /* 6023 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 6024 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 6024 */
        { 3,    TM,     sys_msync,              "msync"         }, /* 6025 */
        { 3,    TM,     sys_mincore,            "mincore"       }, /* 6026 */
        { 3,    TM,     sys_madvise,            "madvise"       }, /* 6027 */
        { 3,    TI,     sys_shmget,             "shmget"        }, /* 6028 */
-       { 3,    TI,     sys_shmat,              "shmat"         }, /* 6029 */
+       { 3,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 6029 */
        { 3,    TI,     sys_shmctl,             "shmctl"        }, /* 6030 */
        { 1,    TD,     sys_dup,                "dup"           }, /* 6031 */
        { 2,    TD,     sys_dup2,               "dup2"          }, /* 6032 */
        { 4,    TN,     sys_socketpair,         "socketpair"    }, /* 6052 */
        { 5,    TN,     sys_setsockopt,         "setsockopt"    }, /* 6053 */
        { 5,    TN,     sys_getsockopt,         "getsockopt"    }, /* 6054 */
-       { 2,    TP,     sys_clone,              "clone"         }, /* 6055 */
+       { 5,    TP,     sys_clone,              "clone"         }, /* 6055 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 6056 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 6057 */
-       { 1,    TP,     sys_exit,               "exit"          }, /* 6058 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 6057 */
+       { 1,    TP|SE,  sys_exit,               "exit"          }, /* 6058 */
        { 4,    TP,     sys_wait4,              "wait4"         }, /* 6059 */
        { 2,    TS,     sys_kill,               "kill"          }, /* 6060 */
        { 1,    0,      sys_uname,              "uname"         }, /* 6061 */
        { 3,    TI,     sys_semget,             "semget"        }, /* 6062 */
        { 3,    TI,     printargs,              "semop"         }, /* 6063 */
        { 4,    TI,     sys_semctl,             "semctl"        }, /* 6064 */
-       { 1,    TI,     sys_shmdt,              "shmdt"         }, /* 6065 */
+       { 1,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 6065 */
        { 2,    TI,     sys_msgget,             "msgget"        }, /* 6066 */
        { 4,    TI,     sys_msgsnd,             "msgsnd"        }, /* 6067 */
        { 5,    TI,     sys_msgrcv,             "msgrcv"        }, /* 6068 */
        { 5,    0,      sys_io_getevents,       "io_getevents"  }, /* 6202 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 6203 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 6204 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 6205 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 6205 */
        { 3,    0,      sys_lookup_dcookie,     "lookup_dcookie"        }, /* 6206 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 6207 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 6208 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 6209 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"      }, /* 6210 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"      }, /* 6210 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 6211 */
        { 3,    TD,     sys_fcntl,              "fcntl64"       }, /* 6212 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address" }, /* 6213 */
        { 2,    TD,     sys_setns,              "setns"         }, /* 6308 */
        { 6,    0,      sys_process_vm_readv,   "process_vm_readv"      }, /* 6309 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 6310 */
-       { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 6311 */
-       { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 6312 */
+       { 5,    0,      sys_kcmp,               "kcmp"          }, /* 6311 */
+       { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 6312 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 6313 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 6314 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 6315 */
 #else
        { 0,    0,      printargs,              "n32_read"              }, /* 6000 */
        { 0,    0,      printargs,              "n32_write"             }, /* 6001 */
        { 0,    0,      printargs,              "n32_lstat"             }, /* 6006 */
        { 0,    0,      printargs,              "n32_poll"              }, /* 6007 */
        { 0,    0,      printargs,              "n32_lseek"             }, /* 6008 */
-       { 0,    TD|TM,  printargs,              "n32_mmap"              }, /* 6009 */
-       { 0,    TM,     printargs,              "n32_mprotect"          }, /* 6010 */
-       { 0,    TM,     printargs,              "n32_munmap"            }, /* 6011 */
-       { 0,    TM,     printargs,              "n32_brk"               }, /* 6012 */
+       { 0,    TD|TM|SI,       printargs,              "n32_mmap"              }, /* 6009 */
+       { 0,    TM|SI,  printargs,              "n32_mprotect"          }, /* 6010 */
+       { 0,    TM|SI,  printargs,              "n32_munmap"            }, /* 6011 */
+       { 0,    TM|SI,  printargs,              "n32_brk"               }, /* 6012 */
        { 0,    0,      printargs,              "n32_rt_sigaction"      }, /* 6013 */
        { 0,    0,      printargs,              "n32_rt_sigprocmask"    }, /* 6014 */
        { 0,    0,      printargs,              "n32_ioctl"             }, /* 6015 */
        { 0,    0,      printargs,              "n32_pipe"              }, /* 6021 */
        { 0,    0,      printargs,              "n32__newselect"        }, /* 6022 */
        { 0,    0,      printargs,              "n32_sched_yield"       }, /* 6023 */
-       { 0,    TM,     printargs,              "n32_mremap"            }, /* 6024 */
+       { 0,    TM|SI,  printargs,              "n32_mremap"            }, /* 6024 */
        { 0,    TM,     printargs,              "n32_msync"             }, /* 6025 */
        { 0,    TM,     printargs,              "n32_mincore"           }, /* 6026 */
        { 0,    TM,     printargs,              "n32_madvise"           }, /* 6027 */
        { 0,    0,      printargs,              "n32_shmget"            }, /* 6028 */
-       { 0,    0,      printargs,              "n32_shmat"             }, /* 6029 */
+       { 0,    TI|TM|SI,       printargs,              "n32_shmat"             }, /* 6029 */
        { 0,    0,      printargs,              "n32_shmctl"            }, /* 6030 */
        { 0,    0,      printargs,              "n32_dup"               }, /* 6031 */
        { 0,    0,      printargs,              "n32_dup2"              }, /* 6032 */
        { 0,    0,      printargs,              "n32_socketpair"        }, /* 6052 */
        { 0,    0,      printargs,              "n32_setsockopt"        }, /* 6053 */
        { 0,    0,      printargs,              "n32_getsockopt"        }, /* 6054 */
-       { 0,    0,      printargs,              "n32_clone"             }, /* 6055 */
-       { 0,    0,      printargs,              "n32_fork"              }, /* 6056 */
-       { 0,    0,      printargs,              "n32_execve"            }, /* 6057 */
-       { 0,    0,      printargs,              "n32_exit"              }, /* 6058 */
-       { 0,    0,      printargs,              "n32_wait4"             }, /* 6059 */
+       { 5,    TP,     printargs,              "n32_clone"             }, /* 6055 */
+       { 0,    TP,     printargs,              "n32_fork"              }, /* 6056 */
+       { 3,    TF|TP|SE|SI,    printargs,              "n32_execve"            }, /* 6057 */
+       { 1,    TP|SE,  printargs,              "n32_exit"              }, /* 6058 */
+       { 4,    TP,     printargs,              "n32_wait4"             }, /* 6059 */
        { 0,    0,      printargs,              "n32_kill"              }, /* 6060 */
        { 0,    0,      printargs,              "n32_uname"             }, /* 6061 */
        { 0,    0,      printargs,              "n32_semget"            }, /* 6062 */
        { 0,    0,      printargs,              "n32_semop"             }, /* 6063 */
        { 0,    0,      printargs,              "n32_semctl"            }, /* 6064 */
-       { 0,    0,      printargs,              "n32_shmdt"             }, /* 6065 */
+       { 0,    TI|TM|SI,       printargs,              "n32_shmdt"             }, /* 6065 */
        { 0,    0,      printargs,              "n32_msgget"            }, /* 6066 */
        { 0,    0,      printargs,              "n32_msgsnd"            }, /* 6067 */
        { 0,    0,      printargs,              "n32_msgrcv"            }, /* 6068 */
        { 0,    0,      printargs,              "n32_io_getevents"      }, /* 6202 */
        { 0,    0,      printargs,              "n32_io_submit"         }, /* 6203 */
        { 0,    0,      printargs,              "n32_io_cancel"         }, /* 6204 */
-       { 1,    TP,     printargs,              "n32_exit_group"        }, /* 6205 */
+       { 1,    TP|SE,  printargs,              "n32_exit_group"        }, /* 6205 */
        { 0,    0,      printargs,              "n32_lookup_dcookie"    }, /* 6206 */
        { 0,    0,      printargs,              "n32_epoll_create"      }, /* 6207 */
        { 0,    0,      printargs,              "n32_epoll_ctl"         }, /* 6208 */
        { 0,    0,      printargs,              "n32_epoll_wait"        }, /* 6209 */
-       { 0,    TM,     printargs,              "n32_remap_file_pages"  }, /* 6210 */
+       { 0,    TM|SI,  printargs,              "n32_remap_file_pages"  }, /* 6210 */
        { 0,    0,      printargs,              "n32_rt_sigreturn"      }, /* 6211 */
        { 0,    0,      printargs,              "n32_fcntl64"           }, /* 6212 */
        { 0,    0,      printargs,              "n32_set_tid_address"   }, /* 6213 */
        { 6,    0,      printargs,              "n32_process_vm_writev" }, /* 6310 */
        { 5,    0,      printargs,              "n32_kcmp"              }, /* 6311 */
        { 3,    TD,     printargs,              "n32_finit_module"      }, /* 6312 */
+       { 3,    0,      printargs,              "n32_sched_setattr"     }, /* 6313 */
+       { 4,    0,      printargs,              "n32_sched_getattr"     }, /* 6314 */
+       { 5,    TD|TF,  printargs,              "n32_renameat2"         }, /* 6315 */
 #endif
index dd5da40..9a4143e 100644 (file)
@@ -9,10 +9,10 @@
        { 2,    TF,     sys_lstat,              "lstat"         }, /* 5006 */
        { 3,    TD,     sys_poll,               "poll"          }, /* 5007 */
        { 3,    TD,     sys_lseek,              "lseek"         }, /* 5008 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"          }, /* 5009 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 5010 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 5011 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 5012 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"          }, /* 5009 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 5010 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 5011 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 5012 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  }, /* 5013 */
        { 4,    TS,     sys_rt_sigprocmask,     "rt_sigprocmask"}, /* 5014 */
        { 3,    TD,     sys_ioctl,              "ioctl"         }, /* 5015 */
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 5021 */
        { 5,    TD,     sys_select,             "_newselect"    }, /* 5022 */
        { 0,    0,      sys_sched_yield,        "sched_yield"   }, /* 5023 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 5024 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 5024 */
        { 3,    TM,     sys_msync,              "msync"         }, /* 5025 */
        { 3,    TM,     sys_mincore,            "mincore"       }, /* 5026 */
        { 3,    TM,     sys_madvise,            "madvise"       }, /* 5027 */
        { 3,    TI,     sys_shmget,             "shmget"        }, /* 5028 */
-       { 3,    TI,     sys_shmat,              "shmat"         }, /* 5029 */
+       { 3,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 5029 */
        { 3,    TI,     sys_shmctl,             "shmctl"        }, /* 5030 */
        { 1,    TD,     sys_dup,                "dup"           }, /* 5031 */
        { 2,    TD,     sys_dup2,               "dup2"          }, /* 5032 */
        { 4,    TN,     sys_socketpair,         "socketpair"    }, /* 5052 */
        { 5,    TN,     sys_setsockopt,         "setsockopt"    }, /* 5053 */
        { 5,    TN,     sys_getsockopt,         "getsockopt"    }, /* 5054 */
-       { 2,    TP,     sys_clone,              "clone"         }, /* 5055 */
+       { 5,    TP,     sys_clone,              "clone"         }, /* 5055 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 5056 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 5057 */
-       { 1,    TP,     sys_exit,               "exit"          }, /* 5058 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 5057 */
+       { 1,    TP|SE,  sys_exit,               "exit"          }, /* 5058 */
        { 4,    TP,     sys_wait4,              "wait4"         }, /* 5059 */
        { 2,    TS,     sys_kill,               "kill"          }, /* 5060 */
        { 1,    0,      sys_uname,              "uname"         }, /* 5061 */
        { 3,    TI,     sys_semget,             "semget"        }, /* 5062 */
        { 3,    TI,     printargs,              "semop"         }, /* 5063 */
        { 4,    TI,     sys_semctl,             "semctl"        }, /* 5064 */
-       { 1,    TI,     sys_shmdt,              "shmdt"         }, /* 5065 */
+       { 1,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 5065 */
        { 2,    TI,     sys_msgget,             "msgget"        }, /* 5066 */
        { 4,    TI,     sys_msgsnd,             "msgsnd"        }, /* 5067 */
        { 5,    TI,     sys_msgrcv,             "msgrcv"        }, /* 5068 */
        { 5,    0,      sys_io_getevents,       "io_getevents"  }, /* 5202 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 5203 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 5204 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 5205 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 5205 */
        { 3,    0,      sys_lookup_dcookie,     "lookup_dcookie" }, /* 5206 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 5207 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 5208 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 5209 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages" }, /* 5210 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages" }, /* 5210 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  }, /* 5211 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address" }, /* 5212 */
        { 0,    0,      sys_restart_syscall,    "restart_syscall" }, /* 5213 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 5305 */
        { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 5306 */
        { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 5307 */
+       { 3,    TD,     sys_getdents64,         "getdents64"            }, /* 5308 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr"         }, /* 5309 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr"         }, /* 5310 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"             }, /* 5311 */
 #else
        { 0,    0,      printargs,              "n64_read"              }, /* 5000 */
        { 0,    0,      printargs,              "n64_write"             }, /* 5001 */
        { 0,    0,      printargs,              "n64_lstat"             }, /* 5006 */
        { 0,    0,      printargs,              "n64_poll"              }, /* 5007 */
        { 0,    0,      printargs,              "n64_lseek"             }, /* 5008 */
-       { 0,    TD|TM,  printargs,              "n64_mmap"              }, /* 5009 */
-       { 0,    TM,     printargs,              "n64_mprotect"          }, /* 5010 */
-       { 0,    TM,     printargs,              "n64_munmap"            }, /* 5011 */
-       { 0,    TM,     printargs,              "n64_brk"               }, /* 5012 */
+       { 0,    TD|TM|SI,       printargs,              "n64_mmap"              }, /* 5009 */
+       { 0,    TM|SI,  printargs,              "n64_mprotect"          }, /* 5010 */
+       { 0,    TM|SI,  printargs,              "n64_munmap"            }, /* 5011 */
+       { 0,    TM|SI,  printargs,              "n64_brk"               }, /* 5012 */
        { 0,    0,      printargs,              "n64_rt_sigaction"      }, /* 5013 */
        { 0,    0,      printargs,              "n64_rt_sigprocmask"    }, /* 5014 */
        { 0,    0,      printargs,              "n64_ioctl"             }, /* 5015 */
        { 0,    0,      printargs,              "n64_pipe"              }, /* 5021 */
        { 0,    0,      printargs,              "n64__newselect"        }, /* 5022 */
        { 0,    0,      printargs,              "n64_sched_yield"       }, /* 5023 */
-       { 0,    TM,     printargs,              "n64_mremap"            }, /* 5024 */
+       { 0,    TM|SI,  printargs,              "n64_mremap"            }, /* 5024 */
        { 0,    TM,     printargs,              "n64_msync"             }, /* 5025 */
        { 0,    TM,     printargs,              "n64_mincore"           }, /* 5026 */
        { 0,    TM,     printargs,              "n64_madvise"           }, /* 5027 */
        { 0,    0,      printargs,              "n64_shmget"            }, /* 5028 */
-       { 0,    0,      printargs,              "n64_shmat"             }, /* 5029 */
+       { 0,    TI|TM|SI,       printargs,              "n64_shmat"             }, /* 5029 */
        { 0,    0,      printargs,              "n64_shmctl"            }, /* 5030 */
        { 0,    0,      printargs,              "n64_dup"               }, /* 5031 */
        { 0,    0,      printargs,              "n64_dup2"              }, /* 5032 */
        { 0,    0,      printargs,              "n64_socketpair"        }, /* 5052 */
        { 0,    0,      printargs,              "n64_setsockopt"        }, /* 5053 */
        { 0,    0,      printargs,              "n64_getsockopt"        }, /* 5054 */
-       { 0,    0,      printargs,              "n64_clone"             }, /* 5055 */
-       { 0,    0,      printargs,              "n64_fork"              }, /* 5056 */
-       { 0,    0,      printargs,              "n64_execve"            }, /* 5057 */
-       { 0,    0,      printargs,              "n64_exit"              }, /* 5058 */
-       { 0,    0,      printargs,              "n64_wait4"             }, /* 5059 */
+       { 5,    TP,     printargs,              "n64_clone"             }, /* 5055 */
+       { 0,    TP,     printargs,              "n64_fork"              }, /* 5056 */
+       { 3,    TF|TP|SE|SI,    printargs,              "n64_execve"            }, /* 5057 */
+       { 1,    TP|SE,  printargs,              "n64_exit"              }, /* 5058 */
+       { 4,    TP,     printargs,              "n64_wait4"             }, /* 5059 */
        { 0,    0,      printargs,              "n64_kill"              }, /* 5060 */
        { 0,    0,      printargs,              "n64_uname"             }, /* 5061 */
        { 0,    0,      printargs,              "n64_semget"            }, /* 5062 */
        { 0,    0,      printargs,              "n64_semop"             }, /* 5063 */
        { 0,    0,      printargs,              "n64_semctl"            }, /* 5064 */
-       { 0,    0,      printargs,              "n64_shmdt"             }, /* 5065 */
+       { 0,    TI|TM|SI,       printargs,              "n64_shmdt"             }, /* 5065 */
        { 0,    0,      printargs,              "n64_msgget"            }, /* 5066 */
        { 0,    0,      printargs,              "n64_msgsnd"            }, /* 5067 */
        { 0,    0,      printargs,              "n64_msgrcv"            }, /* 5068 */
        { 0,    0,      printargs,              "n64_io_getevents"      }, /* 5202 */
        { 0,    0,      printargs,              "n64_io_submit"         }, /* 5203 */
        { 0,    0,      printargs,              "n64_io_cancel"         }, /* 5204 */
-       { 1,    TP,     printargs,              "n64_exit_group"        }, /* 5205 */
+       { 1,    TP|SE,  printargs,              "n64_exit_group"        }, /* 5205 */
        { 0,    0,      printargs,              "n64_lookup_dcookie"    }, /* 5206 */
        { 0,    0,      printargs,              "n64_epoll_create"      }, /* 5207 */
        { 0,    0,      printargs,              "n64_epoll_ctl"         }, /* 5208 */
        { 0,    0,      printargs,              "n64_epoll_wait"        }, /* 5209 */
-       { 0,    TM,     printargs,              "n64_remap_file_pages"  }, /* 5210 */
+       { 0,    TM|SI,  printargs,              "n64_remap_file_pages"  }, /* 5210 */
        { 0,    0,      printargs,              "n64_rt_sigreturn"      }, /* 5211 */
        { 1,    0,      printargs,              "n64_set_tid_address"   }, /* 5212 */
        { 0,    0,      printargs,              "n64_restart_syscall"   }, /* 5213 */
        { 0,    0,      printargs,              "n64_mq_notify"         }, /* 5234 */
        { 0,    0,      printargs,              "n64_mq_getsetattr"     }, /* 5235 */
        { 5,    0,      printargs,              "n64_vserver"           }, /* 5236 */
-       { 0,    0,      printargs,              "n64_waitid"            }, /* 5237 */
+       { 5,    TP,     printargs,              "n64_waitid"            }, /* 5237 */
        { 0,    0,      printargs,              "n64_SYS_5238"          }, /* 5238 */
        { 0,    0,      printargs,              "n64_add_key"           }, /* 5239 */
        { 0,    0,      printargs,              "n64_request_key"       }, /* 5230 */
        { 0,    0,      printargs,              "n64_faccessat"         }, /* 5259 */
        { 0,    0,      printargs,              "n64_pselect6"          }, /* 5260 */
        { 0,    0,      printargs,              "n64_ppoll"             }, /* 5261 */
-       { 0,    0,      printargs,              "n64_unshare"           }, /* 5262 */
+       { 1,    TP,     printargs,              "n64_unshare"           }, /* 5262 */
        { 0,    0,      printargs,              "n64_splice"            }, /* 5263 */
        { 0,    0,      printargs,              "n64_sync_file_range"   }, /* 5264 */
        { 0,    0,      printargs,              "n64_tee"               }, /* 5265 */
        { 0,    0,      printargs,              "n64_inotify_init1"     }, /* 5288 */
        { 0,    0,      printargs,              "n64_preadv"            }, /* 5289 */
        { 0,    0,      printargs,              "n64_pwritev"           }, /* 5290 */
-       { 0,    0,      printargs,              "n64_rt_tgsigqueueinfo" }, /* 5291 */
+       { 4,    TP|TS,  printargs,              "n64_rt_tgsigqueueinfo" }, /* 5291 */
        { 0,    0,      printargs,              "n64_perf_event_open"   }, /* 5292 */
        { 0,    0,      printargs,              "n64_accept4"           }, /* 5293 */
        { 0,    0,      printargs,              "n64_recvmmsg"          }, /* 5294 */
        { 2,    TD,     printargs,              "n64_setns"             }, /* 5303 */
        { 6,    0,      printargs,              "n64_process_vm_readv"  }, /* 5304 */
        { 6,    0,      printargs,              "n64_process_vm_writev" }, /* 5305 */
-       { 5,    0,      printargs,              "kcmp"                  }, /* 5306 */
-       { 3,    TD,     printargs,              "finit_module"          }, /* 5307 */
+       { 5,    0,      printargs,              "n64_kcmp"              }, /* 5306 */
+       { 3,    TD,     printargs,              "n64_finit_module"      }, /* 5307 */
+       { 3,    TD,     printargs,              "n64_getdents64"        }, /* 5308 */
+       { 3,    0,      printargs,              "n64_sched_setattr"     }, /* 5309 */
+       { 4,    0,      printargs,              "n64_sched_getattr"     }, /* 5310 */
+       { 5,    TD|TF,  printargs,              "n64_renameat2"         }, /* 5311 */
 #endif
        [5308 ... 5999] = { }, /* 5999 */ /* end of Linux N64 */
index c23ac14..41dae46 100644 (file)
@@ -1,7 +1,7 @@
 #if defined LINUX_MIPSO32
        /* For an O32 strace, decode the o32 syscalls.  */
        { MA,   0,      printargs,              "syscall"       }, /* 4000 */ /* start of Linux o32 */
-       { 1,    TP,     sys_exit,               "exit"          }, /* 4001 */
+       { 1,    TP|SE,  sys_exit,               "exit"          }, /* 4001 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 4002 */
        { 3,    TD,     sys_read,               "read"          }, /* 4003 */
        { 3,    TD,     sys_write,              "write"         }, /* 4004 */
@@ -11,7 +11,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 4008 */
        { 2,    TF,     sys_link,               "link"          }, /* 4009 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 4010 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 4011 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 4011 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 4012 */
        { 1,    0,      sys_time,               "time"          }, /* 4013 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 4014 */
@@ -45,7 +45,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 4042 */
        { 1,    0,      sys_times,              "times"         }, /* 4043 */
        { 0,    0,      sys_prof,               "prof"          }, /* 4044 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 4045 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 4045 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 4046 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 4047 */
        { 1,    TS,     sys_signal,             "signal"        }, /* 4048 */
@@ -90,8 +90,8 @@
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 4087 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 4088 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 4089 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"          }, /* 4090 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 4091 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"          }, /* 4090 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 4091 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 4092 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 4093 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 4094 */
        { 1,    0,      sys_uname,              "uname"         }, /* 4122 */
        { 0,    0,      sys_modify_ldt,         "modify_ldt"    }, /* 4123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 4124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 4125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 4125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 4126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 4127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 4128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 4164 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 4165 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 4166 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 4167 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 4167 */
        { 3,    TN,     sys_accept,             "accept"        }, /* 4168 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 4169 */
        { 3,    TN,     sys_connect,            "connect"       }, /* 4170 */
        { 4,    TD|TN,  sys_sendfile,           "sendfile"      }, /* 4207 */
        { 5,    TN,     printargs,              "getpmsg"       }, /* 4208 */
        { 5,    TN,     printargs,              "putpmsg"       }, /* 4209 */
-       { 6,    TD|TM,  sys_mmap_4koff,         "mmap2"         }, /* 4210 */
+       { 6,    TD|TM|SI,       sys_mmap_4koff,         "mmap2"         }, /* 4210 */
        { 4,    TF,     sys_truncate64,         "truncate64"    }, /* 4211 */
        { 4,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 4212 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 4213 */
        { 5,    0,      sys_io_getevents,               "io_getevents"  }, /* 4243 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 4244 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 4245 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 4246 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 4246 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 4247 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 4248 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 4249 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 4250 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 4251 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 4251 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 4252 */
        { 0,    0,      sys_restart_syscall,    "restart_syscall"}, /* 4253 */
        { 7,    TD,     sys_fadvise64_64,       "fadvise64_64"  }, /* 4254 */
        { 5,    TD,     sys_ppoll,              "ppoll"         }, /* 4302 */
        { 1,    TP,     sys_unshare,            "unshare"       }, /* 4303 */
        { 6,    TD,     sys_splice,             "splice"        }, /* 4304 */
-       { 6,    TD,     sys_sync_file_range,    "sync_file_range" }, /* 4305 */
+       { 7,    TD,     sys_sync_file_range,    "sync_file_range" }, /* 4305 */
        { 4,    TD,     sys_tee,                "tee"           }, /* 4306 */
        { 4,    TD,     sys_vmsplice,           "vmsplice"      }, /* 4307 */
        { 6,    TM,     sys_move_pages,         "move_pages"    }, /* 4308 */
        { 3,    TD,     sys_dup3,               "dup3"          }, /* 4327 */
        { 2,    TD,     sys_pipe2,              "pipe2"         }, /* 4328 */
        { 1,    TD,     sys_inotify_init1,      "inotify_init1" }, /* 4329 */
-       { 6,    TD,     sys_preadv,             "preadv"        }, /* 4330 */
-       { 6,    TD,     sys_pwritev,            "pwritev"       }, /* 4331 */
+       { 5,    TD,     sys_preadv,             "preadv"        }, /* 4330 */
+       { 5,    TD,     sys_pwritev,            "pwritev"       }, /* 4331 */
        { 4,    TP|TS,  sys_rt_tgsigqueueinfo,  "rt_tgsigqueueinfo" }, /* 4332 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open" }, /* 4333 */
        { 4,    TN,     sys_accept4,            "accept4"       }, /* 4334 */
        { 5,    TN,     sys_recvmmsg,           "recvmmsg"      }, /* 4335 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 4336 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 4337 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 4337 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 4338 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 4339 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 4340 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 4346 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 4347 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 4348 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 4349 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 4350 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 4351 */
 #else
        { 0,    0,      printargs,              "o32_syscall"   }, /* 4000 */
-       { 0,    0,      printargs,              "o32_exit"              }, /* 4001 */
-       { 0,    0,      printargs,              "o32_fork"              }, /* 4002 */
+       { 1,    TP|SE,  printargs,              "o32_exit"              }, /* 4001 */
+       { 0,    TP,     printargs,              "o32_fork"              }, /* 4002 */
        { 0,    0,      printargs,              "o32_read"              }, /* 4003 */
        { 0,    0,      printargs,              "o32_write"             }, /* 4004 */
        { 0,    0,      printargs,              "o32_open"              }, /* 4005 */
        { 0,    0,      printargs,              "o32_close"             }, /* 4006 */
-       { 0,    0,      printargs,              "o32_waitpid"   }, /* 4007 */
+       { 3,    TP,     printargs,              "o32_waitpid"   }, /* 4007 */
        { 0,    0,      printargs,              "o32_creat"             }, /* 4008 */
        { 0,    0,      printargs,              "o32_link"              }, /* 4009 */
        { 0,    0,      printargs,              "o32_unlink"    }, /* 4010 */
-       { 0,    0,      printargs,              "o32_execve"    }, /* 4011 */
+       { 3,    TF|TP|SE|SI,    printargs,              "o32_execve"    }, /* 4011 */
        { 0,    0,      printargs,              "o32_chdir"             }, /* 4012 */
        { 0,    0,      printargs,              "o32_time"              }, /* 4013 */
        { 0,    0,      printargs,              "o32_mknod"             }, /* 4014 */
        { 0,    0,      printargs,              "o32_pipe"              }, /* 4042 */
        { 0,    0,      printargs,              "o32_times"             }, /* 4043 */
        { 0,    0,      printargs,              "o32_prof"              }, /* 4044 */
-       { 0,    TM,     printargs,              "o32_brk"               }, /* 4045 */
+       { 0,    TM|SI,  printargs,              "o32_brk"               }, /* 4045 */
        { 0,    0,      printargs,              "o32_setgid"    }, /* 4046 */
        { 0,    0,      printargs,              "o32_getgid"    }, /* 4047 */
        { 0,    0,      printargs,              "o32_signal"    }, /* 4048 */
        { 0,    0,      printargs,              "o32_swapon"    }, /* 4087 */
        { 0,    0,      printargs,              "o32_reboot"    }, /* 4088 */
        { 0,    0,      printargs,              "o32_readdir"   }, /* 4089 */
-       { 0,    TD|TM,  printargs,              "o32_mmap"      }, /* 4090 */
-       { 0,    TM,     printargs,              "o32_munmap"    }, /* 4091 */
+       { 0,    TD|TM|SI,       printargs,              "o32_mmap"      }, /* 4090 */
+       { 0,    TM|SI,  printargs,              "o32_munmap"    }, /* 4091 */
        { 0,    0,      printargs,              "o32_truncate"  }, /* 4092 */
        { 0,    0,      printargs,              "o32_ftruncate" }, /* 4093 */
        { 0,    0,      printargs,              "o32_fchmod"    }, /* 4094 */
        { 0,    0,      printargs,              "o32_vhangup"   }, /* 4111 */
        { 0,    0,      printargs,              "o32_idle"              }, /* 4112 */
        { 0,    0,      printargs,              "o32_vm86"              }, /* 4113 */
-       { 0,    0,      printargs,              "o32_wait4"             }, /* 4114 */
+       { 4,    TP,     printargs,              "o32_wait4"             }, /* 4114 */
        { 0,    0,      printargs,              "o32_swapoff"   }, /* 4115 */
        { 0,    0,      printargs,              "o32_sysinfo"   }, /* 4116 */
        { 0,    0,      printargs,              "o32_ipc"               }, /* 4117 */
        { 0,    0,      printargs,              "o32_fsync"             }, /* 4118 */
        { 0,    0,      printargs,              "o32_sigreturn" }, /* 4119 */
-       { 0,    0,      printargs,              "o32_clone"             }, /* 4120 */
+       { 5,    TP,     printargs,              "o32_clone"             }, /* 4120 */
        { 0,    0,      printargs,              "o32_setdomainname"     }, /* 4121 */
        { 0,    0,      printargs,              "o32_uname"             }, /* 4122 */
        { 0,    0,      printargs,              "o32_modify_ldt"        }, /* 4123 */
        { 0,    0,      printargs,              "o32_adjtimex"  }, /* 4124 */
-       { 0,    TM,     printargs,              "o32_mprotect"  }, /* 4125 */
+       { 0,    TM|SI,  printargs,              "o32_mprotect"  }, /* 4125 */
        { 0,    0,      printargs,              "o32_sigprocmask"       }, /* 4126 */
        { 0,    0,      printargs,              "o32_create_module"     }, /* 4127 */
        { 0,    0,      printargs,              "o32_init_module"       }, /* 4128 */
        { 0,    0,      printargs,              "o32_sched_get_priority_min"},/* 4164 */
        { 0,    0,      printargs,              "o32_sched_rr_get_interval"}, /* 4165 */
        { 0,    0,      printargs,              "o32_nanosleep" }, /* 4166 */
-       { 0,    TM,     printargs,              "o32_mremap"    }, /* 4167 */
+       { 0,    TM|SI,  printargs,              "o32_mremap"    }, /* 4167 */
        { 0,    0,      printargs,              "o32_accept"    }, /* 4168 */
        { 0,    0,      printargs,              "o32_bind"              }, /* 4169 */
        { 0,    0,      printargs,              "o32_connect"   }, /* 4170 */
        { 0,    0,      printargs,              "o32_sendfile"  }, /* 4207 */
        { 5,    TN,     printargs,              "o32_getpmsg"   }, /* 4208 */
        { 5,    TN,     printargs,              "o32_putpmsg"   }, /* 4209 */
-       { 6,    TD|TM,  printargs,              "o32_mmap2"     }, /* 4210 */
+       { 6,    TD|TM|SI,       printargs,              "o32_mmap2"     }, /* 4210 */
        { 0,    0,      printargs,              "o32_truncate64"        }, /* 4211 */
        { 0,    0,      printargs,              "o32_ftruncate64"       }, /* 4212 */
        { 0,    0,      printargs,              "o32_stat64"    }, /* 4213 */
        { 5,    0,      printargs,              "o32_io_getevents"      }, /* 4243 */
        { 3,    0,      printargs,              "o32_io_submit" }, /* 4244 */
        { 3,    0,      printargs,              "o32_io_cancel" }, /* 4245 */
-       { 1,    TP,     printargs,              "o32_exit_group"        }, /* 4246 */
+       { 1,    TP|SE,  printargs,              "o32_exit_group"        }, /* 4246 */
        { 3,    0,      printargs,              "o32_lookup_dcookie"}, /* 4247 */
        { 1,    TD,     printargs,              "o32_epoll_create"      }, /* 4248 */
        { 4,    TD,     printargs,              "o32_epoll_ctl" }, /* 4249 */
        { 4,    TD,     printargs,              "o32_epoll_wait"        }, /* 4250 */
-       { 5,    TM,     printargs,              "o32_remap_file_pages"}, /* 4251 */
+       { 5,    TM|SI,  printargs,              "o32_remap_file_pages"}, /* 4251 */
        { 1,    0,      printargs,              "o32_set_tid_address"}, /* 4252 */
        { 0,    0,      printargs,              "o32_restart_syscall"}, /* 4253 */
        { MA,   0,      printargs,              "o32_fadvise64_64"      }, /* 4254 */
        { 3,    TD,     printargs,              "o32_dup3"      }, /* 4327 */
        { 2,    TD,     printargs,              "o32_pipe2"     }, /* 4328 */
        { 1,    TD,     printargs,              "o32_inotify_init1" }, /* 4329 */
-       { 6,    TD,     printargs,              "o32_preadv"    }, /* 4330 */
-       { 6,    TD,     printargs,              "o32_pwritev"   }, /* 4331 */
+       { 5,    TD,     printargs,              "o32_preadv"    }, /* 4330 */
+       { 5,    TD,     printargs,              "o32_pwritev"   }, /* 4331 */
        { 4,    TP|TS,  printargs,              "o32_rt_tgsigqueueinfo" }, /* 4332 */
        { 5,    TD,     printargs,              "o32_perf_event_open" }, /* 4333 */
        { 4,    TN,     printargs,              "o32_accept4"   }, /* 4334 */
        { 5,    TN,     printargs,              "o32_recvmmsg"  }, /* 4335 */
        { 2,    TD,     printargs,              "o32_fanotify_init" }, /* 4336 */
-       { 5,    TD|TF,  printargs,              "o32_fanotify_mark" }, /* 4337 */
+       { 6,    TD|TF,  printargs,              "o32_fanotify_mark" }, /* 4337 */
        { 4,    0,      printargs,              "o32_prlimit64" }, /* 4338 */
        { 5,    TD|TF,  printargs,              "o32_name_to_handle_at"}, /* 4339 */
        { 3,    TD,     printargs,              "o32_open_by_handle_at"}, /* 4340 */
        { 6,    0,      printargs,              "o32_process_vm_writev" }, /* 4346 */
        { 5,    0,      printargs,              "o32_kcmp"              }, /* 4347 */
        { 3,    TD,     printargs,              "o32_finit_module"      }, /* 4348 */
+       { 3,    0,      printargs,              "o32_sched_setattr"     }, /* 4349 */
+       { 4,    0,      printargs,              "o32_sched_getattr"     }, /* 4350 */
+       { 5,    TD|TF,  printargs,              "o32_renameat2" }, /* 4351 */
 #endif
        [4349 ... 4999] = { }, /* 4999 */ /* end of Linux o32 */
index d112212..c67bb5c 100644 (file)
@@ -91,8 +91,8 @@
        { 2,    0,      sys_capget,                     "capget"                }, /* 90 */
        { 2,    0,      sys_capset,                     "capset"                }, /* 91 */
        { 1,    0,      sys_personality,                "personality"           }, /* 92 */
-       { 1,    TP,     sys_exit,                       "exit"                  }, /* 93 */
-       { 1,    TP,     sys_exit,                       "exit_group"            }, /* 94 */
+       { 1,    TP|SE,  sys_exit,                       "exit"                  }, /* 93 */
+       { 1,    TP|SE,  sys_exit,                       "exit_group"            }, /* 94 */
        { 5,    TP,     sys_waitid,                     "waitid"                }, /* 95 */
        { 1,    0,      sys_set_tid_address,            "set_tid_address"       }, /* 96 */
        { 1,    TP,     sys_unshare,                    "unshare"               }, /* 97 */
        { 4,    TI,     sys_semop,                      "semop"                 }, /* 193 */
        { 4,    TI,     sys_shmget,                     "shmget"                }, /* 194 */
        { 4,    TI,     sys_shmctl,                     "shmctl"                }, /* 195 */
-       { 4,    TI,     sys_shmat,                      "shmat"                 }, /* 196 */
-       { 4,    TI,     sys_shmdt,                      "shmdt"                 }, /* 197 */
+       { 4,    TI|TM|SI,       sys_shmat,                      "shmat"                 }, /* 196 */
+       { 4,    TI|TM|SI,       sys_shmdt,                      "shmdt"                 }, /* 197 */
        { 3,    TN,     sys_socket,                     "socket"                }, /* 198 */
        { 4,    TN,     sys_socketpair,                 "socketpair"            }, /* 199 */
        { 3,    TN,     sys_bind,                       "bind"                  }, /* 200 */
        { 3,    TN,     sys_sendmsg,                    "sendmsg"               }, /* 211 */
        { 3,    TN,     sys_recvmsg,                    "recvmsg"               }, /* 212 */
        { 4,    TD,     sys_readahead,                  "readahead"             }, /* 213 */
-       { 1,    TM,     sys_brk,                        "brk"                   }, /* 214 */
-       { 2,    TM,     sys_munmap,                     "munmap"                }, /* 215 */
-       { 5,    TM,     sys_mremap,                     "mremap"                }, /* 216 */
+       { 1,    TM|SI,  sys_brk,                        "brk"                   }, /* 214 */
+       { 2,    TM|SI,  sys_munmap,                     "munmap"                }, /* 215 */
+       { 5,    TM|SI,  sys_mremap,                     "mremap"                }, /* 216 */
        { 5,    0,      sys_add_key,                    "add_key"               }, /* 217 */
        { 4,    0,      sys_request_key,                "request_key"           }, /* 218 */
        { 5,    0,      sys_keyctl,                     "keyctl"                }, /* 219 */
        { 5,    TP,     sys_clone,                      "clone"                 }, /* 220 */
-       { 3,    TF|TP,  sys_execve,                     "execve"                }, /* 221 */
-       { 6,    TD|TM,  sys_mmap_pgoff,                 "mmap2"                 }, /* 222 */
+       { 3,    TF|TP|SE|SI,    sys_execve,                     "execve"                }, /* 221 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,                 "mmap2"                 }, /* 222 */
        { 6,    TD,     sys_fadvise64_64,               "fadvise64_64"          }, /* 223 */
        { 2,    TF,     sys_swapon,                     "swapon"                }, /* 224 */
        { 1,    TF,     sys_swapoff,                    "swapoff"               }, /* 225 */
-       { 3,    TM,     sys_mprotect,                   "mprotect"              }, /* 226 */
+       { 3,    TM|SI,  sys_mprotect,                   "mprotect"              }, /* 226 */
        { 3,    TM,     sys_msync,                      "msync"                 }, /* 227 */
        { 2,    TM,     sys_mlock,                      "mlock"                 }, /* 228 */
        { 2,    TM,     sys_munlock,                    "munlock"               }, /* 229 */
        { 0,    TM,     sys_munlockall,                 "munlockall"            }, /* 231 */
        { 3,    TM,     sys_mincore,                    "mincore"               }, /* 232 */
        { 3,    TM,     sys_madvise,                    "madvise"               }, /* 233 */
-       { 5,    TM,     sys_remap_file_pages,           "remap_file_pages"      }, /* 234 */
+       { 5,    TM|SI,  sys_remap_file_pages,           "remap_file_pages"      }, /* 234 */
        { 6,    TM,     sys_mbind,                      "mbind"                 }, /* 235 */
        { 5,    TM,     sys_get_mempolicy,              "get_mempolicy"         }, /* 236 */
        { 3,    TM,     sys_set_mempolicy,              "set_mempolicy"         }, /* 237 */
        { 4,    TP,     sys_wait4,                      "wait4"                 }, /* 260 */
        { 4,    0,      sys_prlimit64,                  "prlimit64"             }, /* 261 */
        { 2,    TD,     sys_fanotify_init,              "fanotify_init"         }, /* 262 */
-       { 5,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"         }, /* 263 */
+       { 6,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"         }, /* 263 */
        { 5,    TD|TF,  sys_name_to_handle_at,          "name_to_handle_at"     }, /* 264 */
        { 3,    TD,     sys_open_by_handle_at,          "open_by_handle_at"     }, /* 265 */
        { 2,    0,      sys_clock_adjtime,              "clock_adjtime"         }, /* 266 */
diff --git a/linux/personality.h b/linux/personality.h
new file mode 100644 (file)
index 0000000..9971703
--- /dev/null
@@ -0,0 +1,69 @@
+#ifndef _LINUX_PERSONALITY_H
+#define _LINUX_PERSONALITY_H
+
+
+/*
+ * Flags for bug emulation.
+ *
+ * These occupy the top three bytes.
+ */
+enum {
+       UNAME26 =               0x0020000,
+       ADDR_NO_RANDOMIZE =     0x0040000,      /* disable randomization of VA space */
+       FDPIC_FUNCPTRS =        0x0080000,      /* userspace function ptrs point to descriptors
+                                                * (signal handling)
+                                                */
+       MMAP_PAGE_ZERO =        0x0100000,
+       ADDR_COMPAT_LAYOUT =    0x0200000,
+       READ_IMPLIES_EXEC =     0x0400000,
+       ADDR_LIMIT_32BIT =      0x0800000,
+       SHORT_INODE =           0x1000000,
+       WHOLE_SECONDS =         0x2000000,
+       STICKY_TIMEOUTS =       0x4000000,
+       ADDR_LIMIT_3GB =        0x8000000,
+};
+
+/*
+ * Security-relevant compatibility flags that must be
+ * cleared upon setuid or setgid exec:
+ */
+#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
+                           ADDR_NO_RANDOMIZE  | \
+                           ADDR_COMPAT_LAYOUT | \
+                           MMAP_PAGE_ZERO)
+
+/*
+ * Personality types.
+ *
+ * These go in the low byte.  Avoid using the top bit, it will
+ * conflict with error returns.
+ */
+enum {
+       PER_LINUX =             0x0000,
+       PER_LINUX_32BIT =       0x0000 | ADDR_LIMIT_32BIT,
+       PER_LINUX_FDPIC =       0x0000 | FDPIC_FUNCPTRS,
+       PER_SVR4 =              0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
+       PER_SVR3 =              0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
+       PER_SCOSVR3 =           0x0003 | STICKY_TIMEOUTS |
+                                        WHOLE_SECONDS | SHORT_INODE,
+       PER_OSR5 =              0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
+       PER_WYSEV386 =          0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
+       PER_ISCR4 =             0x0005 | STICKY_TIMEOUTS,
+       PER_BSD =               0x0006,
+       PER_SUNOS =             0x0006 | STICKY_TIMEOUTS,
+       PER_XENIX =             0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
+       PER_LINUX32 =           0x0008,
+       PER_LINUX32_3GB =       0x0008 | ADDR_LIMIT_3GB,
+       PER_IRIX32 =            0x0009 | STICKY_TIMEOUTS,/* IRIX5 32-bit */
+       PER_IRIXN32 =           0x000a | STICKY_TIMEOUTS,/* IRIX6 new 32-bit */
+       PER_IRIX64 =            0x000b | STICKY_TIMEOUTS,/* IRIX6 64-bit */
+       PER_RISCOS =            0x000c,
+       PER_SOLARIS =           0x000d | STICKY_TIMEOUTS,
+       PER_UW7 =               0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
+       PER_OSF4 =              0x000f,                  /* OSF/1 v4 */
+       PER_HPUX =              0x0010,
+       PER_MASK =              0x00ff,
+};
+
+
+#endif /* _LINUX_PERSONALITY_H */
index d84a8f4..5eb5a3c 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall"       }, /* 0 */
-       { 1,    TP,     sys_exit,               "exit"                  }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "exit"                  }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"                  }, /* 2 */
        { 3,    TD,     sys_read,               "read"                  }, /* 3 */
        { 3,    TD,     sys_write,              "write"                 }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"                 }, /* 8 */
        { 2,    TF,     sys_link,               "link"                  }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"                }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"                }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"                }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"                 }, /* 12 */
        { 1,    0,      sys_time,               "time"                  }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"                 }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"                  }, /* 42 */
        { 1,    0,      sys_times,              "times"                 }, /* 43 */
        { 0,    0,      sys_prof,               "prof"                  }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"                   }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"                   }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"                }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"                }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"                }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"                }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"                }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"               }, /* 89 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"                  }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"                }, /* 91 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"                  }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"                }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"              }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"             }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"                }, /* 94 */
        { 1,    0,      sys_uname,              "uname"                 }, /* 122 */
        { 5,    0,      printargs,              "modify_ldt"            }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"              }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"              }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"              }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"           }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module"         }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"           }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"             }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"                }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"                }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"             }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"             }, /* 165 */
        { 5,    0,      sys_query_module,       "query_module"          }, /* 166 */
        { 0,    TP,     sys_vfork,              "vfork"                 }, /* 189 */
        { 2,    0,      sys_getrlimit,          "getrlimit"             }, /* 190 */
        { 5,    TD,     sys_readahead,          "readahead"             }, /* 190 */
-       { 6,    TD|TM,  sys_mmap_4koff,         "mmap2"                 }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_4koff,         "mmap2"                 }, /* 192 */
        { 4,    TF,     sys_truncate64,         "truncate64"            }, /* 193 */
        { 4,    TD,     sys_ftruncate64,        "ftruncate64"           }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"                }, /* 195 */
        { 3,    0,      sys_io_cancel,          "io_cancel"             }, /* 231 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"       }, /* 232 */
        { 6,    TD,     sys_fadvise64,          "fadvise64"             }, /* 233 */
-       { 1,    TP,     sys_exit,               "exit_group"            }, /* 234 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"            }, /* 234 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"        }, /* 235 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"          }, /* 236 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"             }, /* 237 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"            }, /* 238 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"      }, /* 239 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"      }, /* 239 */
        { 3,    0,      sys_timer_create,       "timer_create"          }, /* 240 */
        { 4,    0,      sys_timer_settime,      "timer_settime"         }, /* 241 */
        { 2,    0,      sys_timer_gettime,      "timer_gettime"         }, /* 242 */
        { 2,    TD,     sys_pipe2,              "pipe2"                 }, /* 317 */
        { 1,    TD,     sys_inotify_init1,      "inotify_init1"         }, /* 318 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"       }, /* 319 */
-       { 6,    TD,     sys_preadv,             "preadv"                }, /* 320 */
-       { 6,    TD,     sys_pwritev,            "pwritev"               }, /* 321 */
+       { 5,    TD,     sys_preadv,             "preadv"                }, /* 320 */
+       { 5,    TD,     sys_pwritev,            "pwritev"               }, /* 321 */
        { 4,    TP|TS,  sys_rt_tgsigqueueinfo,  "rt_tgsigqueueinfo"     }, /* 322 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init"         }, /* 323 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark"         }, /* 324 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark"         }, /* 324 */
        { 4,    0,      sys_prlimit64,          "prlimit64"             }, /* 325 */
        { 3,    TN,     sys_socket,             "socket"                }, /* 326 */
        { 3,    TN,     sys_bind,               "bind"                  }, /* 327 */
        { 2,    TD,     sys_setns,              "setns"                 }, /* 350 */
        { 6,    0,      sys_process_vm_readv,   "process_vm_readv"      }, /* 351 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 352 */
-       { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 353 */
-       { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 354 */
-       { 5,    0,      NULL,                   NULL                    }, /* 355 */
-       { 5,    0,      NULL,                   NULL                    }, /* 356 */
-       { 5,    0,      NULL,                   NULL                    }, /* 357 */
+       { 3,    TD,     sys_finit_module,       "finit_module"          }, /* 353 */
+       { 5,    0,      sys_kcmp,               "kcmp"                  }, /* 354 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr"         }, /* 355 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr"         }, /* 356 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"             }, /* 357 */
        { 5,    0,      NULL,                   NULL                    }, /* 358 */
        { 5,    0,      NULL,                   NULL                    }, /* 359 */
        { 5,    0,      NULL,                   NULL                    }, /* 360 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
        { 5,    0,      NULL,                   NULL            }, /* 445 */
diff --git a/linux/ptp_clock.h b/linux/ptp_clock.h
new file mode 100644 (file)
index 0000000..b65c834
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * PTP 1588 clock support - user space interface
+ *
+ * Copyright (C) 2010 OMICRON electronics GmbH
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _PTP_CLOCK_H_
+#define _PTP_CLOCK_H_
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+
+/* PTP_xxx bits, for the flags field within the request structures. */
+#define PTP_ENABLE_FEATURE (1<<0)
+#define PTP_RISING_EDGE    (1<<1)
+#define PTP_FALLING_EDGE   (1<<2)
+
+/*
+ * struct ptp_clock_time - represents a time value
+ *
+ * The sign of the seconds field applies to the whole value. The
+ * nanoseconds field is always unsigned. The reserved field is
+ * included for sub-nanosecond resolution, should the demand for
+ * this ever appear.
+ *
+ */
+struct ptp_clock_time {
+       __s64 sec;  /* seconds */
+       __u32 nsec; /* nanoseconds */
+       __u32 reserved;
+};
+
+struct ptp_clock_caps {
+       int max_adj;   /* Maximum frequency adjustment in parts per billon. */
+       int n_alarm;   /* Number of programmable alarms. */
+       int n_ext_ts;  /* Number of external time stamp channels. */
+       int n_per_out; /* Number of programmable periodic signals. */
+       int pps;       /* Whether the clock supports a PPS callback. */
+       int rsv[15];   /* Reserved for future use. */
+};
+
+struct ptp_extts_request {
+       unsigned int index;  /* Which channel to configure. */
+       unsigned int flags;  /* Bit field for PTP_xxx flags. */
+       unsigned int rsv[2]; /* Reserved for future use. */
+};
+
+struct ptp_perout_request {
+       struct ptp_clock_time start;  /* Absolute start time. */
+       struct ptp_clock_time period; /* Desired period, zero means disable. */
+       unsigned int index;           /* Which channel to configure. */
+       unsigned int flags;           /* Reserved for future use. */
+       unsigned int rsv[4];          /* Reserved for future use. */
+};
+
+#define PTP_MAX_SAMPLES 25 /* Maximum allowed offset measurement samples. */
+
+struct ptp_sys_offset {
+       unsigned int n_samples; /* Desired number of measurements. */
+       unsigned int rsv[3];    /* Reserved for future use. */
+       /*
+        * Array of interleaved system/phc time stamps. The kernel
+        * will provide 2*n_samples + 1 time stamps, with the last
+        * one as a system time stamp.
+        */
+       struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
+};
+
+#define PTP_CLK_MAGIC '='
+
+#define PTP_CLOCK_GETCAPS  _IOR(PTP_CLK_MAGIC, 1, struct ptp_clock_caps)
+#define PTP_EXTTS_REQUEST  _IOW(PTP_CLK_MAGIC, 2, struct ptp_extts_request)
+#define PTP_PEROUT_REQUEST _IOW(PTP_CLK_MAGIC, 3, struct ptp_perout_request)
+#define PTP_ENABLE_PPS     _IOW(PTP_CLK_MAGIC, 4, int)
+#define PTP_SYS_OFFSET     _IOW(PTP_CLK_MAGIC, 5, struct ptp_sys_offset)
+
+struct ptp_extts_event {
+       struct ptp_clock_time t; /* Time event occured. */
+       unsigned int index;      /* Which channel produced the event. */
+       unsigned int flags;      /* Reserved for future use. */
+       unsigned int rsv[2];     /* Reserved for future use. */
+};
+
+#endif
diff --git a/linux/reboot.h b/linux/reboot.h
new file mode 100644 (file)
index 0000000..aa33674
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef _LINUX_REBOOT_H
+#define _LINUX_REBOOT_H
+
+/*
+ * Magic values required to use _reboot() system call.
+ */
+
+#define        LINUX_REBOOT_MAGIC1     0xfee1dead
+#define        LINUX_REBOOT_MAGIC2     672274793
+#define        LINUX_REBOOT_MAGIC2A    85072278
+#define        LINUX_REBOOT_MAGIC2B    369367448
+#define        LINUX_REBOOT_MAGIC2C    537993216
+
+
+/*
+ * Commands accepted by the _reboot() system call.
+ *
+ * RESTART     Restart system using default command and mode.
+ * HALT        Stop OS and give system control to ROM monitor, if any.
+ * CAD_ON      Ctrl-Alt-Del sequence causes RESTART command.
+ * CAD_OFF     Ctrl-Alt-Del sequence sends SIGINT to init task.
+ * POWER_OFF   Stop OS and remove all power from system, if possible.
+ * RESTART2    Restart system using given command string.
+ * SW_SUSPEND  Suspend system using software suspend if compiled in.
+ * KEXEC       Restart system using a previously loaded Linux kernel
+ */
+
+#define        LINUX_REBOOT_CMD_RESTART        0x01234567
+#define        LINUX_REBOOT_CMD_HALT           0xCDEF0123
+#define        LINUX_REBOOT_CMD_CAD_ON         0x89ABCDEF
+#define        LINUX_REBOOT_CMD_CAD_OFF        0x00000000
+#define        LINUX_REBOOT_CMD_POWER_OFF      0x4321FEDC
+#define        LINUX_REBOOT_CMD_RESTART2       0xA1B2C3D4
+#define        LINUX_REBOOT_CMD_SW_SUSPEND     0xD000FCE2
+#define        LINUX_REBOOT_CMD_KEXEC          0x45584543
+
+
+
+#endif /* _LINUX_REBOOT_H */
index 719029f..7b34981 100644 (file)
@@ -29,7 +29,7 @@
  */
 
        { 0,    0,      sys_setup,              "setup"         }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -39,7 +39,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -73,7 +73,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { MA,   0,      NULL,                   NULL            }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { MA,   0,      NULL,                   NULL            }, /* 46 */
        { MA,   0,      NULL,                   NULL            }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 6,    TD|TM,  sys_old_mmap,           "mmap"          }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       sys_old_mmap,           "mmap"          }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { MA,   0,      NULL,                   NULL            }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { MA,   0,      NULL,                   NULL            }, /* 166 */
        { 5,    0,      sys_putpmsg,            "putpmsg"       }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      sys_getrlimit,          "getrlimit"     }, /* 191 */
-       { 1,    TD|TM,  sys_old_mmap_pgoff,     "mmap2"         }, /* 192 */
+       { 1,    TD|TM|SI,       sys_old_mmap_pgoff,     "mmap2"         }, /* 192 */
        { 3,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 3,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 5,    0,      sys_io_getevents,       "io_getevents"  }, /* 245 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 246 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 247 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 248 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 248 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 249 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 250 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 251 */
        { 5,    TD,     printargs,              "fadvise64_64"  }, /* 264 */
        { 3,    TF,     sys_statfs64,           "statfs64"      }, /* 265 */
        { 3,    TD,     sys_fstatfs64,          "fstatfs64"     }, /* 266 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 267 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 267 */
        { 6,    TM,     sys_mbind,              "mbind"         }, /* 268 */
        { 5,    TM,     sys_get_mempolicy,      "get_mempolicy" }, /* 269 */
        { 3,    TM,     sys_set_mempolicy,      "set_mempolicy" }, /* 270 */
        { 4,    TP|TS,  sys_rt_tgsigqueueinfo,  "rt_tgsigqueueinfo"}, /* 330 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"}, /* 331 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 332 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 333 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 333 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 334 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 335 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 336 */
        { 2,    0,      printargs,              "s390_runtime_instr"    }, /* 342 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 343 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 344 */
-       { 5,    0,      NULL,                   NULL            }, /* 345 */
-       { 5,    0,      NULL,                   NULL            }, /* 346 */
-       { 5,    0,      NULL,                   NULL            }, /* 347 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 345 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 346 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 347 */
        { 5,    0,      NULL,                   NULL            }, /* 348 */
        { 5,    0,      NULL,                   NULL            }, /* 349 */
        { 5,    0,      NULL,                   NULL            }, /* 350 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
index 66face5..aae69b5 100644 (file)
@@ -28,7 +28,7 @@
  */
 
        { 0,    0,      sys_setup,              "setup"         }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -38,7 +38,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { MA,   0,      NULL,                   NULL            }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -72,7 +72,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { MA,   0,      NULL,                   NULL            }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { MA,   0,      NULL,                   NULL            }, /* 46 */
        { MA,   0,      NULL,                   NULL            }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { MA,   0,      NULL,                   NULL            }, /* 89 */
-       { 1,    TD|TM,  sys_old_mmap,           "mmap"          }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 1,    TD|TM|SI,       sys_old_mmap,           "mmap"          }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { MA,   0,      NULL,                   NULL            }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { MA,   0,      NULL,                   NULL            }, /* 164 */
        { MA,   0,      NULL,                   NULL            }, /* 165 */
        { MA,   0,      NULL,                   NULL            }, /* 166 */
        { 5,    0,      sys_io_getevents,       "io_getevents"  }, /* 245 */
        { 3,    0,      sys_io_submit,          "io_submit"     }, /* 246 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 247 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 248 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 248 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 249 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 250 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 251 */
        { 4,    TD,     sys_fadvise64,          "fadvise64_64"  }, /* 264 */
        { 3,    TF,     sys_statfs64,           "statfs64"      }, /* 265 */
        { 3,    TD,     sys_fstatfs64,          "fstatfs64"     }, /* 266 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 267 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 267 */
        { 6,    TM,     sys_mbind,              "mbind"         }, /* 268 */
        { 5,    TM,     sys_get_mempolicy,      "get_mempolicy" }, /* 269 */
        { 3,    TM,     sys_set_mempolicy,      "set_mempolicy" }, /* 270 */
        { 2,    0,      printargs,              "s390_runtime_instr"    }, /* 342 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 343 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 344 */
-       { 5,    0,      NULL,                   NULL            }, /* 345 */
-       { 5,    0,      NULL,                   NULL            }, /* 346 */
-       { 5,    0,      NULL,                   NULL            }, /* 347 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 345 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 346 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 347 */
        { 5,    0,      NULL,                   NULL            }, /* 348 */
        { 5,    0,      NULL,                   NULL            }, /* 349 */
        { 5,    0,      NULL,                   NULL            }, /* 350 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
index b51fc6f..7033af1 100644 (file)
@@ -29,7 +29,7 @@
  */
 
        { 0,    0,      sys_restart_syscall,    "restart_syscall"}, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -39,7 +39,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -73,7 +73,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 6,    TD|TM,  sys_mmap,               "old_mmap"      }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       sys_mmap,               "old_mmap"      }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 3,    0,      sys_cacheflush,         "cacheflush"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      sys_vm86,               "vm86"          }, /* 166 */
        { 5,    0,      NULL,                   NULL            }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 5,    0,      printargs,              "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_4koff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_4koff,         "mmap2"         }, /* 192 */
        { 3,    TF,     sys_truncate64,         "truncate64"    }, /* 193 */
        { 3,    TD,     sys_ftruncate64,        "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 249 */
        { 5,    TD,     sys_fadvise64,          "fadvise64"     }, /* 250 */
        { 0,    0,      NULL,                   NULL            }, /* 251 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 252 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 252 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 253 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 254 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 255 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 256 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 257 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 257 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 258 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 259 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 260 */
        { 3,    TD,     sys_dup3,               "dup3"          }, /* 330 */
        { 2,    TD,     sys_pipe2,              "pipe2"         }, /* 331 */
        { 1,    TD,     sys_inotify_init1,      "inotify_init1" }, /* 332 */
-       { 6,    TD,     sys_preadv,             "preadv"        }, /* 333 */
-       { 6,    TD,     sys_pwritev,            "pwritev"       }, /* 334 */
+       { 5,    TD,     sys_preadv,             "preadv"        }, /* 333 */
+       { 5,    TD,     sys_pwritev,            "pwritev"       }, /* 334 */
        { 4,    TP|TS,  sys_rt_tgsigqueueinfo,  "rt_tgsigqueueinfo"}, /* 335 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"}, /* 336 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 337 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 338 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 338 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 339 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 340 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 341 */
        { 3,    TN,     sys_getpeername,        "getpeername"   }, /* 346 */
        { 4,    TN,     sys_socketpair,         "socketpair"    }, /* 347 */
        { 4,    TN,     sys_send,               "send"          }, /* 348 */
-       { 4,    TN,     sys_recv,               "recv"          }, /* 349 */
-       { 6,    TN,     sys_sendto,             "sendto"        }, /* 350 */
+       { 6,    TN,     sys_sendto,             "sendto"        }, /* 349 */
+       { 4,    TN,     sys_recv,               "recv"          }, /* 350 */
        { 6,    TN,     sys_recvfrom,           "recvfrom"      }, /* 351 */
        { 2,    TN,     sys_shutdown,           "shutdown"      }, /* 352 */
        { 5,    TN,     sys_setsockopt,         "setsockopt"    }, /* 353 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 438 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 439 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 440 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 441 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 442 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 441 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 442 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 443 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 444 */
index e970147..5db52e2 100644 (file)
@@ -27,7 +27,7 @@
  */
 
        { 0,    0,      sys_setup,              "setup"         }, /* 0 */
-       { 1,    TP,     sys_exit,               "_exit"         }, /* 1 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         }, /* 1 */
        { 0,    TP,     sys_fork,               "fork"          }, /* 2 */
        { 3,    TD,     sys_read,               "read"          }, /* 3 */
        { 3,    TD,     sys_write,              "write"         }, /* 4 */
@@ -37,7 +37,7 @@
        { 2,    TD|TF,  sys_creat,              "creat"         }, /* 8 */
        { 2,    TF,     sys_link,               "link"          }, /* 9 */
        { 1,    TF,     sys_unlink,             "unlink"        }, /* 10 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 11 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 11 */
        { 1,    TF,     sys_chdir,              "chdir"         }, /* 12 */
        { 1,    0,      sys_time,               "time"          }, /* 13 */
        { 3,    TF,     sys_mknod,              "mknod"         }, /* 14 */
@@ -71,7 +71,7 @@
        { 1,    TD,     sys_pipe,               "pipe"          }, /* 42 */
        { 1,    0,      sys_times,              "times"         }, /* 43 */
        { 0,    0,      sys_prof,               "prof"          }, /* 44 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 45 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 45 */
        { 1,    0,      sys_setgid,             "setgid"        }, /* 46 */
        { 0,    NF,     sys_getgid,             "getgid"        }, /* 47 */
        { 3,    TS,     sys_signal,             "signal"        }, /* 48 */
        { 2,    TF,     sys_swapon,             "swapon"        }, /* 87 */
        { 4,    0,      sys_reboot,             "reboot"        }, /* 88 */
        { 3,    TD,     sys_readdir,            "readdir"       }, /* 89 */
-       { 6,    TD|TM,  sys_mmap,               "old_mmap"      }, /* 90 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 91 */
+       { 6,    TD|TM|SI,       sys_mmap,               "old_mmap"      }, /* 90 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 91 */
        { 2,    TF,     sys_truncate,           "truncate"      }, /* 92 */
        { 2,    TD,     sys_ftruncate,          "ftruncate"     }, /* 93 */
        { 2,    TD,     sys_fchmod,             "fchmod"        }, /* 94 */
        { 1,    0,      sys_uname,              "uname"         }, /* 122 */
        { 3,    0,      printargs,              "cacheflush"    }, /* 123 */
        { 1,    0,      sys_adjtimex,           "adjtimex"      }, /* 124 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 125 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 125 */
        { 3,    TS,     sys_sigprocmask,        "sigprocmask"   }, /* 126 */
        { 2,    0,      sys_create_module,      "create_module" }, /* 127 */
        { 3,    0,      sys_init_module,        "init_module"   }, /* 128 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
        { 2,    0,      sys_nanosleep,          "nanosleep"     }, /* 162 */
-       { 5,    TM,     sys_mremap,             "mremap"        }, /* 163 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        }, /* 163 */
        { 3,    0,      sys_setresuid,          "setresuid"     }, /* 164 */
        { 3,    0,      sys_getresuid,          "getresuid"     }, /* 165 */
        { 5,    0,      NULL,                   NULL            }, /* 166 */
        { 5,    0,      NULL,                   NULL            }, /* 189 */
        { 0,    TP,     sys_vfork,              "vfork"         }, /* 190 */
        { 2,    0,      printargs,              "getrlimit"     }, /* 191 */
-       { 6,    TD|TM,  sys_mmap_4koff,         "mmap2"         }, /* 192 */
+       { 6,    TD|TM|SI,       sys_mmap_4koff,         "mmap2"         }, /* 192 */
        { 2,    TF,     sys_truncate,           "truncate64"    }, /* 193 */
        { 2,    TD,     sys_ftruncate,          "ftruncate64"   }, /* 194 */
        { 2,    TF,     sys_stat64,             "stat64"        }, /* 195 */
        { 4,    TI,     sys_msgrcv,             "msgrcv"        }, /* 241 */
        { 4,    TI,     sys_msgget,             "msgget"        }, /* 242 */
        { 4,    TI,     sys_msgctl,             "msgctl"        }, /* 243 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 244 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 245 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 244 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 245 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 246 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 247 */
        { 3,    TD,     sys_getdents64,         "getdents64"    }, /* 248 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 277 */
        { 4,    TD,     sys_fadvise64,          "fadvise64"     }, /* 278 */
        { 5,    0,      NULL,                   NULL            }, /* 279 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 280 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 280 */
        { 3,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 281 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 282 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 283 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 284 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 285 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 285 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 286 */
        { 3,    0,      sys_timer_create,       "timer_create"  }, /* 287 */
        { 4,    0,      sys_timer_settime,      "timer_settime" }, /* 288 */
index 804e8c3..b4e77f5 100644 (file)
@@ -1,5 +1,5 @@
        { 0,    0,      sys_restart_syscall, "restart_syscall" },/* 0 */
-       { 1,    TP,     sys_exit,       "exit" },               /* 1 */
+       { 1,    TP|SE,  sys_exit,       "exit" },               /* 1 */
        { 0,    TP,     sys_fork,       "fork" },               /* 2 */
        { 3,    TD,     sys_read,       "read" },               /* 3 */
        { 3,    TD,     sys_write,      "write" },              /* 4 */
@@ -9,13 +9,13 @@
        { 2,    TD|TF,  sys_creat,      "creat" },              /* 8 */
        { 2,    TF,     sys_link,       "link" },               /* 9 */
        { 1,    TF,     sys_unlink,     "unlink" },             /* 10 */
-       { 2,    TF|TP,  sys_execv,      "execv" },              /* 11 */
+       { 2,    TF|TP|SE|SI,    sys_execv,      "execv" },              /* 11 */
        { 1,    TF,     sys_chdir,      "chdir" },              /* 12 */
        { 3,    TF,     sys_chown,      "chown"},               /* 13 */
        { 3,    TF,     sys_mknod,      "mknod" },              /* 14 */
        { 2,    TF,     sys_chmod,      "chmod" },              /* 15 */
        { 3,    TF,     sys_chown,      "lchown" },             /* 16 */
-       { 1,    TM,     sys_brk,        "brk" },                /* 17 */
+       { 1,    TM|SI,  sys_brk,        "brk" },                /* 17 */
        { 4,    0,      printargs,      "perfctr" },            /* 18 */
        { 3,    TD,     sys_lseek,      "lseek" },              /* 19 */
        { 0,    0,      sys_getpid,     "getpid" },             /* 20 */
        { 0,    NF,     sys_getgid,     "getgid32" },           /* 53 */
        { 3,    TD,     sys_ioctl,      "ioctl" },              /* 54 */
        { 4,    0,      sys_reboot,     "reboot" },             /* 55 */
-       { 6,    TD|TM,  sys_mmap,       "mmap2" },              /* 56 */
+       { 6,    TD|TM|SI,       sys_mmap,       "mmap2" },              /* 56 */
        { 2,    TF,     sys_symlink,    "symlink" },            /* 57 */
        { 3,    TF,     sys_readlink,   "readlink" },           /* 58 */
-       { 3,    TF|TP,  sys_execve,     "execve" },             /* 59 */
+       { 3,    TF|TP|SE|SI,    sys_execve,     "execve" },             /* 59 */
        { 1,    0,      sys_umask,      "umask" },              /* 60 */
        { 1,    TF,     sys_chroot,     "chroot" },             /* 61 */
        { 2,    TD,     sys_fstat,      "fstat" },              /* 62 */
        { 5,    TD,     sys_pwrite,     "pwrite" },             /* 68 */
        { 0,    NF,     sys_geteuid,    "geteuid32" },          /* 69 */
        { 0,    NF,     sys_getegid,    "getegid32" },          /* 70 */
-       { 6,    TD|TM,  sys_mmap,       "mmap" },               /* 71 */
+       { 6,    TD|TM|SI,       sys_mmap,       "mmap" },               /* 71 */
        { 2,    0,      sys_setreuid,   "setreuid32" },         /* 72 */
-       { 2,    TM,     sys_munmap,     "munmap" },             /* 73 */
-       { 3,    TM,     sys_mprotect,   "mprotect" },           /* 74 */
+       { 2,    TM|SI,  sys_munmap,     "munmap" },             /* 73 */
+       { 3,    TM|SI,  sys_mprotect,   "mprotect" },           /* 74 */
        { 3,    TM,     sys_madvise,    "madvise" },            /* 75 */
        { 0,    0,      sys_vhangup,    "vhangup" },            /* 76 */
        { 3,    TF,     sys_truncate64, "truncate64" },         /* 77 */
        { 3,    TN,     sys_accept,     "accept" },             /* 99 */
        { 2,    0,      sys_getpriority,"getpriority" },        /* 100 */
        { 0,    TS,     sys_rt_sigreturn,"rt_sigreturn" },      /* 101 */
-       { 4,    TS,     sys_rt_sigaction,"rt_sigaction" },      /* 102 */
+       { 5,    TS,     sys_rt_sigaction,"rt_sigaction" },      /* 102 */
        { 4,    TS,     sys_rt_sigprocmask,"rt_sigprocmask" },  /* 103 */
        { 2,    TS,     sys_rt_sigpending,"rt_sigpending" },    /* 104 */
        { 4,    TS,     sys_rt_sigtimedwait,"rt_sigtimedwait" },/* 105 */
        { 2,    0,      sys_setpgid,    "setpgid" },            /* 185 */
        { 2,    TD,     sys_fremovexattr,"fremovexattr" },      /* 186 */
        { 2,    TS,     sys_kill,       "tkill" },              /* 187 */
-       { 1,    TP,     sys_exit,       "exit_group" },         /* 188 */
+       { 1,    TP|SE,  sys_exit,       "exit_group" },         /* 188 */
        { 1,    0,      sys_uname,      "uname" },              /* 189 */
        { 3,    0,      sys_init_module,"init_module" },        /* 190 */
        { 1,    0,      sys_personality,"personality" },        /* 191 */
-       { 5,    TM,     sys_remap_file_pages,"remap_file_pages" },/* 192 */
+       { 5,    TM|SI,  sys_remap_file_pages,"remap_file_pages" },/* 192 */
        { 1,    TD,     sys_epoll_create,"epoll_create" },      /* 193 */
        { 4,    TD,     sys_epoll_ctl,  "epoll_ctl" },          /* 194 */
        { 4,    TD,     sys_epoll_wait, "epoll_wait" },         /* 195 */
        { 1,    0,      sys_sched_get_priority_min,"sched_get_priority_min"},/* 247 */
        { 2,    0,      sys_sched_rr_get_interval,"sched_rr_get_interval"},/* 248 */
        { 2,    0,      sys_nanosleep,  "nanosleep" },          /* 249 */
-       { 5,    TM,     sys_mremap,     "mremap" },             /* 250 */
+       { 5,    TM|SI,  sys_mremap,     "mremap" },             /* 250 */
        { 1,    0,      sys_sysctl,     "_sysctl" },            /* 251 */
        { 1,    0,      sys_getsid,     "getsid" },             /* 252 */
        { 1,    TD,     sys_fdatasync,  "fdatasync" },          /* 253 */
        { 5,    TD,     sys_perf_event_open,    "perf_event_open"}, /* 327 */
        { 5,    TN,     sys_recvmmsg,           "recvmmsg"      }, /* 328 */
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 329 */
-       { 5,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 330 */
+       { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 330 */
        { 4,    0,      sys_prlimit64,          "prlimit64"     }, /* 331 */
        { 5,    TD|TF,  sys_name_to_handle_at,  "name_to_handle_at"}, /* 332 */
        { 3,    TD,     sys_open_by_handle_at,  "open_by_handle_at"}, /* 333 */
        { 0,    NF,     printargs,              "kern_features" }, /* 340 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 341 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 342 */
-       { 5,    0,      NULL,                   NULL            }, /* 343 */
-       { 5,    0,      NULL,                   NULL            }, /* 344 */
-       { 5,    0,      NULL,                   NULL            }, /* 345 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 343 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 344 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 345 */
        { 5,    0,      NULL,                   NULL            }, /* 346 */
        { 5,    0,      NULL,                   NULL            }, /* 347 */
        { 5,    0,      NULL,                   NULL            }, /* 348 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 391 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 392 */
        { 4,    0,      printargs,              "ipc_subcall"   }, /* 393 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 394 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 395 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 394 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 395 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 396 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
index 9519e08..2e2805b 100644 (file)
        { 6,    0,      NULL,                   NULL            }, /* 328 */
        { 6,    0,      NULL,                   NULL            }, /* 329 */
 
-       { 6,    TI,     solaris_shmat,          "shmat"         }, /* 330 */
+       { 6,    TI|TM,  solaris_shmat,          "shmat"         }, /* 330 */
        { 6,    TI,     solaris_shmctl,         "shmctl"        }, /* 331 */
-       { 6,    TI,     solaris_shmdt,          "shmdt"         }, /* 332 */
+       { 6,    TI|TM,  solaris_shmdt,          "shmdt"         }, /* 332 */
        { 6,    TI,     solaris_shmget,         "shmget"        }, /* 333 */
        { 6,    0,      NULL,                   NULL            }, /* 334 */
        { 6,    0,      NULL,                   NULL            }, /* 335 */
index f6afcac..0e69598 100644 (file)
@@ -33,6 +33,7 @@
 int sys_accept();
 int sys_accept4();
 int sys_access();
+int sys_add_key();
 int sys_adjtimex();
 int sys_arch_prctl();
 int sys_bind();
@@ -51,6 +52,8 @@ int sys_close();
 int sys_connect();
 int sys_creat();
 int sys_create_module();
+int sys_delete_module();
+int sys_dup();
 int sys_dup2();
 int sys_dup3();
 int sys_epoll_create();
@@ -66,12 +69,15 @@ int sys_faccessat();
 int sys_fadvise64();
 int sys_fadvise64_64();
 int sys_fallocate();
+int sys_fanotify_init();
+int sys_fanotify_mark();
 int sys_fchmod();
 int sys_fchmodat();
 int sys_fchown();
 int sys_fchownat();
 int sys_fcntl();
 int sys_fgetxattr();
+int sys_finit_module();
 int sys_flistxattr();
 int sys_flock();
 int sys_fork();
@@ -118,7 +124,11 @@ int sys_io_getevents();
 int sys_io_setup();
 int sys_io_submit();
 int sys_ioctl();
+int sys_ioprio_get();
+int sys_ioprio_set();
 int sys_ipc();
+int sys_keyctl();
+int sys_kexec_load();
 int sys_kill();
 int sys_link();
 int sys_linkat();
@@ -197,6 +207,8 @@ int sys_recvmsg();
 int sys_remap_file_pages();
 int sys_removexattr();
 int sys_renameat();
+int sys_renameat2();
+int sys_request_key();
 int sys_restart_syscall();
 int sys_rt_sigaction();
 int sys_rt_sigpending();
@@ -232,6 +244,7 @@ int sys_setgroups();
 int sys_setgroups32();
 int sys_sethostname();
 int sys_setitimer();
+int sys_setns();
 int sys_setpriority();
 int sys_setresuid();
 int sys_setreuid();
@@ -267,6 +280,8 @@ int sys_statfs64();
 int sys_stime();
 int sys_swapon();
 int sys_symlinkat();
+int sys_sync_file_range();
+int sys_sync_file_range2();
 int sys_sysctl();
 int sys_sysinfo();
 int sys_syslog();
@@ -291,7 +306,6 @@ int sys_unshare();
 int sys_utime();
 int sys_utimensat();
 int sys_utimes();
-int sys_vfork();
 int sys_vmsplice();
 int sys_wait4();
 int sys_waitid();
index a069334..5c41539 100644 (file)
@@ -91,8 +91,8 @@
        { 2,    0,      sys_capget,                     "capget"                        }, /*   90 */
        { 2,    0,      sys_capset,                     "capset"                        }, /*   91 */
        { 1,    0,      sys_personality,                "personality"                   }, /*   92 */
-       { 1,    TP,     sys_exit,                       "exit"                          }, /*   93 */
-       { 1,    TP,     sys_exit,                       "exit_group"                    }, /*   94 */
+       { 1,    TP|SE,  sys_exit,                       "exit"                          }, /*   93 */
+       { 1,    TP|SE,  sys_exit,                       "exit_group"                    }, /*   94 */
        { 5,    TP,     sys_waitid,                     "waitid"                        }, /*   95 */
        { 1,    0,      sys_set_tid_address,            "set_tid_address"               }, /*   96 */
        { 1,    TP,     sys_unshare,                    "unshare"                       }, /*   97 */
        { 4,    TI,     sys_semop,                      "semop"                         }, /*  193 */
        { 4,    TI,     sys_shmget,                     "shmget"                        }, /*  194 */
        { 4,    TI,     sys_shmctl,                     "shmctl"                        }, /*  195 */
-       { 4,    TI,     sys_shmat,                      "shmat"                         }, /*  196 */
-       { 4,    TI,     sys_shmdt,                      "shmdt"                         }, /*  197 */
+       { 4,    TI|TM|SI,       sys_shmat,                      "shmat"                         }, /*  196 */
+       { 4,    TI|TM|SI,       sys_shmdt,                      "shmdt"                         }, /*  197 */
        { 3,    TN,     sys_socket,                     "socket"                        }, /*  198 */
        { 4,    TN,     sys_socketpair,                 "socketpair"                    }, /*  199 */
        { 3,    TN,     sys_bind,                       "bind"                          }, /*  200 */
        { 3,    TN,     sys_sendmsg,                    "sendmsg"                       }, /*  211 */
        { 3,    TN,     sys_recvmsg,                    "recvmsg"                       }, /*  212 */
        { 3,    TD,     sys_readahead,                  "readahead"                     }, /*  213 */
-       { 1,    TM,     sys_brk,                        "brk"                           }, /*  214 */
-       { 2,    TM,     sys_munmap,                     "munmap"                        }, /*  215 */
-       { 5,    TM,     sys_mremap,                     "mremap"                        }, /*  216 */
+       { 1,    TM|SI,  sys_brk,                        "brk"                           }, /*  214 */
+       { 2,    TM|SI,  sys_munmap,                     "munmap"                        }, /*  215 */
+       { 5,    TM|SI,  sys_mremap,                     "mremap"                        }, /*  216 */
        { 5,    0,      sys_add_key,                    "add_key"                       }, /*  217 */
        { 4,    0,      sys_request_key,                "request_key"                   }, /*  218 */
        { 5,    0,      sys_keyctl,                     "keyctl"                        }, /*  219 */
        { 5,    TP,     sys_clone,                      "clone"                         }, /*  220 */
-       { 3,    TF|TP,  sys_execve,                     "execve"                        }, /*  221 */
-       { 6,    TD|TM,  sys_mmap,                       "mmap"                          }, /*  222 */
+       { 3,    TF|TP|SE|SI,    sys_execve,                     "execve"                        }, /*  221 */
+       { 6,    TD|TM|SI,       sys_mmap,                       "mmap"                          }, /*  222 */
        { 4,    TD,     sys_fadvise64,                  "fadvise64"                     }, /*  223 */
        { 1,    TF,     sys_swapon,                     "swapon"                        }, /*  224 */
        { 1,    TF,     sys_swapoff,                    "swapoff"                       }, /*  225 */
-       { 3,    TM,     sys_mprotect,                   "mprotect"                      }, /*  226 */
+       { 3,    TM|SI,  sys_mprotect,                   "mprotect"                      }, /*  226 */
        { 3,    TM,     sys_msync,                      "msync"                         }, /*  227 */
        { 2,    TM,     sys_mlock,                      "mlock"                         }, /*  228 */
        { 2,    TM,     sys_munlock,                    "munlock"                       }, /*  229 */
        { 0,    TM,     sys_munlockall,                 "munlockall"                    }, /*  231 */
        { 3,    TM,     sys_mincore,                    "mincore"                       }, /*  232 */
        { 3,    TM,     sys_madvise,                    "madvise"                       }, /*  233 */
-       { 5,    TM,     sys_remap_file_pages,           "remap_file_pages"              }, /*  234 */
+       { 5,    TM|SI,  sys_remap_file_pages,           "remap_file_pages"              }, /*  234 */
        { 6,    TM,     sys_mbind,                      "mbind"                         }, /*  235 */
        { 5,    TM,     sys_get_mempolicy,              "get_mempolicy"                 }, /*  236 */
        { 3,    TM,     sys_set_mempolicy,              "set_mempolicy"                 }, /*  237 */
index 9f20521..a1ac268 100644 (file)
@@ -91,8 +91,8 @@
        { 2,    0,      sys_capget,                     "capget"                        }, /*   90 */
        { 2,    0,      sys_capset,                     "capset"                        }, /*   91 */
        { 1,    0,      sys_personality,                "personality"                   }, /*   92 */
-       { 1,    TP,     sys_exit,                       "exit"                          }, /*   93 */
-       { 1,    TP,     sys_exit,                       "exit_group"                    }, /*   94 */
+       { 1,    TP|SE,  sys_exit,                       "exit"                          }, /*   93 */
+       { 1,    TP|SE,  sys_exit,                       "exit_group"                    }, /*   94 */
        { 5,    TP,     sys_waitid,                     "waitid"                        }, /*   95 */
        { 1,    0,      sys_set_tid_address,            "set_tid_address"               }, /*   96 */
        { 1,    TP,     sys_unshare,                    "unshare"                       }, /*   97 */
        { 4,    TI,     sys_semop,                      "semop"                         }, /*  193 */
        { 4,    TI,     sys_shmget,                     "shmget"                        }, /*  194 */
        { 4,    TI,     sys_shmctl,                     "shmctl"                        }, /*  195 */
-       { 4,    TI,     sys_shmat,                      "shmat"                         }, /*  196 */
-       { 4,    TI,     sys_shmdt,                      "shmdt"                         }, /*  197 */
+       { 4,    TI|TM|SI,       sys_shmat,                      "shmat"                         }, /*  196 */
+       { 4,    TI|TM|SI,       sys_shmdt,                      "shmdt"                         }, /*  197 */
        { 3,    TN,     sys_socket,                     "socket"                        }, /*  198 */
        { 4,    TN,     sys_socketpair,                 "socketpair"                    }, /*  199 */
        { 3,    TN,     sys_bind,                       "bind"                          }, /*  200 */
        { 3,    TN,     sys_sendmsg,                    "sendmsg"                       }, /*  211 */
        { 3,    TN,     sys_recvmsg,                    "recvmsg"                       }, /*  212 */
        { 4,    TD,     sys_readahead,                  "readahead"                     }, /*  213 */
-       { 1,    TM,     sys_brk,                        "brk"                           }, /*  214 */
-       { 2,    TM,     sys_munmap,                     "munmap"                        }, /*  215 */
-       { 5,    TM,     sys_mremap,                     "mremap"                        }, /*  216 */
+       { 1,    TM|SI,  sys_brk,                        "brk"                           }, /*  214 */
+       { 2,    TM|SI,  sys_munmap,                     "munmap"                        }, /*  215 */
+       { 5,    TM|SI,  sys_mremap,                     "mremap"                        }, /*  216 */
        { 5,    0,      sys_add_key,                    "add_key"                       }, /*  217 */
        { 4,    0,      sys_request_key,                "request_key"                   }, /*  218 */
        { 5,    0,      sys_keyctl,                     "keyctl"                        }, /*  219 */
        { 5,    TP,     sys_clone,                      "clone"                         }, /*  220 */
-       { 3,    TF|TP,  sys_execve,                     "execve"                        }, /*  221 */
-       { 6,    TD|TM,  sys_mmap_4koff,                 "mmap2"                         }, /*  222 */
+       { 3,    TF|TP|SE|SI,    sys_execve,                     "execve"                        }, /*  221 */
+       { 6,    TD|TM|SI,       sys_mmap_4koff,                 "mmap2"                         }, /*  222 */
        { 5,    TD,     sys_fadvise64,                  "fadvise64"                     }, /*  223 */
        { 1,    TF,     sys_swapon,                     "swapon"                        }, /*  224 */
        { 1,    TF,     sys_swapoff,                    "swapoff"                       }, /*  225 */
-       { 3,    TM,     sys_mprotect,                   "mprotect"                      }, /*  226 */
+       { 3,    TM|SI,  sys_mprotect,                   "mprotect"                      }, /*  226 */
        { 3,    TM,     sys_msync,                      "msync"                         }, /*  227 */
        { 2,    TM,     sys_mlock,                      "mlock"                         }, /*  228 */
        { 2,    TM,     sys_munlock,                    "munlock"                       }, /*  229 */
        { 0,    TM,     sys_munlockall,                 "munlockall"                    }, /*  231 */
        { 3,    TM,     sys_mincore,                    "mincore"                       }, /*  232 */
        { 3,    TM,     sys_madvise,                    "madvise"                       }, /*  233 */
-       { 5,    TM,     sys_remap_file_pages,           "remap_file_pages"              }, /*  234 */
+       { 5,    TM|SI,  sys_remap_file_pages,           "remap_file_pages"              }, /*  234 */
        { 6,    TM,     sys_mbind,                      "mbind"                         }, /*  235 */
        { 5,    TM,     sys_get_mempolicy,              "get_mempolicy"                 }, /*  236 */
        { 3,    TM,     sys_set_mempolicy,              "set_mempolicy"                 }, /*  237 */
        { 4,    TP,     sys_wait4,                      "wait4"                         }, /*  260 */
        { 4,    0,      sys_prlimit64,                  "prlimit64"                     }, /*  261 */
        { 2,    TD,     sys_fanotify_init,              "fanotify_init"                 }, /*  262 */
-       { 5,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"                 }, /*  263 */
+       { 6,    TD|TF,  sys_fanotify_mark,              "fanotify_mark"                 }, /*  263 */
        { 5,    TD|TF,  sys_name_to_handle_at,          "name_to_handle_at"             }, /*  264 */
        { 3,    TD,     sys_open_by_handle_at,          "open_by_handle_at"             }, /*  265 */
        { 2,    0,      sys_clock_adjtime,              "clock_adjtime"                 }, /*  266 */
index 65df127..2000113 100644 (file)
@@ -7,10 +7,10 @@
        { 2,    TF,     sys_lstat,              "lstat"         },  /* 6 */
        { 3,    TD,     sys_poll,               "poll"          },  /* 7 */
        { 3,    TD,     sys_lseek,              "lseek"         },  /* 8 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"          },  /* 9 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      },  /* 10 */
-       { 2,    TM,     sys_munmap,             "munmap"        },  /* 11 */
-       { 1,    TM,     sys_brk,                "brk"           },  /* 12 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"          },  /* 9 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      },  /* 10 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        },  /* 11 */
+       { 1,    TM|SI,  sys_brk,                "brk"           },  /* 12 */
        { 4,    TS,     printargs,              "64:rt_sigaction"       },  /* 13 */
        { 4,    TS,     sys_rt_sigprocmask,     "rt_sigprocmask"},  /* 14 */
        { 0,    TS,     printargs,              "64:rt_sigreturn"       },  /* 15 */
        { 1,    TD,     sys_pipe,               "pipe"          },  /* 22 */
        { 5,    TD,     sys_select,             "select"        },  /* 23 */
        { 0,    0,      sys_sched_yield,        "sched_yield"   },  /* 24 */
-       { 5,    TM,     sys_mremap,             "mremap"        },  /* 25 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        },  /* 25 */
        { 3,    TM,     sys_msync,              "msync"         },  /* 26 */
        { 3,    TM,     sys_mincore,            "mincore"       },  /* 27 */
        { 3,    TM,     sys_madvise,            "madvise"       },  /* 28 */
        { 4,    TI,     sys_shmget,             "shmget"        },  /* 29 */
-       { 4,    TI,     sys_shmat,              "shmat"         },  /* 30 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         },  /* 30 */
        { 4,    TI,     sys_shmctl,             "shmctl"        },  /* 31 */
        { 1,    TD,     sys_dup,                "dup"           },  /* 32 */
        { 2,    TD,     sys_dup2,               "dup2"          },  /* 33 */
        { 5,    TP,     sys_clone,              "clone"         },  /* 56 */
        { 0,    TP,     sys_fork,               "fork"          },  /* 57 */
        { 0,    TP,     sys_vfork,              "vfork"         },  /* 58 */
-       { 3,    TF|TP,  printargs,              "64:execve"     },  /* 59 */
-       { 1,    TP,     sys_exit,               "_exit"         },  /* 60 */
+       { 3,    TF|TP|SE|SI,    printargs,              "64:execve"     },  /* 59 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         },  /* 60 */
        { 4,    TP,     sys_wait4,              "wait4"         },  /* 61 */
        { 2,    TS,     sys_kill,               "kill"          },  /* 62 */
        { 1,    0,      sys_uname,              "uname"         },  /* 63 */
        { 4,    TI,     sys_semget,             "semget"        },  /* 64 */
        { 4,    TI,     sys_semop,              "semop"         },  /* 65 */
        { 4,    TI,     sys_semctl,             "semctl"        },  /* 66 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         },  /* 67 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         },  /* 67 */
        { 4,    TI,     sys_msgget,             "msgget"        },  /* 68 */
        { 4,    TI,     sys_msgsnd,             "msgsnd"        },  /* 69 */
        { 5,    TI,     sys_msgrcv,             "msgrcv"        },  /* 70 */
        { 3,    0,      sys_sched_setaffinity,  "sched_setaffinity" },/* 203 */
        { 3,    0,      sys_sched_getaffinity,  "sched_getaffinity" },/* 204 */
        { 1,    0,      printargs,              "64:set_thread_area" }, /* 205 */
-       { 2,    0,      sys_io_setup,           "io_setup"      }, /* 206 */
+       { 2,    0,      sys_io_setup,           "64:io_setup"   }, /* 206 */
        { 1,    0,      sys_io_destroy,         "io_destroy"    }, /* 207 */
        { 5,    0,      sys_io_getevents,       "io_getevents"  }, /* 208 */
-       { 3,    0,      sys_io_submit,          "io_submit"     }, /* 209 */
+       { 3,    0,      sys_io_submit,          "64:io_submit"  }, /* 209 */
        { 3,    0,      sys_io_cancel,          "io_cancel"     }, /* 210 */
        { 1,    0,      printargs,              "64:get_thread_area"    }, /* 211 */
        { 4,    0,      sys_lookup_dcookie,     "lookup_dcookie"}, /* 212 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 213 */
        { 4,    0,      printargs,              "64:epoll_ctl_old"      }, /* 214 */
        { 4,    0,      printargs,              "64:epoll_wait_old"     }, /* 215 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 216 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 216 */
        { 3,    TD,     sys_getdents64,         "getdents64"    }, /* 217 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 218 */
        { 0,    0,      sys_restart_syscall,    "restart_syscall"}, /* 219 */
        { 2,    0,      sys_clock_gettime,      "clock_gettime" }, /* 228 */
        { 2,    0,      sys_clock_getres,       "clock_getres"  }, /* 229 */
        { 4,    0,      sys_clock_nanosleep,    "clock_nanosleep"}, /* 230 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 231 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 231 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 232 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 233 */
        { 3,    TS,     sys_tgkill,             "tgkill"        }, /* 234 */
        { 6,    0,      printargs,              "64:process_vm_writev"  }, /* 311 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 312 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 313 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 314 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 315 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 316 */
 
-       [314 ... 511] = {},
+       [317 ... 511] = {},
 
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  },  /* 512 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  },  /* 513 */
        { 6,    TN,     sys_recvfrom,           "recvfrom"      },  /* 517 */
        { 3,    TN,     sys_sendmsg,            "sendmsg"       },  /* 518 */
        { 3,    TN,     sys_recvmsg,            "recvmsg"       },  /* 519 */
-       { 3,    TF|TP,  sys_execve,             "execve"        },  /* 520 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        },  /* 520 */
        { 4,    0,      sys_ptrace,             "ptrace"        },  /* 521 */
        { 2,    TS,     sys_rt_sigpending,      "rt_sigpending" },  /* 522 */
        { 4,    TS,     sys_rt_sigtimedwait,    "rt_sigtimedwait" },  /* 523 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev" }, /* 540 */
        { 5,    TN,     sys_setsockopt,         "setsockopt"    },  /* 541 */
        { 5,    TN,     sys_getsockopt,         "getsockopt"    },  /* 542 */
+       { 2,    0,      sys_io_setup,           "io_setup"      }, /* 543 */
+       { 3,    0,      sys_io_submit,          "io_submit"     }, /* 544 */
index 8e3a200..ed0f4fb 100644 (file)
@@ -7,10 +7,10 @@
        { 2,    TF,     sys_lstat,              "lstat"         },  /* 6 */
        { 3,    TD,     sys_poll,               "poll"          },  /* 7 */
        { 3,    TD,     sys_lseek,              "lseek"         },  /* 8 */
-       { 6,    TD|TM,  sys_mmap,               "mmap"          },  /* 9 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      },  /* 10 */
-       { 2,    TM,     sys_munmap,             "munmap"        },  /* 11 */
-       { 1,    TM,     sys_brk,                "brk"           },  /* 12 */
+       { 6,    TD|TM|SI,       sys_mmap,               "mmap"          },  /* 9 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      },  /* 10 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        },  /* 11 */
+       { 1,    TM|SI,  sys_brk,                "brk"           },  /* 12 */
        { 4,    TS,     sys_rt_sigaction,       "rt_sigaction"  },  /* 13 */
        { 4,    TS,     sys_rt_sigprocmask,     "rt_sigprocmask"},  /* 14 */
        { 0,    TS,     sys_rt_sigreturn,       "rt_sigreturn"  },  /* 15 */
        { 1,    TD,     sys_pipe,               "pipe"          },  /* 22 */
        { 5,    TD,     sys_select,             "select"        },  /* 23 */
        { 0,    0,      sys_sched_yield,        "sched_yield"   },  /* 24 */
-       { 5,    TM,     sys_mremap,             "mremap"        },  /* 25 */
+       { 5,    TM|SI,  sys_mremap,             "mremap"        },  /* 25 */
        { 3,    TM,     sys_msync,              "msync"         },  /* 26 */
        { 3,    TM,     sys_mincore,            "mincore"       },  /* 27 */
        { 3,    TM,     sys_madvise,            "madvise"       },  /* 28 */
        { 4,    TI,     sys_shmget,             "shmget"        },  /* 29 */
-       { 4,    TI,     sys_shmat,              "shmat"         },  /* 30 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         },  /* 30 */
        { 4,    TI,     sys_shmctl,             "shmctl"        },  /* 31 */
        { 1,    TD,     sys_dup,                "dup"           },  /* 32 */
        { 2,    TD,     sys_dup2,               "dup2"          },  /* 33 */
        { 5,    TP,     sys_clone,              "clone"         },  /* 56 */
        { 0,    TP,     sys_fork,               "fork"          },  /* 57 */
        { 0,    TP,     sys_vfork,              "vfork"         },  /* 58 */
-       { 3,    TF|TP,  sys_execve,             "execve"        },  /* 59 */
-       { 1,    TP,     sys_exit,               "_exit"         },  /* 60 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        },  /* 59 */
+       { 1,    TP|SE,  sys_exit,               "_exit"         },  /* 60 */
        { 4,    TP,     sys_wait4,              "wait4"         },  /* 61 */
        { 2,    TS,     sys_kill,               "kill"          },  /* 62 */
        { 1,    0,      sys_uname,              "uname"         },  /* 63 */
        { 4,    TI,     sys_semget,             "semget"        },  /* 64 */
        { 4,    TI,     sys_semop,              "semop"         },  /* 65 */
        { 4,    TI,     sys_semctl,             "semctl"        },  /* 66 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         },  /* 67 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         },  /* 67 */
        { 4,    TI,     sys_msgget,             "msgget"        },  /* 68 */
        { 4,    TI,     sys_msgsnd,             "msgsnd"        },  /* 69 */
        { 5,    TI,     sys_msgrcv,             "msgrcv"        },  /* 70 */
        { 1,    TD,     sys_epoll_create,       "epoll_create"  }, /* 213 */
        { 4,    0,      printargs,              "epoll_ctl_old" }, /* 214 */
        { 4,    0,      printargs,              "epoll_wait_old"}, /* 215 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 216 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 216 */
        { 3,    TD,     sys_getdents64,         "getdents64"    }, /* 217 */
        { 1,    0,      sys_set_tid_address,    "set_tid_address"}, /* 218 */
        { 0,    0,      sys_restart_syscall,    "restart_syscall"}, /* 219 */
        { 2,    0,      sys_clock_gettime,      "clock_gettime" }, /* 228 */
        { 2,    0,      sys_clock_getres,       "clock_getres"  }, /* 229 */
        { 4,    0,      sys_clock_nanosleep,    "clock_nanosleep"}, /* 230 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 231 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 231 */
        { 4,    TD,     sys_epoll_wait,         "epoll_wait"    }, /* 232 */
        { 4,    TD,     sys_epoll_ctl,          "epoll_ctl"     }, /* 233 */
        { 3,    TS,     sys_tgkill,             "tgkill"        }, /* 234 */
        { 6,    0,      sys_process_vm_writev,  "process_vm_writev"     }, /* 311 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 312 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 313 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 314 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 315 */
+       { 5,    TD|TF,  sys_renameat2,          "renameat2"     }, /* 316 */
index 62cb40d..76e3bbf 100644 (file)
        { 4,    TD,     sys_fgetxattr,          "fgetxattr"     }, /* 77 */
        { 3,    TD,     sys_flistxattr,         "flistxattr"    }, /* 78 */
        { 2,    TD,     sys_fremovexattr,       "fremovexattr"  }, /* 79 */
-       { 6,    TD|TM,  sys_mmap_pgoff,         "mmap2"         }, /* 80 */
-       { 2,    TM,     sys_munmap,             "munmap"        }, /* 81 */
-       { 3,    TM,     sys_mprotect,           "mprotect"      }, /* 82 */
-       { 1,    TM,     sys_brk,                "brk"           }, /* 83 */
+       { 6,    TD|TM|SI,       sys_mmap_pgoff,         "mmap2"         }, /* 80 */
+       { 2,    TM|SI,  sys_munmap,             "munmap"        }, /* 81 */
+       { 3,    TM|SI,  sys_mprotect,           "mprotect"      }, /* 82 */
+       { 1,    TM|SI,  sys_brk,                "brk"           }, /* 83 */
        { 2,    TM,     sys_mlock,              "mlock"         }, /* 84 */
        { 2,    TM,     sys_munlock,            "munlock"       }, /* 85 */
        { 1,    TM,     sys_mlockall,           "mlockall"      }, /* 86 */
        { 0,    TM,     sys_munlockall,         "munlockall"    }, /* 87 */
-       { 4,    TM,     sys_mremap,             "mremap"        }, /* 88 */
+       { 4,    TM|SI,  sys_mremap,             "mremap"        }, /* 88 */
        { 3,    TM,     sys_msync,              "msync"         }, /* 89 */
        { 3,    TM,     sys_mincore,            "mincore"       }, /* 90 */
        { 3,    TM,     sys_madvise,            "madvise"       }, /* 91 */
        { 4,    TI,     sys_shmget,             "shmget"        }, /* 92 */
-       { 4,    TI,     sys_shmat,              "shmat"         }, /* 93 */
+       { 4,    TI|TM|SI,       sys_shmat,              "shmat"         }, /* 93 */
        { 4,    TI,     sys_shmctl,             "shmctl"        }, /* 94 */
-       { 4,    TI,     sys_shmdt,              "shmdt"         }, /* 95 */
+       { 4,    TI|TM|SI,       sys_shmdt,              "shmdt"         }, /* 95 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 96 */
        { 5,    TN,     sys_setsockopt,         "setsockopt"    }, /* 97 */
        { 5,    TN,     sys_getsockopt,         "getsockopt"    }, /* 98 */
        { 4,    TD|TN,  sys_sendfile64,         "sendfile64"    }, /* 114 */
        { 4,    TN,     sys_sendmsg,            "sendmsg"       }, /* 115 */
        { 5,    TP,     sys_clone,              "clone"         }, /* 116 */
-       { 3,    TF|TP,  sys_execve,             "execve"        }, /* 117 */
-       { 1,    TP,     sys_exit,               "exit"          }, /* 118 */
-       { 1,    TP,     sys_exit,               "exit_group"    }, /* 119 */
+       { 3,    TF|TP|SE|SI,    sys_execve,             "execve"        }, /* 117 */
+       { 1,    TP|SE,  sys_exit,               "exit"          }, /* 118 */
+       { 1,    TP|SE,  sys_exit,               "exit_group"    }, /* 119 */
        { 0,    0,      sys_getpid,             "getpid"        }, /* 120 */
        { 4,    TP,     sys_wait4,              "wait4"         }, /* 121 */
        { 5,    TP,     sys_waitid,             "waitid"        }, /* 122 */
        { 5,    0,      printargs,              "keyctl"        }, /* 258 */
        [259] = { },
        { 5,    TD,     sys_readahead,          "readahead"     }, /* 260 */
-       { 5,    TM,     sys_remap_file_pages,   "remap_file_pages"}, /* 261 */
+       { 5,    TM|SI,  sys_remap_file_pages,   "remap_file_pages"}, /* 261 */
        { 5,    TM,     sys_migrate_pages,      "migrate_pages" }, /* 262 */
        { 0,    TM,     sys_mbind,              "mbind"         }, /* 263 */
        { 6,    TM,     sys_get_mempolicy,      "get_mempolicy" }, /* 264 */
        { 5,    TM,     sys_set_mempolicy,      "set_mempolicy" }, /* 265 */
-       { 3,    TP,     sys_unshare,            "unshare"       }, /* 266 */
+       { 1,    TP,     sys_unshare,            "unshare"       }, /* 266 */
        { 1,    TM,     sys_move_pages,         "move_pages"    }, /* 267 */
        { 0,    TD,     sys_splice,             "splice"        }, /* 268 */
        { 0,    TD,     sys_tee,                "tee"           }, /* 269 */
        { 2,    TD,     sys_timerfd_gettime,    "timerfd_gettime"}, /* 314 */
        { 0,    0,      printargs,              "SYS_315"       }, /* 315 */
        { 2,    TD,     sys_eventfd2,           "eventfd2"      }, /* 316 */
-       { 6,    TD,     sys_preadv,             "preadv"        }, /* 317 */
-       { 6,    TD,     sys_pwritev,            "pwritev"       }, /* 318 */
+       { 5,    TD,     sys_preadv,             "preadv"        }, /* 317 */
+       { 5,    TD,     sys_pwritev,            "pwritev"       }, /* 318 */
        [319] = { },
        { 2,    TD,     sys_fanotify_init,      "fanotify_init" }, /* 320 */
        { 6,    TD|TF,  sys_fanotify_mark,      "fanotify_mark" }, /* 321 */
        { 5,    0,      sys_kcmp,               "kcmp"          }, /* 331 */
        { 3,    TD,     sys_finit_module,       "finit_module"  }, /* 332 */
        { 4,    TN,     sys_accept4,            "accept4"       }, /* 333 */
+       { 3,    0,      sys_sched_setattr,      "sched_setattr" }, /* 334 */
+       { 4,    0,      sys_sched_getattr,      "sched_getattr" }, /* 335 */
diff --git a/loop.c b/loop.c
index a3f89e0..2e16347 100644 (file)
--- a/loop.c
+++ b/loop.c
 
 #include <linux/loop.h>
 
-static const struct xlat loop_flags_options[] = {
-       { LO_FLAGS_READ_ONLY,   "LO_FLAGS_READ_ONLY"    },
-#if HAVE_DECL_LO_FLAGS_AUTOCLEAR
-       { LO_FLAGS_AUTOCLEAR,   "LO_FLAGS_AUTOCLEAR"    },
-#endif
-#if HAVE_DECL_LO_FLAGS_PARTSCAN
-       { LO_FLAGS_PARTSCAN,    "LO_FLAGS_PARTSCAN"     },
-#endif
-       { 0,                    NULL                    },
-};
-
-static const struct xlat loop_crypt_type_options[] = {
-       { LO_CRYPT_NONE,        "LO_CRYPT_NONE"         },
-       { LO_CRYPT_XOR,         "LO_CRYPT_XOR"          },
-       { LO_CRYPT_DES,         "LO_CRYPT_DES"          },
-       { LO_CRYPT_FISH2,       "LO_CRYPT_FISH2"        },
-       { LO_CRYPT_BLOW,        "LO_CRYPT_BLOW"         },
-       { LO_CRYPT_CAST128,     "LO_CRYPT_CAST128"      },
-       { LO_CRYPT_IDEA,        "LO_CRYPT_IDEA"         },
-       { LO_CRYPT_DUMMY,       "LO_CRYPT_DUMMY"        },
-       { LO_CRYPT_SKIPJACK,    "LO_CRYPT_SKIPJACK"     },
-       { LO_CRYPT_CRYPTOAPI,   "LO_CRYPT_CRYPTOAPI"    },
-       { 0,                    NULL                    },
-};
+#include "xlat/loop_flags_options.h"
+#include "xlat/loop_crypt_type_options.h"
 
 int loop_ioctl(struct tcb *tcp, long code, long arg)
 {
index 7d9aac0..e6d22f0 100644 (file)
@@ -1,18 +1,3 @@
-dnl ### A macro to determine if off_t is a long long
-AC_DEFUN([AC_OFF_T_IS_LONG_LONG],
-[AC_MSG_CHECKING(for long long off_t)
-AC_CACHE_VAL(ac_cv_have_long_long_off_t,
-[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>
-char a[(sizeof (off_t) == sizeof (long long) &&
-        sizeof (off_t) > sizeof (long)) - 1];
-]])],[ac_cv_have_long_long_off_t=yes],[ac_cv_have_long_long_off_t=no])])
-AC_MSG_RESULT($ac_cv_have_long_long_off_t)
-if test "$ac_cv_have_long_long_off_t" = yes
-then
-       AC_DEFINE([HAVE_LONG_LONG_OFF_T], 1, [Define if off_t is a long long.])
-fi
-])
-
 dnl ### A macro to determine endianness of long long
 AC_DEFUN([AC_LITTLE_ENDIAN_LONG_LONG],
 [AC_MSG_CHECKING(for little endian long long)
diff --git a/mem.c b/mem.c
index ef273c7..6ecd363 100644 (file)
--- a/mem.c
+++ b/mem.c
 #include "defs.h"
 #include <asm/mman.h>
 #include <sys/mman.h>
-#if defined(I386)
-# include <asm/ldt.h>
-# ifdef HAVE_STRUCT_USER_DESC
-#  define modify_ldt_ldt_s user_desc
-# endif
-#endif
 
 static unsigned long
 get_pagesize()
@@ -59,117 +53,8 @@ sys_brk(struct tcb *tcp)
        return RVAL_HEX;
 }
 
-static const struct xlat mmap_prot[] = {
-       { PROT_NONE,    "PROT_NONE",    },
-       { PROT_READ,    "PROT_READ"     },
-       { PROT_WRITE,   "PROT_WRITE"    },
-       { PROT_EXEC,    "PROT_EXEC"     },
-#ifdef PROT_SEM
-       { PROT_SEM,     "PROT_SEM"      },
-#endif
-#ifdef PROT_GROWSDOWN
-       { PROT_GROWSDOWN,"PROT_GROWSDOWN"},
-#endif
-#ifdef PROT_GROWSUP
-       { PROT_GROWSUP, "PROT_GROWSUP"  },
-#endif
-#ifdef PROT_SAO
-       { PROT_SAO,     "PROT_SAO"      },
-#endif
-       { 0,            NULL            },
-};
-
-static const struct xlat mmap_flags[] = {
-       { MAP_SHARED,   "MAP_SHARED"    },
-       { MAP_PRIVATE,  "MAP_PRIVATE"   },
-       { MAP_FIXED,    "MAP_FIXED"     },
-#ifdef MAP_ANONYMOUS
-       { MAP_ANONYMOUS,"MAP_ANONYMOUS" },
-#endif
-#ifdef MAP_32BIT
-       { MAP_32BIT,    "MAP_32BIT"     },
-#endif
-#ifdef MAP_RENAME
-       { MAP_RENAME,   "MAP_RENAME"    },
-#endif
-#ifdef MAP_NORESERVE
-       { MAP_NORESERVE,"MAP_NORESERVE" },
-#endif
-#ifdef MAP_POPULATE
-       { MAP_POPULATE, "MAP_POPULATE" },
-#endif
-#ifdef MAP_NONBLOCK
-       { MAP_NONBLOCK, "MAP_NONBLOCK" },
-#endif
-       /*
-        * XXX - this was introduced in SunOS 4.x to distinguish between
-        * the old pre-4.x "mmap()", which:
-        *
-        *      only let you map devices with an "mmap" routine (e.g.,
-        *      frame buffers) in;
-        *
-        *      required you to specify the mapping address;
-        *
-        *      returned 0 on success and -1 on failure;
-        *
-        * memory and which, and the 4.x "mmap()" which:
-        *
-        *      can map plain files;
-        *
-        *      can be asked to pick where to map the file;
-        *
-        *      returns the address where it mapped the file on success
-        *      and -1 on failure.
-        *
-        * It's not actually used in source code that calls "mmap()"; the
-        * "mmap()" routine adds it for you.
-        *
-        * It'd be nice to come up with some way of eliminating it from
-        * the flags, e.g. reporting calls *without* it as "old_mmap()"
-        * and calls with it as "mmap()".
-        */
-#ifdef _MAP_NEW
-       { _MAP_NEW,     "_MAP_NEW"      },
-#endif
-#ifdef MAP_GROWSDOWN
-       { MAP_GROWSDOWN,"MAP_GROWSDOWN" },
-#endif
-#ifdef MAP_DENYWRITE
-       { MAP_DENYWRITE,"MAP_DENYWRITE" },
-#endif
-#ifdef MAP_EXECUTABLE
-       { MAP_EXECUTABLE,"MAP_EXECUTABLE"},
-#endif
-#ifdef MAP_INHERIT
-       { MAP_INHERIT,  "MAP_INHERIT"   },
-#endif
-#ifdef MAP_FILE
-       { MAP_FILE,     "MAP_FILE"      },
-#endif
-#ifdef MAP_LOCKED
-       { MAP_LOCKED,   "MAP_LOCKED"    },
-#endif
-       /* FreeBSD ones */
-#if defined(MAP_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
-       { MAP_ANON,     "MAP_ANON"      },
-#endif
-#ifdef MAP_HASSEMAPHORE
-       { MAP_HASSEMAPHORE,"MAP_HASSEMAPHORE"},
-#endif
-#ifdef MAP_STACK
-       { MAP_STACK,    "MAP_STACK"     },
-#endif
-#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
-       { MAP_UNINITIALIZED,"MAP_UNINITIALIZED"},
-#endif
-#ifdef MAP_NOSYNC
-       { MAP_NOSYNC,   "MAP_NOSYNC"    },
-#endif
-#ifdef MAP_NOCORE
-       { MAP_NOCORE,   "MAP_NOCORE"    },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/mmap_prot.h"
+#include "xlat/mmap_flags.h"
 
 static int
 print_mmap(struct tcb *tcp, long *u_arg, unsigned long long offset)
@@ -318,13 +203,7 @@ sys_mprotect(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat mremap_flags[] = {
-       { MREMAP_MAYMOVE,       "MREMAP_MAYMOVE"        },
-#ifdef MREMAP_FIXED
-       { MREMAP_FIXED,         "MREMAP_FIXED"          },
-#endif
-       { 0,                    NULL                    }
-};
+#include "xlat/mremap_flags.h"
 
 int
 sys_mremap(struct tcb *tcp)
@@ -342,57 +221,7 @@ sys_mremap(struct tcb *tcp)
        return RVAL_HEX;
 }
 
-static const struct xlat madvise_cmds[] = {
-#ifdef MADV_NORMAL
-       { MADV_NORMAL,          "MADV_NORMAL" },
-#endif
-#ifdef MADV_RANDOM
-       { MADV_RANDOM,          "MADV_RANDOM" },
-#endif
-#ifdef MADV_SEQUENTIAL
-       { MADV_SEQUENTIAL,      "MADV_SEQUENTIAL" },
-#endif
-#ifdef MADV_WILLNEED
-       { MADV_WILLNEED,        "MADV_WILLNEED" },
-#endif
-#ifdef MADV_DONTNEED
-       { MADV_DONTNEED,        "MADV_DONTNEED" },
-#endif
-#ifdef MADV_REMOVE
-       { MADV_REMOVE,          "MADV_REMOVE" },
-#endif
-#ifdef MADV_DONTFORK
-       { MADV_DONTFORK,        "MADV_DONTFORK" },
-#endif
-#ifdef MADV_DOFORK
-       { MADV_DOFORK,          "MADV_DOFORK" },
-#endif
-#ifdef MADV_HWPOISON
-       { MADV_HWPOISON,        "MADV_HWPOISON" },
-#endif
-#ifdef MADV_SOFT_OFFLINE
-       { MADV_SOFT_OFFLINE,    "MADV_SOFT_OFFLINE" },
-#endif
-#ifdef MADV_MERGEABLE
-       { MADV_MERGEABLE,       "MADV_MERGEABLE" },
-#endif
-#ifdef MADV_UNMERGEABLE
-       { MADV_UNMERGEABLE,     "MADV_UNMERGEABLE" },
-#endif
-#ifdef MADV_HUGEPAGE
-       { MADV_HUGEPAGE,        "MADV_HUGEPAGE" },
-#endif
-#ifdef MADV_NOHUGEPAGE
-       { MADV_NOHUGEPAGE,      "MADV_NOHUGEPAGE" },
-#endif
-#ifdef MADV_DONTDUMP
-       { MADV_DONTDUMP,        "MADV_DONTDUMP" },
-#endif
-#ifdef MADV_DODUMP
-       { MADV_DODUMP,          "MADV_DODUMP" },
-#endif
-       { 0,                    NULL },
-};
+#include "xlat/madvise_cmds.h"
 
 int
 sys_madvise(struct tcb *tcp)
@@ -404,15 +233,7 @@ sys_madvise(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat mlockall_flags[] = {
-#ifdef MCL_CURRENT
-       { MCL_CURRENT,  "MCL_CURRENT" },
-#endif
-#ifdef MCL_FUTURE
-       { MCL_FUTURE,   "MCL_FUTURE" },
-#endif
-       { 0,            NULL}
-};
+#include "xlat/mlockall_flags.h"
 
 int
 sys_mlockall(struct tcb *tcp)
@@ -425,14 +246,7 @@ sys_mlockall(struct tcb *tcp)
 
 #ifdef MS_ASYNC
 
-static const struct xlat mctl_sync[] = {
-#ifdef MS_SYNC
-       { MS_SYNC,      "MS_SYNC"       },
-#endif
-       { MS_ASYNC,     "MS_ASYNC"      },
-       { MS_INVALIDATE,"MS_INVALIDATE" },
-       { 0,            NULL            },
-};
+#include "xlat/mctl_sync.h"
 
 int
 sys_msync(struct tcb *tcp)
@@ -452,20 +266,8 @@ sys_msync(struct tcb *tcp)
 
 #ifdef MC_SYNC
 
-static const struct xlat mctl_funcs[] = {
-       { MC_LOCK,      "MC_LOCK"       },
-       { MC_LOCKAS,    "MC_LOCKAS"     },
-       { MC_SYNC,      "MC_SYNC"       },
-       { MC_UNLOCK,    "MC_UNLOCK"     },
-       { MC_UNLOCKAS,  "MC_UNLOCKAS"   },
-       { 0,            NULL            },
-};
-
-static const struct xlat mctl_lockas[] = {
-       { MCL_CURRENT,  "MCL_CURRENT"   },
-       { MCL_FUTURE,   "MCL_FUTURE"    },
-       { 0,            NULL            },
-};
+#include "xlat/mctl_funcs.h"
+#include "xlat/mctl_lockas.h"
 
 int
 sys_mctl(struct tcb *tcp)
@@ -540,117 +342,6 @@ sys_getpagesize(struct tcb *tcp)
 }
 #endif
 
-#if defined(I386)
-void
-print_ldt_entry(struct modify_ldt_ldt_s *ldt_entry)
-{
-       tprintf("base_addr:%#08lx, "
-               "limit:%d, "
-               "seg_32bit:%d, "
-               "contents:%d, "
-               "read_exec_only:%d, "
-               "limit_in_pages:%d, "
-               "seg_not_present:%d, "
-               "useable:%d}",
-               (long) ldt_entry->base_addr,
-               ldt_entry->limit,
-               ldt_entry->seg_32bit,
-               ldt_entry->contents,
-               ldt_entry->read_exec_only,
-               ldt_entry->limit_in_pages,
-               ldt_entry->seg_not_present,
-               ldt_entry->useable);
-}
-
-int
-sys_modify_ldt(struct tcb *tcp)
-{
-       if (entering(tcp)) {
-               struct modify_ldt_ldt_s copy;
-               tprintf("%ld", tcp->u_arg[0]);
-               if (tcp->u_arg[1] == 0
-                               || tcp->u_arg[2] != sizeof(struct modify_ldt_ldt_s)
-                               || umove(tcp, tcp->u_arg[1], &copy) == -1)
-                       tprintf(", %lx", tcp->u_arg[1]);
-               else {
-                       tprintf(", {entry_number:%d, ", copy.entry_number);
-                       if (!verbose(tcp))
-                               tprints("...}");
-                       else {
-                               print_ldt_entry(&copy);
-                       }
-               }
-               tprintf(", %lu", tcp->u_arg[2]);
-       }
-       return 0;
-}
-
-int
-sys_set_thread_area(struct tcb *tcp)
-{
-       struct modify_ldt_ldt_s copy;
-       if (entering(tcp)) {
-               if (umove(tcp, tcp->u_arg[0], &copy) != -1) {
-                       if (copy.entry_number == -1)
-                               tprintf("{entry_number:%d -> ",
-                                       copy.entry_number);
-                       else
-                               tprints("{entry_number:");
-               }
-       } else {
-               if (umove(tcp, tcp->u_arg[0], &copy) != -1) {
-                       tprintf("%d, ", copy.entry_number);
-                       if (!verbose(tcp))
-                               tprints("...}");
-                       else {
-                               print_ldt_entry(&copy);
-                       }
-               } else {
-                       tprintf("%lx", tcp->u_arg[0]);
-               }
-       }
-       return 0;
-
-}
-
-int
-sys_get_thread_area(struct tcb *tcp)
-{
-       struct modify_ldt_ldt_s copy;
-       if (exiting(tcp)) {
-               if (umove(tcp, tcp->u_arg[0], &copy) != -1) {
-                       tprintf("{entry_number:%d, ", copy.entry_number);
-                       if (!verbose(tcp))
-                               tprints("...}");
-                       else {
-                               print_ldt_entry(&copy);
-                       }
-               } else {
-                       tprintf("%lx", tcp->u_arg[0]);
-               }
-       }
-       return 0;
-
-}
-#endif /* I386 */
-
-#if defined(M68K)
-int
-sys_set_thread_area(struct tcb *tcp)
-{
-       if (entering(tcp))
-               tprintf("%#lx", tcp->u_arg[0]);
-       return 0;
-
-}
-
-int
-sys_get_thread_area(struct tcb *tcp)
-{
-       return RVAL_HEX;
-}
-#endif
-
 int
 sys_remap_file_pages(struct tcb *tcp)
 {
@@ -680,32 +371,10 @@ sys_remap_file_pages(struct tcb *tcp)
 #define MPOL_MF_MOVE   (1<<1)
 #define MPOL_MF_MOVE_ALL (1<<2)
 
-static const struct xlat policies[] = {
-       { MPOL_DEFAULT,         "MPOL_DEFAULT"          },
-       { MPOL_PREFERRED,       "MPOL_PREFERRED"        },
-       { MPOL_BIND,            "MPOL_BIND"             },
-       { MPOL_INTERLEAVE,      "MPOL_INTERLEAVE"       },
-       { 0,                    NULL                    }
-};
-
-static const struct xlat mbindflags[] = {
-       { MPOL_MF_STRICT,       "MPOL_MF_STRICT"        },
-       { MPOL_MF_MOVE,         "MPOL_MF_MOVE"          },
-       { MPOL_MF_MOVE_ALL,     "MPOL_MF_MOVE_ALL"      },
-       { 0,                    NULL                    }
-};
-
-static const struct xlat mempolicyflags[] = {
-       { MPOL_F_NODE,          "MPOL_F_NODE"           },
-       { MPOL_F_ADDR,          "MPOL_F_ADDR"           },
-       { 0,                    NULL                    }
-};
-
-static const struct xlat move_pages_flags[] = {
-       { MPOL_MF_MOVE,         "MPOL_MF_MOVE"          },
-       { MPOL_MF_MOVE_ALL,     "MPOL_MF_MOVE_ALL"      },
-       { 0,                    NULL                    }
-};
+#include "xlat/policies.h"
+#include "xlat/mbindflags.h"
+#include "xlat/mempolicyflags.h"
+#include "xlat/move_pages_flags.h"
 
 static void
 get_nodes(struct tcb *tcp, unsigned long ptr, unsigned long maxnodes, int err)
diff --git a/missing b/missing
index 86a8fc3..db98974 100755 (executable)
--- a/missing
+++ b/missing
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-01-06.13; # UTC
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2013 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
 # it under the terms of the GNU General Public License as published by
@@ -26,68 +25,40 @@ scriptversion=2012-01-06.13; # UTC
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake@gnu.org>."
     exit $?
@@ -99,228 +70,141 @@ Send bug reports to <bug-automake@gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        \`Help2man' package in order for those modifications to take
-        effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
     ;;
-esac
-
-exit 0
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/mtd.c b/mtd.c
index 5385147..8ba658b 100644 (file)
--- a/mtd.c
+++ b/mtd.c
 # include <mtd/ubi-user.h>
 #endif
 
-static const struct xlat mtd_mode_options[] = {
-       { MTD_OPS_PLACE_OOB,    "MTD_OPS_PLACE_OOB"     },
-       { MTD_OPS_AUTO_OOB,     "MTD_OPS_AUTO_OOB"      },
-       { MTD_OPS_RAW,          "MTD_OPS_RAW"           },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat mtd_type_options[] = {
-       { MTD_ABSENT,           "MTD_ABSENT"            },
-       { MTD_RAM,              "MTD_RAM"               },
-       { MTD_ROM,              "MTD_ROM"               },
-       { MTD_NORFLASH,         "MTD_NORFLASH"          },
-       { MTD_NANDFLASH,        "MTD_NANDFLASH"         },
-       { MTD_DATAFLASH,        "MTD_DATAFLASH"         },
-       { MTD_UBIVOLUME,        "MTD_UBIVOLUME"         },
-       { MTD_MLCNANDFLASH,     "MTD_MLCNANDFLASH"      },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat mtd_flags_options[] = {
-       { MTD_WRITEABLE,        "MTD_WRITEABLE"         },
-       { MTD_BIT_WRITEABLE,    "MTD_BIT_WRITEABLE"     },
-       { MTD_NO_ERASE,         "MTD_NO_ERASE"          },
-       { MTD_POWERUP_LOCK,     "MTD_POWERUP_LOCK"      },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat mtd_otp_options[] = {
-       { MTD_OTP_OFF,          "MTD_OTP_OFF"           },
-       { MTD_OTP_FACTORY,      "MTD_OTP_FACTORY"       },
-       { MTD_OTP_USER,         "MTD_OTP_USER"          },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat mtd_nandecc_options[] = {
-       { MTD_NANDECC_OFF,              "MTD_NANDECC_OFF"               },
-       { MTD_NANDECC_PLACE,            "MTD_NANDECC_PLACE"             },
-       { MTD_NANDECC_AUTOPLACE,        "MTD_NANDECC_AUTOPLACE"         },
-       { MTD_NANDECC_PLACEONLY,        "MTD_NANDECC_PLACEONLY"         },
-       { MTD_NANDECC_AUTOPL_USR,       "MTD_NANDECC_AUTOPL_USR"        },
-       { 0,                            NULL                            },
-};
+#include "xlat/mtd_mode_options.h"
+#include "xlat/mtd_type_options.h"
+#include "xlat/mtd_flags_options.h"
+#include "xlat/mtd_otp_options.h"
+#include "xlat/mtd_nandecc_options.h"
 
 int mtd_ioctl(struct tcb *tcp, long code, long arg)
 {
@@ -286,16 +249,8 @@ int mtd_ioctl(struct tcb *tcp, long code, long arg)
        }
 }
 
-static const struct xlat ubi_volume_types[] = {
-       { UBI_DYNAMIC_VOLUME,   "UBI_DYNAMIC_VOLUME"    },
-       { UBI_STATIC_VOLUME,    "UBI_STATIC_VOLUME"     },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat ubi_volume_props[] = {
-       { UBI_VOL_PROP_DIRECT_WRITE,    "UBI_VOL_PROP_DIRECT_WRITE"     },
-       { 0,                    NULL                    },
-};
+#include "xlat/ubi_volume_types.h"
+#include "xlat/ubi_volume_props.h"
 
 int ubi_ioctl(struct tcb *tcp, long code, long arg)
 {
diff --git a/net.c b/net.c
index 9ae783a..0e6bcce 100644 (file)
--- a/net.c
+++ b/net.c
 # define PF_UNSPEC AF_UNSPEC
 #endif
 
-/* Under Linux these are enums so we can't test for them with ifdef. */
-#define IPPROTO_EGP IPPROTO_EGP
-#define IPPROTO_PUP IPPROTO_PUP
-#define IPPROTO_IDP IPPROTO_IDP
-#define IPPROTO_IGMP IPPROTO_IGMP
-#define IPPROTO_RAW IPPROTO_RAW
-#define IPPROTO_MAX IPPROTO_MAX
-
-static const struct xlat domains[] = {
-#ifdef PF_UNSPEC
-       { PF_UNSPEC,    "PF_UNSPEC"     },
-#endif
-#ifdef PF_LOCAL
-       { PF_LOCAL,     "PF_LOCAL"      },
-#endif
-#ifdef PF_UNIX
-       { PF_UNIX,      "PF_UNIX"       },
-#endif
-#ifdef PF_INET
-       { PF_INET,      "PF_INET"       },
-#endif
-#ifdef PF_AX25
-       { PF_AX25,      "PF_AX25"       },
-#endif
-#ifdef PF_IPX
-       { PF_IPX,       "PF_IPX"        },
-#endif
-#ifdef PF_APPLETALK
-       { PF_APPLETALK, "PF_APPLETALK"  },
-#endif
-#ifdef PF_NETROM
-       { PF_NETROM,    "PF_NETROM"     },
-#endif
-#ifdef PF_BRIDGE
-       { PF_BRIDGE,    "PF_BRIDGE"     },
-#endif
-#ifdef PF_ATMPVC
-       { PF_ATMPVC,    "PF_ATMPVC"     },
-#endif
-#ifdef PF_X25
-       { PF_X25,       "PF_X25"        },
-#endif
-#ifdef PF_INET6
-       { PF_INET6,     "PF_INET6"      },
-#endif
-#ifdef PF_ROSE
-       { PF_ROSE,      "PF_ROSE"       },
-#endif
-#ifdef PF_DECnet
-       { PF_DECnet,    "PF_DECnet"     },
-#endif
-#ifdef PF_NETBEUI
-       { PF_NETBEUI,   "PF_NETBEUI"    },
-#endif
-#ifdef PF_SECURITY
-       { PF_SECURITY,  "PF_SECURITY"   },
-#endif
-#ifdef PF_KEY
-       { PF_KEY,       "PF_KEY"        },
-#endif
-#ifdef PF_NETLINK
-       { PF_NETLINK,   "PF_NETLINK"    },
-#endif
-#ifdef PF_ROUTE
-       { PF_ROUTE,     "PF_ROUTE"      },
-#endif
-#ifdef PF_PACKET
-       { PF_PACKET,    "PF_PACKET"     },
-#endif
-#ifdef PF_ASH
-       { PF_ASH,       "PF_ASH"        },
-#endif
-#ifdef PF_ECONET
-       { PF_ECONET,    "PF_ECONET"     },
-#endif
-#ifdef PF_ATMSVC
-       { PF_ATMSVC,    "PF_ATMSVC"     },
-#endif
-#ifdef PF_RDS
-       { PF_RDS,       "PF_RDS"        },
-#endif
-#ifdef PF_SNA
-       { PF_SNA,       "PF_SNA"        },
-#endif
-#ifdef PF_IRDA
-       { PF_IRDA,      "PF_IRDA"       },
-#endif
-#ifdef PF_PPPOX
-       { PF_PPPOX,     "PF_PPPOX"      },
-#endif
-#ifdef PF_WANPIPE
-       { PF_WANPIPE,   "PF_WANPIPE"    },
-#endif
-#ifdef PF_LLC
-       { PF_LLC,       "PF_LLC"        },
-#endif
-#ifdef PF_CAN
-       { PF_CAN,       "PF_CAN"        },
-#endif
-#ifdef PF_TIPC
-       { PF_TIPC,      "PF_TIPC"       },
-#endif
-#ifdef PF_BLUETOOTH
-       { PF_BLUETOOTH, "PF_BLUETOOTH"  },
-#endif
-#ifdef PF_IUCV
-       { PF_IUCV,      "PF_IUCV"       },
-#endif
-#ifdef PF_RXRPC
-       { PF_RXRPC,     "PF_RXRPC"      },
-#endif
-#ifdef PF_ISDN
-       { PF_ISDN,      "PF_ISDN"       },
-#endif
-#ifdef PF_PHONET
-       { PF_PHONET,    "PF_PHONET"     },
-#endif
-#ifdef PF_IEEE802154
-       { PF_IEEE802154,"PF_IEEE802154" },
-#endif
-#ifdef PF_CAIF
-       { PF_CAIF,      "PF_CAIF"       },
-#endif
-#ifdef PF_ALG
-       { PF_ALG,       "PF_ALG"        },
-#endif
-#ifdef PF_NFC
-       { PF_NFC,       "PF_NFC"        },
-#endif
-#ifdef PF_VSOCK
-       { PF_VSOCK,     "PF_VSOCK"      },
-#endif
-       { 0,            NULL            },
-};
-const struct xlat addrfams[] = {
-#ifdef AF_UNSPEC
-       { AF_UNSPEC,    "AF_UNSPEC"     },
-#endif
-#ifdef AF_LOCAL
-       { AF_LOCAL,     "AF_LOCAL"      },
-#endif
-#ifdef AF_UNIX
-       { AF_UNIX,      "AF_UNIX"       },
-#endif
-#ifdef AF_INET
-       { AF_INET,      "AF_INET"       },
-#endif
-#ifdef AF_AX25
-       { AF_AX25,      "AF_AX25"       },
-#endif
-#ifdef AF_IPX
-       { AF_IPX,       "AF_IPX"        },
-#endif
-#ifdef AF_APPLETALK
-       { AF_APPLETALK, "AF_APPLETALK"  },
-#endif
-#ifdef AF_NETROM
-       { AF_NETROM,    "AF_NETROM"     },
-#endif
-#ifdef AF_BRIDGE
-       { AF_BRIDGE,    "AF_BRIDGE"     },
-#endif
-#ifdef AF_ATMPVC
-       { AF_ATMPVC,    "AF_ATMPVC"     },
-#endif
-#ifdef AF_X25
-       { AF_X25,       "AF_X25"        },
-#endif
-#ifdef AF_INET6
-       { AF_INET6,     "AF_INET6"      },
-#endif
-#ifdef AF_ROSE
-       { AF_ROSE,      "AF_ROSE"       },
-#endif
-#ifdef AF_DECnet
-       { AF_DECnet,    "AF_DECnet"     },
-#endif
-#ifdef AF_NETBEUI
-       { AF_NETBEUI,   "AF_NETBEUI"    },
-#endif
-#ifdef AF_SECURITY
-       { AF_SECURITY,  "AF_SECURITY"   },
-#endif
-#ifdef AF_KEY
-       { AF_KEY,       "AF_KEY"        },
-#endif
-#ifdef AF_NETLINK
-       { AF_NETLINK,   "AF_NETLINK"    },
-#endif
-#ifdef AF_ROUTE
-       { AF_ROUTE,     "AF_ROUTE"      },
-#endif
-#ifdef AF_PACKET
-       { AF_PACKET,    "AF_PACKET"     },
-#endif
-#ifdef AF_ASH
-       { AF_ASH,       "AF_ASH"        },
-#endif
-#ifdef AF_ECONET
-       { AF_ECONET,    "AF_ECONET"     },
-#endif
-#ifdef AF_ATMSVC
-       { AF_ATMSVC,    "AF_ATMSVC"     },
-#endif
-#ifdef AF_RDS
-       { AF_RDS,       "AF_RDS"        },
-#endif
-#ifdef AF_SNA
-       { AF_SNA,       "AF_SNA"        },
-#endif
-#ifdef AF_IRDA
-       { AF_IRDA,      "AF_IRDA"       },
-#endif
-#ifdef AF_PPPOX
-       { AF_PPPOX,     "AF_PPPOX"      },
-#endif
-#ifdef AF_WANPIPE
-       { AF_WANPIPE,   "AF_WANPIPE"    },
-#endif
-#ifdef AF_LLC
-       { AF_LLC,       "AF_LLC"        },
-#endif
-#ifdef AF_CAN
-       { AF_CAN,       "AF_CAN"        },
-#endif
-#ifdef AF_TIPC
-       { AF_TIPC,      "AF_TIPC"       },
-#endif
-#ifdef AF_BLUETOOTH
-       { AF_BLUETOOTH, "AF_BLUETOOTH"  },
-#endif
-#ifdef AF_IUCV
-       { AF_IUCV,      "AF_IUCV"       },
-#endif
-#ifdef AF_RXRPC
-       { AF_RXRPC,     "AF_RXRPC"      },
-#endif
-#ifdef AF_ISDN
-       { AF_ISDN,      "AF_ISDN"       },
-#endif
-#ifdef AF_PHONET
-       { AF_PHONET,    "AF_PHONET"     },
-#endif
-#ifdef AF_IEEE802154
-       { AF_IEEE802154,"AF_IEEE802154" },
-#endif
-#ifdef AF_CAIF
-       { AF_CAIF,      "AF_CAIF"       },
-#endif
-#ifdef AF_ALG
-       { AF_ALG,       "AF_ALG"        },
-#endif
-#ifdef AF_NFC
-       { AF_NFC,       "AF_NFC"        },
-#endif
-#ifdef AF_VSOCK
-       { AF_VSOCK,     "AF_VSOCK"      },
-#endif
-       { 0,            NULL            },
-};
-static const struct xlat socktypes[] = {
-       { SOCK_STREAM,  "SOCK_STREAM"   },
-       { SOCK_DGRAM,   "SOCK_DGRAM"    },
-#ifdef SOCK_RAW
-       { SOCK_RAW,     "SOCK_RAW"      },
-#endif
-#ifdef SOCK_RDM
-       { SOCK_RDM,     "SOCK_RDM"      },
-#endif
-#ifdef SOCK_SEQPACKET
-       { SOCK_SEQPACKET,"SOCK_SEQPACKET"},
-#endif
-#ifdef SOCK_DCCP
-       { SOCK_DCCP,    "SOCK_DCCP"     },
-#endif
-#ifdef SOCK_PACKET
-       { SOCK_PACKET,  "SOCK_PACKET"   },
-#endif
-       { 0,            NULL            },
-};
-static const struct xlat sock_type_flags[] = {
-#ifdef SOCK_CLOEXEC
-       { SOCK_CLOEXEC, "SOCK_CLOEXEC"  },
-#endif
-#ifdef SOCK_NONBLOCK
-       { SOCK_NONBLOCK,"SOCK_NONBLOCK" },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/domains.h"
+#include "xlat/addrfams.h"
+#include "xlat/socktypes.h"
+#include "xlat/sock_type_flags.h"
 #ifndef SOCK_TYPE_MASK
 # define SOCK_TYPE_MASK 0xf
 #endif
-static const struct xlat socketlayers[] = {
-#if defined(SOL_IP)
-       { SOL_IP,       "SOL_IP"        },
-#endif
-#if defined(SOL_ICMP)
-       { SOL_ICMP,     "SOL_ICMP"      },
-#endif
-#if defined(SOL_TCP)
-       { SOL_TCP,      "SOL_TCP"       },
-#endif
-#if defined(SOL_UDP)
-       { SOL_UDP,      "SOL_UDP"       },
-#endif
-#if defined(SOL_IPV6)
-       { SOL_IPV6,     "SOL_IPV6"      },
-#endif
-#if defined(SOL_ICMPV6)
-       { SOL_ICMPV6,   "SOL_ICMPV6"    },
-#endif
-#if defined(SOL_SCTP)
-       { SOL_SCTP,     "SOL_SCTP"      },
-#endif
-#if defined(SOL_UDPLITE)
-       { SOL_UDPLITE,  "SOL_UDPLITE"   },
-#endif
-#if defined(SOL_RAW)
-       { SOL_RAW,      "SOL_RAW"       },
-#endif
-#if defined(SOL_IPX)
-       { SOL_IPX,      "SOL_IPX"       },
-#endif
-#if defined(SOL_AX25)
-       { SOL_AX25,     "SOL_AX25"      },
-#endif
-#if defined(SOL_ATALK)
-       { SOL_ATALK,    "SOL_ATALK"     },
-#endif
-#if defined(SOL_NETROM)
-       { SOL_NETROM,   "SOL_NETROM"    },
-#endif
-#if defined(SOL_ROSE)
-       { SOL_ROSE,     "SOL_ROSE"      },
-#endif
-#if defined(SOL_DECNET)
-       { SOL_DECNET,   "SOL_DECNET"    },
-#endif
-#if defined(SOL_X25)
-       { SOL_X25,      "SOL_X25"       },
-#endif
-#if defined(SOL_PACKET)
-       { SOL_PACKET,   "SOL_PACKET"    },
-#endif
-#if defined(SOL_ATM)
-       { SOL_ATM,      "SOL_ATM"       },
-#endif
-#if defined(SOL_AAL)
-       { SOL_AAL,      "SOL_AAL"       },
-#endif
-#if defined(SOL_IRDA)
-       { SOL_IRDA,     "SOL_IRDA"      },
-#endif
-#if defined(SOL_NETBEUI)
-       { SOL_NETBEUI,  "SOL_NETBEUI"   },
-#endif
-#if defined(SOL_LLC)
-       { SOL_LLC,      "SOL_LLC"       },
-#endif
-#if defined(SOL_DCCP)
-       { SOL_DCCP,     "SOL_DCCP"      },
-#endif
-#if defined(SOL_NETLINK)
-       { SOL_NETLINK,  "SOL_NETLINK"   },
-#endif
-#if defined(SOL_TIPC)
-       { SOL_TIPC,     "SOL_TIPC"      },
-#endif
-#if defined(SOL_RXRPC)
-       { SOL_RXRPC,    "SOL_RXRPC"     },
-#endif
-#if defined(SOL_PPPOL2TP)
-       { SOL_PPPOL2TP, "SOL_PPPOL2TP"  },
-#endif
-#if defined(SOL_BLUETOOTH)
-       { SOL_BLUETOOTH,"SOL_BLUETOOTH" },
-#endif
-#if defined(SOL_PNPIPE)
-       { SOL_PNPIPE,   "SOL_PNPIPE"    },
-#endif
-#if defined(SOL_RDS)
-       { SOL_RDS,      "SOL_RDS"       },
-#endif
-#if defined(SOL_IUVC)
-       { SOL_IUCV,     "SOL_IUCV"      },
-#endif
-#if defined(SOL_CAIF)
-       { SOL_CAIF,     "SOL_CAIF"      },
-#endif
-       { SOL_SOCKET,   "SOL_SOCKET"    },      /* Never used! */
-       /* The SOL_* array should remain not NULL-terminated. */
-};
+#include "xlat/socketlayers.h"
 /*** WARNING: DANGER WILL ROBINSON: NOTE "socketlayers" array above
-     falls into "protocols" array below!!!!   This is intended!!! ***/
-static const struct xlat protocols[] = {
-       { IPPROTO_IP,   "IPPROTO_IP"    },
-       { IPPROTO_ICMP, "IPPROTO_ICMP"  },
-       { IPPROTO_TCP,  "IPPROTO_TCP"   },
-       { IPPROTO_UDP,  "IPPROTO_UDP"   },
-#ifdef IPPROTO_IGMP
-       { IPPROTO_IGMP, "IPPROTO_IGMP"  },
-#endif
-#ifdef IPPROTO_GGP
-       { IPPROTO_GGP,  "IPPROTO_GGP"   },
-#endif
-#ifdef IPPROTO_IPIP
-       { IPPROTO_IPIP, "IPPROTO_IPIP"  },
-#endif
-#ifdef IPPROTO_EGP
-       { IPPROTO_EGP,  "IPPROTO_EGP"   },
-#endif
-#ifdef IPPROTO_PUP
-       { IPPROTO_PUP,  "IPPROTO_PUP"   },
-#endif
-#ifdef IPPROTO_IDP
-       { IPPROTO_IDP,  "IPPROTO_IDP"   },
-#endif
-#ifdef IPPROTO_TP
-       { IPPROTO_TP,   "IPPROTO_TP"    },
-#endif
-#ifdef IPPROTO_DCCP
-       { IPPROTO_DCCP, "IPPROTO_DCCP"  },
-#endif
-#ifdef IPPROTO_IPV6
-       { IPPROTO_IPV6, "IPPROTO_IPV6"  },
-#endif
-#ifdef IPPROTO_ROUTING
-       { IPPROTO_ROUTING, "IPPROTO_ROUTING" },
-#endif
-#ifdef IPPROTO_FRAGMENT
-       { IPPROTO_FRAGMENT, "IPPROTO_FRAGMENT" },
-#endif
-#ifdef IPPROTO_RSVP
-       { IPPROTO_RSVP, "IPPROTO_RSVP"  },
-#endif
-#ifdef IPPROTO_GRE
-       { IPPROTO_GRE,  "IPPROTO_GRE"   },
-#endif
-#ifdef IPPROTO_ESP
-       { IPPROTO_ESP,  "IPPROTO_ESP"   },
-#endif
-#ifdef IPPROTO_AH
-       { IPPROTO_AH,   "IPPROTO_AH"    },
-#endif
-#ifdef IPPROTO_ICMPV6
-       { IPPROTO_ICMPV6, "IPPROTO_ICMPV6" },
-#endif
-#ifdef IPPROTO_NONE
-       { IPPROTO_NONE, "IPPROTO_NONE"  },
-#endif
-#ifdef IPPROTO_DSTOPTS
-       { IPPROTO_DSTOPTS, "IPPROTO_DSTOPTS" },
-#endif
-#ifdef IPPROTO_HELLO
-       { IPPROTO_HELLO, "IPPROTO_HELLO" },
-#endif
-#ifdef IPPROTO_ND
-       { IPPROTO_ND,   "IPPROTO_ND"    },
-#endif
-#ifdef IPPROTO_MTP
-       { IPPROTO_MTP,  "IPPROTO_MTP"   },
-#endif
-#ifdef IPPROTO_ENCAP
-       { IPPROTO_ENCAP, "IPPROTO_ENCAP" },
-#endif
-#ifdef IPPROTO_PIM
-       { IPPROTO_PIM,  "IPPROTO_PIM"   },
-#endif
-#ifdef IPPROTO_COMP
-       { IPPROTO_COMP, "IPPROTO_COMP"  },
-#endif
-#ifdef IPPROTO_SCTP
-       { IPPROTO_SCTP, "IPPROTO_SCTP"  },
-#endif
-#ifdef IPPROTO_UDPLITE
-       { IPPROTO_UDPLITE, "IPPROTO_UDPLITE" },
-#endif
-#ifdef IPPROTO_RAW
-       { IPPROTO_RAW,  "IPPROTO_RAW"   },
-#endif
-#ifdef IPPROTO_MAX
-       { IPPROTO_MAX,  "IPPROTO_MAX"   },
-#endif
-       { 0,            NULL            },
-};
-static const struct xlat msg_flags[] = {
-       { MSG_OOB,              "MSG_OOB"               },
-#ifdef MSG_PEEK
-       { MSG_PEEK,             "MSG_PEEK"              },
-#endif
-#ifdef MSG_DONTROUTE
-       { MSG_DONTROUTE,        "MSG_DONTROUTE"         },
-#endif
-#ifdef MSG_CTRUNC
-       { MSG_CTRUNC,           "MSG_CTRUNC"            },
-#endif
-#ifdef MSG_PROBE
-       { MSG_PROBE,            "MSG_PROBE"             },
-#endif
-#ifdef MSG_TRUNC
-       { MSG_TRUNC,            "MSG_TRUNC"             },
-#endif
-#ifdef MSG_DONTWAIT
-       { MSG_DONTWAIT,         "MSG_DONTWAIT"          },
-#endif
-#ifdef MSG_EOR
-       { MSG_EOR,              "MSG_EOR"               },
-#endif
-#ifdef MSG_WAITALL
-       { MSG_WAITALL,          "MSG_WAITALL"           },
-#endif
-#ifdef MSG_FIN
-       { MSG_FIN,              "MSG_FIN"               },
-#endif
-#ifdef MSG_SYN
-       { MSG_SYN,              "MSG_SYN"               },
-#endif
-#ifdef MSG_CONFIRM
-       { MSG_CONFIRM,          "MSG_CONFIRM"           },
-#endif
-#ifdef MSG_RST
-       { MSG_RST,              "MSG_RST"               },
-#endif
-#ifdef MSG_ERRQUEUE
-       { MSG_ERRQUEUE,         "MSG_ERRQUEUE"          },
-#endif
-#ifdef MSG_NOSIGNAL
-       { MSG_NOSIGNAL,         "MSG_NOSIGNAL"          },
-#endif
-#ifdef MSG_MORE
-       { MSG_MORE,             "MSG_MORE"              },
-#endif
-#ifdef MSG_WAITFORONE
-       { MSG_WAITFORONE,       "MSG_WAITFORONE"        },
-#endif
-#ifdef MSG_EOF
-       { MSG_EOF,              "MSG_EOF"               },
-#endif
-#ifdef MSG_FASTOPEN
-       { MSG_FASTOPEN,         "MSG_FASTOPEN"          },
-#endif
-#ifdef MSG_CMSG_CLOEXEC
-       { MSG_CMSG_CLOEXEC,     "MSG_CMSG_CLOEXEC"      },
-#endif
-       { 0,                    NULL                    },
-};
+     falls into "inet_protocols" array below!!!!   This is intended!!! ***/
+#include "xlat/inet_protocols.h"
 
-static const struct xlat sockoptions[] = {
-#ifdef SO_ACCEPTCONN
-       { SO_ACCEPTCONN,        "SO_ACCEPTCONN" },
-#endif
-#ifdef SO_ALLRAW
-       { SO_ALLRAW,    "SO_ALLRAW"     },
-#endif
-#ifdef SO_ATTACH_FILTER
-       { SO_ATTACH_FILTER,     "SO_ATTACH_FILTER"      },
-#endif
-#ifdef SO_BINDTODEVICE
-       { SO_BINDTODEVICE,      "SO_BINDTODEVICE"       },
-#endif
-#ifdef SO_BROADCAST
-       { SO_BROADCAST, "SO_BROADCAST"  },
-#endif
-#ifdef SO_BSDCOMPAT
-       { SO_BSDCOMPAT, "SO_BSDCOMPAT"  },
-#endif
-#ifdef SO_DEBUG
-       { SO_DEBUG,     "SO_DEBUG"      },
-#endif
-#ifdef SO_DETACH_FILTER
-       { SO_DETACH_FILTER,     "SO_DETACH_FILTER"      },
-#endif
-#ifdef SO_DONTROUTE
-       { SO_DONTROUTE, "SO_DONTROUTE"  },
-#endif
-#ifdef SO_ERROR
-       { SO_ERROR,     "SO_ERROR"      },
-#endif
-#ifdef SO_ICS
-       { SO_ICS,       "SO_ICS"        },
-#endif
-#ifdef SO_IMASOCKET
-       { SO_IMASOCKET, "SO_IMASOCKET"  },
-#endif
-#ifdef SO_KEEPALIVE
-       { SO_KEEPALIVE, "SO_KEEPALIVE"  },
-#endif
-#ifdef SO_LINGER
-       { SO_LINGER,    "SO_LINGER"     },
-#endif
-#ifdef SO_LISTENING
-       { SO_LISTENING, "SO_LISTENING"  },
-#endif
-#ifdef SO_MGMT
-       { SO_MGMT,      "SO_MGMT"       },
-#endif
-#ifdef SO_NO_CHECK
-       { SO_NO_CHECK,  "SO_NO_CHECK"   },
-#endif
-#ifdef SO_OOBINLINE
-       { SO_OOBINLINE, "SO_OOBINLINE"  },
-#endif
-#ifdef SO_ORDREL
-       { SO_ORDREL,    "SO_ORDREL"     },
-#endif
-#ifdef SO_PARALLELSVR
-       { SO_PARALLELSVR,       "SO_PARALLELSVR"        },
-#endif
-#ifdef SO_PASSCRED
-       { SO_PASSCRED,  "SO_PASSCRED"   },
-#endif
-#ifdef SO_PEERCRED
-       { SO_PEERCRED,  "SO_PEERCRED"   },
-#endif
-#ifdef SO_PEERNAME
-       { SO_PEERNAME,  "SO_PEERNAME"   },
-#endif
-#ifdef SO_PEERSEC
-       { SO_PEERSEC,   "SO_PEERSEC"    },
-#endif
-#ifdef SO_PRIORITY
-       { SO_PRIORITY,  "SO_PRIORITY"   },
-#endif
-#ifdef SO_PROTOTYPE
-       { SO_PROTOTYPE, "SO_PROTOTYPE"  },
-#endif
-#ifdef SO_RCVBUF
-       { SO_RCVBUF,    "SO_RCVBUF"     },
-#endif
-#ifdef SO_RCVLOWAT
-       { SO_RCVLOWAT,  "SO_RCVLOWAT"   },
-#endif
-#ifdef SO_RCVTIMEO
-       { SO_RCVTIMEO,  "SO_RCVTIMEO"   },
-#endif
-#ifdef SO_RDWR
-       { SO_RDWR,      "SO_RDWR"       },
-#endif
-#ifdef SO_REUSEADDR
-       { SO_REUSEADDR, "SO_REUSEADDR"  },
-#endif
-#ifdef SO_REUSEPORT
-       { SO_REUSEPORT, "SO_REUSEPORT"  },
-#endif
-#ifdef SO_SECURITY_AUTHENTICATION
-       { SO_SECURITY_AUTHENTICATION,"SO_SECURITY_AUTHENTICATION"},
-#endif
-#ifdef SO_SECURITY_ENCRYPTION_NETWORK
-       { SO_SECURITY_ENCRYPTION_NETWORK,"SO_SECURITY_ENCRYPTION_NETWORK"},
-#endif
-#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
-       { SO_SECURITY_ENCRYPTION_TRANSPORT,"SO_SECURITY_ENCRYPTION_TRANSPORT"},
-#endif
-#ifdef SO_SEMA
-       { SO_SEMA,      "SO_SEMA"       },
-#endif
-#ifdef SO_SNDBUF
-       { SO_SNDBUF,    "SO_SNDBUF"     },
-#endif
-#ifdef SO_SNDLOWAT
-       { SO_SNDLOWAT,  "SO_SNDLOWAT"   },
-#endif
-#ifdef SO_SNDTIMEO
-       { SO_SNDTIMEO,  "SO_SNDTIMEO"   },
-#endif
-#ifdef SO_TIMESTAMP
-       { SO_TIMESTAMP, "SO_TIMESTAMP"  },
-#endif
-#ifdef SO_TYPE
-       { SO_TYPE,      "SO_TYPE"       },
-#endif
-#ifdef SO_USELOOPBACK
-       { SO_USELOOPBACK,       "SO_USELOOPBACK"        },
+#ifdef PF_NETLINK
+#include "xlat/netlink_protocols.h"
 #endif
-       { 0,            NULL            },
-};
+
+#include "xlat/msg_flags.h"
+#include "xlat/sockoptions.h"
 
 #if !defined(SOL_IP) && defined(IPPROTO_IP)
 #define SOL_IP IPPROTO_IP
 #endif
 
 #ifdef SOL_IP
-static const struct xlat sockipoptions[] = {
-#ifdef IP_TOS
-       { IP_TOS,               "IP_TOS"                },
-#endif
-#ifdef IP_TTL
-       { IP_TTL,               "IP_TTL"                },
-#endif
-#ifdef IP_HDRINCL
-       { IP_HDRINCL,           "IP_HDRINCL"            },
-#endif
-#ifdef IP_OPTIONS
-       { IP_OPTIONS,           "IP_OPTIONS"            },
-#endif
-#ifdef IP_ROUTER_ALERT
-       { IP_ROUTER_ALERT,      "IP_ROUTER_ALERT"       },
-#endif
-#ifdef IP_RECVOPTIONS
-       { IP_RECVOPTIONS,       "IP_RECVOPTIONS"        },
-#endif
-#ifdef IP_RECVOPTS
-       { IP_RECVOPTS,          "IP_RECVOPTS"           },
-#endif
-#ifdef IP_RECVRETOPTS
-       { IP_RECVRETOPTS,       "IP_RECVRETOPTS"        },
-#endif
-#ifdef IP_RECVDSTADDR
-       { IP_RECVDSTADDR,       "IP_RECVDSTADDR"        },
-#endif
-#ifdef IP_RETOPTS
-       { IP_RETOPTS,           "IP_RETOPTS"            },
-#endif
-#ifdef IP_PKTINFO
-       { IP_PKTINFO,           "IP_PKTINFO"            },
-#endif
-#ifdef IP_PKTOPTIONS
-       { IP_PKTOPTIONS,        "IP_PKTOPTIONS"         },
-#endif
-#ifdef IP_MTU_DISCOVER
-       { IP_MTU_DISCOVER,      "IP_MTU_DISCOVER"       },
-#endif
-#ifdef IP_RECVERR
-       { IP_RECVERR,           "IP_RECVERR"            },
-#endif
-#ifdef IP_RECVTTL
-       { IP_RECVTTL,           "IP_RECVTTL"            },
-#endif
-#ifdef IP_RECVTOS
-       { IP_RECVTOS,           "IP_RECVTOS"            },
-#endif
-#ifdef IP_MTU
-       { IP_MTU,               "IP_MTU"                },
-#endif
-#ifdef IP_MULTICAST_IF
-       { IP_MULTICAST_IF,      "IP_MULTICAST_IF"       },
-#endif
-#ifdef IP_MULTICAST_TTL
-       { IP_MULTICAST_TTL,     "IP_MULTICAST_TTL"      },
-#endif
-#ifdef IP_MULTICAST_LOOP
-       { IP_MULTICAST_LOOP,    "IP_MULTICAST_LOOP"     },
-#endif
-#ifdef IP_ADD_MEMBERSHIP
-       { IP_ADD_MEMBERSHIP,    "IP_ADD_MEMBERSHIP"     },
-#endif
-#ifdef IP_DROP_MEMBERSHIP
-       { IP_DROP_MEMBERSHIP,   "IP_DROP_MEMBERSHIP"    },
-#endif
-#ifdef IP_BROADCAST_IF
-       { IP_BROADCAST_IF,      "IP_BROADCAST_IF"       },
-#endif
-#ifdef IP_RECVIFINDEX
-       { IP_RECVIFINDEX,       "IP_RECVIFINDEX"        },
-#endif
-#ifdef IP_MSFILTER
-       { IP_MSFILTER,          "IP_MSFILTER"           },
-#endif
-#ifdef MCAST_MSFILTER
-       { MCAST_MSFILTER,       "MCAST_MSFILTER"        },
-#endif
-#ifdef IP_FREEBIND
-       { IP_FREEBIND,          "IP_FREEBIND"           },
-#endif
-       { 0,                    NULL                    },
-};
+#include "xlat/sockipoptions.h"
 #endif /* SOL_IP */
 
 #ifdef SOL_IPV6
-static const struct xlat sockipv6options[] = {
-#ifdef IPV6_ADDRFORM
-       { IPV6_ADDRFORM,        "IPV6_ADDRFORM"         },
-#endif
-#ifdef MCAST_FILTER
-       { MCAST_FILTER,         "MCAST_FILTER"          },
-#endif
-#ifdef IPV6_PKTOPTIONS
-       { IPV6_PKTOPTIONS,      "IPV6_PKTOPTIONS"       },
-#endif
-#ifdef IPV6_MTU
-       { IPV6_MTU,             "IPV6_MTU"              },
-#endif
-#ifdef IPV6_V6ONLY
-       { IPV6_V6ONLY,          "IPV6_V6ONLY"           },
-#endif
-#ifdef IPV6_PKTINFO
-       { IPV6_PKTINFO,         "IPV6_PKTINFO"          },
-#endif
-#ifdef IPV6_HOPLIMIT
-       { IPV6_HOPLIMIT,        "IPV6_HOPLIMIT"         },
-#endif
-#ifdef IPV6_RTHDR
-       { IPV6_RTHDR,           "IPV6_RTHDR"            },
-#endif
-#ifdef IPV6_HOPOPTS
-       { IPV6_HOPOPTS,         "IPV6_HOPOPTS"          },
-#endif
-#ifdef IPV6_DSTOPTS
-       { IPV6_DSTOPTS,         "IPV6_DSTOPTS"          },
-#endif
-#ifdef IPV6_FLOWINFO
-       { IPV6_FLOWINFO,        "IPV6_FLOWINFO"         },
-#endif
-#ifdef IPV6_UNICAST_HOPS
-       { IPV6_UNICAST_HOPS,    "IPV6_UNICAST_HOPS"     },
-#endif
-#ifdef IPV6_MULTICAST_HOPS
-       { IPV6_MULTICAST_HOPS,  "IPV6_MULTICAST_HOPS"   },
-#endif
-#ifdef IPV6_MULTICAST_LOOP
-       { IPV6_MULTICAST_LOOP,  "IPV6_MULTICAST_LOOP"   },
-#endif
-#ifdef IPV6_MULTICAST_IF
-       { IPV6_MULTICAST_IF,    "IPV6_MULTICAST_IF"     },
-#endif
-#ifdef IPV6_MTU_DISCOVER
-       { IPV6_MTU_DISCOVER,    "IPV6_MTU_DISCOVER"     },
-#endif
-#ifdef IPV6_RECVERR
-       { IPV6_RECVERR,         "IPV6_RECVERR"          },
-#endif
-#ifdef IPV6_FLOWINFO_SEND
-       { IPV6_FLOWINFO_SEND,   "IPV6_FLOWINFO_SEND"    },
-#endif
-#ifdef IPV6_ADD_MEMBERSHIP
-       { IPV6_ADD_MEMBERSHIP,  "IPV6_ADD_MEMBERSHIP"   },
-#endif
-#ifdef IPV6_DROP_MEMBERSHIP
-       { IPV6_DROP_MEMBERSHIP, "IPV6_DROP_MEMBERSHIP"  },
-#endif
-#ifdef IPV6_ROUTER_ALERT
-       { IPV6_ROUTER_ALERT,    "IPV6_ROUTER_ALERT"     },
-#endif
-       { 0,                    NULL                    },
-};
+#include "xlat/sockipv6options.h"
 #endif /* SOL_IPV6 */
 
 #ifdef SOL_IPX
-static const struct xlat sockipxoptions[] = {
-       { IPX_TYPE,     "IPX_TYPE"      },
-       { 0,            NULL            },
-};
+#include "xlat/sockipxoptions.h"
 #endif /* SOL_IPX */
 
 #ifdef SOL_RAW
-static const struct xlat sockrawoptions[] = {
-#if defined(ICMP_FILTER)
-       { ICMP_FILTER,          "ICMP_FILTER"   },
-#endif
-       { 0,                    NULL            },
-};
+#include "xlat/sockrawoptions.h"
 #endif /* SOL_RAW */
 
 #ifdef SOL_PACKET
-static const struct xlat sockpacketoptions[] = {
-#ifdef PACKET_ADD_MEMBERSHIP
-       { PACKET_ADD_MEMBERSHIP,        "PACKET_ADD_MEMBERSHIP" },
-#endif
-#ifdef PACKET_DROP_MEMBERSHIP
-       { PACKET_DROP_MEMBERSHIP,       "PACKET_DROP_MEMBERSHIP"},
-#endif
-#if defined(PACKET_RECV_OUTPUT)
-       { PACKET_RECV_OUTPUT,           "PACKET_RECV_OUTPUT"    },
-#endif
-#if defined(PACKET_RX_RING)
-       { PACKET_RX_RING,               "PACKET_RX_RING"        },
-#endif
-#if defined(PACKET_STATISTICS)
-       { PACKET_STATISTICS,            "PACKET_STATISTICS"     },
-#endif
-#if defined(PACKET_COPY_THRESH)
-       { PACKET_COPY_THRESH,           "PACKET_COPY_THRESH"    },
-#endif
-#if defined(PACKET_AUXDATA)
-       { PACKET_AUXDATA,               "PACKET_AUXDATA"        },
-#endif
-#if defined(PACKET_ORIGDEV)
-       { PACKET_ORIGDEV,               "PACKET_ORIGDEV"        },
-#endif
-#if defined(PACKET_VERSION)
-       { PACKET_VERSION,               "PACKET_VERSION"        },
-#endif
-#if defined(PACKET_HDRLEN)
-       { PACKET_HDRLEN,                "PACKET_HDRLEN" },
-#endif
-#if defined(PACKET_RESERVE)
-       { PACKET_RESERVE,               "PACKET_RESERVE"        },
-#endif
-#if defined(PACKET_TX_RING)
-       { PACKET_TX_RING,               "PACKET_TX_RING"        },
-#endif
-#if defined(PACKET_LOSS)
-       { PACKET_LOSS,                  "PACKET_LOSS"   },
-#endif
-       { 0,                            NULL                    },
-};
+#include "xlat/sockpacketoptions.h"
 #endif /* SOL_PACKET */
 
 #ifdef SOL_SCTP
-static const struct xlat socksctpoptions[] = {
-#if defined(SCTP_RTOINFO)
-       { SCTP_RTOINFO,                 "SCTP_RTOINFO"  },
-#endif
-#if defined(SCTP_ASSOCINFO)
-       { SCTP_ASSOCINFO,               "SCTP_ASSOCINFO"},
-#endif
-#if defined(SCTP_INITMSG)
-       { SCTP_INITMSG,                 "SCTP_INITMSG"  },
-#endif
-#if defined(SCTP_NODELAY)
-       { SCTP_NODELAY,                 "SCTP_NODELAY"  },
-#endif
-#if defined(SCTP_AUTOCLOSE)
-       { SCTP_AUTOCLOSE,               "SCTP_AUTOCLOSE"},
-#endif
-#if defined(SCTP_SET_PEER_PRIMARY_ADDR)
-       { SCTP_SET_PEER_PRIMARY_ADDR,   "SCTP_SET_PEER_PRIMARY_ADDR"},
-#endif
-#if defined(SCTP_PRIMARY_ADDR)
-       { SCTP_PRIMARY_ADDR,            "SCTP_PRIMARY_ADDR"     },
-#endif
-#if defined(SCTP_ADAPTATION_LAYER)
-       { SCTP_ADAPTATION_LAYER,        "SCTP_ADAPTATION_LAYER" },
-#endif
-#if defined(SCTP_DISABLE_FRAGMENTS)
-       { SCTP_DISABLE_FRAGMENTS,       "SCTP_DISABLE_FRAGMENTS"},
-#endif
-#if defined(SCTP_PEER_ADDR_PARAMS)
-       { SCTP_PEER_ADDR_PARAMS,        "SCTP_PEER_ADDR_PARAMS" },
-#endif
-#if defined(SCTP_DEFAULT_SEND_PARAM)
-       { SCTP_DEFAULT_SEND_PARAM,      "SCTP_DEFAULT_SEND_PARAM"},
-#endif
-#if defined(SCTP_EVENTS)
-       { SCTP_EVENTS,                  "SCTP_EVENTS"           },
-#endif
-#if defined(SCTP_I_WANT_MAPPED_V4_ADDR)
-       { SCTP_I_WANT_MAPPED_V4_ADDR,   "SCTP_I_WANT_MAPPED_V4_ADDR"},
-#endif
-#if defined(SCTP_MAXSEG)
-       { SCTP_MAXSEG,                  "SCTP_MAXSEG"           },
-#endif
-#if defined(SCTP_STATUS)
-       { SCTP_STATUS,                  "SCTP_STATUS"           },
-#endif
-#if defined(SCTP_GET_PEER_ADDR_INFO)
-       { SCTP_GET_PEER_ADDR_INFO,      "SCTP_GET_PEER_ADDR_INFO"},
-#endif
-#if defined(SCTP_DELAYED_ACK)
-       { SCTP_DELAYED_ACK,             "SCTP_DELAYED_ACK"      },
-#endif
-#if defined(SCTP_CONTEXT)
-       { SCTP_CONTEXT,                 "SCTP_CONTEXT"          },
-#endif
-#if defined(SCTP_FRAGMENT_INTERLEAVE)
-       { SCTP_FRAGMENT_INTERLEAVE,     "SCTP_FRAGMENT_INTERLEAVE"},
-#endif
-#if defined(SCTP_PARTIAL_DELIVERY_POINT)
-       { SCTP_PARTIAL_DELIVERY_POINT,  "SCTP_PARTIAL_DELIVERY_POINT"},
-#endif
-#if defined(SCTP_MAX_BURST)
-       { SCTP_MAX_BURST,               "SCTP_MAX_BURST"        },
-#endif
-#if defined(SCTP_AUTH_CHUNK)
-       { SCTP_AUTH_CHUNK,              "SCTP_AUTH_CHUNK"       },
-#endif
-#if defined(SCTP_HMAC_IDENT)
-       { SCTP_HMAC_IDENT,              "SCTP_HMAC_IDENT"       },
-#endif
-#if defined(SCTP_AUTH_KEY)
-       { SCTP_AUTH_KEY,                "SCTP_AUTH_KEY"         },
-#endif
-#if defined(SCTP_AUTH_ACTIVE_KEY)
-       { SCTP_AUTH_ACTIVE_KEY,         "SCTP_AUTH_ACTIVE_KEY"  },
-#endif
-#if defined(SCTP_AUTH_DELETE_KEY)
-       { SCTP_AUTH_DELETE_KEY,         "SCTP_AUTH_DELETE_KEY"  },
-#endif
-#if defined(SCTP_PEER_AUTH_CHUNKS)
-       { SCTP_PEER_AUTH_CHUNKS,        "SCTP_PEER_AUTH_CHUNKS" },
-#endif
-#if defined(SCTP_LOCAL_AUTH_CHUNKS)
-       { SCTP_LOCAL_AUTH_CHUNKS,       "SCTP_LOCAL_AUTH_CHUNKS"},
-#endif
-#if defined(SCTP_GET_ASSOC_NUMBER)
-       { SCTP_GET_ASSOC_NUMBER,        "SCTP_GET_ASSOC_NUMBER" },
-#endif
-
-       /* linux specific things */
-#if defined(SCTP_SOCKOPT_BINDX_ADD)
-       { SCTP_SOCKOPT_BINDX_ADD,       "SCTP_SOCKOPT_BINDX_ADD"        },
-#endif
-#if defined(SCTP_SOCKOPT_BINDX_REM)
-       { SCTP_SOCKOPT_BINDX_REM,       "SCTP_SOCKOPT_BINDX_REM"        },
-#endif
-#if defined(SCTP_SOCKOPT_PEELOFF)
-       { SCTP_SOCKOPT_PEELOFF,         "SCTP_SOCKOPT_PEELOFF"          },
-#endif
-#if defined(SCTP_GET_PEER_ADDRS_NUM_OLD)
-       { SCTP_GET_PEER_ADDRS_NUM_OLD,  "SCTP_GET_PEER_ADDRS_NUM_OLD"   },
-#endif
-#if defined(SCTP_GET_PEER_ADDRS_OLD)
-       { SCTP_GET_PEER_ADDRS_OLD,      "SCTP_GET_PEER_ADDRS_OLD"       },
-#endif
-#if defined(SCTP_GET_LOCAL_ADDRS_NUM_OLD)
-       { SCTP_GET_LOCAL_ADDRS_NUM_OLD, "SCTP_GET_LOCAL_ADDRS_NUM_OLD"  },
-#endif
-#if defined(SCTP_GET_LOCAL_ADDRS_OLD)
-       { SCTP_GET_LOCAL_ADDRS_OLD,     "SCTP_GET_LOCAL_ADDRS_OLD"      },
-#endif
-#if defined(SCTP_SOCKOPT_CONNECTX_OLD)
-       { SCTP_SOCKOPT_CONNECTX_OLD,    "SCTP_SOCKOPT_CONNECTX_OLD"     },
-#endif
-#if defined(SCTP_GET_PEER_ADDRS)
-       { SCTP_GET_PEER_ADDRS,          "SCTP_GET_PEER_ADDRS"           },
-#endif
-#if defined(SCTP_GET_LOCAL_ADDRS)
-       { SCTP_GET_LOCAL_ADDRS,         "SCTP_GET_LOCAL_ADDRS"          },
-#endif
-
-       { 0,    NULL    },
-};
+#include "xlat/socksctpoptions.h"
 #endif
 
 #if !defined(SOL_TCP) && defined(IPPROTO_TCP)
@@ -1123,149 +146,15 @@ static const struct xlat socksctpoptions[] = {
 #endif
 
 #ifdef SOL_TCP
-static const struct xlat socktcpoptions[] = {
-       { TCP_NODELAY,          "TCP_NODELAY"   },
-       { TCP_MAXSEG,           "TCP_MAXSEG"    },
-#ifdef TCP_CORK
-       { TCP_CORK,             "TCP_CORK"      },
-#endif
-#ifdef TCP_KEEPIDLE
-       { TCP_KEEPIDLE,         "TCP_KEEPIDLE"  },
-#endif
-#ifdef TCP_KEEPINTVL
-       { TCP_KEEPINTVL,        "TCP_KEEPINTVL" },
-#endif
-#ifdef TCP_KEEPCNT
-       { TCP_KEEPCNT,          "TCP_KEEPCNT"   },
-#endif
-#ifdef TCP_SYNCNT
-       { TCP_SYNCNT,           "TCP_SYNCNT"    },
-#endif
-#ifdef TCP_LINGER2
-       { TCP_LINGER2,          "TCP_LINGER2"   },
-#endif
-#ifdef TCP_DEFER_ACCEPT
-       { TCP_DEFER_ACCEPT,     "TCP_DEFER_ACCEPT"      },
-#endif
-#ifdef TCP_WINDOW_CLAMP
-       { TCP_WINDOW_CLAMP,     "TCP_WINDOW_CLAMP"      },
-#endif
-#ifdef TCP_INFO
-       { TCP_INFO,             "TCP_INFO"      },
-#endif
-#ifdef TCP_QUICKACK
-       { TCP_QUICKACK,         "TCP_QUICKACK"  },
-#endif
-#ifdef TCP_CONGESTION
-       { TCP_CONGESTION,       "TCP_CONGESTION"        },
-#endif
-#ifdef TCP_MD5SIG
-       { TCP_MD5SIG,           "TCP_MD5SIG"    },
-#endif
-#ifdef TCP_COOKIE_TRANSACTIONS
-       { TCP_COOKIE_TRANSACTIONS,      "TCP_COOKIE_TRANSACTIONS"       },
-#endif
-#ifdef TCP_THIN_LINEAR_TIMEOUTS
-       { TCP_THIN_LINEAR_TIMEOUTS,     "TCP_THIN_LINEAR_TIMEOUTS"      },
-#endif
-#ifdef TCP_THIN_DUPACK
-       { TCP_THIN_DUPACK,      "TCP_THIN_DUPACK"       },
-#endif
-#ifdef TCP_USER_TIMEOUT
-       { TCP_USER_TIMEOUT,     "TCP_USER_TIMEOUT"      },
-#endif
-#ifdef TCP_REPAIR
-       { TCP_REPAIR,           "TCP_REPAIR"    },
-#endif
-#ifdef TCP_REPAIR_QUEUE
-       { TCP_REPAIR_QUEUE,     "TCP_REPAIR_QUEUE"      },
-#endif
-#ifdef TCP_QUEUE_SEQ
-       { TCP_QUEUE_SEQ,        "TCP_QUEUE_SEQ" },
-#endif
-#ifdef TCP_REPAIR_OPTIONS
-       { TCP_REPAIR_OPTIONS,   "TCP_REPAIR_OPTIONS"    },
-#endif
-#ifdef TCP_FASTOPEN
-       { TCP_FASTOPEN,         "TCP_FASTOPEN"  },
-#endif
-#ifdef TCP_TIMESTAMP
-       { TCP_TIMESTAMP,        "TCP_TIMESTAMP" },
-#endif
-       { 0,                    NULL            },
-};
+#include "xlat/socktcpoptions.h"
 #endif /* SOL_TCP */
 
 #ifdef SOL_RAW
-static const struct xlat icmpfilterflags[] = {
-#if defined(ICMP_ECHOREPLY)
-       { (1<<ICMP_ECHOREPLY),          "ICMP_ECHOREPLY"        },
-#endif
-#if defined(ICMP_DEST_UNREACH)
-       { (1<<ICMP_DEST_UNREACH),       "ICMP_DEST_UNREACH"     },
-#endif
-#if defined(ICMP_SOURCE_QUENCH)
-       { (1<<ICMP_SOURCE_QUENCH),      "ICMP_SOURCE_QUENCH"    },
-#endif
-#if defined(ICMP_REDIRECT)
-       { (1<<ICMP_REDIRECT),           "ICMP_REDIRECT"         },
-#endif
-#if defined(ICMP_ECHO)
-       { (1<<ICMP_ECHO),               "ICMP_ECHO"             },
-#endif
-#if defined(ICMP_TIME_EXCEEDED)
-       { (1<<ICMP_TIME_EXCEEDED),      "ICMP_TIME_EXCEEDED"    },
-#endif
-#if defined(ICMP_PARAMETERPROB)
-       { (1<<ICMP_PARAMETERPROB),      "ICMP_PARAMETERPROB"    },
-#endif
-#if defined(ICMP_TIMESTAMP)
-       { (1<<ICMP_TIMESTAMP),          "ICMP_TIMESTAMP"        },
-#endif
-#if defined(ICMP_TIMESTAMPREPLY)
-       { (1<<ICMP_TIMESTAMPREPLY),     "ICMP_TIMESTAMPREPLY"   },
-#endif
-#if defined(ICMP_INFO_REQUEST)
-       { (1<<ICMP_INFO_REQUEST),       "ICMP_INFO_REQUEST"     },
-#endif
-#if defined(ICMP_INFO_REPLY)
-       { (1<<ICMP_INFO_REPLY),         "ICMP_INFO_REPLY"       },
-#endif
-#if defined(ICMP_ADDRESS)
-       { (1<<ICMP_ADDRESS),            "ICMP_ADDRESS"          },
-#endif
-#if defined(ICMP_ADDRESSREPLY)
-       { (1<<ICMP_ADDRESSREPLY),       "ICMP_ADDRESSREPLY"     },
-#endif
-       { 0,                            NULL                    },
-};
+#include "xlat/icmpfilterflags.h"
 #endif /* SOL_RAW */
 
 #if defined(AF_PACKET) /* from e.g. linux/if_packet.h */
-static const struct xlat af_packet_types[] = {
-#if defined(PACKET_HOST)
-       { PACKET_HOST,                  "PACKET_HOST"           },
-#endif
-#if defined(PACKET_BROADCAST)
-       { PACKET_BROADCAST,             "PACKET_BROADCAST"      },
-#endif
-#if defined(PACKET_MULTICAST)
-       { PACKET_MULTICAST,             "PACKET_MULTICAST"      },
-#endif
-#if defined(PACKET_OTHERHOST)
-       { PACKET_OTHERHOST,             "PACKET_OTHERHOST"      },
-#endif
-#if defined(PACKET_OUTGOING)
-       { PACKET_OUTGOING,              "PACKET_OUTGOING"       },
-#endif
-#if defined(PACKET_LOOPBACK)
-       { PACKET_LOOPBACK,              "PACKET_LOOPBACK"       },
-#endif
-#if defined(PACKET_FASTROUTE)
-       { PACKET_FASTROUTE,             "PACKET_FASTROUTE"      },
-#endif
-       { 0,                            NULL                    },
-};
+#include "xlat/af_packet_types.h"
 #endif /* defined(AF_PACKET) */
 
 void
@@ -1412,15 +301,7 @@ printsock(struct tcb *tcp, long addr, int addrlen)
 }
 
 #if HAVE_SENDMSG
-static const struct xlat scmvals[] = {
-#ifdef SCM_RIGHTS
-       { SCM_RIGHTS,           "SCM_RIGHTS"            },
-#endif
-#ifdef SCM_CREDENTIALS
-       { SCM_CREDENTIALS,      "SCM_CREDENTIALS"       },
-#endif
-       { 0,                    NULL                    }
-};
+#include "xlat/scmvals.h"
 
 static void
 printcmsghdr(struct tcb *tcp, unsigned long addr, unsigned long len)
@@ -1452,7 +333,7 @@ printcmsghdr(struct tcb *tcp, unsigned long addr, unsigned long len)
                        while ((char *) fds < ((char *) cmsg + cmsg_len)) {
                                if (!first)
                                        tprints(", ");
-                               tprintf("%d", *fds++);
+                               printfd(tcp, *fds++);
                                first = 0;
                        }
                        tprints("}}");
@@ -1637,7 +518,7 @@ sys_socket(struct tcb *tcp)
 #ifdef PF_INET6
                case PF_INET6:
 #endif
-                       printxval(protocols, tcp->u_arg[2], "IPPROTO_???");
+                       printxval(inet_protocols, tcp->u_arg[2], "IPPROTO_???");
                        break;
 #ifdef PF_IPX
                case PF_IPX:
@@ -1647,6 +528,11 @@ sys_socket(struct tcb *tcp)
                        tprints("]");
                        break;
 #endif /* PF_IPX */
+#ifdef PF_NETLINK
+               case PF_NETLINK:
+                       printxval(netlink_protocols, tcp->u_arg[2], "NETLINK_???");
+                       break;
+#endif
                default:
                        tprintf("%lu", tcp->u_arg[2]);
                        break;
@@ -1659,7 +545,8 @@ int
 sys_bind(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printsock(tcp, tcp->u_arg[1], tcp->u_arg[2]);
                tprintf(", %lu", tcp->u_arg[2]);
        }
@@ -1676,16 +563,19 @@ int
 sys_listen(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, %lu", tcp->u_arg[0], tcp->u_arg[1]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
+               tprintf("%lu", tcp->u_arg[1]);
        }
        return 0;
 }
 
 static int
-do_accept(struct tcb *tcp, int flags_arg)
+do_sockname(struct tcb *tcp, int flags_arg)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                return 0;
        }
        if (!tcp->u_arg[2])
@@ -1712,20 +602,23 @@ do_accept(struct tcb *tcp, int flags_arg)
 int
 sys_accept(struct tcb *tcp)
 {
-       return do_accept(tcp, -1);
+       do_sockname(tcp, -1);
+       return RVAL_FD;
 }
 
 int
 sys_accept4(struct tcb *tcp)
 {
-       return do_accept(tcp, 3);
+       do_sockname(tcp, 3);
+       return RVAL_FD;
 }
 
 int
 sys_send(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
                tprintf(", %lu, ", tcp->u_arg[2]);
                /* flags */
@@ -1738,7 +631,8 @@ int
 sys_sendto(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
                tprintf(", %lu, ", tcp->u_arg[2]);
                /* flags */
@@ -1758,7 +652,8 @@ int
 sys_sendmsg(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printmsghdr(tcp, tcp->u_arg[1], (unsigned long) -1L);
                /* flags */
                tprints(", ");
@@ -1772,7 +667,8 @@ sys_sendmmsg(struct tcb *tcp)
 {
        if (entering(tcp)) {
                /* sockfd */
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                if (!verbose(tcp)) {
                        tprintf("%#lx, %u, ",
                                tcp->u_arg[1], (unsigned int) tcp->u_arg[2]);
@@ -1791,7 +687,8 @@ int
 sys_recv(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
        } else {
                if (syserror(tcp))
                        tprintf("%#lx", tcp->u_arg[1]);
@@ -1810,7 +707,8 @@ sys_recvfrom(struct tcb *tcp)
        int fromlen;
 
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
        } else {
                if (syserror(tcp)) {
                        tprintf("%#lx, %lu, %lu, %#lx, %#lx",
@@ -1854,7 +752,8 @@ int
 sys_recvmsg(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
        } else {
                if (syserror(tcp) || !verbose(tcp))
                        tprintf("%#lx", tcp->u_arg[1]);
@@ -1874,7 +773,8 @@ sys_recvmmsg(struct tcb *tcp)
        static char str[5 + TIMESPEC_TEXT_BUFSIZE];
 
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                if (verbose(tcp)) {
                        sprint_timespec(str, tcp, tcp->u_arg[4]);
                        /* Abusing tcp->auxstr as temp storage.
@@ -1913,18 +813,14 @@ sys_recvmmsg(struct tcb *tcp)
 
 #endif /* HAVE_SENDMSG */
 
-static const struct xlat shutdown_modes[] = {
-       { 0,    "SHUT_RD"       },
-       { 1,    "SHUT_WR"       },
-       { 2,    "SHUT_RDWR"     },
-       { 0,    NULL            }
-};
+#include "xlat/shutdown_modes.h"
 
 int
 sys_shutdown(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printxval(shutdown_modes, tcp->u_arg[1], "SHUT_???");
        }
        return 0;
@@ -1933,13 +829,13 @@ sys_shutdown(struct tcb *tcp)
 int
 sys_getsockname(struct tcb *tcp)
 {
-       return sys_accept(tcp);
+       return do_sockname(tcp, -1);
 }
 
 int
 sys_getpeername(struct tcb *tcp)
 {
-       return sys_accept(tcp);
+       return do_sockname(tcp, -1);
 }
 
 static int
@@ -1991,23 +887,7 @@ sys_socketpair(struct tcb *tcp)
                printxval(domains, tcp->u_arg[0], "PF_???");
                tprints(", ");
                tprint_sock_type(tcp, tcp->u_arg[1]);
-               tprints(", ");
-               switch (tcp->u_arg[0]) {
-               case PF_INET:
-                       printxval(protocols, tcp->u_arg[2], "IPPROTO_???");
-                       break;
-#ifdef PF_IPX
-               case PF_IPX:
-                       /* BTW: I don't believe this.. */
-                       tprints("[");
-                       printxval(domains, tcp->u_arg[2], "PF_???");
-                       tprints("]");
-                       break;
-#endif /* PF_IPX */
-               default:
-                       tprintf("%lu", tcp->u_arg[2]);
-                       break;
-               }
+               tprintf(", %lu", tcp->u_arg[2]);
        } else {
                if (syserror(tcp)) {
                        tprintf(", %#lx", tcp->u_arg[3]);
@@ -2025,7 +905,8 @@ int
 sys_getsockopt(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printxval(socketlayers, tcp->u_arg[1], "SOL_???");
                tprints(", ");
                switch (tcp->u_arg[1]) {
@@ -2287,46 +1168,12 @@ printsockopt(struct tcb *tcp, int level, int name, long addr, int len)
        return 0;
 }
 
-#ifdef HAVE_STRUCT_OPTHDR
-
-void
-print_sock_optmgmt(struct tcb *tcp, long addr, int len)
-{
-       int c = 0;
-       struct opthdr hdr;
-
-       while (len >= (int) sizeof hdr) {
-               if (umove(tcp, addr, &hdr) < 0) break;
-               if (c++) {
-                       tprints(", ");
-               }
-               else if (len > hdr.len + sizeof hdr) {
-                       tprints("[");
-               }
-               tprints("{");
-               addr += sizeof hdr;
-               len -= sizeof hdr;
-               printsockopt(tcp, hdr.level, hdr.name, addr, hdr.len);
-               if (hdr.len > 0) {
-                       addr += hdr.len;
-                       len -= hdr.len;
-               }
-               tprints("}");
-       }
-       if (len > 0) {
-               if (c++) tprints(", ");
-               printstr(tcp, addr, len);
-       }
-       if (c > 1) tprints("]");
-}
-
-#endif
-
 int
 sys_setsockopt(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", tcp->u_arg[0]);
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printsockopt(tcp, tcp->u_arg[1], tcp->u_arg[2],
                              tcp->u_arg[3], tcp->u_arg[4]);
                tprintf(", %lu", tcp->u_arg[4]);
index d4c2dc4..ccfb3c2 100644 (file)
 
 #include "defs.h"
 #include <sys/param.h>
-#ifdef HAVE_POLL_H
+#if defined HAVE_POLL_H
 # include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
+#elif defined HAVE_SYS_POLL_H
 # include <sys/poll.h>
 #endif
 
@@ -81,7 +80,7 @@ fdmatch(struct tcb *tcp, int fd)
 
 /*
  * Add a path to the set we're tracing.
- * Secifying NULL will delete all paths.
+ * Specifying NULL will delete all paths.
  */
 static void
 storepath(const char *path)
@@ -159,7 +158,7 @@ pathtrace_match(struct tcb *tcp)
 
        s = tcp->s_ent;
 
-       if (!(s->sys_flags & (TRACE_FILE | TRACE_DESC)))
+       if (!(s->sys_flags & (TRACE_FILE | TRACE_DESC | TRACE_NETWORK)))
                return 0;
 
        /*
@@ -212,6 +211,7 @@ pathtrace_match(struct tcb *tcp)
        }
 
        if (s->sys_func == sys_renameat ||
+           s->sys_func == sys_renameat2 ||
            s->sys_func == sys_linkat)
        {
                /* fd, path, fd, path */
@@ -252,16 +252,23 @@ pathtrace_match(struct tcb *tcp)
                return fdmatch(tcp, tcp->u_arg[2]);
        }
 
+       if (s->sys_func == sys_fanotify_mark) {
+               /* x, x, x, fd, path */
+               return fdmatch(tcp, tcp->u_arg[3]) ||
+                       upathmatch(tcp, tcp->u_arg[4]);
+       }
+
        if (s->sys_func == sys_select ||
            s->sys_func == sys_oldselect ||
            s->sys_func == sys_pselect6)
        {
                int     i, j;
-               unsigned nfds;
+               int     nfds;
                long   *args, oldargs[5];
                unsigned fdsize;
                fd_set *fds;
 
+               args = tcp->u_arg;
                if (s->sys_func == sys_oldselect) {
                        if (umoven(tcp, tcp->u_arg[0], sizeof oldargs,
                                   (char*) oldargs) < 0)
@@ -270,17 +277,17 @@ pathtrace_match(struct tcb *tcp)
                                return 0;
                        }
                        args = oldargs;
-               } else
-                       args = tcp->u_arg;
+               }
 
-               nfds = args[0];
+               /* Kernel truncates arg[0] to int, we do the same. */
+               nfds = (int) args[0];
+               /* Kernel rejects negative nfds, so we don't parse it either. */
+               if (nfds <= 0)
+                       return 0;
                /* Beware of select(2^31-1, NULL, NULL, NULL) and similar... */
-               if (args[0] > 1024*1024)
+               if (nfds > 1024*1024)
                        nfds = 1024*1024;
-               if (args[0] < 0)
-                       nfds = 0;
-               fdsize = ((((nfds + 7) / 8) + sizeof(long) - 1)
-                         & -sizeof(long));
+               fdsize = (((nfds + 7) / 8) + current_wordsize-1) & -current_wordsize;
                fds = malloc(fdsize);
                if (!fds)
                        die_out_of_memory();
@@ -288,17 +295,19 @@ pathtrace_match(struct tcb *tcp)
                for (i = 1; i <= 3; ++i) {
                        if (args[i] == 0)
                                continue;
-
                        if (umoven(tcp, args[i], fdsize, (char *) fds) < 0) {
                                fprintf(stderr, "umoven() failed\n");
                                continue;
                        }
-
-                       for (j = 0; j < nfds; ++j)
-                               if (FD_ISSET(j, fds) && fdmatch(tcp, j)) {
+                       for (j = 0;; j++) {
+                               j = next_set_bit(fds, j, nfds);
+                               if (j < 0)
+                                       break;
+                               if (fdmatch(tcp, j)) {
                                        free(fds);
                                        return 1;
                                }
+                       }
                }
                free(fds);
                return 0;
@@ -337,11 +346,13 @@ pathtrace_match(struct tcb *tcp)
            s->sys_func == sys_timerfd_settime ||
            s->sys_func == sys_timerfd_gettime ||
            s->sys_func == sys_epoll_create ||
-           strcmp(s->sys_name, "fanotify_init") == 0)
+           s->sys_func == sys_socket ||
+           s->sys_func == sys_socketpair ||
+           s->sys_func == sys_fanotify_init)
        {
                /*
-                * These have TRACE_FILE or TRACE_DESCRIPTOR set, but they
-                * don't have any file descriptor or path args to test.
+                * These have TRACE_FILE or TRACE_DESCRIPTOR or TRACE_NETWORK set,
+                * but they don't have any file descriptor or path args to test.
                 */
                return 0;
        }
@@ -354,7 +365,7 @@ pathtrace_match(struct tcb *tcp)
        if (s->sys_flags & TRACE_FILE)
                return upathmatch(tcp, tcp->u_arg[0]);
 
-       if (s->sys_flags & TRACE_DESC)
+       if (s->sys_flags & (TRACE_DESC | TRACE_NETWORK))
                return fdmatch(tcp, tcp->u_arg[0]);
 
        return 0;
index 799a314..2cd0f01 100644 (file)
--- a/process.c
+++ b/process.c
 
 #ifdef HAVE_SYS_REG_H
 # include <sys/reg.h>
-# ifndef PTRACE_PEEKUSR
-#  define PTRACE_PEEKUSR PTRACE_PEEKUSER
-# endif
-# ifndef PTRACE_POKEUSR
-#  define PTRACE_POKEUSR PTRACE_POKEUSER
-# endif
 #endif
 
 #ifdef HAVE_LINUX_PTRACE_H
 # ifdef HAVE_STRUCT_PT_ALL_USER_REGS
 #  define pt_all_user_regs XXX_pt_all_user_regs
 # endif
+# ifdef HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS
+#  define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+# endif
 # include <linux/ptrace.h>
+# undef ptrace_peeksiginfo_args
 # undef ia64_fpreg
 # undef pt_all_user_regs
 #endif
 #ifdef HAVE_PRCTL
 # include <sys/prctl.h>
 
-static const struct xlat prctl_options[] = {
-#ifdef PR_MAXPROCS
-       { PR_MAXPROCS,          "PR_MAXPROCS"           },
-#endif
-#ifdef PR_ISBLOCKED
-       { PR_ISBLOCKED,         "PR_ISBLOCKED"          },
-#endif
-#ifdef PR_SETSTACKSIZE
-       { PR_SETSTACKSIZE,      "PR_SETSTACKSIZE"       },
-#endif
-#ifdef PR_GETSTACKSIZE
-       { PR_GETSTACKSIZE,      "PR_GETSTACKSIZE"       },
-#endif
-#ifdef PR_MAXPPROCS
-       { PR_MAXPPROCS,         "PR_MAXPPROCS"          },
-#endif
-#ifdef PR_UNBLKONEXEC
-       { PR_UNBLKONEXEC,       "PR_UNBLKONEXEC"        },
-#endif
-#ifdef PR_ATOMICSIM
-       { PR_ATOMICSIM,         "PR_ATOMICSIM"          },
-#endif
-#ifdef PR_SETEXITSIG
-       { PR_SETEXITSIG,        "PR_SETEXITSIG"         },
-#endif
-#ifdef PR_RESIDENT
-       { PR_RESIDENT,          "PR_RESIDENT"           },
-#endif
-#ifdef PR_ATTACHADDR
-       { PR_ATTACHADDR,        "PR_ATTACHADDR"         },
-#endif
-#ifdef PR_DETACHADDR
-       { PR_DETACHADDR,        "PR_DETACHADDR"         },
-#endif
-#ifdef PR_TERMCHILD
-       { PR_TERMCHILD,         "PR_TERMCHILD"          },
-#endif
-#ifdef PR_GETSHMASK
-       { PR_GETSHMASK,         "PR_GETSHMASK"          },
-#endif
-#ifdef PR_GETNSHARE
-       { PR_GETNSHARE,         "PR_GETNSHARE"          },
-#endif
-#ifdef PR_COREPID
-       { PR_COREPID,           "PR_COREPID"            },
-#endif
-#ifdef PR_ATTACHADDRPERM
-       { PR_ATTACHADDRPERM,    "PR_ATTACHADDRPERM"     },
-#endif
-#ifdef PR_PTHREADEXIT
-       { PR_PTHREADEXIT,       "PR_PTHREADEXIT"        },
-#endif
-
-#ifdef PR_SET_PDEATHSIG
-       { PR_SET_PDEATHSIG,     "PR_SET_PDEATHSIG"      },
-#endif
-#ifdef PR_GET_PDEATHSIG
-       { PR_GET_PDEATHSIG,     "PR_GET_PDEATHSIG"      },
-#endif
-#ifdef PR_GET_DUMPABLE
-       { PR_GET_DUMPABLE,      "PR_GET_DUMPABLE"       },
-#endif
-#ifdef PR_SET_DUMPABLE
-       { PR_SET_DUMPABLE,      "PR_SET_DUMPABLE"       },
-#endif
-#ifdef PR_GET_UNALIGN
-       { PR_GET_UNALIGN,       "PR_GET_UNALIGN"        },
-#endif
-#ifdef PR_SET_UNALIGN
-       { PR_SET_UNALIGN,       "PR_SET_UNALIGN"        },
-#endif
-#ifdef PR_GET_KEEPCAPS
-       { PR_GET_KEEPCAPS,      "PR_GET_KEEPCAPS"       },
-#endif
-#ifdef PR_SET_KEEPCAPS
-       { PR_SET_KEEPCAPS,      "PR_SET_KEEPCAPS"       },
-#endif
-#ifdef PR_GET_FPEMU
-       { PR_GET_FPEMU,         "PR_GET_FPEMU"          },
-#endif
-#ifdef PR_SET_FPEMU
-       { PR_SET_FPEMU,         "PR_SET_FPEMU"          },
-#endif
-#ifdef PR_GET_FPEXC
-       { PR_GET_FPEXC,         "PR_GET_FPEXC"          },
-#endif
-#ifdef PR_SET_FPEXC
-       { PR_SET_FPEXC,         "PR_SET_FPEXC"          },
-#endif
-#ifdef PR_GET_TIMING
-       { PR_GET_TIMING,        "PR_GET_TIMING"         },
-#endif
-#ifdef PR_SET_TIMING
-       { PR_SET_TIMING,        "PR_SET_TIMING"         },
-#endif
-#ifdef PR_SET_NAME
-       { PR_SET_NAME,          "PR_SET_NAME"           },
-#endif
-#ifdef PR_GET_NAME
-       { PR_GET_NAME,          "PR_GET_NAME"           },
-#endif
-#ifdef PR_GET_ENDIAN
-       { PR_GET_ENDIAN,        "PR_GET_ENDIAN"         },
-#endif
-#ifdef PR_SET_ENDIAN
-       { PR_SET_ENDIAN,        "PR_SET_ENDIAN"         },
-#endif
-#ifdef PR_GET_SECCOMP
-       { PR_GET_SECCOMP,       "PR_GET_SECCOMP"        },
-#endif
-#ifdef PR_SET_SECCOMP
-       { PR_SET_SECCOMP,       "PR_SET_SECCOMP"        },
-#endif
-#ifdef PR_CAPBSET_READ
-       { PR_CAPBSET_READ,      "PR_CAPBSET_READ"       },
-#endif
-#ifdef PR_CAPBSET_DROP
-       { PR_CAPBSET_DROP,      "PR_CAPBSET_DROP"       },
-#endif
-#ifdef PR_GET_TSC
-       { PR_GET_TSC,           "PR_GET_TSC"            },
-#endif
-#ifdef PR_SET_TSC
-       { PR_SET_TSC,           "PR_SET_TSC"            },
-#endif
-#ifdef PR_GET_SECUREBITS
-       { PR_GET_SECUREBITS,    "PR_GET_SECUREBITS"     },
-#endif
-#ifdef PR_SET_SECUREBITS
-       { PR_SET_SECUREBITS,    "PR_SET_SECUREBITS"     },
-#endif
-#ifdef PR_SET_TIMERSLACK
-       { PR_SET_TIMERSLACK,    "PR_SET_TIMERSLACK"     },
-#endif
-#ifdef PR_GET_TIMERSLACK
-       { PR_GET_TIMERSLACK,    "PR_GET_TIMERSLACK"     },
-#endif
-#ifdef PR_TASK_PERF_EVENTS_DISABLE
-       { PR_TASK_PERF_EVENTS_DISABLE,  "PR_TASK_PERF_EVENTS_DISABLE"   },
-#endif
-#ifdef PR_TASK_PERF_EVENTS_ENABLE
-       { PR_TASK_PERF_EVENTS_ENABLE,   "PR_TASK_PERF_EVENTS_ENABLE"    },
-#endif
-#ifdef PR_MCE_KILL
-       { PR_MCE_KILL,          "PR_MCE_KILL"           },
-#endif
-#ifdef PR_MCE_KILL_GET
-       { PR_MCE_KILL_GET,      "PR_MCE_KILL_GET"       },
-#endif
-#ifdef PR_SET_MM
-       { PR_SET_MM,            "PR_SET_MM"             },
-#endif
-#ifdef PR_SET_PTRACER
-       { PR_SET_PTRACER,       "PR_SET_PTRACER"        },
-#endif
-#ifdef PR_SET_CHILD_SUBREAPER
-       { PR_SET_CHILD_SUBREAPER,       "PR_SET_CHILD_SUBREAPER"        },
-#endif
-#ifdef PR_GET_CHILD_SUBREAPER
-       { PR_GET_CHILD_SUBREAPER,       "PR_GET_CHILD_SUBREAPER"        },
-#endif
-#ifdef PR_SET_NO_NEW_PRIVS
-       { PR_SET_NO_NEW_PRIVS,  "PR_SET_NO_NEW_PRIVS"   },
-#endif
-#ifdef PR_GET_NO_NEW_PRIVS
-       { PR_GET_NO_NEW_PRIVS,  "PR_GET_NO_NEW_PRIVS"   },
-#endif
-#ifdef PR_GET_TID_ADDRESS
-       { PR_GET_TID_ADDRESS,   "PR_GET_TID_ADDRESS"    },
-#endif
-       { 0,                    NULL                    },
-};
+#include "xlat/prctl_options.h"
 
 static const char *
 unalignctl_string(unsigned int ctl)
@@ -392,7 +219,7 @@ int
 sys_sethostname(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printpathn(tcp, tcp->u_arg[0], tcp->u_arg[1]);
+               printstr(tcp, tcp->u_arg[0], tcp->u_arg[1]);
                tprintf(", %lu", tcp->u_arg[1]);
        }
        return 0;
@@ -406,7 +233,7 @@ sys_gethostname(struct tcb *tcp)
                if (syserror(tcp))
                        tprintf("%#lx", tcp->u_arg[0]);
                else
-                       printpath(tcp, tcp->u_arg[0]);
+                       printstr(tcp, tcp->u_arg[0], -1);
                tprintf(", %lu", tcp->u_arg[1]);
        }
        return 0;
@@ -417,7 +244,7 @@ int
 sys_setdomainname(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printpathn(tcp, tcp->u_arg[0], tcp->u_arg[1]);
+               printstr(tcp, tcp->u_arg[0], tcp->u_arg[1]);
                tprintf(", %lu", tcp->u_arg[1]);
        }
        return 0;
@@ -466,40 +293,11 @@ sys_exit(struct tcb *tcp)
 #define CLONE_NEWNET           0x40000000      /* New network namespace */
 #define CLONE_IO               0x80000000      /* Clone io context */
 
-static const struct xlat clone_flags[] = {
-       { CLONE_VM,             "CLONE_VM"      },
-       { CLONE_FS,             "CLONE_FS"      },
-       { CLONE_FILES,          "CLONE_FILES"   },
-       { CLONE_SIGHAND,        "CLONE_SIGHAND" },
-       { CLONE_IDLETASK,       "CLONE_IDLETASK" },
-       { CLONE_PTRACE,         "CLONE_PTRACE"  },
-       { CLONE_VFORK,          "CLONE_VFORK"   },
-       { CLONE_PARENT,         "CLONE_PARENT"  },
-       { CLONE_THREAD,         "CLONE_THREAD"  },
-       { CLONE_NEWNS,          "CLONE_NEWNS"   },
-       { CLONE_SYSVSEM,        "CLONE_SYSVSEM" },
-       { CLONE_SETTLS,         "CLONE_SETTLS"  },
-       { CLONE_PARENT_SETTID,  "CLONE_PARENT_SETTID" },
-       { CLONE_CHILD_CLEARTID, "CLONE_CHILD_CLEARTID" },
-       { CLONE_UNTRACED,       "CLONE_UNTRACED" },
-       { CLONE_CHILD_SETTID,   "CLONE_CHILD_SETTID" },
-       { CLONE_STOPPED,        "CLONE_STOPPED" },
-       { CLONE_NEWUTS,         "CLONE_NEWUTS"  },
-       { CLONE_NEWIPC,         "CLONE_NEWIPC"  },
-       { CLONE_NEWUSER,        "CLONE_NEWUSER" },
-       { CLONE_NEWPID,         "CLONE_NEWPID"  },
-       { CLONE_NEWNET,         "CLONE_NEWNET"  },
-       { CLONE_IO,             "CLONE_IO"      },
-       { 0,                    NULL            },
-};
+#include "xlat/clone_flags.h"
 
-#ifdef I386
-# include <asm/ldt.h>
-#  ifdef HAVE_STRUCT_USER_DESC
-#   define modify_ldt_ldt_s user_desc
-#  endif
-extern void print_ldt_entry();
-#endif
+#if defined I386 || defined X86_64 || defined X32
+extern void print_user_desc(struct tcb *, long);
+#endif /* I386 || X86_64 || X32 */
 
 #if defined IA64
 # define ARG_FLAGS     0
@@ -514,8 +312,14 @@ extern void print_ldt_entry();
 # define ARG_PTID      2
 # define ARG_CTID      3
 # define ARG_TLS       4
-#elif defined X86_64 || defined X32 || defined ALPHA || defined TILE \
-   || defined OR1K
+#elif defined X86_64 || defined X32
+/* x86 personality processes have the last two arguments flipped. */
+# define ARG_FLAGS     0
+# define ARG_STACK     1
+# define ARG_PTID      2
+# define ARG_CTID      ((current_personality != 1) ? 3 : 4)
+# define ARG_TLS       ((current_personality != 1) ? 4 : 3)
+#elif defined ALPHA || defined TILE || defined OR1K
 # define ARG_FLAGS     0
 # define ARG_STACK     1
 # define ARG_PTID      2
@@ -552,44 +356,59 @@ sys_clone(struct tcb *tcp)
                if (flags & CLONE_PARENT_SETTID)
                        tprintf(", parent_tidptr=%#lx", tcp->u_arg[ARG_PTID]);
                if (flags & CLONE_SETTLS) {
-#ifdef I386
-                       struct modify_ldt_ldt_s copy;
-                       if (umove(tcp, tcp->u_arg[ARG_TLS], &copy) != -1) {
-                               tprintf(", {entry_number:%d, ",
-                                       copy.entry_number);
-                               if (!verbose(tcp))
-                                       tprints("...}");
-                               else
-                                       print_ldt_entry(&copy);
+#if defined I386 || defined X86_64 || defined X32
+# ifndef I386
+                       if (current_personality == 1)
+# endif
+                       {
+                               tprints(", tls=");
+                               print_user_desc(tcp, tcp->u_arg[ARG_TLS]);
                        }
+# ifndef I386
                        else
-#endif
+# endif
+#endif /* I386 || X86_64 || X32 */
                                tprintf(", tls=%#lx", tcp->u_arg[ARG_TLS]);
                }
                if (flags & (CLONE_CHILD_SETTID|CLONE_CHILD_CLEARTID))
                        tprintf(", child_tidptr=%#lx", 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;
 }
 
 int
-sys_unshare(struct tcb *tcp)
+sys_setns(struct tcb *tcp)
 {
-       if (entering(tcp))
-               printflags(clone_flags, tcp->u_arg[0], "CLONE_???");
+       if (entering(tcp)) {
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
+               printflags(clone_flags, tcp->u_arg[1], "CLONE_???");
+       }
        return 0;
 }
 
 int
-sys_fork(struct tcb *tcp)
+sys_unshare(struct tcb *tcp)
 {
-       if (exiting(tcp))
-               return RVAL_UDECIMAL;
+       if (entering(tcp))
+               printflags(clone_flags, tcp->u_arg[0], "CLONE_???");
        return 0;
 }
 
 int
-sys_vfork(struct tcb *tcp)
+sys_fork(struct tcb *tcp)
 {
        if (exiting(tcp))
                return RVAL_UDECIMAL;
@@ -993,37 +812,7 @@ sys_execve(struct tcb *tcp)
 #define __WCLONE       0x80000000
 #endif
 
-static const struct xlat wait4_options[] = {
-       { WNOHANG,      "WNOHANG"       },
-#ifndef WSTOPPED
-       { WUNTRACED,    "WUNTRACED"     },
-#endif
-#ifdef WEXITED
-       { WEXITED,      "WEXITED"       },
-#endif
-#ifdef WTRAPPED
-       { WTRAPPED,     "WTRAPPED"      },
-#endif
-#ifdef WSTOPPED
-       { WSTOPPED,     "WSTOPPED"      },
-#endif
-#ifdef WCONTINUED
-       { WCONTINUED,   "WCONTINUED"    },
-#endif
-#ifdef WNOWAIT
-       { WNOWAIT,      "WNOWAIT"       },
-#endif
-#ifdef __WCLONE
-       { __WCLONE,     "__WCLONE"      },
-#endif
-#ifdef __WALL
-       { __WALL,       "__WALL"        },
-#endif
-#ifdef __WNOTHREAD
-       { __WNOTHREAD,  "__WNOTHREAD"   },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/wait4_options.h"
 
 #if !defined WCOREFLAG && defined WCOREFLG
 # define WCOREFLAG WCOREFLG
@@ -1148,30 +937,7 @@ sys_osf_wait4(struct tcb *tcp)
 }
 #endif
 
-static const struct xlat waitid_types[] = {
-       { P_PID,        "P_PID"         },
-#ifdef P_PPID
-       { P_PPID,       "P_PPID"        },
-#endif
-       { P_PGID,       "P_PGID"        },
-#ifdef P_SID
-       { P_SID,        "P_SID"         },
-#endif
-#ifdef P_CID
-       { P_CID,        "P_CID"         },
-#endif
-#ifdef P_UID
-       { P_UID,        "P_UID"         },
-#endif
-#ifdef P_GID
-       { P_GID,        "P_GID"         },
-#endif
-       { P_ALL,        "P_ALL"         },
-#ifdef P_LWPID
-       { P_LWPID,      "P_LWPID"       },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/waitid_types.h"
 
 int
 sys_waitid(struct tcb *tcp)
@@ -1228,183 +994,9 @@ sys_uname(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat ptrace_cmds[] = {
-       { PTRACE_TRACEME,       "PTRACE_TRACEME"        },
-       { PTRACE_PEEKTEXT,      "PTRACE_PEEKTEXT"       },
-       { PTRACE_PEEKDATA,      "PTRACE_PEEKDATA"       },
-       { PTRACE_PEEKUSER,      "PTRACE_PEEKUSER"       },
-       { PTRACE_POKETEXT,      "PTRACE_POKETEXT"       },
-       { PTRACE_POKEDATA,      "PTRACE_POKEDATA"       },
-       { PTRACE_POKEUSER,      "PTRACE_POKEUSER"       },
-       { PTRACE_CONT,          "PTRACE_CONT"           },
-       { PTRACE_KILL,          "PTRACE_KILL"           },
-       { PTRACE_SINGLESTEP,    "PTRACE_SINGLESTEP"     },
-       { PTRACE_ATTACH,        "PTRACE_ATTACH"         },
-       { PTRACE_DETACH,        "PTRACE_DETACH"         },
-#ifdef PTRACE_GETREGS
-       { PTRACE_GETREGS,       "PTRACE_GETREGS"        },
-#endif
-#ifdef PTRACE_SETREGS
-       { PTRACE_SETREGS,       "PTRACE_SETREGS"        },
-#endif
-#ifdef PTRACE_GETFPREGS
-       { PTRACE_GETFPREGS,     "PTRACE_GETFPREGS"      },
-#endif
-#ifdef PTRACE_SETFPREGS
-       { PTRACE_SETFPREGS,     "PTRACE_SETFPREGS"      },
-#endif
-#ifdef PTRACE_GETFPXREGS
-       { PTRACE_GETFPXREGS,    "PTRACE_GETFPXREGS"     },
-#endif
-#ifdef PTRACE_SETFPXREGS
-       { PTRACE_SETFPXREGS,    "PTRACE_SETFPXREGS"     },
-#endif
-#ifdef PTRACE_GETVRREGS
-       { PTRACE_GETVRREGS,     "PTRACE_GETVRREGS"      },
-#endif
-#ifdef PTRACE_SETVRREGS
-       { PTRACE_SETVRREGS,     "PTRACE_SETVRREGS"      },
-#endif
-#ifdef PTRACE_SETOPTIONS
-       { PTRACE_SETOPTIONS,    "PTRACE_SETOPTIONS"     },
-#endif
-#ifdef PTRACE_GETEVENTMSG
-       { PTRACE_GETEVENTMSG,   "PTRACE_GETEVENTMSG"    },
-#endif
-#ifdef PTRACE_GETSIGINFO
-       { PTRACE_GETSIGINFO,    "PTRACE_GETSIGINFO"     },
-#endif
-#ifdef PTRACE_SETSIGINFO
-       { PTRACE_SETSIGINFO,    "PTRACE_SETSIGINFO"     },
-#endif
-#ifdef PTRACE_GETREGSET
-       { PTRACE_GETREGSET,     "PTRACE_GETREGSET"      },
-#endif
-#ifdef PTRACE_SETREGSET
-       { PTRACE_SETREGSET,     "PTRACE_SETREGSET"      },
-#endif
-#ifdef PTRACE_SET_SYSCALL
-       { PTRACE_SET_SYSCALL,   "PTRACE_SET_SYSCALL"    },
-#endif
-#ifdef PTRACE_SEIZE
-       { PTRACE_SEIZE,         "PTRACE_SEIZE"          },
-#endif
-#ifdef PTRACE_INTERRUPT
-       { PTRACE_INTERRUPT,     "PTRACE_INTERRUPT"      },
-#endif
-#ifdef PTRACE_LISTEN
-       { PTRACE_LISTEN,        "PTRACE_LISTEN"         },
-#endif
-       { PTRACE_SYSCALL,       "PTRACE_SYSCALL"        },
-
-       { 0,                    NULL                    },
-};
-
-#ifdef PTRACE_SETOPTIONS
-static const struct xlat ptrace_setoptions_flags[] = {
-# ifdef PTRACE_O_TRACESYSGOOD
-       { PTRACE_O_TRACESYSGOOD,"PTRACE_O_TRACESYSGOOD" },
-# endif
-# ifdef PTRACE_O_TRACEFORK
-       { PTRACE_O_TRACEFORK,   "PTRACE_O_TRACEFORK"    },
-# endif
-# ifdef PTRACE_O_TRACEVFORK
-       { PTRACE_O_TRACEVFORK,  "PTRACE_O_TRACEVFORK"   },
-# endif
-# ifdef PTRACE_O_TRACECLONE
-       { PTRACE_O_TRACECLONE,  "PTRACE_O_TRACECLONE"   },
-# endif
-# ifdef PTRACE_O_TRACEEXEC
-       { PTRACE_O_TRACEEXEC,   "PTRACE_O_TRACEEXEC"    },
-# endif
-# ifdef PTRACE_O_TRACEVFORKDONE
-       { PTRACE_O_TRACEVFORKDONE,"PTRACE_O_TRACEVFORKDONE"},
-# endif
-# ifdef PTRACE_O_TRACEEXIT
-       { PTRACE_O_TRACEEXIT,   "PTRACE_O_TRACEEXIT"    },
-# endif
-# ifdef PTRACE_O_TRACESECCOMP
-       { PTRACE_O_TRACESECCOMP,"PTRACE_O_TRACESECCOMP" },
-# endif
-# ifdef PTRACE_O_EXITKILL
-       { PTRACE_O_EXITKILL,    "PTRACE_O_EXITKILL"     },
-# endif
-       { 0,                    NULL                    },
-};
-#endif /* PTRACE_SETOPTIONS */
-
-static const struct xlat nt_descriptor_types[] = {
-#ifdef NT_PRSTATUS
-       { NT_PRSTATUS,          "NT_PRSTATUS" },
-#endif
-#ifdef NT_FPREGSET
-       { NT_FPREGSET,          "NT_FPREGSET" },
-#endif
-#ifdef NT_PRPSINFO
-       { NT_PRPSINFO,          "NT_PRPSINFO" },
-#endif
-#ifdef NT_PRXREG
-       { NT_PRXREG,            "NT_PRXREG" },
-#endif
-#ifdef NT_TASKSTRUCT
-       { NT_TASKSTRUCT,        "NT_TASKSTRUCT" },
-#endif
-#ifdef NT_PLATFORM
-       { NT_PLATFORM,          "NT_PLATFORM" },
-#endif
-#ifdef NT_AUXV
-       { NT_AUXV,              "NT_AUXV" },
-#endif
-#ifdef NT_GWINDOWS
-       { NT_GWINDOWS,          "NT_GWINDOWS" },
-#endif
-#ifdef NT_ASRS
-       { NT_ASRS,              "NT_ASRS" },
-#endif
-#ifdef NT_PSTATUS
-       { NT_PSTATUS,           "NT_PSTATUS" },
-#endif
-#ifdef NT_PSINFO
-       { NT_PSINFO,            "NT_PSINFO" },
-#endif
-#ifdef NT_PRCRED
-       { NT_PRCRED,            "NT_PRCRED" },
-#endif
-#ifdef NT_UTSNAME
-       { NT_UTSNAME,           "NT_UTSNAME" },
-#endif
-#ifdef NT_LWPSTATUS
-       { NT_LWPSTATUS,         "NT_LWPSTATUS" },
-#endif
-#ifdef NT_LWPSINFO
-       { NT_LWPSINFO,          "NT_LWPSINFO" },
-#endif
-#ifdef NT_PRFPXREG
-       { NT_PRFPXREG,          "NT_PRFPXREG" },
-#endif
-#ifdef NT_PRXFPREG
-       { NT_PRXFPREG,          "NT_PRXFPREG" },
-#endif
-#ifdef NT_PPC_VMX
-       { NT_PPC_VMX,           "NT_PPC_VMX" },
-#endif
-#ifdef NT_PPC_SPE
-       { NT_PPC_SPE,           "NT_PPC_SPE" },
-#endif
-#ifdef NT_PPC_VSX
-       { NT_PPC_VSX,           "NT_PPC_VSX" },
-#endif
-#ifdef NT_386_TLS
-       { NT_386_TLS,           "NT_386_TLS" },
-#endif
-#ifdef NT_386_IOPERM
-       { NT_386_IOPERM,        "NT_386_IOPERM" },
-#endif
-#ifdef NT_X86_XSTATE
-       { NT_X86_XSTATE,        "NT_X86_XSTATE" },
-#endif
-       { 0,                    NULL },
-};
+#include "xlat/ptrace_cmds.h"
+#include "xlat/ptrace_setoptions_flags.h"
+#include "xlat/nt_descriptor_types.h"
 
 #define uoff(member)   offsetof(struct user, member)
 
@@ -1691,67 +1283,67 @@ const struct xlat struct_user_offsets[] = {
 # endif
        { PT_DBR, "dbr" }, { PT_IBR, "ibr" }, { PT_PMD, "pmd" },
 #elif defined(I386)
-       { 4*EBX,                "4*EBX"                                 },
-       { 4*ECX,                "4*ECX"                                 },
-       { 4*EDX,                "4*EDX"                                 },
-       { 4*ESI,                "4*ESI"                                 },
-       { 4*EDI,                "4*EDI"                                 },
-       { 4*EBP,                "4*EBP"                                 },
-       { 4*EAX,                "4*EAX"                                 },
-       { 4*DS,                 "4*DS"                                  },
-       { 4*ES,                 "4*ES"                                  },
-       { 4*FS,                 "4*FS"                                  },
-       { 4*GS,                 "4*GS"                                  },
-       { 4*ORIG_EAX,           "4*ORIG_EAX"                            },
-       { 4*EIP,                "4*EIP"                                 },
-       { 4*CS,                 "4*CS"                                  },
-       { 4*EFL,                "4*EFL"                                 },
-       { 4*UESP,               "4*UESP"                                },
-       { 4*SS,                 "4*SS"                                  },
+       XLAT(4*EBX),
+       XLAT(4*ECX),
+       XLAT(4*EDX),
+       XLAT(4*ESI),
+       XLAT(4*EDI),
+       XLAT(4*EBP),
+       XLAT(4*EAX),
+       XLAT(4*DS),
+       XLAT(4*ES),
+       XLAT(4*FS),
+       XLAT(4*GS),
+       XLAT(4*ORIG_EAX),
+       XLAT(4*EIP),
+       XLAT(4*CS),
+       XLAT(4*EFL),
+       XLAT(4*UESP),
+       XLAT(4*SS),
 #elif defined(X86_64) || defined(X32)
-       { 8*R15,                "8*R15"                                 },
-       { 8*R14,                "8*R14"                                 },
-       { 8*R13,                "8*R13"                                 },
-       { 8*R12,                "8*R12"                                 },
-       { 8*RBP,                "8*RBP"                                 },
-       { 8*RBX,                "8*RBX"                                 },
-       { 8*R11,                "8*R11"                                 },
-       { 8*R10,                "8*R10"                                 },
-       { 8*R9,                 "8*R9"                                  },
-       { 8*R8,                 "8*R8"                                  },
-       { 8*RAX,                "8*RAX"                                 },
-       { 8*RCX,                "8*RCX"                                 },
-       { 8*RDX,                "8*RDX"                                 },
-       { 8*RSI,                "8*RSI"                                 },
-       { 8*RDI,                "8*RDI"                                 },
-       { 8*ORIG_RAX,           "8*ORIG_RAX"                            },
-       { 8*RIP,                "8*RIP"                                 },
-       { 8*CS,                 "8*CS"                                  },
+       XLAT(8*R15),
+       XLAT(8*R14),
+       XLAT(8*R13),
+       XLAT(8*R12),
+       XLAT(8*RBP),
+       XLAT(8*RBX),
+       XLAT(8*R11),
+       XLAT(8*R10),
+       XLAT(8*R9),
+       XLAT(8*R8),
+       XLAT(8*RAX),
+       XLAT(8*RCX),
+       XLAT(8*RDX),
+       XLAT(8*RSI),
+       XLAT(8*RDI),
+       XLAT(8*ORIG_RAX),
+       XLAT(8*RIP),
+       XLAT(8*CS),
        { 8*EFLAGS,             "8*EFL"                                 },
-       { 8*RSP,                "8*RSP"                                 },
-       { 8*SS,                 "8*SS"                                  },
+       XLAT(8*RSP),
+       XLAT(8*SS),
 #elif defined(M68K)
-       { 4*PT_D1,              "4*PT_D1"                               },
-       { 4*PT_D2,              "4*PT_D2"                               },
-       { 4*PT_D3,              "4*PT_D3"                               },
-       { 4*PT_D4,              "4*PT_D4"                               },
-       { 4*PT_D5,              "4*PT_D5"                               },
-       { 4*PT_D6,              "4*PT_D6"                               },
-       { 4*PT_D7,              "4*PT_D7"                               },
-       { 4*PT_A0,              "4*PT_A0"                               },
-       { 4*PT_A1,              "4*PT_A1"                               },
-       { 4*PT_A2,              "4*PT_A2"                               },
-       { 4*PT_A3,              "4*PT_A3"                               },
-       { 4*PT_A4,              "4*PT_A4"                               },
-       { 4*PT_A5,              "4*PT_A5"                               },
-       { 4*PT_A6,              "4*PT_A6"                               },
-       { 4*PT_D0,              "4*PT_D0"                               },
-       { 4*PT_USP,             "4*PT_USP"                              },
-       { 4*PT_ORIG_D0,         "4*PT_ORIG_D0"                          },
-       { 4*PT_SR,              "4*PT_SR"                               },
-       { 4*PT_PC,              "4*PT_PC"                               },
+       XLAT(4*PT_D1),
+       XLAT(4*PT_D2),
+       XLAT(4*PT_D3),
+       XLAT(4*PT_D4),
+       XLAT(4*PT_D5),
+       XLAT(4*PT_D6),
+       XLAT(4*PT_D7),
+       XLAT(4*PT_A0),
+       XLAT(4*PT_A1),
+       XLAT(4*PT_A2),
+       XLAT(4*PT_A3),
+       XLAT(4*PT_A4),
+       XLAT(4*PT_A5),
+       XLAT(4*PT_A6),
+       XLAT(4*PT_D0),
+       XLAT(4*PT_USP),
+       XLAT(4*PT_ORIG_D0),
+       XLAT(4*PT_SR),
+       XLAT(4*PT_PC),
 #elif defined(SH)
-       { 4*REG_REG0,           "4*REG_REG0"                            },
+       XLAT(4*REG_REG0),
        { 4*(REG_REG0+1),       "4*REG_REG1"                            },
        { 4*(REG_REG0+2),       "4*REG_REG2"                            },
        { 4*(REG_REG0+3),       "4*REG_REG3"                            },
@@ -1766,16 +1358,16 @@ const struct xlat struct_user_offsets[] = {
        { 4*(REG_REG0+12),      "4*REG_REG12"                           },
        { 4*(REG_REG0+13),      "4*REG_REG13"                           },
        { 4*(REG_REG0+14),      "4*REG_REG14"                           },
-       { 4*REG_REG15,          "4*REG_REG15"                           },
-       { 4*REG_PC,             "4*REG_PC"                              },
-       { 4*REG_PR,             "4*REG_PR"                              },
-       { 4*REG_SR,             "4*REG_SR"                              },
-       { 4*REG_GBR,            "4*REG_GBR"                             },
-       { 4*REG_MACH,           "4*REG_MACH"                            },
-       { 4*REG_MACL,           "4*REG_MACL"                            },
-       { 4*REG_SYSCALL,        "4*REG_SYSCALL"                         },
-       { 4*REG_FPUL,           "4*REG_FPUL"                            },
-       { 4*REG_FPREG0,         "4*REG_FPREG0"                          },
+       XLAT(4*REG_REG15),
+       XLAT(4*REG_PC),
+       XLAT(4*REG_PR),
+       XLAT(4*REG_SR),
+       XLAT(4*REG_GBR),
+       XLAT(4*REG_MACH),
+       XLAT(4*REG_MACL),
+       XLAT(4*REG_SYSCALL),
+       XLAT(4*REG_FPUL),
+       XLAT(4*REG_FPREG0),
        { 4*(REG_FPREG0+1),     "4*REG_FPREG1"                          },
        { 4*(REG_FPREG0+2),     "4*REG_FPREG2"                          },
        { 4*(REG_FPREG0+3),     "4*REG_FPREG3"                          },
@@ -1790,18 +1382,18 @@ const struct xlat struct_user_offsets[] = {
        { 4*(REG_FPREG0+12),    "4*REG_FPREG12"                         },
        { 4*(REG_FPREG0+13),    "4*REG_FPREG13"                         },
        { 4*(REG_FPREG0+14),    "4*REG_FPREG14"                         },
-       { 4*REG_FPREG15,        "4*REG_FPREG15"                         },
+       XLAT(4*REG_FPREG15),
 # ifdef REG_XDREG0
-       { 4*REG_XDREG0,         "4*REG_XDREG0"                          },
+       XLAT(4*REG_XDREG0),
        { 4*(REG_XDREG0+2),     "4*REG_XDREG2"                          },
        { 4*(REG_XDREG0+4),     "4*REG_XDREG4"                          },
        { 4*(REG_XDREG0+6),     "4*REG_XDREG6"                          },
        { 4*(REG_XDREG0+8),     "4*REG_XDREG8"                          },
        { 4*(REG_XDREG0+10),    "4*REG_XDREG10"                         },
        { 4*(REG_XDREG0+12),    "4*REG_XDREG12"                         },
-       { 4*REG_XDREG14,        "4*REG_XDREG14"                         },
+       XLAT(4*REG_XDREG14),
 # endif
-       { 4*REG_FPSCR,          "4*REG_FPSCR"                           },
+       XLAT(4*REG_FPSCR),
 #elif defined(SH64)
        { 0,                    "PC(L)"                                 },
        { 4,                    "PC(U)"                                 },
@@ -2128,73 +1720,73 @@ const struct xlat struct_user_offsets[] = {
        { PTREGS_OFFSET_FLAGS, "flags" },
 #endif
 #ifdef CRISV10
-       { 4*PT_FRAMETYPE, "4*PT_FRAMETYPE" },
-       { 4*PT_ORIG_R10, "4*PT_ORIG_R10" },
-       { 4*PT_R13, "4*PT_R13" },
-       { 4*PT_R12, "4*PT_R12" },
-       { 4*PT_R11, "4*PT_R11" },
-       { 4*PT_R10, "4*PT_R10" },
-       { 4*PT_R9, "4*PT_R9" },
-       { 4*PT_R8, "4*PT_R8" },
-       { 4*PT_R7, "4*PT_R7" },
-       { 4*PT_R6, "4*PT_R6" },
-       { 4*PT_R5, "4*PT_R5" },
-       { 4*PT_R4, "4*PT_R4" },
-       { 4*PT_R3, "4*PT_R3" },
-       { 4*PT_R2, "4*PT_R2" },
-       { 4*PT_R1, "4*PT_R1" },
-       { 4*PT_R0, "4*PT_R0" },
-       { 4*PT_MOF, "4*PT_MOF" },
-       { 4*PT_DCCR, "4*PT_DCCR" },
-       { 4*PT_SRP, "4*PT_SRP" },
-       { 4*PT_IRP, "4*PT_IRP" },
-       { 4*PT_CSRINSTR, "4*PT_CSRINSTR" },
-       { 4*PT_CSRADDR, "4*PT_CSRADDR" },
-       { 4*PT_CSRDATA, "4*PT_CSRDATA" },
-       { 4*PT_USP, "4*PT_USP" },
+       XLAT(4*PT_FRAMETYPE),
+       XLAT(4*PT_ORIG_R10),
+       XLAT(4*PT_R13),
+       XLAT(4*PT_R12),
+       XLAT(4*PT_R11),
+       XLAT(4*PT_R10),
+       XLAT(4*PT_R9),
+       XLAT(4*PT_R8),
+       XLAT(4*PT_R7),
+       XLAT(4*PT_R6),
+       XLAT(4*PT_R5),
+       XLAT(4*PT_R4),
+       XLAT(4*PT_R3),
+       XLAT(4*PT_R2),
+       XLAT(4*PT_R1),
+       XLAT(4*PT_R0),
+       XLAT(4*PT_MOF),
+       XLAT(4*PT_DCCR),
+       XLAT(4*PT_SRP),
+       XLAT(4*PT_IRP),
+       XLAT(4*PT_CSRINSTR),
+       XLAT(4*PT_CSRADDR),
+       XLAT(4*PT_CSRDATA),
+       XLAT(4*PT_USP),
 #endif
 #ifdef CRISV32
-       { 4*PT_ORIG_R10, "4*PT_ORIG_R10" },
-       { 4*PT_R0, "4*PT_R0" },
-       { 4*PT_R1, "4*PT_R1" },
-       { 4*PT_R2, "4*PT_R2" },
-       { 4*PT_R3, "4*PT_R3" },
-       { 4*PT_R4, "4*PT_R4" },
-       { 4*PT_R5, "4*PT_R5" },
-       { 4*PT_R6, "4*PT_R6" },
-       { 4*PT_R7, "4*PT_R7" },
-       { 4*PT_R8, "4*PT_R8" },
-       { 4*PT_R9, "4*PT_R9" },
-       { 4*PT_R10, "4*PT_R10" },
-       { 4*PT_R11, "4*PT_R11" },
-       { 4*PT_R12, "4*PT_R12" },
-       { 4*PT_R13, "4*PT_R13" },
-       { 4*PT_ACR, "4*PT_ACR" },
-       { 4*PT_SRS, "4*PT_SRS" },
-       { 4*PT_MOF, "4*PT_MOF" },
-       { 4*PT_SPC, "4*PT_SPC" },
-       { 4*PT_CCS, "4*PT_CCS" },
-       { 4*PT_SRP, "4*PT_SRP" },
-       { 4*PT_ERP, "4*PT_ERP" },
-       { 4*PT_EXS, "4*PT_EXS" },
-       { 4*PT_EDA, "4*PT_EDA" },
-       { 4*PT_USP, "4*PT_USP" },
-       { 4*PT_PPC, "4*PT_PPC" },
-       { 4*PT_BP_CTRL, "4*PT_BP_CTRL" },
-       { 4*PT_BP+4, "4*PT_BP+4" },
-       { 4*PT_BP+8, "4*PT_BP+8" },
-       { 4*PT_BP+12, "4*PT_BP+12" },
-       { 4*PT_BP+16, "4*PT_BP+16" },
-       { 4*PT_BP+20, "4*PT_BP+20" },
-       { 4*PT_BP+24, "4*PT_BP+24" },
-       { 4*PT_BP+28, "4*PT_BP+28" },
-       { 4*PT_BP+32, "4*PT_BP+32" },
-       { 4*PT_BP+36, "4*PT_BP+36" },
-       { 4*PT_BP+40, "4*PT_BP+40" },
-       { 4*PT_BP+44, "4*PT_BP+44" },
-       { 4*PT_BP+48, "4*PT_BP+48" },
-       { 4*PT_BP+52, "4*PT_BP+52" },
-       { 4*PT_BP+56, "4*PT_BP+56" },
+       XLAT(4*PT_ORIG_R10),
+       XLAT(4*PT_R0),
+       XLAT(4*PT_R1),
+       XLAT(4*PT_R2),
+       XLAT(4*PT_R3),
+       XLAT(4*PT_R4),
+       XLAT(4*PT_R5),
+       XLAT(4*PT_R6),
+       XLAT(4*PT_R7),
+       XLAT(4*PT_R8),
+       XLAT(4*PT_R9),
+       XLAT(4*PT_R10),
+       XLAT(4*PT_R11),
+       XLAT(4*PT_R12),
+       XLAT(4*PT_R13),
+       XLAT(4*PT_ACR),
+       XLAT(4*PT_SRS),
+       XLAT(4*PT_MOF),
+       XLAT(4*PT_SPC),
+       XLAT(4*PT_CCS),
+       XLAT(4*PT_SRP),
+       XLAT(4*PT_ERP),
+       XLAT(4*PT_EXS),
+       XLAT(4*PT_EDA),
+       XLAT(4*PT_USP),
+       XLAT(4*PT_PPC),
+       XLAT(4*PT_BP_CTRL),
+       XLAT(4*PT_BP+4),
+       XLAT(4*PT_BP+8),
+       XLAT(4*PT_BP+12),
+       XLAT(4*PT_BP+16),
+       XLAT(4*PT_BP+20),
+       XLAT(4*PT_BP+24),
+       XLAT(4*PT_BP+28),
+       XLAT(4*PT_BP+32),
+       XLAT(4*PT_BP+36),
+       XLAT(4*PT_BP+40),
+       XLAT(4*PT_BP+44),
+       XLAT(4*PT_BP+48),
+       XLAT(4*PT_BP+52),
+       XLAT(4*PT_BP+56),
 #endif
 #ifdef MICROBLAZE
        { PT_GPR(0),            "r0"                                    },
@@ -2273,6 +1865,23 @@ const struct xlat struct_user_offsets[] = {
        { 4*33, "sr" },
 #endif
 #ifdef XTENSA
+       { REG_A_BASE,           "a0"            },
+       { REG_A_BASE+1,         "a1"            },
+       { REG_A_BASE+2,         "a2"            },
+       { REG_A_BASE+3,         "a3"            },
+       { REG_A_BASE+4,         "a4"            },
+       { REG_A_BASE+5,         "a5"            },
+       { REG_A_BASE+6,         "a6"            },
+       { REG_A_BASE+7,         "a7"            },
+       { REG_A_BASE+8,         "a8"            },
+       { REG_A_BASE+9,         "a9"            },
+       { REG_A_BASE+10,        "a10"           },
+       { REG_A_BASE+11,        "a11"           },
+       { REG_A_BASE+12,        "a12"           },
+       { REG_A_BASE+13,        "a13"           },
+       { REG_A_BASE+14,        "a14"           },
+       { REG_A_BASE+15,        "a15"           },
+       { REG_PC,               "pc"            },
        { SYSCALL_NR,           "syscall_nr"    },
        { REG_AR_BASE,          "ar0"           },
        { REG_AR_BASE+1,        "ar1"           },
@@ -2345,23 +1954,6 @@ const struct xlat struct_user_offsets[] = {
        { REG_WB,               "wb"            },
        { REG_WS,               "ws"            },
        { REG_PS,               "ps"            },
-       { REG_PC,               "pc"            },
-       { REG_A_BASE,           "a0"            },
-       { REG_A_BASE+1,         "a1"            },
-       { REG_A_BASE+2,         "a2"            },
-       { REG_A_BASE+3,         "a3"            },
-       { REG_A_BASE+4,         "a4"            },
-       { REG_A_BASE+5,         "a5"            },
-       { REG_A_BASE+6,         "a6"            },
-       { REG_A_BASE+7,         "a7"            },
-       { REG_A_BASE+8,         "a8"            },
-       { REG_A_BASE+9,         "a9"            },
-       { REG_A_BASE+10,        "a10"           },
-       { REG_A_BASE+11,        "a11"           },
-       { REG_A_BASE+12,        "a12"           },
-       { REG_A_BASE+13,        "a13"           },
-       { REG_A_BASE+14,        "a14"           },
-       { REG_A_BASE+15,        "a15"           },
 #endif
 
        /* Other fields in "struct user" */
@@ -2501,8 +2093,10 @@ const struct xlat struct_user_offsets[] = {
        /* nothing */
 #elif defined(XTENSA)
        /* nothing */
+#elif defined(ARC)
+       /* nothing */
 #endif
-       { 0,                    NULL                                    },
+       XLAT_END
 };
 
 int
@@ -2639,39 +2233,43 @@ sys_ptrace(struct tcb *tcp)
 #ifndef FUTEX_CLOCK_REALTIME
 # define FUTEX_CLOCK_REALTIME 256
 #endif
-static const struct xlat futexops[] = {
-       { FUTEX_WAIT,                                   "FUTEX_WAIT" },
-       { FUTEX_WAKE,                                   "FUTEX_WAKE" },
-       { FUTEX_FD,                                     "FUTEX_FD" },
-       { FUTEX_REQUEUE,                                "FUTEX_REQUEUE" },
-       { FUTEX_CMP_REQUEUE,                            "FUTEX_CMP_REQUEUE" },
-       { FUTEX_WAKE_OP,                                "FUTEX_WAKE_OP" },
-       { FUTEX_LOCK_PI,                                "FUTEX_LOCK_PI" },
-       { FUTEX_UNLOCK_PI,                              "FUTEX_UNLOCK_PI" },
-       { FUTEX_TRYLOCK_PI,                             "FUTEX_TRYLOCK_PI" },
-       { FUTEX_WAIT_BITSET,                            "FUTEX_WAIT_BITSET" },
-       { FUTEX_WAKE_BITSET,                            "FUTEX_WAKE_BITSET" },
-       { FUTEX_WAIT_REQUEUE_PI,                        "FUTEX_WAIT_REQUEUE_PI" },
-       { FUTEX_CMP_REQUEUE_PI,                         "FUTEX_CMP_REQUEUE_PI" },
-       { FUTEX_WAIT|FUTEX_PRIVATE_FLAG,                "FUTEX_WAIT_PRIVATE" },
-       { FUTEX_WAKE|FUTEX_PRIVATE_FLAG,                "FUTEX_WAKE_PRIVATE" },
-       { FUTEX_FD|FUTEX_PRIVATE_FLAG,                  "FUTEX_FD_PRIVATE" },
-       { FUTEX_REQUEUE|FUTEX_PRIVATE_FLAG,             "FUTEX_REQUEUE_PRIVATE" },
-       { FUTEX_CMP_REQUEUE|FUTEX_PRIVATE_FLAG,         "FUTEX_CMP_REQUEUE_PRIVATE" },
-       { FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG,             "FUTEX_WAKE_OP_PRIVATE" },
-       { FUTEX_LOCK_PI|FUTEX_PRIVATE_FLAG,             "FUTEX_LOCK_PI_PRIVATE" },
-       { FUTEX_UNLOCK_PI|FUTEX_PRIVATE_FLAG,           "FUTEX_UNLOCK_PI_PRIVATE" },
-       { FUTEX_TRYLOCK_PI|FUTEX_PRIVATE_FLAG,          "FUTEX_TRYLOCK_PI_PRIVATE" },
-       { FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG,         "FUTEX_WAIT_BITSET_PRIVATE" },
-       { FUTEX_WAKE_BITSET|FUTEX_PRIVATE_FLAG,         "FUTEX_WAKE_BITSET_PRIVATE" },
-       { FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG,     "FUTEX_WAIT_REQUEUE_PI_PRIVATE" },
-       { FUTEX_CMP_REQUEUE_PI|FUTEX_PRIVATE_FLAG,      "FUTEX_CMP_REQUEUE_PI_PRIVATE" },
-       { FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME,       "FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME" },
-       { FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG|FUTEX_CLOCK_REALTIME,    "FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME" },
-       { FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME,   "FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME" },
-       { FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG|FUTEX_CLOCK_REALTIME,        "FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME" },
-       { 0,                                            NULL }
-};
+#ifndef FUTEX_WAIT_PRIVATE
+# define FUTEX_WAIT_PRIVATE            (FUTEX_WAIT | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAKE_PRIVATE
+# define FUTEX_WAKE_PRIVATE            (FUTEX_WAKE | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_REQUEUE_PRIVATE
+# define FUTEX_REQUEUE_PRIVATE         (FUTEX_REQUEUE | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_CMP_REQUEUE_PRIVATE
+# define FUTEX_CMP_REQUEUE_PRIVATE     (FUTEX_CMP_REQUEUE | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAKE_OP_PRIVATE
+# define FUTEX_WAKE_OP_PRIVATE         (FUTEX_WAKE_OP | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_LOCK_PI_PRIVATE
+# define FUTEX_LOCK_PI_PRIVATE         (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_UNLOCK_PI_PRIVATE
+# define FUTEX_UNLOCK_PI_PRIVATE       (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_TRYLOCK_PI_PRIVATE
+# define FUTEX_TRYLOCK_PI_PRIVATE      (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAIT_BITSET_PRIVATE
+# define FUTEX_WAIT_BITSET_PRIVATE     (FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAKE_BITSET_PRIVATE
+# define FUTEX_WAKE_BITSET_PRIVATE     (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAIT_REQUEUE_PI_PRIVATE
+# define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_CMP_REQUEUE_PI_PRIVATE
+# define FUTEX_CMP_REQUEUE_PI_PRIVATE  (FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#include "xlat/futexops.h"
 #ifndef FUTEX_OP_SET
 # define FUTEX_OP_SET          0
 # define FUTEX_OP_ADD          1
@@ -2685,23 +2283,8 @@ static const struct xlat futexops[] = {
 # define FUTEX_OP_CMP_GT       4
 # define FUTEX_OP_CMP_GE       5
 #endif
-static const struct xlat futexwakeops[] = {
-       { FUTEX_OP_SET,         "FUTEX_OP_SET" },
-       { FUTEX_OP_ADD,         "FUTEX_OP_ADD" },
-       { FUTEX_OP_OR,          "FUTEX_OP_OR" },
-       { FUTEX_OP_ANDN,        "FUTEX_OP_ANDN" },
-       { FUTEX_OP_XOR,         "FUTEX_OP_XOR" },
-       { 0,                    NULL }
-};
-static const struct xlat futexwakecmps[] = {
-       { FUTEX_OP_CMP_EQ,      "FUTEX_OP_CMP_EQ" },
-       { FUTEX_OP_CMP_NE,      "FUTEX_OP_CMP_NE" },
-       { FUTEX_OP_CMP_LT,      "FUTEX_OP_CMP_LT" },
-       { FUTEX_OP_CMP_LE,      "FUTEX_OP_CMP_LE" },
-       { FUTEX_OP_CMP_GT,      "FUTEX_OP_CMP_GT" },
-       { FUTEX_OP_CMP_GE,      "FUTEX_OP_CMP_GE" },
-       { 0,                    NULL }
-};
+#include "xlat/futexwakeops.h"
+#include "xlat/futexwakecmps.h"
 
 int
 sys_futex(struct tcb *tcp)
@@ -2827,12 +2410,7 @@ sys_get_robust_list(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat schedulers[] = {
-       { SCHED_OTHER,  "SCHED_OTHER" },
-       { SCHED_RR,     "SCHED_RR" },
-       { SCHED_FIFO,   "SCHED_FIFO" },
-       { 0,            NULL }
-};
+#include "xlat/schedulers.h"
 
 int
 sys_sched_getscheduler(struct tcb *tcp)
@@ -2857,7 +2435,7 @@ sys_sched_setscheduler(struct tcb *tcp)
                if (umove(tcp, tcp->u_arg[2], &p) < 0)
                        tprintf(", %#lx", tcp->u_arg[2]);
                else
-                       tprintf(", { %d }", p.__sched_priority);
+                       tprintf(", { %d }", p.sched_priority);
        }
        return 0;
 }
@@ -2872,7 +2450,7 @@ sys_sched_getparam(struct tcb *tcp)
                if (umove(tcp, tcp->u_arg[1], &p) < 0)
                        tprintf("%#lx", tcp->u_arg[1]);
                else
-                       tprintf("{ %d }", p.__sched_priority);
+                       tprintf("{ %d }", p.sched_priority);
        }
        return 0;
 }
@@ -2885,7 +2463,7 @@ sys_sched_setparam(struct tcb *tcp)
                if (umove(tcp, tcp->u_arg[1], &p) < 0)
                        tprintf("%d, %#lx", (int) tcp->u_arg[0], tcp->u_arg[1]);
                else
-                       tprintf("%d, { %d }", (int) tcp->u_arg[0], p.__sched_priority);
+                       tprintf("%d, { %d }", (int) tcp->u_arg[0], p.sched_priority);
        }
        return 0;
 }
@@ -2916,13 +2494,7 @@ sys_sched_rr_get_interval(struct tcb *tcp)
 #if defined X86_64 || defined X32
 # include <asm/prctl.h>
 
-static const struct xlat archvals[] = {
-       { ARCH_SET_GS,          "ARCH_SET_GS"           },
-       { ARCH_SET_FS,          "ARCH_SET_FS"           },
-       { ARCH_GET_FS,          "ARCH_GET_FS"           },
-       { ARCH_GET_GS,          "ARCH_GET_GS"           },
-       { 0,                    NULL                    },
-};
+#include "xlat/archvals.h"
 
 int
 sys_arch_prctl(struct tcb *tcp)
diff --git a/ptp.c b/ptp.c
new file mode 100644 (file)
index 0000000..1d9cf24
--- /dev/null
+++ b/ptp.c
@@ -0,0 +1,97 @@
+#include "defs.h"
+#include <sys/ioctl.h>
+#include <linux/ptp_clock.h>
+
+#include "xlat/ptp_flags_options.h"
+
+int ptp_ioctl(struct tcb *tcp, long code, long arg)
+{
+       if (!verbose(tcp))
+               return 0;
+
+       switch (code) {
+               case PTP_CLOCK_GETCAPS: /* decode on exit */
+               {
+                       struct ptp_clock_caps caps;
+
+                       if (entering(tcp) || syserror(tcp) ||
+                           umove(tcp, arg, &caps) < 0)
+                               return 0;
+
+                       tprintf(", {max_adj=%d, n_alarm=%d, n_ext_ts=%d, n_per_out=%d, pps=%d}",
+                               caps.max_adj, caps.n_alarm, caps.n_ext_ts,
+                               caps.n_per_out, caps.pps);
+                       return 1;
+               }
+
+               case PTP_EXTTS_REQUEST: /* decode on enter */
+               {
+                       struct ptp_extts_request extts;
+
+                       if (exiting(tcp))
+                               return 1;
+                       if (umove(tcp, arg, &extts) < 0) {
+                               tprintf(", %#lx", arg);
+                               return 0;
+                       }
+                       tprintf(", {index=%d, flags=", extts.index);
+                       printflags(ptp_flags_options, extts.flags, "PTP_???");
+                       tprints("}");
+                       return 1;
+               }
+
+               case PTP_PEROUT_REQUEST: /* decode on enter */
+               {
+                       struct ptp_perout_request perout;
+
+                       if (exiting(tcp))
+                               return 1;
+                       if (umove(tcp, arg, &perout) < 0) {
+                               tprintf(", %#lx", arg);
+                               return 0;
+                       }
+
+                       tprintf(", {start={%" PRId64 ", %" PRIu32 "}"
+                                  ", period={%" PRId64 ", %" 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_???");
+                       tprints("}");
+                       return 1;
+               }
+
+               case PTP_ENABLE_PPS: /* decode on enter */
+                       if (entering(tcp))
+                               tprintf(", %ld", arg);
+                       return 1;
+
+               case PTP_SYS_OFFSET: /* decode on exit */
+               {
+                       struct ptp_sys_offset sysoff;
+                       unsigned int i;
+
+                       if (entering(tcp) || umove(tcp, arg, &sysoff) < 0)
+                               return 0;
+
+                       tprintf(", {n_samples=%u, ts={", sysoff.n_samples);
+                       if (syserror(tcp)) {
+                               tprints("...}}");
+                               return 1;
+                       }
+                       if (sysoff.n_samples > PTP_MAX_SAMPLES)
+                               sysoff.n_samples = PTP_MAX_SAMPLES;
+                       tprintf("{%" PRId64 ", %" PRIu32 "}",
+                               (int64_t)sysoff.ts[0].sec, sysoff.ts[0].nsec);
+                       for (i = 1; i < 2*sysoff.n_samples+1; ++i)
+                               tprintf(", {%" PRId64 ", %" PRIu32 "}",
+                                       (int64_t)sysoff.ts[i].sec, sysoff.ts[i].nsec);
+                       tprints("}}");
+                       return 1;
+               }
+
+               default: /* decode on exit */
+                       return 0;
+       }
+}
diff --git a/quota.c b/quota.c
index 780abf9..f9a1bc5 100644 (file)
--- a/quota.c
+++ b/quota.c
 #define Q_XQUOTARM     XQM_CMD(0x6)
 #define Q_XQUOTASYNC   XQM_CMD(0x7)
 
-static const struct xlat quotacmds[] = {
-       {Q_V1_QUOTAON, "Q_V1_QUOTAON"},
-       {Q_V1_QUOTAOFF, "Q_V1_QUOTAOFF"},
-       {Q_V1_GETQUOTA, "Q_V1_GETQUOTA"},
-       {Q_V1_SETQUOTA, "Q_V1_SETQUOTA"},
-       {Q_V1_SETUSE, "Q_V1_SETUSE"},
-       {Q_V1_SYNC, "Q_V1_SYNC"},
-       {Q_SETQLIM, "Q_SETQLIM"},
-       {Q_V1_GETSTATS, "Q_V1_GETSTATS"},
-       {Q_V1_RSQUASH, "Q_V1_RSQUASH"},
-
-       {Q_V2_GETQUOTA, "Q_V2_GETQUOTA"},
-       {Q_V2_SETQUOTA, "Q_V2_SETQUOTA"},
-       {Q_V2_SETUSE, "Q_V2_SETUSE"},
-       {Q_V2_GETINFO, "Q_V2_GETINFO"},
-       {Q_V2_SETINFO, "Q_V2_SETINFO"},
-       {Q_V2_SETGRACE, "Q_V2_SETGRACE"},
-       {Q_V2_SETFLAGS, "Q_V2_SETFLAGS"},
-       {Q_V2_GETSTATS, "Q_V2_GETSTATS"},
-
-       {Q_SYNC, "Q_SYNC"},
-       {Q_QUOTAON, "Q_QUOTAON"},
-       {Q_QUOTAOFF, "Q_QUOTAOFF"},
-       {Q_GETFMT, "Q_GETFMT"},
-       {Q_GETINFO, "Q_GETINFO"},
-       {Q_SETINFO, "Q_SETINFO"},
-       {Q_GETQUOTA, "Q_GETQUOTA"},
-       {Q_SETQUOTA, "Q_SETQUOTA"},
-
-       {Q_XQUOTAON, "Q_XQUOTAON"},
-       {Q_XQUOTAOFF, "Q_XQUOTAOFF"},
-       {Q_XGETQUOTA, "Q_XGETQUOTA"},
-       {Q_XSETQLIM, "Q_XSETQLIM"},
-       {Q_XGETQSTAT, "Q_XGETQSTAT"},
-       {Q_XQUOTARM, "Q_XQUOTARM"},
-       {Q_XQUOTASYNC, "Q_XQUOTASYNC"},
-
-       {0, NULL},
-};
+#include "xlat/quotacmds.h"
 
 #define USRQUOTA 0
 #define GRPQUOTA 1
 
-static const struct xlat quotatypes[] = {
-       {USRQUOTA, "USRQUOTA"},
-       {GRPQUOTA, "GRPQUOTA"},
-       {0, NULL},
-};
+#include "xlat/quotatypes.h"
 
 /* Quota format identifiers */
 #define QFMT_VFS_OLD 1
 #define QFMT_VFS_V0  2
 
-static const struct xlat quota_formats[] = {
-       {QFMT_VFS_OLD, "QFMT_VFS_OLD"},
-       {QFMT_VFS_V0, "QFMT_VFS_V0"},
-       {0, NULL},
-};
+#include "xlat/quota_formats.h"
 
 #define XFS_QUOTA_UDQ_ACCT     (1<<0)  /* user quota accounting */
 #define XFS_QUOTA_UDQ_ENFD     (1<<1)  /* user quota limits enforcement */
@@ -144,20 +98,8 @@ static const struct xlat quota_formats[] = {
 #define XFS_PROJ_QUOTA         (1<<1)  /* (IRIX) project quota type */
 #define XFS_GROUP_QUOTA                (1<<2)  /* group quota type */
 
-static const struct xlat xfs_quota_flags[] = {
-       {XFS_QUOTA_UDQ_ACCT, "XFS_QUOTA_UDQ_ACCT"},
-       {XFS_QUOTA_UDQ_ENFD, "XFS_QUOTA_UDQ_ENFD"},
-       {XFS_QUOTA_GDQ_ACCT, "XFS_QUOTA_GDQ_ACCT"},
-       {XFS_QUOTA_GDQ_ENFD, "XFS_QUOTA_GDQ_ENFD"},
-       {0, NULL}
-};
-
-static const struct xlat xfs_dqblk_flags[] = {
-       {XFS_USER_QUOTA, "XFS_USER_QUOTA"},
-       {XFS_PROJ_QUOTA, "XFS_PROJ_QUOTA"},
-       {XFS_GROUP_QUOTA, "XFS_GROUP_QUOTA"},
-       {0, NULL}
-};
+#include "xlat/xfs_quota_flags.h"
+#include "xlat/xfs_dqblk_flags.h"
 
 /*
  * Following flags are used to specify which fields are valid
@@ -169,15 +111,7 @@ static const struct xlat xfs_dqblk_flags[] = {
 #define QIF_BTIME      16
 #define QIF_ITIME      32
 
-static const struct xlat if_dqblk_valid[] = {
-       {QIF_BLIMITS, "QIF_BLIMITS"},
-       {QIF_SPACE, "QIF_SPACE"},
-       {QIF_ILIMITS, "QIF_ILIMITS"},
-       {QIF_INODES, "QIF_INODES"},
-       {QIF_BTIME, "QIF_BTIME"},
-       {QIF_ITIME, "QIF_ITIME"},
-       {0, NULL}
-};
+#include "xlat/if_dqblk_valid.h"
 
 struct if_dqblk
 {
@@ -249,12 +183,7 @@ struct xfs_dqblk
 #define IIF_IGRACE     2
 #define IIF_FLAGS      4
 
-static const struct xlat if_dqinfo_valid[] = {
-       {IIF_BGRACE, "IIF_BGRACE"},
-       {IIF_IGRACE, "IIF_IGRACE"},
-       {IIF_FLAGS, "IIF_FLAGS"},
-       {0, NULL}
-};
+#include "xlat/if_dqinfo_valid.h"
 
 struct if_dqinfo
 {
diff --git a/reboot.c b/reboot.c
new file mode 100644 (file)
index 0000000..397a126
--- /dev/null
+++ b/reboot.c
@@ -0,0 +1,24 @@
+#include "defs.h"
+#include <linux/reboot.h>
+
+#include "xlat/bootflags1.h"
+#include "xlat/bootflags2.h"
+#include "xlat/bootflags3.h"
+
+int
+sys_reboot(struct tcb *tcp)
+{
+       if (exiting(tcp))
+               return 0;
+
+       printflags(bootflags1, tcp->u_arg[0], "LINUX_REBOOT_MAGIC_???");
+       tprints(", ");
+       printflags(bootflags2, tcp->u_arg[1], "LINUX_REBOOT_MAGIC_???");
+       tprints(", ");
+       printflags(bootflags3, tcp->u_arg[2], "LINUX_REBOOT_CMD_???");
+       if (tcp->u_arg[2] == LINUX_REBOOT_CMD_RESTART2) {
+               tprints(", ");
+               printstr(tcp, tcp->u_arg[3], -1);
+       }
+       return 0;
+}
index 657e63d..12e218f 100644 (file)
 #include <sys/times.h>
 #include <linux/kernel.h>
 
-static const struct xlat resources[] = {
-#ifdef RLIMIT_AS
-       { RLIMIT_AS,            "RLIMIT_AS"             },
-#endif
-#ifdef RLIMIT_CORE
-       { RLIMIT_CORE,          "RLIMIT_CORE"           },
-#endif
-#ifdef RLIMIT_CPU
-       { RLIMIT_CPU,           "RLIMIT_CPU"            },
-#endif
-#ifdef RLIMIT_DATA
-       { RLIMIT_DATA,          "RLIMIT_DATA"           },
-#endif
-#ifdef RLIMIT_FSIZE
-       { RLIMIT_FSIZE,         "RLIMIT_FSIZE"          },
-#endif
-#ifdef RLIMIT_LOCKS
-       { RLIMIT_LOCKS,         "RLIMIT_LOCKS"          },
-#endif
-#ifdef RLIMIT_MEMLOCK
-       { RLIMIT_MEMLOCK,       "RLIMIT_MEMLOCK"        },
-#endif
-#ifdef RLIMIT_MSGQUEUE
-       { RLIMIT_MSGQUEUE,      "RLIMIT_MSGQUEUE"       },
-#endif
-#ifdef RLIMIT_NICE
-       { RLIMIT_NICE,          "RLIMIT_NICE"           },
-#endif
-#ifdef RLIMIT_NOFILE
-       { RLIMIT_NOFILE,        "RLIMIT_NOFILE"         },
-#endif
-#ifdef RLIMIT_NPROC
-       { RLIMIT_NPROC,         "RLIMIT_NPROC"          },
-#endif
-#ifdef RLIMIT_RSS
-       { RLIMIT_RSS,           "RLIMIT_RSS"            },
-#endif
-#ifdef RLIMIT_RTPRIO
-       { RLIMIT_RTPRIO,        "RLIMIT_RTPRIO"         },
-#endif
-#ifdef RLIMIT_RTTIME
-       { RLIMIT_RTTIME,        "RLIMIT_RTTIME"         },
-#endif
-#ifdef RLIMIT_SIGPENDING
-       { RLIMIT_SIGPENDING,    "RLIMIT_SIGPENDING"     },
-#endif
-#ifdef RLIMIT_STACK
-       { RLIMIT_STACK,         "RLIMIT_STACK"          },
-#endif
-#ifdef RLIMIT_VMEM
-       { RLIMIT_VMEM,          "RLIMIT_VMEM"           },
-#endif
-       { 0,                    NULL                    }
-};
-
-#if !(SIZEOF_RLIM_T == 4 || SIZEOF_RLIM_T == 8)
-# error "Unsupported SIZEOF_RLIM_T value"
-#endif
+#include "xlat/resources.h"
 
 static const char *
 sprint_rlim64(uint64_t lim)
@@ -135,7 +78,7 @@ decode_rlimit64(struct tcb *tcp, unsigned long addr)
                print_rlimit64(tcp, addr);
 }
 
-#if SIZEOF_RLIM_T == 4 || SUPPORTED_PERSONALITIES > 1
+#if !defined(current_wordsize) || current_wordsize == 4
 
 static const char *
 sprint_rlim32(uint32_t lim)
@@ -176,22 +119,28 @@ decode_rlimit(struct tcb *tcp, unsigned long addr)
        else if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)))
                tprintf("%#lx", addr);
        else {
-# if SIZEOF_RLIM_T == 4
-               print_rlimit32(tcp, addr);
+# if defined(X86_64) || defined(X32)
+               /*
+                * i386 is the only personality on X86_64 and X32
+                * with 32-bit rlim_t.
+                * When current_personality is X32, current_wordsize
+                * equals to 4 but rlim_t is 64-bit.
+                */
+               if (current_personality == 1)
 # else
                if (current_wordsize == 4)
+# endif
                        print_rlimit32(tcp, addr);
                else
                        print_rlimit64(tcp, addr);
-# endif
        }
 }
 
-#else /* SIZEOF_RLIM_T == 8 && SUPPORTED_PERSONALITIES == 1 */
+#else /* defined(current_wordsize) && current_wordsize != 4 */
 
 # define decode_rlimit decode_rlimit64
 
-#endif /* SIZEOF_RLIM_T == 4 || SUPPORTED_PERSONALITIES > 1 */
+#endif
 
 int
 sys_getrlimit(struct tcb *tcp)
@@ -232,14 +181,7 @@ sys_prlimit64(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat usagewho[] = {
-       { RUSAGE_SELF,          "RUSAGE_SELF"           },
-       { RUSAGE_CHILDREN,      "RUSAGE_CHILDREN"       },
-#ifdef RUSAGE_BOTH
-       { RUSAGE_BOTH,          "RUSAGE_BOTH"           },
-#endif
-       { 0,                    NULL                    },
-};
+#include "xlat/usagewho.h"
 
 #ifdef ALPHA
 void
@@ -386,12 +328,7 @@ sys_sysinfo(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat priorities[] = {
-       { PRIO_PROCESS, "PRIO_PROCESS"  },
-       { PRIO_PGRP,    "PRIO_PGRP"     },
-       { PRIO_USER,    "PRIO_USER"     },
-       { 0,            NULL            },
-};
+#include "xlat/priorities.h"
 
 int
 sys_getpriority(struct tcb *tcp)
diff --git a/scsi.c b/scsi.c
index 682016e..2aa4c7b 100644 (file)
--- a/scsi.c
+++ b/scsi.c
  */
 
 #include "defs.h"
-#include <sys/ioctl.h>
-#include <scsi/sg.h>
 
-static const struct xlat sg_io_dxfer_direction[] = {
-       {SG_DXFER_NONE,        "SG_DXFER_NONE"},
-       {SG_DXFER_TO_DEV,      "SG_DXFER_TO_DEV"},
-       {SG_DXFER_FROM_DEV,    "SG_DXFER_FROM_DEV"},
-       {SG_DXFER_TO_FROM_DEV, "SG_DXFER_TO_FROM_DEV"},
-       {0, NULL}
-};
+#ifdef HAVE_SCSI_SG_H
+
+# include <sys/ioctl.h>
+# include <scsi/sg.h>
+
+#include "xlat/sg_io_dxfer_direction.h"
 
 static void
 print_sg_io_buffer(struct tcb *tcp, unsigned char *addr, int len)
@@ -137,3 +134,5 @@ scsi_ioctl(struct tcb *tcp, long code, long arg)
        }
        return 1;
 }
+
+#endif /* HAVE_SCSI_SG_H */
index 55815aa..f6eeed0 100644 (file)
--- a/signal.c
+++ b/signal.c
 
 #ifdef HAVE_SYS_REG_H
 # include <sys/reg.h>
-# ifndef PTRACE_PEEKUSR
-#  define PTRACE_PEEKUSR PTRACE_PEEKUSER
-# endif
-# ifndef PTRACE_POKEUSR
-#  define PTRACE_POKEUSR PTRACE_POKEUSER
-# endif
 #elif defined(HAVE_LINUX_PTRACE_H)
 # undef PTRACE_SYSCALL
 # ifdef HAVE_STRUCT_IA64_FPREG
 # ifdef HAVE_STRUCT_PT_ALL_USER_REGS
 #  define pt_all_user_regs XXX_pt_all_user_regs
 # endif
+# ifdef HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS
+#  define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+# endif
 # include <linux/ptrace.h>
+# undef ptrace_peeksiginfo_args
 # undef ia64_fpreg
 # undef pt_all_user_regs
 #endif
@@ -70,35 +68,8 @@ typedef struct {
 #  include <asm/sigcontext.h>
 # endif
 #else /* !HAVE_ASM_SIGCONTEXT_H */
-# if defined I386 && !defined HAVE_STRUCT_SIGCONTEXT_STRUCT
-struct sigcontext_struct {
-       unsigned short gs, __gsh;
-       unsigned short fs, __fsh;
-       unsigned short es, __esh;
-       unsigned short ds, __dsh;
-       unsigned long edi;
-       unsigned long esi;
-       unsigned long ebp;
-       unsigned long esp;
-       unsigned long ebx;
-       unsigned long edx;
-       unsigned long ecx;
-       unsigned long eax;
-       unsigned long trapno;
-       unsigned long err;
-       unsigned long eip;
-       unsigned short cs, __csh;
-       unsigned long eflags;
-       unsigned long esp_at_signal;
-       unsigned short ss, __ssh;
-       unsigned long i387;
-       unsigned long oldmask;
-       unsigned long cr2;
-};
-# else /* !I386 */
-#  if defined M68K && !defined HAVE_STRUCT_SIGCONTEXT
-struct sigcontext
-{
+# if defined M68K && !defined HAVE_STRUCT_SIGCONTEXT
+struct sigcontext {
        unsigned long sc_mask;
        unsigned long sc_usp;
        unsigned long sc_d0;
@@ -109,91 +80,34 @@ struct sigcontext
        unsigned long sc_pc;
        unsigned short sc_formatvec;
 };
-#  endif /* M68K */
-# endif /* !I386 */
+# endif /* M68K */
 #endif /* !HAVE_ASM_SIGCONTEXT_H */
 
 #ifndef NSIG
 # warning: NSIG is not defined, using 32
 # define NSIG 32
-#endif
-#ifdef ARM
-/* Ugh. Is this really correct? ARM has no RT signals?! */
-# undef NSIG
-# define NSIG 32
+#elif NSIG < 32
+# error: NSIG < 32
 #endif
 
 #ifdef HAVE_SIGACTION
 
-#if defined I386 || defined X86_64 || defined X32
 /* The libc headers do not define this constant since it should only be
    used by the implementation.  So we define it here.  */
-# ifndef SA_RESTORER
-#  define SA_RESTORER 0x04000000
+#ifndef SA_RESTORER
+# ifdef ASM_SA_RESTORER
+#  define SA_RESTORER ASM_SA_RESTORER
 # endif
 #endif
 
-static const struct xlat sigact_flags[] = {
-#ifdef SA_RESTORER
-       { SA_RESTORER,  "SA_RESTORER"   },
-#endif
-#ifdef SA_STACK
-       { SA_STACK,     "SA_STACK"      },
-#endif
-#ifdef SA_RESTART
-       { SA_RESTART,   "SA_RESTART"    },
-#endif
-#ifdef SA_INTERRUPT
-       { SA_INTERRUPT, "SA_INTERRUPT"  },
-#endif
-#ifdef SA_NODEFER
-       { SA_NODEFER,   "SA_NODEFER"    },
-#endif
-#if defined SA_NOMASK && SA_NODEFER != SA_NOMASK
-       { SA_NOMASK,    "SA_NOMASK"     },
-#endif
-#ifdef SA_RESETHAND
-       { SA_RESETHAND, "SA_RESETHAND"  },
-#endif
-#if defined SA_ONESHOT && SA_ONESHOT != SA_RESETHAND
-       { SA_ONESHOT,   "SA_ONESHOT"    },
-#endif
-#ifdef SA_SIGINFO
-       { SA_SIGINFO,   "SA_SIGINFO"    },
-#endif
-#ifdef SA_RESETHAND
-       { SA_RESETHAND, "SA_RESETHAND"  },
+/* Some arches define this in their headers, but don't actually have it,
+   so we have to delete the define.  */
+#if defined(HPPA) || defined(IA64)
+# undef SA_RESTORER
 #endif
-#ifdef SA_ONSTACK
-       { SA_ONSTACK,   "SA_ONSTACK"    },
-#endif
-#ifdef SA_NODEFER
-       { SA_NODEFER,   "SA_NODEFER"    },
-#endif
-#ifdef SA_NOCLDSTOP
-       { SA_NOCLDSTOP, "SA_NOCLDSTOP"  },
-#endif
-#ifdef SA_NOCLDWAIT
-       { SA_NOCLDWAIT, "SA_NOCLDWAIT"  },
-#endif
-#ifdef _SA_BSDCALL
-       { _SA_BSDCALL,  "_SA_BSDCALL"   },
-#endif
-#ifdef SA_NOPTRACE
-       { SA_NOPTRACE,  "SA_NOPTRACE"   },
-#endif
-       { 0,            NULL            },
-};
 
-static const struct xlat sigprocmaskcmds[] = {
-       { SIG_BLOCK,    "SIG_BLOCK"     },
-       { SIG_UNBLOCK,  "SIG_UNBLOCK"   },
-       { SIG_SETMASK,  "SIG_SETMASK"   },
-#ifdef SIG_SETMASK32
-       { SIG_SETMASK32,"SIG_SETMASK32" },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/sigact_flags.h"
+#include "xlat/sigprocmaskcmds.h"
 
 #endif /* HAVE_SIGACTION */
 
@@ -246,88 +160,75 @@ signame(int sig)
        return buf;
 }
 
-static void
-long_to_sigset(long l, sigset_t *s)
+static unsigned int
+popcount32(const uint32_t *a, unsigned int size)
 {
-       sigemptyset(s);
-       *(long *)s = l;
-}
+       unsigned int count = 0;
 
-static int
-copy_sigset_len(struct tcb *tcp, long addr, sigset_t *s, int len)
-{
-       if (len > sizeof(*s))
-               len = sizeof(*s);
-       sigemptyset(s);
-       if (umoven(tcp, addr, len, (char *)s) < 0)
-               return -1;
-       return 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
+       }
 
-/* Original sigset is unsigned long */
-#define copy_sigset(tcp, addr, s) copy_sigset_len(tcp, addr, s, sizeof(long))
+       return count;
+}
 
 static const char *
-sprintsigmask(const char *str, sigset_t *mask, int rt)
-/* set might include realtime sigs */
+sprintsigmask_n(const char *prefix, const void *sig_mask, unsigned int bytes)
 {
-       /* Was [8 * sizeof(sigset_t) * 8], but
-        * glibc sigset_t is huge (1024 bits = 128 *bytes*),
-        * and we were ending up with 8k (!) buffer here.
-        *
-        * No Unix system can have sig > 255
-        * (waitpid API won't be able to indicate death from one)
-        * and sig 0 doesn't exist either.
-        * Therefore max possible no of sigs is 255: 1..255
+       /*
+        * The maximum number of signal names to be printed is NSIG * 2 / 3.
+        * Most of signal names have length 7,
+        * average length of signal names is less than 7.
+        * The length of prefix string does not exceed 16.
         */
-       static char outstr[8 * (255 * 2 / 3)];
+       static char outstr[128 + 8 * (NSIG * 2 / 3)];
 
-       int i, nsigs;
-       int maxsigs;
-       int show_members;
-       char sep;
        char *s;
+       const uint32_t *mask;
+       uint32_t inverted_mask[NSIG / 32];
+       unsigned int size;
+       int i;
+       char sep;
 
-       maxsigs = nsignals;
-#ifdef __SIGRTMAX
-       if (rt)
-               maxsigs = __SIGRTMAX; /* instead */
-#endif
-       s = stpcpy(outstr, str);
-       nsigs = 0;
-       for (i = 1; i < maxsigs; i++) {
-               if (sigismember(mask, i) == 1)
-                       nsigs++;
-       }
+       s = stpcpy(outstr, prefix);
+
+       mask = sig_mask;
+       /* length of signal mask in 4-byte words */
+       size = (bytes >= NSIG / 8) ? NSIG / 32 : (bytes + 3) / 4;
 
-       /* 1: show mask members, 0: show those which are NOT in mask */
-       show_members = (nsigs < nsignals * 2 / 3);
-       if (!show_members)
+       /* check whether 2/3 or more bits are set */
+       if (popcount32(mask, size) >= size * 32 * 2 / 3) {
+               /* show those signals that are NOT in the mask */
+               unsigned int j;
+               for (j = 0; j < size; ++j)
+                       inverted_mask[j] = ~mask[j];
+               mask = inverted_mask;
                *s++ = '~';
+       }
 
        sep = '[';
-       for (i = 1; i < maxsigs; i++) {
-               if (sigismember(mask, i) == show_members) {
-                       /* real-time signals on solaris don't have
-                        * signalent entries
-                        */
-                       char tsig[40];
-                       *s++ = sep;
-                       if (i < nsignals) {
-                               s = stpcpy(s, signalent[i] + 3);
-                       }
+       for (i = 0; (i = next_set_bit(mask, i, size * 32)) >= 0; ) {
+               ++i;
+               *s++ = sep;
+               if (i < nsignals) {
+                       s = stpcpy(s, signalent[i] + 3);
+               }
 #ifdef SIGRTMIN
-                       else if (i >= __SIGRTMIN && i <= __SIGRTMAX) {
-                               sprintf(tsig, "RT_%u", i - __SIGRTMIN);
-                               s = stpcpy(s, tsig);
-                       }
-#endif /* SIGRTMIN */
-                       else {
-                               sprintf(tsig, "%u", i);
-                               s = stpcpy(s, tsig);
-                       }
-                       sep = ' ';
+               else if (i >= __SIGRTMIN && i <= __SIGRTMAX) {
+                       s += sprintf(s, "RT_%u", i - __SIGRTMIN);
                }
+#endif
+               else {
+                       s += sprintf(s, "%u", i);
+               }
+               sep = ' ';
        }
        if (sep == '[')
                *s++ = sep;
@@ -336,11 +237,14 @@ sprintsigmask(const char *str, sigset_t *mask, int rt)
        return outstr;
 }
 
-static void
-printsigmask(sigset_t *mask, int rt)
-{
-       tprints(sprintsigmask("", mask, rt));
-}
+#define tprintsigmask_addr(prefix, mask) \
+       tprints(sprintsigmask_n((prefix), (mask), sizeof(mask)))
+
+#define sprintsigmask_val(prefix, mask) \
+       sprintsigmask_n((prefix), &(mask), sizeof(mask))
+
+#define tprintsigmask_val(prefix, mask) \
+       tprints(sprintsigmask_n((prefix), &(mask), sizeof(mask)))
 
 void
 printsignal(int nr)
@@ -349,16 +253,30 @@ printsignal(int nr)
 }
 
 void
-print_sigset(struct tcb *tcp, long addr, int rt)
+print_sigset_addr_len(struct tcb *tcp, long addr, long len)
 {
-       sigset_t ss;
+       char mask[NSIG / 8];
 
-       if (!addr)
+       if (!addr) {
                tprints("NULL");
-       else if (copy_sigset(tcp, addr, &ss) < 0)
+               return;
+       }
+       /* Here len is usually equals NSIG / 8 or current_wordsize.
+        * But we code this defensively:
+        */
+       if (len < 0) {
+ bad:
                tprintf("%#lx", addr);
+               return;
+       }
+       if (len >= NSIG / 8)
+               len = NSIG / 8;
        else
-               printsigmask(&ss, rt);
+               len = (len + 3) & ~3;
+
+       if (umoven(tcp, addr, len, mask) < 0)
+               goto bad;
+       tprints(sprintsigmask_n("", mask, len));
 }
 
 #ifndef ILL_ILLOPC
@@ -383,6 +301,7 @@ print_sigset(struct tcb *tcp, long addr, int rt)
 #define BUS_ADRALN      1       /* invalid address alignment */
 #define BUS_ADRERR      2       /* non-existant physical address */
 #define BUS_OBJERR      3       /* object specific hardware error */
+#define SYS_SECCOMP     1       /* seccomp triggered */
 #define TRAP_BRKPT      1       /* process breakpoint */
 #define TRAP_TRACE      2       /* process trace trap */
 #define CLD_EXITED      1       /* child has exited */
@@ -405,6 +324,7 @@ print_sigset(struct tcb *tcp, long addr, int rt)
 #define SI_ASYNCIO      -4      /* sent by AIO completion */
 #define SI_SIGIO       -5      /* sent by SIGIO */
 #define SI_TKILL       -6      /* sent by tkill */
+#define SI_DETHREAD    -7      /* sent by execve killing subsidiary threads */
 #define SI_ASYNCNL     -60     /* sent by asynch name lookup completion */
 #endif
 
@@ -412,121 +332,44 @@ print_sigset(struct tcb *tcp, long addr, int rt)
 # define SI_FROMUSER(sip)      ((sip)->si_code <= 0)
 #endif
 
-static const struct xlat siginfo_codes[] = {
-#ifdef SI_KERNEL
-       { SI_KERNEL,    "SI_KERNEL"     },
-#endif
-#ifdef SI_USER
-       { SI_USER,      "SI_USER"       },
-#endif
-#ifdef SI_QUEUE
-       { SI_QUEUE,     "SI_QUEUE"      },
-#endif
-#ifdef SI_TIMER
-       { SI_TIMER,     "SI_TIMER"      },
-#endif
-#ifdef SI_MESGQ
-       { SI_MESGQ,     "SI_MESGQ"      },
-#endif
-#ifdef SI_ASYNCIO
-       { SI_ASYNCIO,   "SI_ASYNCIO"    },
-#endif
-#ifdef SI_SIGIO
-       { SI_SIGIO,     "SI_SIGIO"      },
-#endif
-#ifdef SI_TKILL
-       { SI_TKILL,     "SI_TKILL"      },
-#endif
-#ifdef SI_ASYNCNL
-       { SI_ASYNCNL,   "SI_ASYNCNL"    },
-#endif
-#ifdef SI_NOINFO
-       { SI_NOINFO,    "SI_NOINFO"     },
-#endif
-#ifdef SI_LWP
-       { SI_LWP,       "SI_LWP"        },
-#endif
-       { 0,            NULL            },
-};
-
-static const struct xlat sigill_codes[] = {
-       { ILL_ILLOPC,   "ILL_ILLOPC"    },
-       { ILL_ILLOPN,   "ILL_ILLOPN"    },
-       { ILL_ILLADR,   "ILL_ILLADR"    },
-       { ILL_ILLTRP,   "ILL_ILLTRP"    },
-       { ILL_PRVOPC,   "ILL_PRVOPC"    },
-       { ILL_PRVREG,   "ILL_PRVREG"    },
-       { ILL_COPROC,   "ILL_COPROC"    },
-       { ILL_BADSTK,   "ILL_BADSTK"    },
-       { 0,            NULL            },
-};
-
-static const struct xlat sigfpe_codes[] = {
-       { FPE_INTDIV,   "FPE_INTDIV"    },
-       { FPE_INTOVF,   "FPE_INTOVF"    },
-       { FPE_FLTDIV,   "FPE_FLTDIV"    },
-       { FPE_FLTOVF,   "FPE_FLTOVF"    },
-       { FPE_FLTUND,   "FPE_FLTUND"    },
-       { FPE_FLTRES,   "FPE_FLTRES"    },
-       { FPE_FLTINV,   "FPE_FLTINV"    },
-       { FPE_FLTSUB,   "FPE_FLTSUB"    },
-       { 0,            NULL            },
-};
-
-static const struct xlat sigtrap_codes[] = {
-       { TRAP_BRKPT,   "TRAP_BRKPT"    },
-       { TRAP_TRACE,   "TRAP_TRACE"    },
-       { 0,            NULL            },
-};
-
-static const struct xlat sigchld_codes[] = {
-       { CLD_EXITED,   "CLD_EXITED"    },
-       { CLD_KILLED,   "CLD_KILLED"    },
-       { CLD_DUMPED,   "CLD_DUMPED"    },
-       { CLD_TRAPPED,  "CLD_TRAPPED"   },
-       { CLD_STOPPED,  "CLD_STOPPED"   },
-       { CLD_CONTINUED,"CLD_CONTINUED" },
-       { 0,            NULL            },
-};
-
-static const struct xlat sigpoll_codes[] = {
-       { POLL_IN,      "POLL_IN"       },
-       { POLL_OUT,     "POLL_OUT"      },
-       { POLL_MSG,     "POLL_MSG"      },
-       { POLL_ERR,     "POLL_ERR"      },
-       { POLL_PRI,     "POLL_PRI"      },
-       { POLL_HUP,     "POLL_HUP"      },
-       { 0,            NULL            },
-};
-
-static const struct xlat sigprof_codes[] = {
-#ifdef PROF_SIG
-       { PROF_SIG,     "PROF_SIG"      },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/siginfo_codes.h"
+#include "xlat/sigill_codes.h"
+#include "xlat/sigfpe_codes.h"
+#include "xlat/sigtrap_codes.h"
+#include "xlat/sigchld_codes.h"
+#include "xlat/sigpoll_codes.h"
+#include "xlat/sigprof_codes.h"
 
 #ifdef SIGEMT
-static const struct xlat sigemt_codes[] = {
-#ifdef EMT_TAGOVF
-       { EMT_TAGOVF,   "EMT_TAGOVF"    },
+#include "xlat/sigemt_codes.h"
 #endif
-       { 0,            NULL            },
-};
+
+#include "xlat/sigsegv_codes.h"
+#include "xlat/sigbus_codes.h"
+
+#ifndef SYS_SECCOMP
+# define SYS_SECCOMP 1
 #endif
+#include "xlat/sigsys_codes.h"
 
-static const struct xlat sigsegv_codes[] = {
-       { SEGV_MAPERR,  "SEGV_MAPERR"   },
-       { SEGV_ACCERR,  "SEGV_ACCERR"   },
-       { 0,            NULL            },
-};
+static void
+printsigsource(const siginfo_t *sip)
+{
+       tprintf(", si_pid=%lu, si_uid=%lu",
+               (unsigned long) sip->si_pid,
+               (unsigned long) sip->si_uid);
+}
 
-static const struct xlat sigbus_codes[] = {
-       { BUS_ADRALN,   "BUS_ADRALN"    },
-       { BUS_ADRERR,   "BUS_ADRERR"    },
-       { BUS_OBJERR,   "BUS_OBJERR"    },
-       { 0,            NULL            },
-};
+static void
+printsigval(const siginfo_t *sip, int verbose)
+{
+       if (!verbose)
+               tprints(", ...");
+       else
+               tprintf(", si_value={int=%u, ptr=%#lx}",
+                       sip->si_int,
+                       (unsigned long) sip->si_ptr);
+}
 
 void
 printsiginfo(siginfo_t *sip, int verbose)
@@ -571,6 +414,9 @@ printsiginfo(siginfo_t *sip, int verbose)
                case SIGBUS:
                        code = xlookup(sigbus_codes, sip->si_code);
                        break;
+               case SIGSYS:
+                       code = xlookup(sigsys_codes, sip->si_code);
+                       break;
                }
        }
        if (code)
@@ -590,32 +436,28 @@ printsiginfo(siginfo_t *sip, int verbose)
                }
 #ifdef SI_FROMUSER
                if (SI_FROMUSER(sip)) {
-                       tprintf(", si_pid=%lu, si_uid=%lu",
-                               (unsigned long) sip->si_pid,
-                               (unsigned long) sip->si_uid);
                        switch (sip->si_code) {
 #ifdef SI_USER
                        case SI_USER:
+                               printsigsource(sip);
                                break;
 #endif
 #ifdef SI_TKILL
                        case SI_TKILL:
+                               printsigsource(sip);
                                break;
 #endif
 #ifdef SI_TIMER
                        case SI_TIMER:
-                               tprintf(", si_value=%d", sip->si_int);
+                               tprintf(", si_timerid=%#x, si_overrun=%d",
+                                       sip->si_timerid, sip->si_overrun);
+                               printsigval(sip, verbose);
                                break;
 #endif
                        default:
-                               if (!sip->si_ptr)
-                                       break;
-                               if (!verbose)
-                                       tprints(", ...");
-                               else
-                                       tprintf(", si_value={int=%u, ptr=%#lx}",
-                                               sip->si_int,
-                                               (unsigned long) sip->si_ptr);
+                               printsigsource(sip);
+                               if (sip->si_ptr)
+                                       printsigval(sip, verbose);
                                break;
                        }
                }
@@ -624,8 +466,8 @@ printsiginfo(siginfo_t *sip, int verbose)
                {
                        switch (sip->si_signo) {
                        case SIGCHLD:
-                               tprintf(", si_pid=%ld, si_status=",
-                                       (long) sip->si_pid);
+                               printsigsource(sip);
+                               tprints(", si_status=");
                                if (sip->si_code == CLD_EXITED)
                                        tprintf("%d", sip->si_status);
                                else
@@ -650,21 +492,18 @@ printsiginfo(siginfo_t *sip, int verbose)
                                        break;
                                }
                                break;
+#ifdef HAVE_SIGINFO_T_SI_SYSCALL
+                       case SIGSYS:
+                               tprintf(", si_call_addr=%#lx, si_syscall=%d, si_arch=%u",
+                                       (unsigned long) sip->si_call_addr,
+                                       sip->si_syscall, sip->si_arch);
+                               break;
+#endif
                        default:
                                if (sip->si_pid || sip->si_uid)
-                                       tprintf(", si_pid=%lu, si_uid=%lu",
-                                               (unsigned long) sip->si_pid,
-                                               (unsigned long) sip->si_uid);
-                               if (!sip->si_ptr)
-                                       break;
-                               if (!verbose)
-                                       tprints(", ...");
-                               else {
-                                       tprintf(", si_value={int=%u, ptr=%#lx}",
-                                               sip->si_int,
-                                               (unsigned long) sip->si_ptr);
-                               }
-
+                                       printsigsource(sip);
+                               if (sip->si_ptr)
+                                       printsigval(sip, verbose);
                        }
                }
        }
@@ -694,15 +533,10 @@ int
 sys_sigsetmask(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               sigset_t sigm;
-               long_to_sigset(tcp->u_arg[0], &sigm);
-               printsigmask(&sigm, 0);
+               tprintsigmask_val("", tcp->u_arg[0]);
        }
        else if (!syserror(tcp)) {
-               sigset_t sigm;
-               long_to_sigset(tcp->u_rval, &sigm);
-               tcp->auxstr = sprintsigmask("old mask ", &sigm, 0);
-
+               tcp->auxstr = sprintsigmask_val("old mask ", tcp->u_rval);
                return RVAL_HEX | RVAL_STR;
        }
        return 0;
@@ -712,62 +546,103 @@ sys_sigsetmask(struct tcb *tcp)
 
 struct old_sigaction {
        /* sa_handler may be a libc #define, need to use other name: */
+#ifdef MIPS
+       unsigned int sa_flags;
+       void (*__sa_handler)(int);
+       /* Kernel treats sa_mask as an array of longs. */
+       unsigned long sa_mask[NSIG / sizeof(long) ? NSIG / sizeof(long) : 1];
+#else
        void (*__sa_handler)(int);
        unsigned long sa_mask;
        unsigned long sa_flags;
        void (*sa_restorer)(void);
+#endif /* !MIPS */
 };
 
-int
-sys_sigaction(struct tcb *tcp)
+struct old_sigaction32 {
+       /* sa_handler may be a libc #define, need to use other name: */
+       uint32_t __sa_handler;
+       uint32_t sa_mask;
+       uint32_t sa_flags;
+       uint32_t sa_restorer;
+};
+
+static void
+decode_old_sigaction(struct tcb *tcp, long addr)
 {
-       long addr;
-       sigset_t sigset;
        struct old_sigaction sa;
+       int r;
 
-       if (entering(tcp)) {
-               printsignal(tcp->u_arg[0]);
-               tprints(", ");
-               addr = tcp->u_arg[1];
-       } else
-               addr = tcp->u_arg[2];
-       if (addr == 0)
+       if (!addr) {
                tprints("NULL");
-       else if (!verbose(tcp))
+               return;
+       }
+       if (!verbose(tcp) || (exiting(tcp) && syserror(tcp))) {
                tprintf("%#lx", addr);
-       else if (umove(tcp, addr, &sa) < 0)
+               return;
+       }
+
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+       if (current_wordsize != sizeof(sa.__sa_handler) && current_wordsize == 4) {
+               struct old_sigaction32 sa32;
+               r = umove(tcp, addr, &sa32);
+               if (r >= 0) {
+                       memset(&sa, 0, sizeof(sa));
+                       sa.__sa_handler = (void*)(uintptr_t)sa32.__sa_handler;
+                       sa.sa_flags = sa32.sa_flags;
+                       sa.sa_restorer = (void*)(uintptr_t)sa32.sa_restorer;
+                       sa.sa_mask = sa32.sa_mask;
+               }
+       } else
+#endif
+       {
+               r = umove(tcp, addr, &sa);
+       }
+       if (r < 0) {
                tprints("{...}");
-       else {
-               /* Architectures using function pointers, like
-                * hppa, may need to manipulate the function pointer
-                * to compute the result of a comparison. However,
-                * the __sa_handler function pointer exists only in
-                * the address space of the traced process, and can't
-                * be manipulated by strace. In order to prevent the
-                * compiler from generating code to manipulate
-                * __sa_handler we cast the function pointers to long. */
-               if ((long)sa.__sa_handler == (long)SIG_ERR)
-                       tprints("{SIG_ERR, ");
-               else if ((long)sa.__sa_handler == (long)SIG_DFL)
-                       tprints("{SIG_DFL, ");
-               else if ((long)sa.__sa_handler == (long)SIG_IGN)
-                       tprints("{SIG_IGN, ");
-               else
-                       tprintf("{%#lx, ", (long) sa.__sa_handler);
-               long_to_sigset(sa.sa_mask, &sigset);
-               printsigmask(&sigset, 0);
-               tprints(", ");
-               printflags(sigact_flags, sa.sa_flags, "SA_???");
+               return;
+       }
+
+       /* Architectures using function pointers, like
+        * hppa, may need to manipulate the function pointer
+        * to compute the result of a comparison. However,
+        * the __sa_handler function pointer exists only in
+        * the address space of the traced process, and can't
+        * be manipulated by strace. In order to prevent the
+        * compiler from generating code to manipulate
+        * __sa_handler we cast the function pointers to long. */
+       if ((long)sa.__sa_handler == (long)SIG_ERR)
+               tprints("{SIG_ERR, ");
+       else if ((long)sa.__sa_handler == (long)SIG_DFL)
+               tprints("{SIG_DFL, ");
+       else if ((long)sa.__sa_handler == (long)SIG_IGN)
+               tprints("{SIG_IGN, ");
+       else
+               tprintf("{%#lx, ", (long) sa.__sa_handler);
+#ifdef MIPS
+       tprintsigmask_addr("", sa.sa_mask);
+#else
+       tprintsigmask_val("", sa.sa_mask);
+#endif
+       tprints(", ");
+       printflags(sigact_flags, sa.sa_flags, "SA_???");
 #ifdef SA_RESTORER
-               if (sa.sa_flags & SA_RESTORER)
-                       tprintf(", %p", sa.sa_restorer);
+       if (sa.sa_flags & SA_RESTORER)
+               tprintf(", %p", sa.sa_restorer);
 #endif
-               tprints("}");
-       }
-       if (entering(tcp))
+       tprints("}");
+}
+
+int
+sys_sigaction(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               printsignal(tcp->u_arg[0]);
                tprints(", ");
-       else
-               tprintf(", %#lx", (unsigned long) sa.sa_restorer);
+               decode_old_sigaction(tcp, tcp->u_arg[1]);
+               tprints(", ");
+       } else
+               decode_old_sigaction(tcp, tcp->u_arg[2]);
        return 0;
 }
 
@@ -815,59 +690,144 @@ sys_sigreturn(struct tcb *tcp)
 {
 #if defined(ARM)
        if (entering(tcp)) {
-               struct sigcontext_struct sc;
-               sigset_t sigm;
-               if (umove(tcp, arm_regs.ARM_sp, &sc) < 0)
+               struct arm_sigcontext {
+                       unsigned long trap_no;
+                       unsigned long error_code;
+                       unsigned long oldmask;
+                       unsigned long arm_r0;
+                       unsigned long arm_r1;
+                       unsigned long arm_r2;
+                       unsigned long arm_r3;
+                       unsigned long arm_r4;
+                       unsigned long arm_r5;
+                       unsigned long arm_r6;
+                       unsigned long arm_r7;
+                       unsigned long arm_r8;
+                       unsigned long arm_r9;
+                       unsigned long arm_r10;
+                       unsigned long arm_fp;
+                       unsigned long arm_ip;
+                       unsigned long arm_sp;
+                       unsigned long arm_lr;
+                       unsigned long arm_pc;
+                       unsigned long arm_cpsr;
+                       unsigned long fault_address;
+               };
+               struct arm_ucontext {
+                       unsigned long uc_flags;
+                       unsigned long uc_link;  /* struct ucontext* */
+                       /* The next three members comprise stack_t struct: */
+                       unsigned long ss_sp;    /* void*   */
+                       unsigned long ss_flags; /* int     */
+                       unsigned long ss_size;  /* size_t  */
+                       struct arm_sigcontext sc;
+                       /* These two members are sigset_t: */
+                       unsigned long uc_sigmask[2];
+                       /* more fields follow, which we aren't interested in */
+               };
+               struct arm_ucontext uc;
+               if (umove(tcp, arm_regs.ARM_sp, &uc) < 0)
                        return 0;
-               long_to_sigset(sc.oldmask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               /*
+                * Kernel fills out uc.sc.oldmask too when it sets up signal stack,
+                * but for sigmask restore, sigreturn syscall uses uc.uc_sigmask instead.
+                */
+               tprintsigmask_addr(") (mask ", uc.uc_sigmask);
        }
 #elif defined(S390) || defined(S390X)
        if (entering(tcp)) {
                long usp;
-               struct sigcontext_struct sc;
-               if (upeek(tcp, PT_GPR15, &usp) < 0)
+               struct sigcontext sc;
+               if (upeek(tcp->pid, PT_GPR15, &usp) < 0)
                        return 0;
                if (umove(tcp, usp + __SIGNAL_FRAMESIZE, &sc) < 0)
                        return 0;
-               tprints(sprintsigmask(") (mask ", (sigset_t *)&sc.oldmask[0], 0));
+               tprintsigmask_addr(") (mask ", sc.oldmask);
        }
-#elif defined(I386)
+#elif defined(I386) || defined(X86_64)
+# if defined(X86_64)
+       if (current_personality == 0) /* 64-bit */
+               return 0;
+# endif
        if (entering(tcp)) {
-               struct sigcontext_struct sc;
-               /* Note: on i386, sc is followed on stack by struct fpstate
+               struct i386_sigcontext_struct {
+                       uint16_t gs, __gsh;
+                       uint16_t fs, __fsh;
+                       uint16_t es, __esh;
+                       uint16_t ds, __dsh;
+                       uint32_t edi;
+                       uint32_t esi;
+                       uint32_t ebp;
+                       uint32_t esp;
+                       uint32_t ebx;
+                       uint32_t edx;
+                       uint32_t ecx;
+                       uint32_t eax;
+                       uint32_t trapno;
+                       uint32_t err;
+                       uint32_t eip;
+                       uint16_t cs, __csh;
+                       uint32_t eflags;
+                       uint32_t esp_at_signal;
+                       uint16_t ss, __ssh;
+                       uint32_t i387;
+                       uint32_t oldmask;
+                       uint32_t cr2;
+               };
+               struct i386_fpstate {
+                       uint32_t cw;
+                       uint32_t sw;
+                       uint32_t tag;
+                       uint32_t ipoff;
+                       uint32_t cssel;
+                       uint32_t dataoff;
+                       uint32_t datasel;
+                       uint8_t  st[8][10]; /* 8*10 bytes: FP regs */
+                       uint16_t status;
+                       uint16_t magic;
+                       uint32_t fxsr_env[6];
+                       uint32_t mxcsr;
+                       uint32_t reserved;
+                       uint8_t  stx[8][16]; /* 8*16 bytes: FP regs, each padded to 16 bytes */
+                       uint8_t  xmm[8][16]; /* 8 XMM regs */
+                       uint32_t padding1[44];
+                       uint32_t padding2[12]; /* union with struct _fpx_sw_bytes */
+               };
+               struct {
+                       struct i386_sigcontext_struct sc;
+                       struct i386_fpstate fp;
+                       uint32_t extramask[1];
+               } signal_stack;
+               /* On i386, sc is followed on stack by struct fpstate
                 * and after it an additional u32 extramask[1] which holds
-                * upper half of the mask. We can fetch it there
-                * if/when we'd want to display the full mask...
+                * upper half of the mask.
                 */
-               sigset_t sigm;
-               if (umove(tcp, i386_regs.esp, &sc) < 0)
+               uint32_t sigmask[2];
+               if (umove(tcp, *i386_esp_ptr, &signal_stack) < 0)
                        return 0;
-               long_to_sigset(sc.oldmask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               sigmask[0] = signal_stack.sc.oldmask;
+               sigmask[1] = signal_stack.extramask[0];
+               tprintsigmask_addr(") (mask ", sigmask);
        }
 #elif defined(IA64)
        if (entering(tcp)) {
                struct sigcontext sc;
                long sp;
-               sigset_t sigm;
                /* offset of sigcontext in the kernel's sigframe structure: */
 #              define SIGFRAME_SC_OFFSET       0x90
-               if (upeek(tcp, PT_R12, &sp) < 0)
+               if (upeek(tcp->pid, PT_R12, &sp) < 0)
                        return 0;
                if (umove(tcp, sp + 16 + SIGFRAME_SC_OFFSET, &sc) < 0)
                        return 0;
-               sigemptyset(&sigm);
-               memcpy(&sigm, &sc.sc_mask, NSIG / 8);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", sc.sc_mask);
        }
 #elif defined(POWERPC)
        if (entering(tcp)) {
                long esp;
-               struct sigcontext_struct sc;
-               sigset_t sigm;
-               if (upeek(tcp, sizeof(unsigned long) * PT_R1, &esp) < 0)
-                       return 0;
+               struct sigcontext sc;
+
+               esp = ppc_regs.gpr[1];
+
                /* Skip dummy stack frame. */
 #ifdef POWERPC64
                if (current_personality == 0)
@@ -879,45 +839,38 @@ sys_sigreturn(struct tcb *tcp)
 #endif
                if (umove(tcp, esp, &sc) < 0)
                        return 0;
-               long_to_sigset(sc.oldmask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", sc.oldmask);
        }
 #elif defined(M68K)
        if (entering(tcp)) {
                long usp;
                struct sigcontext sc;
-               sigset_t sigm;
-               if (upeek(tcp, 4*PT_USP, &usp) < 0)
+               if (upeek(tcp->pid, 4*PT_USP, &usp) < 0)
                        return 0;
                if (umove(tcp, usp, &sc) < 0)
                        return 0;
-               long_to_sigset(sc.sc_mask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", sc.sc_mask);
        }
 #elif defined(ALPHA)
        if (entering(tcp)) {
                long fp;
-               struct sigcontext_struct sc;
-               sigset_t sigm;
-               if (upeek(tcp, REG_FP, &fp) < 0)
+               struct sigcontext sc;
+               if (upeek(tcp->pid, REG_FP, &fp) < 0)
                        return 0;
                if (umove(tcp, fp, &sc) < 0)
                        return 0;
-               long_to_sigset(sc.sc_mask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", sc.sc_mask);
        }
 #elif defined(SPARC) || defined(SPARC64)
        if (entering(tcp)) {
                long i1;
                m_siginfo_t si;
-               sigset_t sigm;
                i1 = sparc_regs.u_regs[U_REG_O1];
                if (umove(tcp, i1, &si) < 0) {
                        perror_msg("sigreturn: umove");
                        return 0;
                }
-               long_to_sigset(si.si_mask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", si.si_mask);
        }
 #elif defined(LINUX_MIPSN32) || defined(LINUX_MIPSN64)
        /* This decodes rt_sigreturn.  The 64-bit ABIs do not have
@@ -925,22 +878,19 @@ sys_sigreturn(struct tcb *tcp)
        if (entering(tcp)) {
                long sp;
                struct ucontext uc;
-               sigset_t sigm;
-               if (upeek(tcp, REG_SP, &sp) < 0)
+               if (upeek(tcp->pid, REG_SP, &sp) < 0)
                        return 0;
                /* There are six words followed by a 128-byte siginfo.  */
                sp = sp + 6 * 4 + 128;
                if (umove(tcp, sp, &uc) < 0)
                        return 0;
-               long_to_sigset(*(long *) &uc.uc_sigmask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", uc.uc_sigmask);
        }
 #elif defined(MIPS)
        if (entering(tcp)) {
                long sp;
                struct pt_regs regs;
                m_siginfo_t si;
-               sigset_t sigm;
                if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)&regs, 0) < 0) {
                        perror_msg("sigreturn: PTRACE_GETREGS");
                        return 0;
@@ -948,54 +898,46 @@ sys_sigreturn(struct tcb *tcp)
                sp = regs.regs[29];
                if (umove(tcp, sp, &si) < 0)
                        return 0;
-               long_to_sigset(si.si_mask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", si.si_mask);
        }
 #elif defined(CRISV10) || defined(CRISV32)
        if (entering(tcp)) {
                struct sigcontext sc;
                long regs[PT_MAX+1];
-               sigset_t sigm;
                if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long)regs) < 0) {
                        perror_msg("sigreturn: PTRACE_GETREGS");
                        return 0;
                }
                if (umove(tcp, regs[PT_USP], &sc) < 0)
                        return 0;
-               long_to_sigset(sc.oldmask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", sc.oldmask);
        }
 #elif defined(TILE)
        if (entering(tcp)) {
                struct ucontext uc;
-               sigset_t sigm;
 
                /* offset of ucontext in the kernel's sigframe structure */
 #              define SIGFRAME_UC_OFFSET C_ABI_SAVE_AREA_SIZE + sizeof(siginfo_t)
                if (umove(tcp, tile_regs.sp + SIGFRAME_UC_OFFSET, &uc) < 0)
                        return 0;
-               sigemptyset(&sigm);
-               memcpy(&sigm, &uc.uc_sigmask, NSIG / 8);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", uc.uc_sigmask);
        }
 #elif defined(MICROBLAZE)
        /* TODO: Verify that this is correct...  */
        if (entering(tcp)) {
                struct sigcontext sc;
                long sp;
-               sigset_t sigm;
                /* Read r1, the stack pointer.  */
-               if (upeek(tcp, 1 * 4, &sp) < 0)
+               if (upeek(tcp->pid, 1 * 4, &sp) < 0)
                        return 0;
                if (umove(tcp, sp, &sc) < 0)
                        return 0;
-               long_to_sigset(sc.oldmask, &sigm);
-               tprints(sprintsigmask(") (mask ", &sigm, 0));
+               tprintsigmask_val(") (mask ", sc.oldmask);
        }
-#elif defined(X86_64)
-       /* no need to remind */
 #elif defined(XTENSA)
        /* Xtensa only has rt_sys_sigreturn */
+#elif defined(ARC)
+       /* ARC syscall ABI only supports rt_sys_sigreturn */
 #else
 # warning No sys_sigreturn() for this architecture
 # warning         (no problem, just a reminder :-)
@@ -1007,9 +949,7 @@ int
 sys_siggetmask(struct tcb *tcp)
 {
        if (exiting(tcp)) {
-               sigset_t sigm;
-               long_to_sigset(tcp->u_rval, &sigm);
-               tcp->auxstr = sprintsigmask("mask ", &sigm, 0);
+               tcp->auxstr = sprintsigmask_val("mask ", tcp->u_rval);
        }
        return RVAL_HEX | RVAL_STR;
 }
@@ -1018,9 +958,7 @@ int
 sys_sigsuspend(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               sigset_t sigm;
-               long_to_sigset(tcp->u_arg[2], &sigm);
-               printsigmask(&sigm, 0);
+               tprintsigmask_val("", tcp->u_arg[2]);
        }
        return 0;
 }
@@ -1030,20 +968,39 @@ sys_sigsuspend(struct tcb *tcp)
 #define SS_DISABLE      2
 #endif
 
-static const struct xlat sigaltstack_flags[] = {
-       { SS_ONSTACK,   "SS_ONSTACK"    },
-       { SS_DISABLE,   "SS_DISABLE"    },
-       { 0,            NULL            },
-};
+#include "xlat/sigaltstack_flags.h"
 
 static void
 print_stack_t(struct tcb *tcp, unsigned long addr)
 {
        stack_t ss;
+       int r;
 
        if (!addr) {
                tprints("NULL");
-       } else if (umove(tcp, addr, &ss) < 0) {
+               return;
+       }
+
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+       if (current_wordsize != sizeof(ss.ss_sp) && current_wordsize == 4) {
+               struct {
+                       uint32_t ss_sp;
+                       int32_t ss_flags;
+                       uint32_t ss_size;
+               } ss32;
+               r = umove(tcp, addr, &ss32);
+               if (r >= 0) {
+                       memset(&ss, 0, sizeof(ss));
+                       ss.ss_sp = (void*)(unsigned long) ss32.ss_sp;
+                       ss.ss_flags = ss32.ss_flags;
+                       ss.ss_size = (unsigned long) ss32.ss_size;
+               }
+       } else
+#endif
+       {
+               r = umove(tcp, addr, &ss);
+       }
+       if (r < 0) {
                tprintf("%#lx", addr);
        } else {
                tprintf("{ss_sp=%#lx, ss_flags=", (unsigned long) ss.ss_sp);
@@ -1067,11 +1024,11 @@ sys_sigaltstack(struct tcb *tcp)
 
 #ifdef HAVE_SIGACTION
 
+/* "Old" sigprocmask, which operates with word-sized signal masks */
 int
 sys_sigprocmask(struct tcb *tcp)
 {
-#ifdef ALPHA
-       sigset_t ss;
+# ifdef ALPHA
        if (entering(tcp)) {
                /*
                 * Alpha/OSF is different: it doesn't pass in two pointers,
@@ -1084,32 +1041,27 @@ sys_sigprocmask(struct tcb *tcp)
                 * Everyone else:
                 *      ret = sigprocmask(how, &new, &old, ...);
                 */
-               memcpy(&ss, &tcp->u_arg[1], sizeof(long));
                printxval(sigprocmaskcmds, tcp->u_arg[0], "SIG_???");
-               tprints(", ");
-               printsigmask(&ss, 0);
+               tprintsigmask_val(", ", tcp->u_arg[1]);
        }
        else if (!syserror(tcp)) {
-               memcpy(&ss, &tcp->u_rval, sizeof(long));
-               tcp->auxstr = sprintsigmask("old mask ", &ss, 0);
+               tcp->auxstr = sprintsigmask_val("old mask ", tcp->u_rval);
                return RVAL_HEX | RVAL_STR;
        }
-#else /* !ALPHA */
+# else /* !ALPHA */
        if (entering(tcp)) {
                printxval(sigprocmaskcmds, tcp->u_arg[0], "SIG_???");
                tprints(", ");
-               print_sigset(tcp, tcp->u_arg[1], 0);
+               print_sigset_addr_len(tcp, tcp->u_arg[1], current_wordsize);
                tprints(", ");
        }
        else {
-               if (!tcp->u_arg[2])
-                       tprints("NULL");
-               else if (syserror(tcp))
+               if (syserror(tcp))
                        tprintf("%#lx", tcp->u_arg[2]);
                else
-                       print_sigset(tcp, tcp->u_arg[2], 0);
+                       print_sigset_addr_len(tcp, tcp->u_arg[2], current_wordsize);
        }
-#endif /* !ALPHA */
+# endif /* !ALPHA */
        return 0;
 }
 
@@ -1143,15 +1095,11 @@ sys_tgkill(struct tcb *tcp)
 int
 sys_sigpending(struct tcb *tcp)
 {
-       sigset_t sigset;
-
        if (exiting(tcp)) {
                if (syserror(tcp))
                        tprintf("%#lx", tcp->u_arg[0]);
-               else if (copy_sigset(tcp, tcp->u_arg[0], &sigset) < 0)
-                       tprints("[?]");
                else
-                       printsigmask(&sigset, 0);
+                       print_sigset_addr_len(tcp, tcp->u_arg[0], current_wordsize);
        }
        return 0;
 }
@@ -1159,30 +1107,18 @@ sys_sigpending(struct tcb *tcp)
 int
 sys_rt_sigprocmask(struct tcb *tcp)
 {
-       sigset_t sigset;
-
-       /* Note: arg[3] is the length of the sigset. */
+       /* Note: arg[3] is the length of the sigset. Kernel requires NSIG / 8 */
        if (entering(tcp)) {
                printxval(sigprocmaskcmds, tcp->u_arg[0], "SIG_???");
                tprints(", ");
-               if (!tcp->u_arg[1])
-                       tprints("NULL, ");
-               else if (copy_sigset_len(tcp, tcp->u_arg[1], &sigset, tcp->u_arg[3]) < 0)
-                       tprintf("%#lx, ", tcp->u_arg[1]);
-               else {
-                       printsigmask(&sigset, 1);
-                       tprints(", ");
-               }
+               print_sigset_addr_len(tcp, tcp->u_arg[1], tcp->u_arg[3]);
+               tprints(", ");
        }
        else {
-               if (!tcp->u_arg[2])
-                       tprints("NULL");
-               else if (syserror(tcp))
+               if (syserror(tcp))
                        tprintf("%#lx", tcp->u_arg[2]);
-               else if (copy_sigset_len(tcp, tcp->u_arg[2], &sigset, tcp->u_arg[3]) < 0)
-                       tprints("[?]");
                else
-                       printsigmask(&sigset, 1);
+                       print_sigset_addr_len(tcp, tcp->u_arg[2], tcp->u_arg[3]);
                tprintf(", %lu", tcp->u_arg[3]);
        }
        return 0;
@@ -1192,9 +1128,16 @@ sys_rt_sigprocmask(struct tcb *tcp)
 struct new_sigaction
 {
        /* sa_handler may be a libc #define, need to use other name: */
+#ifdef MIPS
+       unsigned int sa_flags;
+       void (*__sa_handler)(int);
+#else
        void (*__sa_handler)(int);
        unsigned long sa_flags;
+# if !defined(ALPHA) && !defined(HPPA) && !defined(IA64)
        void (*sa_restorer)(void);
+# endif /* !ALPHA && !HPPA && !IA64 */
+#endif /* !MIPS */
        /* Kernel treats sa_mask as an array of longs. */
        unsigned long sa_mask[NSIG / sizeof(long) ? NSIG / sizeof(long) : 1];
 };
@@ -1207,28 +1150,19 @@ struct new_sigaction32
        uint32_t sa_mask[2 * (NSIG / sizeof(long) ? NSIG / sizeof(long) : 1)];
 };
 
-int
-sys_rt_sigaction(struct tcb *tcp)
+static void
+decode_new_sigaction(struct tcb *tcp, long addr)
 {
        struct new_sigaction sa;
-       sigset_t sigset;
-       long addr;
        int r;
 
-       if (entering(tcp)) {
-               printsignal(tcp->u_arg[0]);
-               tprints(", ");
-               addr = tcp->u_arg[1];
-       } else
-               addr = tcp->u_arg[2];
-
-       if (addr == 0) {
+       if (!addr) {
                tprints("NULL");
-               goto after_sa;
+               return;
        }
-       if (!verbose(tcp)) {
+       if (!verbose(tcp) || (exiting(tcp) && syserror(tcp))) {
                tprintf("%#lx", addr);
-               goto after_sa;
+               return;
        }
 #if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
        if (current_wordsize != sizeof(sa.sa_flags) && current_wordsize == 4) {
@@ -1256,7 +1190,7 @@ sys_rt_sigaction(struct tcb *tcp)
        }
        if (r < 0) {
                tprints("{...}");
-               goto after_sa;
+               return;
        }
        /* Architectures using function pointers, like
         * hppa, may need to manipulate the function pointer
@@ -1274,34 +1208,34 @@ sys_rt_sigaction(struct tcb *tcp)
                tprints("{SIG_IGN, ");
        else
                tprintf("{%#lx, ", (long) sa.__sa_handler);
-       /* Questionable code below.
-        * Kernel won't handle sys_rt_sigaction
-        * with wrong sigset size (just returns EINVAL)
-        * therefore tcp->u_arg[3(4)] _must_ be NSIG / 8 here,
-        * and we always use smaller memcpy. */
-       sigemptyset(&sigset);
-#if defined(SPARC) || defined(SPARC64)
-       if (tcp->u_arg[4] <= sizeof(sigset))
-               memcpy(&sigset, &sa.sa_mask, tcp->u_arg[4]);
-#else
-       if (tcp->u_arg[3] <= sizeof(sigset))
-               memcpy(&sigset, &sa.sa_mask, tcp->u_arg[3]);
-#endif
-       else
-               memcpy(&sigset, &sa.sa_mask, sizeof(sigset));
-       printsigmask(&sigset, 1);
+       /*
+        * Sigset size is in tcp->u_arg[4] (SPARC)
+        * or in tcp->u_arg[3] (all other),
+        * but kernel won't handle sys_rt_sigaction
+        * with wrong sigset size (just returns EINVAL instead).
+        * We just fetch the right size, which is NSIG / 8.
+        */
+       tprintsigmask_val("", sa.sa_mask);
        tprints(", ");
+
        printflags(sigact_flags, sa.sa_flags, "SA_???");
 #ifdef SA_RESTORER
        if (sa.sa_flags & SA_RESTORER)
                tprintf(", %p", sa.sa_restorer);
 #endif
        tprints("}");
+}
 
- after_sa:
-       if (entering(tcp))
+int
+sys_rt_sigaction(struct tcb *tcp)
+{
+       if (entering(tcp)) {
+               printsignal(tcp->u_arg[0]);
                tprints(", ");
-       else
+               decode_new_sigaction(tcp, tcp->u_arg[1]);
+               tprints(", ");
+       } else {
+               decode_new_sigaction(tcp, tcp->u_arg[2]);
 #if defined(SPARC) || defined(SPARC64)
                tprintf(", %#lx, %lu", tcp->u_arg[3], tcp->u_arg[4]);
 #elif defined(ALPHA)
@@ -1309,22 +1243,25 @@ sys_rt_sigaction(struct tcb *tcp)
 #else
                tprintf(", %lu", tcp->u_arg[3]);
 #endif
+       }
        return 0;
 }
 
 int
 sys_rt_sigpending(struct tcb *tcp)
 {
-       sigset_t sigset;
-
        if (exiting(tcp)) {
+               /*
+                * One of the few syscalls where sigset size (arg[1])
+                * is allowed to be <= NSIG / 8, not strictly ==.
+                * This allows non-rt sigpending() syscall
+                * to reuse rt_sigpending() code in kernel.
+                */
                if (syserror(tcp))
                        tprintf("%#lx", tcp->u_arg[0]);
-               else if (copy_sigset_len(tcp, tcp->u_arg[0],
-                                        &sigset, tcp->u_arg[1]) < 0)
-                       tprints("[?]");
                else
-                       printsigmask(&sigset, 1);
+                       print_sigset_addr_len(tcp, tcp->u_arg[0], tcp->u_arg[1]);
+               tprintf(", %lu", tcp->u_arg[1]);
        }
        return 0;
 }
@@ -1333,11 +1270,9 @@ int
 sys_rt_sigsuspend(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               sigset_t sigm;
-               if (copy_sigset_len(tcp, tcp->u_arg[0], &sigm, tcp->u_arg[1]) < 0)
-                       tprints("[?]");
-               else
-                       printsigmask(&sigm, 1);
+               /* NB: kernel requires arg[1] == NSIG / 8 */
+               print_sigset_addr_len(tcp, tcp->u_arg[0], tcp->u_arg[1]);
+               tprintf(", %lu", tcp->u_arg[1]);
        }
        return 0;
 }
@@ -1372,14 +1307,9 @@ sys_rt_tgsigqueueinfo(struct tcb *tcp)
 
 int sys_rt_sigtimedwait(struct tcb *tcp)
 {
+       /* NB: kernel requires arg[3] == NSIG / 8 */
        if (entering(tcp)) {
-               sigset_t sigset;
-
-               if (copy_sigset_len(tcp, tcp->u_arg[0],
-                                   &sigset, tcp->u_arg[3]) < 0)
-                       tprints("[?]");
-               else
-                       printsigmask(&sigset, 1);
+               print_sigset_addr_len(tcp, tcp->u_arg[0], tcp->u_arg[3]);
                tprints(", ");
                /* This is the only "return" parameter, */
                if (tcp->u_arg[1] != 0)
@@ -1397,7 +1327,7 @@ int sys_rt_sigtimedwait(struct tcb *tcp)
                return 0;
        }
        print_timespec(tcp, tcp->u_arg[2]);
-       tprintf(", %d", (int) tcp->u_arg[3]);
+       tprintf(", %lu", tcp->u_arg[3]);
        return 0;
 };
 
@@ -1412,10 +1342,11 @@ sys_restart_syscall(struct tcb *tcp)
 static int
 do_signalfd(struct tcb *tcp, int flags_arg)
 {
+       /* NB: kernel requires arg[2] == NSIG / 8 */
        if (entering(tcp)) {
                printfd(tcp, tcp->u_arg[0]);
                tprints(", ");
-               print_sigset(tcp, tcp->u_arg[1], 1);
+               print_sigset_addr_len(tcp, tcp->u_arg[1], tcp->u_arg[2]);
                tprintf(", %lu", tcp->u_arg[2]);
                if (flags_arg >= 0) {
                        tprints(", ");
diff --git a/sock.c b/sock.c
index 9c6fe96..d3a5b35 100644 (file)
--- a/sock.c
+++ b/sock.c
 #endif
 #include <net/if.h>
 
-static const struct xlat iffflags[] = {
-       { IFF_UP,               "IFF_UP"                },
-       { IFF_BROADCAST,        "IFF_BROADCAST"         },
-       { IFF_DEBUG,            "IFF_DEBUG"             },
-       { IFF_LOOPBACK,         "IFF_LOOPBACK"          },
-       { IFF_POINTOPOINT,      "IFF_POINTOPOINT"       },
-       { IFF_NOTRAILERS,       "IFF_NOTRAILERS"        },
-       { IFF_RUNNING,          "IFF_RUNNING"           },
-       { IFF_NOARP,            "IFF_NOARP"             },
-       { IFF_PROMISC,          "IFF_PROMISC"           },
-       { IFF_ALLMULTI,         "IFF_ALLMULTI"          },
-       { IFF_MASTER,           "IFF_MASTER"            },
-       { IFF_SLAVE,            "IFF_SLAVE"             },
-       { IFF_MULTICAST,        "IFF_MULTICAST"         },
-       { IFF_PORTSEL,          "IFF_PORTSEL"           },
-       { IFF_AUTOMEDIA,        "IFF_AUTOMEDIA"         },
-       { 0,                    NULL                    }
-};
+#include "xlat/iffflags.h"
 
 static void
 print_addr(struct tcb *tcp, long addr, struct ifreq *ifr)
index 5f287d7..2a24c38 100644 (file)
--- a/strace.1
+++ b/strace.1
 .fi
 .sp
 ..
+.\" Macro IX is not defined in the groff macros
+.if \n(.g \{\
+.  de IX
+..
+.\}
 .TH STRACE 1 "2010-03-30"
 .SH NAME
 strace \- trace system calls and signals
 .SH SYNOPSIS
 .B strace
-[\fB-CdffhiqrtttTvVxxy\fR]
+[\fB-CdffhikqrtttTvVxxy\fR]
 [\fB-I\fIn\fR]
 [\fB-b\fIexecve\fR]
 [\fB-e\fIexpr\fR]...
@@ -92,20 +97,20 @@ attempting to capture race conditions.
 .LP
 Each line in the trace contains the system call name, followed
 by its arguments in parentheses and its return value.
-An example from stracing the command ``cat /dev/null'' is:
+An example from stracing the command "cat /dev/null" is:
 .CW
 open("/dev/null", O_RDONLY) = 3
 .CE
 Errors (typically a return value of \-1) have the errno symbol
 and error string appended.
 .CW
-open("/foo/bar", O_RDONLY) = -1 ENOENT (No such file or directory)
+open("/foo/bar", O_RDONLY) = \-1 ENOENT (No such file or directory)
 .CE
-Signals are printed as a signal symbol and a signal string.
-An excerpt from stracing and interrupting the command ``sleep 666'' is:
+Signals are printed as signal symbol and decoded siginfo structure.
+An excerpt from stracing and interrupting the command "sleep 666" is:
 .CW
 sigsuspend([] <unfinished ...>
---- SIGINT (Interrupt) ---
+--- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=...} ---
 +++ killed by SIGINT +++
 .CE
 If a system call is being executed and meanwhile another one is being called
@@ -126,12 +131,12 @@ differently as kernel terminates the system call and also arranges its
 immediate reexecution after the signal handler completes.
 .CW
 read(0, 0x7ffff72cf5cf, 1)              = ? ERESTARTSYS (To be restarted)
---- SIGALRM (Alarm clock) @ 0 (0) ---
+--- SIGALRM ... ---
 rt_sigreturn(0xe)                       = 0
-read(0, ""..., 1)                       = 0
+read(0, "", 1)                          = 0
 .CE
 Arguments are printed in symbolic form with a passion.
-This example shows the shell performing ``>>xyzzy'' output redirection:
+This example shows the shell performing ">>xyzzy" output redirection:
 .CW
 open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
 .CE
@@ -146,20 +151,20 @@ output has proven to be more readable than the source.
 Structure pointers are dereferenced and the members are displayed
 as appropriate.  In all cases arguments are formatted in the most C-like
 fashion possible.
-For example, the essence of the command ``ls \-l /dev/null'' is captured as:
+For example, the essence of the command "ls \-l /dev/null" is captured as:
 .CW
 lstat("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
 .CE
-Notice how the `struct stat' argument is dereferenced and how each member is
+Notice how the 'struct stat' argument is dereferenced and how each member is
 displayed symbolically.  In particular, observe how the st_mode member
 is carefully decoded into a bitwise-OR of symbolic and numeric values.
 Also notice in this example that the first argument to lstat is an input
 to the system call and the second argument is an output.  Since output
 arguments are not modified if the system call fails, arguments may not
-always be dereferenced.  For example, retrying the ``ls \-l'' example
+always be dereferenced.  For example, retrying the "ls \-l" example
 with a non-existent file produces the following line:
 .CW
-lstat("/foo/bar", 0xb004) = -1 ENOENT (No such file or directory)
+lstat("/foo/bar", 0xb004) = \-1 ENOENT (No such file or directory)
 .CE
 In this case the porch light is on but nobody is home.
 .LP
@@ -170,7 +175,7 @@ Only the first
 .I strsize
 (32 by default) bytes of strings are printed;
 longer strings have an ellipsis appended following the closing quote.
-Here is a line from ``ls \-l'' where the
+Here is a line from "ls \-l" where the
 .B getpwuid
 library routine is reading the password file:
 .CW
@@ -178,7 +183,7 @@ read(3, "root::0:0:System Administrator:/"..., 1024) = 422
 .CE
 While structures are annotated using curly braces, simple pointers
 and arrays are printed using square brackets with commas separating
-elements.  Here is an example from the command ``id'' on a system with
+elements.  Here is an example from the command "id" on a system with
 supplementary group ids:
 .CW
 getgroups(32, [100, 0]) = 2
@@ -234,7 +239,7 @@ processes as a result of the
 .BR vfork (2)
 and
 .BR clone (2)
-system calls. Note that
+system calls.  Note that
 .B \-p
 .I PID
 .B \-f
@@ -262,6 +267,9 @@ Print the help summary.
 .B \-i
 Print the instruction pointer at the time of the system call.
 .TP
+.B \-k
+Print the execution stack trace of the traced processes after each system call (experimental).
+.TP
 .B \-q
 Suppress messages about attaching, detaching etc.  This happens
 automatically when output is redirected to a file and the command
@@ -287,9 +295,13 @@ 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
+Show the time spent in system calls.  This records the time
 difference between the beginning and the end of each system call.
 .TP
+.B \-w
+Summarise the time difference between the beginning and end of
+each system call.  The default is to summarise the system time.
+.TP
 .B \-v
 Print unabbreviated versions of environment, stat, termios, etc.
 calls.  These structures are very common in calls and so the default
@@ -316,7 +328,7 @@ Align return values in a specific column (default column 40).
 If specified syscall is reached, detach from traced process.
 Currently, only
 .I execve
-syscall is supported. This option is useful if you want to trace
+syscall is supported.  This option is useful if you want to trace
 multi-threaded process and therefore require -f, but don't want
 to trace its (potentially very complex) children.
 .TP
@@ -325,7 +337,7 @@ 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]\fIvalue1\fR[\fB,\fIvalue2\fR]...
+[\,\fIqualifier\/\fB=\fR][\fB!\fR]\,\fIvalue1\/\fR[\fB,\,\fIvalue2\/\fR]...
 .RE
 .IP
 where
@@ -364,7 +376,7 @@ 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.
 .TP
-\fB\-e\ trace\fR=\fIset\fR
+\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
@@ -405,7 +417,7 @@ Trace all file descriptor related system calls.
 .BR "\-e\ trace" = memory
 Trace all memory mapping related system calls.
 .TP
-\fB\-e\ abbrev\fR=\fIset\fR
+\fB\-e\ abbrev\fR=\,\fIset\fR
 Abbreviate the output from printing each member of large structures.
 The default is
 .BR abbrev = all .
@@ -414,19 +426,19 @@ The
 option has the effect of
 .BR abbrev = none .
 .TP
-\fB\-e\ verbose\fR=\fIset\fR
+\fB\-e\ verbose\fR=\,\fIset\fR
 Dereference structures for the specified set of system calls.  The
 default is
 .BR verbose = all .
 .TP
-\fB\-e\ raw\fR=\fIset\fR
+\fB\-e\ raw\fR=\,\fIset\fR
 Print raw, undecoded arguments for the specified set of system calls.
 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
 argument.
 .TP
-\fB\-e\ signal\fR=\fIset\fR
+\fB\-e\ signal\fR=\,\fIset\fR
 Trace only the specified subset of signals.  The default is
 .BR signal = all .
 For example,
@@ -435,7 +447,7 @@ For example,
 .BR signal "=!" io )
 causes SIGIO signals not to be traced.
 .TP
-\fB\-e\ read\fR=\fIset\fR
+\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
@@ -443,13 +455,13 @@ all input activity on file descriptors
 and
 .I 5
 use
-\fB\-e\ read\fR=\fI3\fR,\fI5\fR.
+\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
+\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
@@ -457,7 +469,7 @@ all output activity on file descriptors
 and
 .I 5
 use
-\fB\-e\ write\fR=\fI3\fR,\fI5\fR.
+\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
@@ -479,7 +491,7 @@ Use
 if
 .B \-ff
 is used.
-If the argument begins with `|' or with `!' then the rest of the
+If the argument begins with '|' or with '!' then 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.
@@ -548,7 +560,7 @@ correct execution of setuid and/or setgid binaries.
 Unless this option is used setuid and setgid programs are executed
 without effective privileges.
 .TP
-\fB\-E\ \fIvar\fR=\fIval\fR
+\fB\-E\ \fIvar\fR=\,\fIval\fR
 Run command with
 .IR var = val
 in its list of environment variables.
@@ -571,6 +583,11 @@ is terminated by a signal,
 terminates itself with the same signal, so that
 .B strace
 can be used as a wrapper process transparent to the invoking parent process.
+Note that parent-child relationship (signal stop notifications,
+getppid() value, etc) between traced process and its parent are not preserved
+unless
+.B \-D
+is used.
 .LP
 When using
 .BR \-p ,
@@ -592,7 +609,7 @@ as setuid to root when the users who can execute it are restricted
 to those users who have this trust.
 For example, it makes sense to install a special version of
 .B strace
-with mode `rwsr-xr--', user
+with mode 'rwsr-xr--', user
 .B root
 and group
 .BR trace ,
@@ -631,12 +648,13 @@ discrepancies are normal but idiosyncratic characteristics of the
 system call interface and are accounted for by C library wrapper
 functions.
 .LP
-On some platforms a process that has a system call trace applied
-to it with the
+On some platforms a process that is attached to with the
 .B \-p
-option will receive a
-.BR \s-1SIGSTOP\s0 .
-This signal may interrupt a system call that is not restartable.
+option may observe a spurious EINTR return from the current
+system call that is not restartable.  (Ideally, all system calls
+should be restarted on strace attach, making the attach invisible
+to the traced process, but a few system calls aren't.
+Arguably, every instance of such behavior is a kernel bug.)
 This may have an unpredictable effect on the process
 if the process takes no action to restart the system call.
 .SH BUGS
@@ -658,7 +676,6 @@ The
 .B \-i
 option is weakly supported.
 .SH HISTORY
-.B strace
 The original
 .B strace
 was written by Paul Kranenburg
index 6eab600..2bc5c67 100644 (file)
--- a/strace.c
+++ b/strace.c
@@ -50,6 +50,10 @@ extern char **environ;
 extern int optind;
 extern char *optarg;
 
+#ifdef USE_LIBUNWIND
+/* if this is true do the stack trace for every system call */
+bool stack_trace_enabled = false;
+#endif
 
 #if defined __NR_tkill
 # define my_tkill(tid, sig) syscall(__NR_tkill, (tid), (sig))
@@ -77,11 +81,12 @@ unsigned int xflag = 0;
 bool need_fork_exec_workarounds = 0;
 bool debug_flag = 0;
 bool Tflag = 0;
+bool iflag = 0;
+bool count_wallclock = 0;
 unsigned int qflag = 0;
 /* Which WSTOPSIG(status) value marks syscall traps? */
 static unsigned int syscall_trap_sig = SIGTRAP;
 static unsigned int tflag = 0;
-static bool iflag = 0;
 static bool rflag = 0;
 static bool print_pid_pfx = 0;
 
@@ -124,7 +129,7 @@ static int post_attach_sigstop = TCB_IGNORE_ONE_SIGSTOP;
 bool not_failing_only = 0;
 
 /* Show path associated with fd arguments */
-bool show_fd_path = 0;
+unsigned int show_fd_path = 0;
 
 static bool detach_on_execve = 0;
 /* Are we "strace PROG" and need to skip detach on first execve? */
@@ -157,8 +162,7 @@ static const char *progname;
 
 unsigned os_release; /* generated from uname()'s u.release */
 
-static int detach(struct tcb *tcp);
-static int trace(void);
+static void detach(struct tcb *tcp);
 static void cleanup(void);
 static void interrupt(int sig);
 static sigset_t empty_set, blocked_set;
@@ -201,6 +205,7 @@ usage: strace [-CdffhiqrtttTvVxxy] [-I n] [-e expr]...\n\
               -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]\n\
 -c -- count time, calls, and errors for each syscall and report summary\n\
 -C -- like -c but also print regular output\n\
+-w -- summarise syscall latency (default is system time)\n\
 -d -- enable debug output to stderr\n\
 -D -- run tracer process as a detached grandchild, not as parent\n\
 -f -- follow forks, -ff -- with output into separate files\n\
@@ -232,6 +237,10 @@ usage: strace [-CdffhiqrtttTvVxxy] [-I n] [-e expr]...\n\
 -E var -- remove var from the environment for command\n\
 -P path -- trace accesses to path\n\
 "
+#ifdef USE_LIBUNWIND
+"-k obtain stack trace between each syscall (experimental)\n\
+"
+#endif
 /* ancient, no one should use it
 -F -- attempt to follow vforks (deprecated, use -f)\n\
  */
@@ -336,11 +345,11 @@ ptrace_attach_or_seize(int pid)
 {
        int r;
        if (!use_seize)
-               return ptrace(PTRACE_ATTACH, pid, 0, 0);
-       r = ptrace(PTRACE_SEIZE, pid, 0, 0);
+               return ptrace(PTRACE_ATTACH, pid, 0L, 0L);
+       r = ptrace(PTRACE_SEIZE, pid, 0L, (unsigned long)ptrace_setoptions);
        if (r)
                return r;
-       r = ptrace(PTRACE_INTERRUPT, pid, 0, 0);
+       r = ptrace(PTRACE_INTERRUPT, pid, 0L, 0L);
        return r;
 }
 #else
@@ -439,8 +448,12 @@ swap_uid(void)
        }
 }
 
-#if _LFS64_LARGEFILE
-# define fopen_for_output fopen64
+#ifdef _LARGEFILE64_SOURCE
+# ifdef HAVE_FOPEN64
+#  define fopen_for_output fopen64
+# else
+#  define fopen_for_output fopen
+# endif
 # define struct_stat struct stat64
 # define stat_file stat64
 # define struct_dirent struct dirent64
@@ -486,6 +499,7 @@ static FILE *
 strace_popen(const char *command)
 {
        FILE *fp;
+       int pid;
        int fds[2];
 
        swap_uid();
@@ -494,11 +508,11 @@ strace_popen(const char *command)
 
        set_cloexec_flag(fds[1]); /* never fails */
 
-       popen_pid = vfork();
-       if (popen_pid == -1)
+       pid = vfork();
+       if (pid < 0)
                perror_msg_and_die("vfork");
 
-       if (popen_pid == 0) {
+       if (pid == 0) {
                /* child */
                close(fds[1]);
                if (fds[0] != 0) {
@@ -511,6 +525,7 @@ strace_popen(const char *command)
        }
 
        /* parent */
+       popen_pid = pid;
        close(fds[0]);
        swap_uid();
        fp = fdopen(fds[1], "w");
@@ -536,6 +551,10 @@ tprintf(const char *fmt, ...)
        va_end(args);
 }
 
+#ifndef HAVE_FPUTS_UNLOCKED
+# define fputs_unlocked fputs
+#endif
+
 void
 tprints(const char *str)
 {
@@ -623,7 +642,7 @@ printleader(struct tcb *tcp)
                }
        }
        if (iflag)
-               printcall(tcp);
+               print_pc(tcp);
 }
 
 void
@@ -678,13 +697,18 @@ alloctcb(int pid)
 
        for (i = 0; i < tcbtabsize; i++) {
                tcp = tcbtab[i];
-               if ((tcp->flags & TCB_INUSE) == 0) {
+               if (!tcp->pid) {
                        memset(tcp, 0, sizeof(*tcp));
                        tcp->pid = pid;
-                       tcp->flags = TCB_INUSE;
 #if SUPPORTED_PERSONALITIES > 1
                        tcp->currpers = current_personality;
 #endif
+
+#ifdef USE_LIBUNWIND
+                       if (stack_trace_enabled)
+                               unwind_tcb_init(tcp);
+#endif
+
                        nprocs++;
                        if (debug_flag)
                                fprintf(stderr, "new tcb for pid %d, active tcbs:%d\n", tcp->pid, nprocs);
@@ -700,6 +724,12 @@ droptcb(struct tcb *tcp)
        if (tcp->pid == 0)
                return;
 
+#ifdef USE_LIBUNWIND
+       if (stack_trace_enabled) {
+               unwind_tcb_fin(tcp);
+       }
+#endif
+
        nprocs--;
        if (debug_flag)
                fprintf(stderr, "dropped tcb for pid %d, %d remain\n", tcp->pid, nprocs);
@@ -724,16 +754,16 @@ droptcb(struct tcb *tcp)
        memset(tcp, 0, sizeof(*tcp));
 }
 
-/* detach traced process; continue with sig
+/* Detach traced process.
  * Never call DETACH twice on the same process as both unattached and
  * attached-unstopped processes give the same ESRCH.  For unattached process we
  * would SIGSTOP it and wait for its SIGSTOP notification forever.
  */
-static int
+static void
 detach(struct tcb *tcp)
 {
        int error;
-       int status, sigstop_expected;
+       int status;
 
        if (tcp->flags & TCB_BPTSET)
                clearbpt(tcp);
@@ -748,86 +778,149 @@ detach(struct tcb *tcp)
 # define PTRACE_DETACH PTRACE_SUNDETACH
 #endif
 
-       error = 0;
-       sigstop_expected = 0;
-       if (tcp->flags & TCB_ATTACHED) {
+       if (!(tcp->flags & TCB_ATTACHED))
+               goto drop;
+
+       /* We attached but possibly didn't see the expected SIGSTOP.
+        * We must catch exactly one as otherwise the detached process
+        * would be left stopped (process state T).
+        */
+       if (tcp->flags & TCB_IGNORE_ONE_SIGSTOP)
+               goto wait_loop;
+
+       error = ptrace(PTRACE_DETACH, tcp->pid, 0, 0);
+       if (!error) {
+               /* On a clear day, you can see forever. */
+               goto drop;
+       }
+       if (errno != ESRCH) {
+               /* Shouldn't happen. */
+               perror_msg("detach: ptrace(PTRACE_DETACH,%u)", tcp->pid);
+               goto drop;
+       }
+       /* ESRCH: process is either not stopped or doesn't exist. */
+       if (my_tkill(tcp->pid, 0) < 0) {
+               if (errno != ESRCH)
+                       /* Shouldn't happen. */
+                       perror_msg("detach: tkill(%u,0)", tcp->pid);
+               /* else: process doesn't exist. */
+               goto drop;
+       }
+       /* Process is not stopped, need to stop it. */
+       if (use_seize) {
                /*
-                * We attached but possibly didn't see the expected SIGSTOP.
-                * We must catch exactly one as otherwise the detached process
-                * would be left stopped (process state T).
+                * With SEIZE, tracee can be in group-stop already.
+                * In this state sending it another SIGSTOP does nothing.
+                * Need to use INTERRUPT.
+                * Testcase: trying to ^C a "strace -p <stopped_process>".
                 */
-               sigstop_expected = (tcp->flags & TCB_IGNORE_ONE_SIGSTOP);
-               error = ptrace(PTRACE_DETACH, tcp->pid, (char *) 1, 0);
-               if (error == 0) {
-                       /* On a clear day, you can see forever. */
+               error = ptrace(PTRACE_INTERRUPT, tcp->pid, 0, 0);
+               if (!error)
+                       goto wait_loop;
+               if (errno != ESRCH)
+                       perror_msg("detach: ptrace(PTRACE_INTERRUPT,%u)", tcp->pid);
+       }
+       else {
+               error = my_tkill(tcp->pid, SIGSTOP);
+               if (!error)
+                       goto wait_loop;
+               if (errno != ESRCH)
+                       perror_msg("detach: tkill(%u,SIGSTOP)", tcp->pid);
+       }
+       /* Either process doesn't exist, or some weird error. */
+       goto drop;
+
+ wait_loop:
+       /* We end up here in three cases:
+        * 1. We sent PTRACE_INTERRUPT (use_seize case)
+        * 2. We sent SIGSTOP (!use_seize)
+        * 3. Attach SIGSTOP was already pending (TCB_IGNORE_ONE_SIGSTOP set)
+        */
+       for (;;) {
+               int sig;
+               if (waitpid(tcp->pid, &status, __WALL) < 0) {
+                       if (errno == EINTR)
+                               continue;
+                       /*
+                        * if (errno == ECHILD) break;
+                        * ^^^  WRONG! We expect this PID to exist,
+                        * and want to emit a message otherwise:
+                        */
+                       perror_msg("detach: waitpid(%u)", tcp->pid);
+                       break;
                }
-               else if (errno != ESRCH) {
-                       /* Shouldn't happen. */
-                       perror_msg("detach: ptrace(PTRACE_DETACH, ...)");
+               if (!WIFSTOPPED(status)) {
+                       /*
+                        * Tracee exited or was killed by signal.
+                        * We shouldn't normally reach this place:
+                        * we don't want to consume exit status.
+                        * Consider "strace -p PID" being ^C-ed:
+                        * we want merely to detach from PID.
+                        *
+                        * However, we _can_ end up here if tracee
+                        * was SIGKILLed.
+                        */
+                       break;
                }
-               else if (my_tkill(tcp->pid, 0) < 0) {
-                       if (errno != ESRCH)
-                               perror_msg("detach: checking sanity");
+               sig = WSTOPSIG(status);
+               if (debug_flag)
+                       fprintf(stderr, "detach wait: event:%d sig:%d\n",
+                                       (unsigned)status >> 16, sig);
+               if (use_seize) {
+                       unsigned event = (unsigned)status >> 16;
+                       if (event == PTRACE_EVENT_STOP /*&& sig == SIGTRAP*/) {
+                               /*
+                                * sig == SIGTRAP: PTRACE_INTERRUPT stop.
+                                * sig == other: process was already stopped
+                                * with this stopping sig (see tests/detach-stopped).
+                                * Looks like re-injecting this sig is not necessary
+                                * in DETACH for the tracee to remain stopped.
+                                */
+                               sig = 0;
+                       }
+                       /*
+                        * PTRACE_INTERRUPT is not guaranteed to produce
+                        * the above event if other ptrace-stop is pending.
+                        * See tests/detach-sleeping testcase:
+                        * strace got SIGINT while tracee is sleeping.
+                        * We sent PTRACE_INTERRUPT.
+                        * We see syscall exit, not PTRACE_INTERRUPT stop.
+                        * We won't get PTRACE_INTERRUPT stop
+                        * if we would CONT now. Need to DETACH.
+                        */
+                       if (sig == syscall_trap_sig)
+                               sig = 0;
+                       /* else: not sure in which case we can be here.
+                        * Signal stop? Inject it while detaching.
+                        */
+                       ptrace_restart(PTRACE_DETACH, tcp, sig);
+                       break;
                }
-               else if (!sigstop_expected && my_tkill(tcp->pid, SIGSTOP) < 0) {
-                       if (errno != ESRCH)
-                               perror_msg("detach: stopping child");
+               /* Note: this check has to be after use_seize check */
+               /* (else, in use_seize case SIGSTOP will be mistreated) */
+               if (sig == SIGSTOP) {
+                       /* Detach, suppressing SIGSTOP */
+                       ptrace_restart(PTRACE_DETACH, tcp, 0);
+                       break;
                }
-               else
-                       sigstop_expected = 1;
-       }
-
-       if (sigstop_expected) {
-               for (;;) {
-#ifdef __WALL
-                       if (waitpid(tcp->pid, &status, __WALL) < 0) {
-                               if (errno == ECHILD) /* Already gone.  */
-                                       break;
-                               if (errno != EINVAL) {
-                                       perror_msg("detach: waiting");
-                                       break;
-                               }
-#endif /* __WALL */
-                               /* No __WALL here.  */
-                               if (waitpid(tcp->pid, &status, 0) < 0) {
-                                       if (errno != ECHILD) {
-                                               perror_msg("detach: waiting");
-                                               break;
-                                       }
-#ifdef __WCLONE
-                                       /* If no processes, try clones.  */
-                                       if (waitpid(tcp->pid, &status, __WCLONE) < 0) {
-                                               if (errno != ECHILD)
-                                                       perror_msg("detach: waiting");
-                                               break;
-                                       }
-#endif /* __WCLONE */
-                               }
-#ifdef __WALL
-                       }
-#endif
-                       if (!WIFSTOPPED(status)) {
-                               /* Au revoir, mon ami. */
-                               break;
-                       }
-                       if (WSTOPSIG(status) == SIGSTOP) {
-                               ptrace_restart(PTRACE_DETACH, tcp, 0);
-                               break;
-                       }
-                       error = ptrace_restart(PTRACE_CONT, tcp,
-                                       WSTOPSIG(status) == syscall_trap_sig ? 0
-                                       : WSTOPSIG(status));
-                       if (error < 0)
-                               break;
+               if (sig == syscall_trap_sig)
+                       sig = 0;
+               /* Can't detach just yet, may need to wait for SIGSTOP */
+               error = ptrace_restart(PTRACE_CONT, tcp, sig);
+               if (error < 0) {
+                       /* Should not happen.
+                        * Note: ptrace_restart returns 0 on ESRCH, so it's not it.
+                        * ptrace_restart already emitted error message.
+                        */
+                       break;
                }
        }
 
+ drop:
        if (!qflag && (tcp->flags & TCB_ATTACHED))
                fprintf(stderr, "Process %u detached\n", tcp->pid);
 
        droptcb(tcp);
-
-       return error;
 }
 
 static void
@@ -896,7 +989,7 @@ startup_attach(void)
        for (tcbi = 0; tcbi < tcbtabsize; tcbi++) {
                tcp = tcbtab[tcbi];
 
-               if (!(tcp->flags & TCB_INUSE))
+               if (!tcp->pid)
                        continue;
 
                /* Is this a process we should attach to, but not yet attached? */
@@ -1142,7 +1235,7 @@ startup_child(char **argv)
                prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
 #endif
 
-       strace_child = pid = fork();
+       pid = fork();
        if (pid < 0) {
                perror_msg_and_die("fork");
        }
@@ -1159,6 +1252,7 @@ startup_child(char **argv)
        /* We are the tracer */
 
        if (!daemonized_tracer) {
+               strace_child = pid;
                if (!use_seize) {
                        /* child did PTRACE_TRACEME, nothing to do in parent */
                } else {
@@ -1189,9 +1283,9 @@ startup_child(char **argv)
                }
                tcp = alloctcb(pid);
                if (!NOMMU_SYSTEM)
-                       tcp->flags |= TCB_ATTACHED | TCB_STRACE_CHILD | TCB_STARTUP | post_attach_sigstop;
+                       tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
                else
-                       tcp->flags |= TCB_ATTACHED | TCB_STRACE_CHILD | TCB_STARTUP;
+                       tcp->flags |= TCB_ATTACHED | TCB_STARTUP;
                newoutf(tcp);
        }
        else {
@@ -1343,12 +1437,13 @@ test_ptrace_setoptions_followfork(void)
  *
  * Use of this option enables correct handling of user-generated SIGTRAPs,
  * and SIGTRAPs generated by special instructions such as int3 on x86:
- * _start:     .globl  _start
- *             int3
- *             movl    $42, %ebx
- *             movl    $1, %eax
- *             int     $0x80
- * (compile with: "gcc -nostartfiles -nostdlib -o int3 int3.S")
+
+# compile with: gcc -nostartfiles -nostdlib -o int3 int3.S
+_start:                .globl  _start
+               int3
+               movl    $42, %ebx
+               movl    $1, %eax
+               int     $0x80
  */
 static int
 test_ptrace_setoptions_for_all(void)
@@ -1577,7 +1672,10 @@ init(int argc, char *argv[])
 #endif
        qualify("signal=all");
        while ((c = getopt(argc, argv,
-               "+b:cCdfFhiqrtTvVxyz"
+               "+b:cCdfFhiqrtTvVwxyz"
+#ifdef USE_LIBUNWIND
+               "k"
+#endif
                "D"
                "a:e:o:O:p:s:S:u:E:P:I:")) != EOF) {
                switch (c) {
@@ -1629,11 +1727,14 @@ init(int argc, char *argv[])
                case 'T':
                        Tflag = 1;
                        break;
+               case 'w':
+                       count_wallclock = 1;
+                       break;
                case 'x':
                        xflag++;
                        break;
                case 'y':
-                       show_fd_path = 1;
+                       show_fd_path++;
                        break;
                case 'v':
                        qualify("abbrev=none");
@@ -1680,6 +1781,11 @@ init(int argc, char *argv[])
                case 'u':
                        username = strdup(optarg);
                        break;
+#ifdef USE_LIBUNWIND
+               case 'k':
+                       stack_trace_enabled = true;
+                       break;
+#endif
                case 'E':
                        if (putenv(optarg) < 0)
                                die_out_of_memory();
@@ -1718,6 +1824,32 @@ init(int argc, char *argv[])
                error_msg_and_die("(-c or -C) and -ff are mutually exclusive");
        }
 
+       if (count_wallclock && !cflag) {
+               error_msg_and_die("-w must be given with (-c or -C)");
+       }
+
+       if (cflag == CFLAG_ONLY_STATS) {
+               if (iflag)
+                       error_msg("-%c has no effect with -c", 'i');
+#ifdef USE_LIBUNWIND
+               if (stack_trace_enabled)
+                       error_msg("-%c has no effect with -c", 'k');
+#endif
+               if (rflag)
+                       error_msg("-%c has no effect with -c", 'r');
+               if (tflag)
+                       error_msg("-%c has no effect with -c", 't');
+               if (Tflag)
+                       error_msg("-%c has no effect with -c", 'T');
+               if (show_fd_path)
+                       error_msg("-%c has no effect with -c", 'y');
+       }
+
+#ifdef USE_LIBUNWIND
+       if (stack_trace_enabled)
+               unwind_init();
+#endif
+
        /* See if they want to run as another user. */
        if (username != NULL) {
                struct passwd *pent;
@@ -1853,7 +1985,7 @@ pid2tcb(int pid)
 
        for (i = 0; i < tcbtabsize; i++) {
                struct tcb *tcp = tcbtab[i];
-               if (tcp->pid == pid && (tcp->flags & TCB_INUSE))
+               if (tcp->pid == pid)
                        return tcp;
        }
 
@@ -1874,12 +2006,12 @@ cleanup(void)
 
        for (i = 0; i < tcbtabsize; i++) {
                tcp = tcbtab[i];
-               if (!(tcp->flags & TCB_INUSE))
+               if (!tcp->pid)
                        continue;
                if (debug_flag)
                        fprintf(stderr,
                                "cleanup: looking at pid %u\n", tcp->pid);
-               if (tcp->flags & TCB_STRACE_CHILD) {
+               if (tcp->pid == strace_child) {
                        kill(tcp->pid, SIGCONT);
                        kill(tcp->pid, fatal_sig);
                }
@@ -1895,16 +2027,26 @@ interrupt(int sig)
        interrupted = sig;
 }
 
-static int
+static void
 trace(void)
 {
        struct rusage ru;
-       struct rusage *rup = cflag ? &ru : NULL;
-#ifdef __WALL
-       static int wait4_options = __WALL;
-#endif
 
-       while (nprocs != 0) {
+       /* Used to be "while (nprocs != 0)", but in this testcase:
+        *  int main() { _exit(!!fork()); }
+        * under strace -f, parent sometimes (rarely) manages
+        * to exit before we see the first stop of the child,
+        * and we are losing track of it:
+        *  19923 clone(...) = 19924
+        *  19923 exit_group(1)     = ?
+        *  19923 +++ exited with 1 +++
+        * Waiting for ECHILD works better.
+        * (However, if -o|logger is in use, we can't do that.
+        * Can work around that by double-forking the logger,
+        * but that loses the ability to wait for its completion on exit.
+        * Oh well...)
+        */
+       while (1) {
                int pid;
                int wait_errno;
                int status, sig;
@@ -1913,50 +2055,32 @@ trace(void)
                unsigned event;
 
                if (interrupted)
-                       return 0;
+                       return;
+
+               if (popen_pid != 0 && nprocs == 0)
+                       return;
+
                if (interactive)
                        sigprocmask(SIG_SETMASK, &empty_set, NULL);
-#ifdef __WALL
-               pid = wait4(-1, &status, wait4_options, rup);
-               if (pid < 0 && (wait4_options & __WALL) && errno == EINVAL) {
-                       /* this kernel does not support __WALL */
-                       wait4_options &= ~__WALL;
-                       pid = wait4(-1, &status, wait4_options, rup);
-               }
-               if (pid < 0 && !(wait4_options & __WALL) && errno == ECHILD) {
-                       /* most likely a "cloned" process */
-                       pid = wait4(-1, &status, __WCLONE, rup);
-                       if (pid < 0) {
-                               perror_msg("wait4(__WCLONE) failed");
-                       }
-               }
-#else
-               pid = wait4(-1, &status, 0, rup);
-#endif /* __WALL */
+               pid = wait4(-1, &status, __WALL, (cflag ? &ru : NULL));
                wait_errno = errno;
                if (interactive)
                        sigprocmask(SIG_BLOCK, &blocked_set, NULL);
 
                if (pid < 0) {
-                       switch (wait_errno) {
-                       case EINTR:
+                       if (wait_errno == EINTR)
                                continue;
-                       case ECHILD:
-                               /*
-                                * We would like to verify this case
-                                * but sometimes a race in Solbourne's
-                                * version of SunOS sometimes reports
-                                * ECHILD before sending us SIGCHILD.
-                                */
-                               return 0;
-                       default:
-                               errno = wait_errno;
-                               perror_msg("wait");
-                               return -1;
-                       }
+                       if (nprocs == 0 && wait_errno == ECHILD)
+                               return;
+                       /* If nprocs > 0, ECHILD is not expected,
+                        * treat it as any other error here:
+                        */
+                       errno = wait_errno;
+                       perror_msg_and_die("wait4(__WALL)");
                }
+
                if (pid == popen_pid) {
-                       if (WIFEXITED(status) || WIFSIGNALED(status))
+                       if (!WIFSTOPPED(status))
                                popen_pid = 0;
                        continue;
                }
@@ -1964,7 +2088,7 @@ trace(void)
                event = ((unsigned)status >> 16);
                if (debug_flag) {
                        char buf[sizeof("WIFEXITED,exitcode=%u") + sizeof(int)*3 /*paranoia:*/ + 16];
-                       char evbuf[sizeof(",PTRACE_EVENT_?? (%u)") + sizeof(int)*3 /*paranoia:*/ + 16];
+                       char evbuf[sizeof(",EVENT_VFORK_DONE (%u)") + sizeof(int)*3 /*paranoia:*/ + 16];
                        strcpy(buf, "???");
                        if (WIFSIGNALED(status))
 #ifdef WCOREDUMP
@@ -1980,6 +2104,7 @@ trace(void)
                        if (WIFSTOPPED(status))
                                sprintf(buf, "WIFSTOPPED,sig=%s", signame(WSTOPSIG(status)));
 #ifdef WIFCONTINUED
+                       /* Should never be seen */
                        if (WIFCONTINUED(status))
                                strcpy(buf, "WIFCONTINUED");
 #endif
@@ -1992,24 +2117,32 @@ trace(void)
                                        [PTRACE_EVENT_VFORK_DONE] = "VFORK_DONE",
                                        [PTRACE_EVENT_EXEC]  = "EXEC",
                                        [PTRACE_EVENT_EXIT]  = "EXIT",
+                                       /* [PTRACE_EVENT_STOP (=128)] would make biggish array */
                                };
-                               const char *e;
+                               const char *e = "??";
                                if (event < ARRAY_SIZE(event_names))
                                        e = event_names[event];
-                               else {
-                                       sprintf(buf, "?? (%u)", event);
-                                       e = buf;
-                               }
-                               sprintf(evbuf, ",PTRACE_EVENT_%s", e);
+                               else if (event == PTRACE_EVENT_STOP)
+                                       e = "STOP";
+                               sprintf(evbuf, ",EVENT_%s (%u)", e, event);
                        }
-                       fprintf(stderr, " [wait(0x%04x) = %u] %s%s\n", status, pid, buf, evbuf);
+                       fprintf(stderr, " [wait(0x%06x) = %u] %s%s\n", status, pid, buf, evbuf);
                }
 
                /* Look up 'pid' in our table. */
                tcp = pid2tcb(pid);
 
                if (!tcp) {
+                       if (!WIFSTOPPED(status)) {
+                               /* This can happen if we inherited
+                                * an unknown child. Example:
+                                * (sleep 1 & exec strace sleep 2)
+                                */
+                               error_msg("Exit of unknown pid %u seen", pid);
+                               continue;
+                       }
                        if (followfork) {
+                               /* We assume it's a fork/vfork/clone child */
                                tcp = alloctcb(pid);
                                tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
                                newoutf(tcp);
@@ -2018,10 +2151,11 @@ trace(void)
                                                pid);
                        } else {
                                /* This can happen if a clone call used
-                                  CLONE_PTRACE itself.  */
-                               if (WIFSTOPPED(status))
-                                       ptrace(PTRACE_CONT, pid, (char *) 0, 0);
-                               error_msg_and_die("Unknown pid: %u", pid);
+                                * CLONE_PTRACE itself.
+                                */
+                               ptrace(PTRACE_CONT, pid, (char *) 0, 0);
+                               error_msg("Stop of unknown pid %u seen, PTRACE_CONTed it", pid);
+                               continue;
                        }
                }
 
@@ -2050,6 +2184,9 @@ trace(void)
 
                        if (ptrace(PTRACE_GETEVENTMSG, pid, NULL, (long) &old_pid) < 0)
                                goto dont_switch_tcbs;
+                       /* Avoid truncation in pid2tcb() param passing */
+                       if (old_pid > UINT_MAX)
+                               goto dont_switch_tcbs;
                        if (old_pid <= 0 || old_pid == pid)
                                goto dont_switch_tcbs;
                        execve_thread = pid2tcb(old_pid);
@@ -2151,13 +2288,13 @@ trace(void)
                                if (clearbpt(tcp) < 0) {
                                        /* Pretty fatal */
                                        droptcb(tcp);
-                                       cleanup();
-                                       return -1;
+                                       exit_code = 1;
+                                       return;
                                }
                        }
-                       if (ptrace_setoptions) {
+                       if (!use_seize && ptrace_setoptions) {
                                if (debug_flag)
-                                       fprintf(stderr, "setting opts %x on pid %d\n", ptrace_setoptions, tcp->pid);
+                                       fprintf(stderr, "setting opts 0x%x on pid %d\n", ptrace_setoptions, tcp->pid);
                                if (ptrace(PTRACE_SETOPTIONS, tcp->pid, NULL, ptrace_setoptions) < 0) {
                                        if (errno != ESRCH) {
                                                /* Should never happen, really */
@@ -2219,31 +2356,14 @@ trace(void)
                            && !hide_log_until_execve
                            && (qual_flags[sig] & QUAL_SIGNAL)
                           ) {
-#if defined(PT_CR_IPSR) && defined(PT_CR_IIP)
-                               long pc = 0;
-                               long psr = 0;
-
-                               upeek(tcp, PT_CR_IPSR, &psr);
-                               upeek(tcp, PT_CR_IIP, &pc);
-
-# define PSR_RI        41
-                               pc += (psr >> PSR_RI) & 0x3;
-# define PC_FORMAT_STR " @ %lx"
-# define PC_FORMAT_ARG , pc
-#else
-# define PC_FORMAT_STR ""
-# define PC_FORMAT_ARG /* nothing */
-#endif
                                printleader(tcp);
                                if (!stopped) {
                                        tprintf("--- %s ", signame(sig));
                                        printsiginfo(&si, verbose(tcp));
-                                       tprintf(PC_FORMAT_STR " ---\n"
-                                               PC_FORMAT_ARG);
+                                       tprints(" ---\n");
                                } else
-                                       tprintf("--- stopped by %s" PC_FORMAT_STR " ---\n",
-                                               signame(sig)
-                                               PC_FORMAT_ARG);
+                                       tprintf("--- stopped by %s ---\n",
+                                               signame(sig));
                                line_ended();
                        }
 
@@ -2252,7 +2372,6 @@ trace(void)
                                goto restart_tracee;
 
                        /* It's group-stop */
-#if USE_SEIZE
                        if (use_seize) {
                                /*
                                 * This ends ptrace-stop, but does *not* end group-stop.
@@ -2260,19 +2379,19 @@ trace(void)
                                 * (that is, process really stops. It used to continue to run).
                                 */
                                if (ptrace_restart(PTRACE_LISTEN, tcp, 0) < 0) {
-                                       cleanup();
-                                       return -1;
+                                       /* Note: ptrace_restart emitted error message */
+                                       exit_code = 1;
+                                       return;
                                }
                                continue;
                        }
                        /* We don't have PTRACE_LISTEN support... */
-#endif
                        goto restart_tracee;
                }
 
                /* We handled quick cases, we are permitted to interrupt now. */
                if (interrupted)
-                       return 0;
+                       return;
 
                /* This should be syscall entry or exit.
                 * (Or it still can be that pesky post-execve SIGTRAP!)
@@ -2295,11 +2414,11 @@ trace(void)
                sig = 0;
  restart_tracee:
                if (ptrace_restart(PTRACE_SYSCALL, tcp, sig) < 0) {
-                       cleanup();
-                       return -1;
+                       /* Note: ptrace_restart emitted error message */
+                       exit_code = 1;
+                       return;
                }
-       }
-       return 0;
+       } /* while (1) */
 }
 
 int
@@ -2308,8 +2427,7 @@ main(int argc, char *argv[])
        init(argc, argv);
 
        /* Run main tracing loop */
-       if (trace() < 0)
-               return 1;
+       trace();
 
        cleanup();
        fflush(NULL);
index 817f1ae..9384fa5 100644 (file)
@@ -1,12 +1,11 @@
 Summary: Tracks and displays system calls associated with a running process
 Name: strace
-Version: 4.8
+Version: 4.9
 Release: 1%{?dist}
 License: BSD
 Group: Development/Debuggers
 URL: http://sourceforge.net/projects/strace/
 Source: http://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires: libacl-devel, libaio-devel, time
 
@@ -49,7 +48,6 @@ The `strace' program in the `strace' package is for 32-bit processes.
 make %{?_smp_mflags}
 
 %install
-rm -rf %{buildroot}
 make DESTDIR=%{buildroot} install
 
 # remove unpackaged files from the buildroot
@@ -67,13 +65,9 @@ rm -f %{buildroot}%{_bindir}/strace-graph
 %endif
 
 %check
-make check
-
-%clean
-rm -rf %{buildroot}
+make -k check VERBOSE=1
 
 %files
-%defattr(-,root,root)
 %doc CREDITS ChangeLog ChangeLog-CVS COPYING NEWS README
 %{_bindir}/strace
 %{_bindir}/strace-log-merge
@@ -81,11 +75,29 @@ rm -rf %{buildroot}
 
 %ifarch %{strace64_arches}
 %files -n strace64
-%defattr(-,root,root)
 %{_bindir}/strace64
 %endif
 
 %changelog
+* Fri Aug 15 2014 Dmitry V. Levin <ldv@altlinux.org> - 4.9-1
+- New upstream release:
+  + fixed build when <sys/ptrace.h> and <linux/ptrace.h> conflict (#993384);
+  + updated CLOCK_* constants (#1088455);
+  + enabled ppc64le support (#1122323);
+  + fixed attach to a process on ppc64le (#1129569).
+
+* Fri Jul 25 2014 Dan Horák <dan[at]danny.cz> - 4.8-5
+- update for ppc64
+
+* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Fri Dec  6 2013 Peter Robinson <pbrobinson@fedoraproject.org> 4.8-3
+- Fix FTBFS
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
 * Mon Jun 03 2013 Dmitry V. Levin <ldv@altlinux.org> - 4.8-1
 - New upstream release:
   + fixed ERESTARTNOINTR leaking to userspace on ancient kernels (#659382);
@@ -300,7 +312,7 @@ rm -rf %{buildroot}
 * Thu Jul 17 2003 Roland McGrath <roland@redhat.com> 4.4.99-1
 - new upstream version, groks more new system calls, PF_INET6 sockets
 
-* Mon Jun 10 2003 Roland McGrath <roland@redhat.com> 4.4.98-1
+* Tue Jun 10 2003 Roland McGrath <roland@redhat.com> 4.4.98-1
 - new upstream version, more fixes (#90754, #91085)
 
 * Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
@@ -393,7 +405,7 @@ rm -rf %{buildroot}
 * Fri Jan 19 2001 Bill Nottingham <notting@redhat.com>
 - update to CVS, reintegrate ia64 support
 
-* Sat Dec  8 2000 Bernhard Rosenkraenzer <bero@redhat.com>
+* Fri Dec  8 2000 Bernhard Rosenkraenzer <bero@redhat.com>
 - Get S/390 support into the normal package
 
 * Sat Nov 18 2000 Florian La Roche <Florian.LaRoche@redhat.de>
index 8c90838..ceb9e2d 100644 (file)
--- a/stream.c
+++ b/stream.c
  */
 
 #include "defs.h"
-#ifdef HAVE_POLL_H
+#if defined HAVE_POLL_H
 # include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
+#elif defined HAVE_SYS_POLL_H
 # include <sys/poll.h>
 #endif
 #ifdef HAVE_SYS_CONF_H
@@ -56,10 +55,7 @@ struct strbuf {
 #  define MOREDATA 2
 # endif
 
-static const struct xlat msgflags[] = {
-       { RS_HIPRI,     "RS_HIPRI"      },
-       { 0,            NULL            },
-};
+#include "xlat/msgflags.h"
 
 static void
 printstrbuf(struct tcb *tcp, struct strbuf *sbp, int getting)
@@ -154,18 +150,7 @@ sys_getmsg(struct tcb *tcp)
 }
 
 # if defined SYS_putpmsg || defined SYS_getpmsg
-static const struct xlat pmsgflags[] = {
-#  ifdef MSG_HIPRI
-       { MSG_HIPRI,    "MSG_HIPRI"     },
-#  endif
-#  ifdef MSG_AND
-       { MSG_ANY,      "MSG_ANY"       },
-#  endif
-#  ifdef MSG_BAND
-       { MSG_BAND,     "MSG_BAND"      },
-#  endif
-       { 0,            NULL            },
-};
+#include "xlat/pmsgflags.h"
 #  ifdef SYS_putpmsg
 int
 sys_putpmsg(struct tcb *tcp)
@@ -243,29 +228,7 @@ sys_getpmsg(struct tcb *tcp)
 
 #ifdef HAVE_SYS_POLL_H
 
-static const struct xlat pollflags[] = {
-# ifdef POLLIN
-       { POLLIN,       "POLLIN"        },
-       { POLLPRI,      "POLLPRI"       },
-       { POLLOUT,      "POLLOUT"       },
-#  ifdef POLLRDNORM
-       { POLLRDNORM,   "POLLRDNORM"    },
-#  endif
-#  ifdef POLLWRNORM
-       { POLLWRNORM,   "POLLWRNORM"    },
-#  endif
-#  ifdef POLLRDBAND
-       { POLLRDBAND,   "POLLRDBAND"    },
-#  endif
-#  ifdef POLLWRBAND
-       { POLLWRBAND,   "POLLWRBAND"    },
-#  endif
-       { POLLERR,      "POLLERR"       },
-       { POLLHUP,      "POLLHUP"       },
-       { POLLNVAL,     "POLLNVAL"      },
-# endif
-       { 0,            NULL            },
-};
+#include "xlat/pollflags.h"
 
 static int
 decode_poll(struct tcb *tcp, long pts)
@@ -422,7 +385,8 @@ sys_ppoll(struct tcb *tcp)
        if (entering(tcp)) {
                print_timespec(tcp, tcp->u_arg[2]);
                tprints(", ");
-               print_sigset(tcp, tcp->u_arg[3], 0);
+               /* NB: kernel requires arg[4] == NSIG / 8 */
+               print_sigset_addr_len(tcp, tcp->u_arg[3], tcp->u_arg[4]);
                tprintf(", %lu", tcp->u_arg[4]);
        }
        return rc;
index 7efee0e..b0ad47e 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -37,9 +37,6 @@
 
 #ifdef HAVE_SYS_REG_H
 # include <sys/reg.h>
-# ifndef PTRACE_PEEKUSR
-#  define PTRACE_PEEKUSR PTRACE_PEEKUSER
-# endif
 #elif defined(HAVE_LINUX_PTRACE_H)
 # undef PTRACE_SYSCALL
 # ifdef HAVE_STRUCT_IA64_FPREG
 # ifdef HAVE_STRUCT_PT_ALL_USER_REGS
 #  define pt_all_user_regs XXX_pt_all_user_regs
 # endif
+# ifdef HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS
+#  define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+# endif
 # include <linux/ptrace.h>
+# undef ptrace_peeksiginfo_args
 # undef ia64_fpreg
 # undef pt_all_user_regs
 #endif
 # include <asm/ptrace.h>
 #endif
 
-#ifndef ERESTARTSYS
-# define ERESTARTSYS   512
-#endif
-#ifndef ERESTARTNOINTR
-# define ERESTARTNOINTR        513
-#endif
-#ifndef ERESTARTNOHAND
-# define ERESTARTNOHAND        514     /* restart if no handler */
-#endif
-#ifndef ERESTART_RESTARTBLOCK
-# define ERESTART_RESTARTBLOCK 516     /* restart by calling sys_restart_syscall */
-#endif
-
 #ifndef NSIG
 # warning: NSIG is not defined, using 32
 # define NSIG 32
 #endif
-#ifdef ARM
-/* Ugh. Is this really correct? ARM has no RT signals?! */
-# undef NSIG
-# define NSIG 32
-#endif
 
 #include "syscall.h"
 
 #define TM TRACE_MEMORY
 #define NF SYSCALL_NEVER_FAILS
 #define MA MAX_ARGS
+#define SI STACKTRACE_INVALIDATE_CACHE
+#define SE STACKTRACE_CAPTURE_ON_ENTER
 
 const struct_sysent sysent0[] = {
 #include "syscallent.h"
@@ -142,6 +127,8 @@ static const struct_sysent sysent2[] = {
 #undef TM
 #undef NF
 #undef MA
+#undef SI
+#undef SE
 
 /*
  * `ioctlent.h' may be generated from `ioctlent.raw' by the auxiliary
@@ -683,10 +670,10 @@ getrval2(struct tcb *tcp)
 # if defined(SPARC) || defined(SPARC64)
        val = sparc_regs.u_regs[U_REG_O1];
 # elif defined(SH)
-       if (upeek(tcp, 4*(REG_REG0+1), &val) < 0)
+       if (upeek(tcp->pid, 4*(REG_REG0+1), &val) < 0)
                return -1;
 # elif defined(IA64)
-       if (upeek(tcp, PT_R9, &val) < 0)
+       if (upeek(tcp->pid, PT_R9, &val) < 0)
                return -1;
 # endif
 
@@ -694,23 +681,10 @@ getrval2(struct tcb *tcp)
 }
 #endif
 
-int
-is_restart_error(struct tcb *tcp)
-{
-       switch (tcp->u_error) {
-               case ERESTARTSYS:
-               case ERESTARTNOINTR:
-               case ERESTARTNOHAND:
-               case ERESTART_RESTARTBLOCK:
-                       return 1;
-               default:
-                       break;
-       }
-       return 0;
-}
-
 #if defined(I386)
-struct user_regs_struct i386_regs;
+static struct user_regs_struct i386_regs;
+/* Cast suppresses signedness warning (.esp is long, not unsigned long) */
+uint32_t *const i386_esp_ptr = (uint32_t*)&i386_regs.esp;
 # define ARCH_REGS_FOR_GETREGSET i386_regs
 #elif defined(X86_64) || defined(X32)
 /*
@@ -744,14 +718,15 @@ static union {
 } x86_regs_union;
 # define x86_64_regs x86_regs_union.x86_64_r
 # define i386_regs   x86_regs_union.i386_r
+uint32_t *const i386_esp_ptr = &i386_regs.esp;
 static struct iovec x86_io = {
        .iov_base = &x86_regs_union
 };
 #elif defined(IA64)
-long ia32 = 0; /* not static */
+bool ia64_ia32mode = 0; /* not static */
 static long ia64_r8, ia64_r10;
 #elif defined(POWERPC)
-static long ppc_result;
+struct pt_regs ppc_regs;
 #elif defined(M68K)
 static long m68k_d0;
 #elif defined(BFIN)
@@ -783,8 +758,7 @@ static long long mips_r2;
 static long mips_a3;
 static long mips_r2;
 #elif defined(S390) || defined(S390X)
-static long gpr2;
-static long syscall_mode;
+static long s390_gpr2;
 #elif defined(HPPA)
 static long hppa_r28;
 #elif defined(SH)
@@ -805,10 +779,13 @@ static struct user_gp_regs metag_regs;
 # define ARCH_REGS_FOR_GETREGSET metag_regs
 #elif defined(XTENSA)
 static long xtensa_a2;
+# elif defined(ARC)
+static struct user_regs_struct arc_regs;
+# define ARCH_REGS_FOR_GETREGSET arc_regs
 #endif
 
 void
-printcall(struct tcb *tcp)
+print_pc(struct tcb *tcp)
 {
 #define PRINTBADPC tprintf(sizeof(long) == 4 ? "[????????] " : \
                           sizeof(long) == 8 ? "[????????????????] " : \
@@ -821,7 +798,7 @@ printcall(struct tcb *tcp)
        tprintf("[%08lx] ", i386_regs.eip);
 #elif defined(S390) || defined(S390X)
        long psw;
-       if (upeek(tcp, PT_PSWADDR, &psw) < 0) {
+       if (upeek(tcp->pid, PT_PSWADDR, &psw) < 0) {
                PRINTBADPC;
                return;
        }
@@ -843,17 +820,13 @@ printcall(struct tcb *tcp)
        }
 #elif defined(IA64)
        long ip;
-       if (upeek(tcp, PT_B0, &ip) < 0) {
+       if (upeek(tcp->pid, PT_B0, &ip) < 0) {
                PRINTBADPC;
                return;
        }
        tprintf("[%08lx] ", ip);
 #elif defined(POWERPC)
-       long pc;
-       if (upeek(tcp, sizeof(unsigned long)*PT_NIP, &pc) < 0) {
-               PRINTBADPC;
-               return;
-       }
+       long pc = ppc_regs.nip;
 # ifdef POWERPC64
        tprintf("[%016lx] ", pc);
 # else
@@ -861,14 +834,14 @@ printcall(struct tcb *tcp)
 # endif
 #elif defined(M68K)
        long pc;
-       if (upeek(tcp, 4*PT_PC, &pc) < 0) {
+       if (upeek(tcp->pid, 4*PT_PC, &pc) < 0) {
                tprints("[????????] ");
                return;
        }
        tprintf("[%08lx] ", pc);
 #elif defined(ALPHA)
        long pc;
-       if (upeek(tcp, REG_PC, &pc) < 0) {
+       if (upeek(tcp->pid, REG_PC, &pc) < 0) {
                tprints("[????????????????] ");
                return;
        }
@@ -879,28 +852,28 @@ printcall(struct tcb *tcp)
        tprintf("[%08lx] ", sparc_regs.tpc);
 #elif defined(HPPA)
        long pc;
-       if (upeek(tcp, PT_IAOQ0, &pc) < 0) {
+       if (upeek(tcp->pid, PT_IAOQ0, &pc) < 0) {
                tprints("[????????] ");
                return;
        }
        tprintf("[%08lx] ", pc);
 #elif defined(MIPS)
        long pc;
-       if (upeek(tcp, REG_EPC, &pc) < 0) {
+       if (upeek(tcp->pid, REG_EPC, &pc) < 0) {
                tprints("[????????] ");
                return;
        }
        tprintf("[%08lx] ", pc);
 #elif defined(SH)
        long pc;
-       if (upeek(tcp, 4*REG_PC, &pc) < 0) {
+       if (upeek(tcp->pid, 4*REG_PC, &pc) < 0) {
                tprints("[????????] ");
                return;
        }
        tprintf("[%08lx] ", pc);
 #elif defined(SH64)
        long pc;
-       if (upeek(tcp, REG_PC, &pc) < 0) {
+       if (upeek(tcp->pid, REG_PC, &pc) < 0) {
                tprints("[????????????????] ");
                return;
        }
@@ -913,21 +886,21 @@ printcall(struct tcb *tcp)
        tprintf("[%08lx] ", avr32_regs.pc);
 #elif defined(BFIN)
        long pc;
-       if (upeek(tcp, PT_PC, &pc) < 0) {
+       if (upeek(tcp->pid, PT_PC, &pc) < 0) {
                PRINTBADPC;
                return;
        }
        tprintf("[%08lx] ", pc);
 #elif defined(CRISV10)
        long pc;
-       if (upeek(tcp, 4*PT_IRP, &pc) < 0) {
+       if (upeek(tcp->pid, 4*PT_IRP, &pc) < 0) {
                PRINTBADPC;
                return;
        }
        tprintf("[%08lx] ", pc);
 #elif defined(CRISV32)
        long pc;
-       if (upeek(tcp, 4*PT_ERP, &pc) < 0) {
+       if (upeek(tcp->pid, 4*PT_ERP, &pc) < 0) {
                PRINTBADPC;
                return;
        }
@@ -944,18 +917,20 @@ printcall(struct tcb *tcp)
        tprintf("[%08lx] ", metag_regs.pc);
 #elif defined(XTENSA)
        long pc;
-       if (upeek(tcp, REG_PC, &pc) < 0) {
+       if (upeek(tcp->pid, REG_PC, &pc) < 0) {
                PRINTBADPC;
                return;
        }
        tprintf("[%08lx] ", pc);
+#elif defined(ARC)
+       tprintf("[%08lx] ", arc_regs.efa);
 #endif /* architecture */
 }
 
 /* Shuffle syscall numbers so that we don't have huge gaps in syscall table.
  * The shuffling should be reversible: shuffle_scno(shuffle_scno(n)) == n.
  */
-#if defined(ARM) /* So far only ARM needs this */
+#if defined(ARM) || defined(AARCH64) /* So far only 32-bit ARM needs this */
 static long
 shuffle_scno(unsigned long scno)
 {
@@ -997,6 +972,43 @@ undefined_scno_name(struct tcb *tcp)
        return buf;
 }
 
+#ifdef POWERPC
+/*
+ * PTRACE_GETREGS was added to the PowerPC kernel in v2.6.23,
+ * we provide a slow fallback for old kernels.
+ */
+static int powerpc_getregs_old(pid_t pid)
+{
+       int i;
+       long r;
+
+       if (iflag) {
+               r = upeek(pid, sizeof(long) * PT_NIP, (long *)&ppc_regs.nip);
+               if (r)
+                       goto out;
+       }
+#ifdef POWERPC64 /* else we never use it */
+       r = upeek(pid, sizeof(long) * PT_MSR, (long *)&ppc_regs.msr);
+       if (r)
+               goto out;
+#endif
+       r = upeek(pid, sizeof(long) * PT_CCR, (long *)&ppc_regs.ccr);
+       if (r)
+               goto out;
+       r = upeek(pid, sizeof(long) * PT_ORIG_R3, (long *)&ppc_regs.orig_gpr3);
+       if (r)
+               goto out;
+       for (i = 0; i <= 8; i++) {
+               r = upeek(pid, sizeof(long) * (PT_R0 + i),
+                         (long *)&ppc_regs.gpr[i]);
+               if (r)
+                       goto out;
+       }
+ out:
+       return r;
+}
+#endif
+
 #ifndef get_regs
 long get_regs_error;
 
@@ -1007,7 +1019,8 @@ static void get_regset(pid_t pid)
 # if defined(ARM) \
   || defined(I386) \
   || defined(METAG) \
-  || defined(OR1K)
+  || defined(OR1K) \
+  || defined(ARC)
        static struct iovec io = {
                .iov_base = &ARCH_REGS_FOR_GETREGSET,
                .iov_len = sizeof(ARCH_REGS_FOR_GETREGSET)
@@ -1033,7 +1046,7 @@ void
 get_regs(pid_t pid)
 {
 /* PTRACE_GETREGSET only */
-# if defined(METAG) || defined(OR1K) || defined(X32) || defined(AARCH64)
+# if defined(METAG) || defined(OR1K) || defined(X32) || defined(AARCH64) || defined(ARC)
        get_regset(pid);
 
 /* PTRACE_GETREGS only */
@@ -1043,6 +1056,16 @@ get_regs(pid_t pid)
        get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, &tile_regs);
 # elif defined(SPARC) || defined(SPARC64)
        get_regs_error = ptrace(PTRACE_GETREGS, pid, (char *)&sparc_regs, 0);
+# elif defined(POWERPC)
+       static bool old_kernel = 0;
+       if (old_kernel)
+               goto old;
+       get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, (long) &ppc_regs);
+       if (get_regs_error && errno == EIO) {
+               old_kernel = 1;
+ old:
+               get_regs_error = powerpc_getregs_old(pid);
+       }
 
 /* try PTRACE_GETREGSET first, fallback to PTRACE_GETREGS */
 # else
@@ -1113,14 +1136,14 @@ get_scno(struct tcb *tcp)
        long scno = 0;
 
 #if defined(S390) || defined(S390X)
-       if (upeek(tcp, PT_GPR2, &syscall_mode) < 0)
+       if (upeek(tcp->pid, PT_GPR2, &s390_gpr2) < 0)
                return -1;
 
-       if (syscall_mode != -ENOSYS) {
+       if (s390_gpr2 != -ENOSYS) {
                /*
                 * Since kernel version 2.5.44 the scno gets passed in gpr2.
                 */
-               scno = syscall_mode;
+               scno = s390_gpr2;
        } else {
                /*
                 * Old style of "passing" the scno via the SVC instruction.
@@ -1135,7 +1158,7 @@ get_scno(struct tcb *tcp)
                                PT_GPR12, PT_GPR13, PT_GPR14,    PT_GPR15
                };
 
-               if (upeek(tcp, PT_PSWADDR, &psw) < 0)
+               if (upeek(tcp->pid, PT_PSWADDR, &psw) < 0)
                        return -1;
                errno = 0;
                opcode = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)(psw - sizeof(long)), 0);
@@ -1168,13 +1191,13 @@ get_scno(struct tcb *tcp)
 
                        tmp = 0;
                        offset_reg = (opcode & 0x000f0000) >> 16;
-                       if (offset_reg && (upeek(tcp, gpr_offset[offset_reg], &tmp) < 0))
+                       if (offset_reg && (upeek(tcp->pid, gpr_offset[offset_reg], &tmp) < 0))
                                return -1;
                        svc_addr += tmp;
 
                        tmp = 0;
                        offset_reg = (opcode & 0x0000f000) >> 12;
-                       if (offset_reg && (upeek(tcp, gpr_offset[offset_reg], &tmp) < 0))
+                       if (offset_reg && (upeek(tcp->pid, gpr_offset[offset_reg], &tmp) < 0))
                                return -1;
                        svc_addr += tmp;
 
@@ -1188,36 +1211,30 @@ get_scno(struct tcb *tcp)
 # endif
                        tmp = 0;
                        offset_reg = (opcode & 0x00f00000) >> 20;
-                       if (offset_reg && (upeek(tcp, gpr_offset[offset_reg], &tmp) < 0))
+                       if (offset_reg && (upeek(tcp->pid, gpr_offset[offset_reg], &tmp) < 0))
                                return -1;
 
                        scno = (scno | tmp) & 0xff;
                }
        }
 #elif defined(POWERPC)
-       if (upeek(tcp, sizeof(unsigned long)*PT_R0, &scno) < 0)
-               return -1;
+       scno = ppc_regs.gpr[0];
 # ifdef POWERPC64
-       /* TODO: speed up strace by not doing this at every syscall.
-        * We only need to do it after execve.
-        */
        int currpers;
-       long val;
 
-       /* Check for 64/32 bit mode. */
-       if (upeek(tcp, sizeof(unsigned long)*PT_MSR, &val) < 0)
-               return -1;
-       /* SF is bit 0 of MSR */
-       if (val < 0)
-               currpers = 0;
-       else
-               currpers = 1;
+       /*
+        * Check for 64/32 bit mode.
+        * Embedded implementations covered by Book E extension of PPC use
+        * bit 0 (CM) of 32-bit Machine state register (MSR).
+        * Other implementations use bit 0 (SF) of 64-bit MSR.
+        */
+       currpers = (ppc_regs.msr & 0x8000000080000000) ? 0 : 1;
        update_personality(tcp, currpers);
 # endif
 #elif defined(AVR32)
        scno = avr32_regs.r8;
 #elif defined(BFIN)
-       if (upeek(tcp, PT_ORIG_P0, &scno))
+       if (upeek(tcp->pid, PT_ORIG_P0, &scno))
                return -1;
 #elif defined(I386)
        scno = i386_regs.orig_eax;
@@ -1314,13 +1331,13 @@ get_scno(struct tcb *tcp)
 #elif defined(IA64)
 #      define IA64_PSR_IS      ((long)1 << 34)
        long psr;
-       if (upeek(tcp, PT_CR_IPSR, &psr) >= 0)
-               ia32 = (psr & IA64_PSR_IS) != 0;
-       if (ia32) {
-               if (upeek(tcp, PT_R1, &scno) < 0)
+       if (upeek(tcp->pid, PT_CR_IPSR, &psr) >= 0)
+               ia64_ia32mode = ((psr & IA64_PSR_IS) != 0);
+       if (ia64_ia32mode) {
+               if (upeek(tcp->pid, PT_R1, &scno) < 0)
                        return -1;
        } else {
-               if (upeek(tcp, PT_R15, &scno) < 0)
+               if (upeek(tcp->pid, PT_R15, &scno) < 0)
                        return -1;
        }
 #elif defined(AARCH64)
@@ -1332,7 +1349,9 @@ get_scno(struct tcb *tcp)
                        break;
                case sizeof(arm_regs):
                        /* We are in 32-bit mode */
+                       /* Note: we don't support OABI, unlike 32-bit ARM build */
                        scno = arm_regs.ARM_r7;
+                       scno = shuffle_scno(scno);
                        update_personality(tcp, 0);
                        break;
        }
@@ -1345,33 +1364,36 @@ get_scno(struct tcb *tcp)
        }
        /* Note: we support only 32-bit CPUs, not 26-bit */
 
-       if (arm_regs.ARM_cpsr & 0x20) {
+# if !defined(__ARM_EABI__) || ENABLE_ARM_OABI
+       if (arm_regs.ARM_cpsr & 0x20)
                /* Thumb mode */
-               scno = arm_regs.ARM_r7;
-       } else {
-               /* ARM mode */
-               errno = 0;
-               scno = ptrace(PTRACE_PEEKTEXT, tcp->pid, (void *)(arm_regs.ARM_pc - 4), NULL);
-               if (errno)
+               goto scno_in_r7;
+       /* ARM mode */
+       /* Check EABI/OABI by examining SVC insn's low 24 bits */
+       errno = 0;
+       scno = ptrace(PTRACE_PEEKTEXT, tcp->pid, (void *)(arm_regs.ARM_pc - 4), NULL);
+       if (errno)
+               return -1;
+       /* EABI syscall convention? */
+       if (scno != 0xef000000) {
+               /* No, it's OABI */
+               if ((scno & 0x0ff00000) != 0x0f900000) {
+                       fprintf(stderr, "pid %d unknown syscall trap 0x%08lx\n",
+                               tcp->pid, scno);
                        return -1;
-
-               /* EABI syscall convention? */
-               if (scno == 0xef000000) {
-                       scno = arm_regs.ARM_r7; /* yes */
-               } else {
-                       if ((scno & 0x0ff00000) != 0x0f900000) {
-                               fprintf(stderr, "pid %d unknown syscall trap 0x%08lx\n",
-                                       tcp->pid, scno);
-                               return -1;
-                       }
-                       /* Fixup the syscall number */
-                       scno &= 0x000fffff;
                }
+               /* Fixup the syscall number */
+               scno &= 0x000fffff;
+       } else {
+ scno_in_r7:
+               scno = arm_regs.ARM_r7;
        }
-
+# else /* __ARM_EABI__ || !ENABLE_ARM_OABI */
+       scno = arm_regs.ARM_r7;
+# endif
        scno = shuffle_scno(scno);
 #elif defined(M68K)
-       if (upeek(tcp, 4*PT_ORIG_D0, &scno) < 0)
+       if (upeek(tcp->pid, 4*PT_ORIG_D0, &scno) < 0)
                return -1;
 #elif defined(LINUX_MIPSN32)
        unsigned long long regs[38];
@@ -1390,9 +1412,9 @@ get_scno(struct tcb *tcp)
                }
        }
 #elif defined(MIPS)
-       if (upeek(tcp, REG_A3, &mips_a3) < 0)
+       if (upeek(tcp->pid, REG_A3, &mips_a3) < 0)
                return -1;
-       if (upeek(tcp, REG_V0, &scno) < 0)
+       if (upeek(tcp->pid, REG_V0, &scno) < 0)
                return -1;
 
        if (!SCNO_IN_RANGE(scno)) {
@@ -1403,9 +1425,9 @@ get_scno(struct tcb *tcp)
                }
        }
 #elif defined(ALPHA)
-       if (upeek(tcp, REG_A3, &alpha_a3) < 0)
+       if (upeek(tcp->pid, REG_A3, &alpha_a3) < 0)
                return -1;
-       if (upeek(tcp, REG_R0, &scno) < 0)
+       if (upeek(tcp->pid, REG_R0, &scno) < 0)
                return -1;
 
        /*
@@ -1478,13 +1500,13 @@ get_scno(struct tcb *tcp)
                memmove(&sparc_regs.u_regs[U_REG_O0], &sparc_regs.u_regs[U_REG_O1], 7*sizeof(sparc_regs.u_regs[0]));
        }
 #elif defined(HPPA)
-       if (upeek(tcp, PT_GR20, &scno) < 0)
+       if (upeek(tcp->pid, PT_GR20, &scno) < 0)
                return -1;
 #elif defined(SH)
        /*
         * In the new syscall ABI, the system call number is in R3.
         */
-       if (upeek(tcp, 4*(REG_REG0+3), &scno) < 0)
+       if (upeek(tcp->pid, 4*(REG_REG0+3), &scno) < 0)
                return -1;
 
        if (scno < 0) {
@@ -1501,11 +1523,11 @@ get_scno(struct tcb *tcp)
                scno = correct_scno;
        }
 #elif defined(SH64)
-       if (upeek(tcp, REG_SYSCALL, &scno) < 0)
+       if (upeek(tcp->pid, REG_SYSCALL, &scno) < 0)
                return -1;
        scno &= 0xFFFF;
 #elif defined(CRISV10) || defined(CRISV32)
-       if (upeek(tcp, 4*PT_R9, &scno) < 0)
+       if (upeek(tcp->pid, 4*PT_R9, &scno) < 0)
                return -1;
 #elif defined(TILE)
        int currpers;
@@ -1523,15 +1545,17 @@ get_scno(struct tcb *tcp)
 # endif
        update_personality(tcp, currpers);
 #elif defined(MICROBLAZE)
-       if (upeek(tcp, 0, &scno) < 0)
+       if (upeek(tcp->pid, 0, &scno) < 0)
                return -1;
 #elif defined(OR1K)
        scno = or1k_regs.gpr[11];
 #elif defined(METAG)
        scno = metag_regs.dx[0][1];     /* syscall number in D1Re0 (D1.0) */
 #elif defined(XTENSA)
-       if (upeek(tcp, SYSCALL_NR, &scno) < 0)
+       if (upeek(tcp->pid, SYSCALL_NR, &scno) < 0)
                return -1;
+# elif defined(ARC)
+       scno = arc_regs.scratch.r8;
 #endif
 
        tcp->scno = scno;
@@ -1584,23 +1608,9 @@ syscall_fixup_on_sysenter(struct tcb *tcp)
                        return 0;
                }
        }
-#elif defined(S390) || defined(S390X)
-       /* TODO: we already fetched PT_GPR2 in get_scno
-        * and stored it in syscall_mode, reuse it here
-        * instead of re-fetching?
-        */
-       if (upeek(tcp, PT_GPR2, &gpr2) < 0)
-               return -1;
-       if (syscall_mode != -ENOSYS)
-               syscall_mode = tcp->scno;
-       if (gpr2 != syscall_mode) {
-               if (debug_flag)
-                       fprintf(stderr, "not a syscall entry (gpr2 = %ld)\n", gpr2);
-               return 0;
-       }
 #elif defined(M68K)
        /* TODO? Eliminate upeek's in arches below like we did in x86 */
-       if (upeek(tcp, 4*PT_D0, &m68k_d0) < 0)
+       if (upeek(tcp->pid, 4*PT_D0, &m68k_d0) < 0)
                return -1;
        if (m68k_d0 != -ENOSYS) {
                if (debug_flag)
@@ -1608,17 +1618,17 @@ syscall_fixup_on_sysenter(struct tcb *tcp)
                return 0;
        }
 #elif defined(IA64)
-       if (upeek(tcp, PT_R10, &ia64_r10) < 0)
+       if (upeek(tcp->pid, PT_R10, &ia64_r10) < 0)
                return -1;
-       if (upeek(tcp, PT_R8, &ia64_r8) < 0)
+       if (upeek(tcp->pid, PT_R8, &ia64_r8) < 0)
                return -1;
-       if (ia32 && ia64_r8 != -ENOSYS) {
+       if (ia64_ia32mode && ia64_r8 != -ENOSYS) {
                if (debug_flag)
                        fprintf(stderr, "not a syscall entry (r8 = %ld)\n", ia64_r8);
                return 0;
        }
 #elif defined(CRISV10) || defined(CRISV32)
-       if (upeek(tcp, 4*PT_R10, &cris_r10) < 0)
+       if (upeek(tcp->pid, 4*PT_R10, &cris_r10) < 0)
                return -1;
        if (cris_r10 != -ENOSYS) {
                if (debug_flag)
@@ -1626,7 +1636,7 @@ syscall_fixup_on_sysenter(struct tcb *tcp)
                return 0;
        }
 #elif defined(MICROBLAZE)
-       if (upeek(tcp, 3 * 4, &microblaze_r3) < 0)
+       if (upeek(tcp->pid, 3 * 4, &microblaze_r3) < 0)
                return -1;
        if (microblaze_r3 != -ENOSYS) {
                if (debug_flag)
@@ -1702,7 +1712,6 @@ syscall_fixup_for_fork_exec(struct tcb *tcp)
        func = tcp->s_ent->sys_func;
 
        if (   sys_fork == func
-           || sys_vfork == func
            || sys_clone == func
           ) {
                internal_fork(tcp);
@@ -1731,14 +1740,14 @@ get_syscall_args(struct tcb *tcp)
 
 #if defined(S390) || defined(S390X)
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, i==0 ? PT_ORIGGPR2 : PT_GPR2 + i*sizeof(long), &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, i==0 ? PT_ORIGGPR2 : PT_GPR2 + i*sizeof(long), &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(ALPHA)
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, REG_A0+i, &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, REG_A0+i, &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(IA64)
-       if (!ia32) {
+       if (!ia64_ia32mode) {
                unsigned long *out0, cfm, sof, sol;
                long rbs_end;
                /* be backwards compatible with kernel < 2.4.4... */
@@ -1746,9 +1755,9 @@ get_syscall_args(struct tcb *tcp)
 #                define PT_RBS_END     PT_AR_BSP
 #              endif
 
-               if (upeek(tcp, PT_RBS_END, &rbs_end) < 0)
+               if (upeek(tcp->pid, PT_RBS_END, &rbs_end) < 0)
                        return -1;
-               if (upeek(tcp, PT_CFM, (long *) &cfm) < 0)
+               if (upeek(tcp->pid, PT_CFM, (long *) &cfm) < 0)
                        return -1;
 
                sof = (cfm >> 0) & 0x7f;
@@ -1769,7 +1778,7 @@ get_syscall_args(struct tcb *tcp)
                                                      PT_R13 /* EBP = out5 */};
 
                for (i = 0; i < nargs; ++i) {
-                       if (upeek(tcp, argreg[i], &tcp->u_arg[i]) < 0)
+                       if (upeek(tcp->pid, argreg[i], &tcp->u_arg[i]) < 0)
                                return -1;
                        /* truncate away IVE sign-extension */
                        tcp->u_arg[i] &= 0xffffffff;
@@ -1792,35 +1801,33 @@ get_syscall_args(struct tcb *tcp)
        if (nargs > 4) {
                long sp;
 
-               if (upeek(tcp, REG_SP, &sp) < 0)
+               if (upeek(tcp->pid, REG_SP, &sp) < 0)
                        return -1;
                for (i = 0; i < 4; ++i)
-                       if (upeek(tcp, REG_A0 + i, &tcp->u_arg[i]) < 0)
+                       if (upeek(tcp->pid, REG_A0 + i, &tcp->u_arg[i]) < 0)
                                return -1;
                umoven(tcp, sp + 16, (nargs - 4) * sizeof(tcp->u_arg[0]),
                       (char *)(tcp->u_arg + 4));
        } else {
                for (i = 0; i < nargs; ++i)
-                       if (upeek(tcp, REG_A0 + i, &tcp->u_arg[i]) < 0)
+                       if (upeek(tcp->pid, REG_A0 + i, &tcp->u_arg[i]) < 0)
                                return -1;
        }
 #elif defined(POWERPC)
-# ifndef PT_ORIG_R3
-#  define PT_ORIG_R3 34
-# endif
-       for (i = 0; i < nargs; ++i) {
-               if (upeek(tcp, (i==0) ?
-                       (sizeof(unsigned long) * PT_ORIG_R3) :
-                       ((i+PT_R3) * sizeof(unsigned long)),
-                               &tcp->u_arg[i]) < 0)
-                       return -1;
-       }
+       (void)i;
+       (void)nargs;
+       tcp->u_arg[0] = ppc_regs.orig_gpr3;
+       tcp->u_arg[1] = ppc_regs.gpr[4];
+       tcp->u_arg[2] = ppc_regs.gpr[5];
+       tcp->u_arg[3] = ppc_regs.gpr[6];
+       tcp->u_arg[4] = ppc_regs.gpr[7];
+       tcp->u_arg[5] = ppc_regs.gpr[8];
 #elif defined(SPARC) || defined(SPARC64)
        for (i = 0; i < nargs; ++i)
                tcp->u_arg[i] = sparc_regs.u_regs[U_REG_O0 + i];
 #elif defined(HPPA)
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, PT_GR26-4*i, &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, PT_GR26-4*i, &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(ARM) || defined(AARCH64)
 # if defined(AARCH64)
@@ -1844,7 +1851,7 @@ get_syscall_args(struct tcb *tcp)
        static const int argreg[MAX_ARGS] = { PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5 };
 
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, argreg[i], &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, argreg[i], &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(SH)
        static const int syscall_regs[MAX_ARGS] = {
@@ -1853,7 +1860,7 @@ get_syscall_args(struct tcb *tcp)
        };
 
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, syscall_regs[i], &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, syscall_regs[i], &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(SH64)
        int i;
@@ -1861,7 +1868,7 @@ get_syscall_args(struct tcb *tcp)
        static const int syscall_regs[MAX_ARGS] = { 2, 3, 4, 5, 6, 7 };
 
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, REG_GENERAL(syscall_regs[i]), &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, REG_GENERAL(syscall_regs[i]), &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(I386)
        (void)i;
@@ -1906,7 +1913,7 @@ get_syscall_args(struct tcb *tcp)
        }
 #elif defined(MICROBLAZE)
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, (5 + i) * 4, &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, (5 + i) * 4, &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(CRISV10) || defined(CRISV32)
        static const int crisregs[MAX_ARGS] = {
@@ -1915,14 +1922,14 @@ get_syscall_args(struct tcb *tcp)
        };
 
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, crisregs[i], &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, crisregs[i], &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(TILE)
        for (i = 0; i < nargs; ++i)
                tcp->u_arg[i] = tile_regs.regs[i];
 #elif defined(M68K)
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, (i < 5 ? i : i + 2)*4, &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, (i < 5 ? i : i + 2)*4, &tcp->u_arg[i]) < 0)
                        return -1;
 #elif defined(OR1K)
        (void)nargs;
@@ -1936,11 +1943,16 @@ get_syscall_args(struct tcb *tcp)
        /* arg0: a6, arg1: a3, arg2: a4, arg3: a5, arg4: a8, arg5: a9 */
        static const int xtensaregs[MAX_ARGS] = { 6, 3, 4, 5, 8, 9 };
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, REG_A_BASE + xtensaregs[i], &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, REG_A_BASE + xtensaregs[i], &tcp->u_arg[i]) < 0)
                        return -1;
+# elif defined(ARC)
+       long *arc_args = &arc_regs.scratch.r0;
+       for (i = 0; i < nargs; ++i)
+               tcp->u_arg[i] = *arc_args--;
+
 #else /* Other architecture (32bits specific) */
        for (i = 0; i < nargs; ++i)
-               if (upeek(tcp, i*4, &tcp->u_arg[i]) < 0)
+               if (upeek(tcp->pid, i*4, &tcp->u_arg[i]) < 0)
                        return -1;
 #endif
        return 1;
@@ -2028,6 +2040,13 @@ trace_syscall_entering(struct tcb *tcp)
                goto ret;
        }
 
+#ifdef USE_LIBUNWIND
+       if (stack_trace_enabled) {
+               if (tcp->s_ent->sys_flags & STACKTRACE_CAPTURE_ON_ENTER)
+                       unwind_capture_stacktrace(tcp);
+       }
+#endif
+
        printleader(tcp);
        if (tcp->qual_flg & UNDEFINED_SCNO)
                tprintf("%s(", undefined_scno_name(tcp));
@@ -2056,23 +2075,14 @@ static int
 get_syscall_result(struct tcb *tcp)
 {
 #if defined(S390) || defined(S390X)
-       if (upeek(tcp, PT_GPR2, &gpr2) < 0)
+       if (upeek(tcp->pid, PT_GPR2, &s390_gpr2) < 0)
                return -1;
 #elif defined(POWERPC)
-# define SO_MASK 0x10000000
-       {
-               long flags;
-               if (upeek(tcp, sizeof(unsigned long)*PT_CCR, &flags) < 0)
-                       return -1;
-               if (upeek(tcp, sizeof(unsigned long)*PT_R3, &ppc_result) < 0)
-                       return -1;
-               if (flags & SO_MASK)
-                       ppc_result = -ppc_result;
-       }
+       /* already done by get_regs */
 #elif defined(AVR32)
        /* already done by get_regs */
 #elif defined(BFIN)
-       if (upeek(tcp, PT_R0, &bfin_r0) < 0)
+       if (upeek(tcp->pid, PT_R0, &bfin_r0) < 0)
                return -1;
 #elif defined(I386)
        /* already done by get_regs */
@@ -2081,11 +2091,11 @@ get_syscall_result(struct tcb *tcp)
 #elif defined(IA64)
 #      define IA64_PSR_IS      ((long)1 << 34)
        long psr;
-       if (upeek(tcp, PT_CR_IPSR, &psr) >= 0)
-               ia32 = (psr & IA64_PSR_IS) != 0;
-       if (upeek(tcp, PT_R8, &ia64_r8) < 0)
+       if (upeek(tcp->pid, PT_CR_IPSR, &psr) >= 0)
+               ia64_ia32mode = ((psr & IA64_PSR_IS) != 0);
+       if (upeek(tcp->pid, PT_R8, &ia64_r8) < 0)
                return -1;
-       if (upeek(tcp, PT_R10, &ia64_r10) < 0)
+       if (upeek(tcp->pid, PT_R10, &ia64_r10) < 0)
                return -1;
 #elif defined(ARM)
        /* already done by get_regs */
@@ -2098,7 +2108,7 @@ get_syscall_result(struct tcb *tcp)
         */
        /*update_personality(tcp, aarch64_io.iov_len == sizeof(aarch64_regs));*/
 #elif defined(M68K)
-       if (upeek(tcp, 4*PT_D0, &m68k_d0) < 0)
+       if (upeek(tcp->pid, 4*PT_D0, &m68k_d0) < 0)
                return -1;
 #elif defined(LINUX_MIPSN32)
        unsigned long long regs[38];
@@ -2108,43 +2118,45 @@ get_syscall_result(struct tcb *tcp)
        mips_a3 = regs[REG_A3];
        mips_r2 = regs[REG_V0];
 #elif defined(MIPS)
-       if (upeek(tcp, REG_A3, &mips_a3) < 0)
+       if (upeek(tcp->pid, REG_A3, &mips_a3) < 0)
                return -1;
-       if (upeek(tcp, REG_V0, &mips_r2) < 0)
+       if (upeek(tcp->pid, REG_V0, &mips_r2) < 0)
                return -1;
 #elif defined(ALPHA)
-       if (upeek(tcp, REG_A3, &alpha_a3) < 0)
+       if (upeek(tcp->pid, REG_A3, &alpha_a3) < 0)
                return -1;
-       if (upeek(tcp, REG_R0, &alpha_r0) < 0)
+       if (upeek(tcp->pid, REG_R0, &alpha_r0) < 0)
                return -1;
 #elif defined(SPARC) || defined(SPARC64)
        /* already done by get_regs */
 #elif defined(HPPA)
-       if (upeek(tcp, PT_GR28, &hppa_r28) < 0)
+       if (upeek(tcp->pid, PT_GR28, &hppa_r28) < 0)
                return -1;
 #elif defined(SH)
        /* new syscall ABI returns result in R0 */
-       if (upeek(tcp, 4*REG_REG0, (long *)&sh_r0) < 0)
+       if (upeek(tcp->pid, 4*REG_REG0, (long *)&sh_r0) < 0)
                return -1;
 #elif defined(SH64)
        /* ABI defines result returned in r9 */
-       if (upeek(tcp, REG_GENERAL(9), (long *)&sh64_r9) < 0)
+       if (upeek(tcp->pid, REG_GENERAL(9), (long *)&sh64_r9) < 0)
                return -1;
 #elif defined(CRISV10) || defined(CRISV32)
-       if (upeek(tcp, 4*PT_R10, &cris_r10) < 0)
+       if (upeek(tcp->pid, 4*PT_R10, &cris_r10) < 0)
                return -1;
 #elif defined(TILE)
        /* already done by get_regs */
 #elif defined(MICROBLAZE)
-       if (upeek(tcp, 3 * 4, &microblaze_r3) < 0)
+       if (upeek(tcp->pid, 3 * 4, &microblaze_r3) < 0)
                return -1;
 #elif defined(OR1K)
        /* already done by get_regs */
 #elif defined(METAG)
        /* already done by get_regs */
 #elif defined(XTENSA)
-       if (upeek(tcp, REG_A_BASE + 2, &xtensa_a2) < 0)
+       if (upeek(tcp->pid, REG_A_BASE + 2, &xtensa_a2) < 0)
                return -1;
+#elif defined(ARC)
+       /* already done by get_regs */
 #endif
        return 1;
 }
@@ -2154,16 +2166,14 @@ static void
 syscall_fixup_on_sysexit(struct tcb *tcp)
 {
 #if defined(S390) || defined(S390X)
-       if (syscall_mode != -ENOSYS)
-               syscall_mode = tcp->scno;
        if ((tcp->flags & TCB_WAITEXECVE)
-                && (gpr2 == -ENOSYS || gpr2 == tcp->scno)) {
+                && (s390_gpr2 == -ENOSYS || s390_gpr2 == tcp->scno)) {
                /*
                 * Return from execve.
                 * Fake a return value of zero.  We leave the TCB_WAITEXECVE
                 * flag set for the post-execve SIGTRAP to see and reset.
                 */
-               gpr2 = 0;
+               s390_gpr2 = 0;
        }
 #endif
 }
@@ -2217,12 +2227,12 @@ get_error(struct tcb *tcp)
                check_errno = 0;
        }
 #if defined(S390) || defined(S390X)
-       if (check_errno && is_negated_errno(gpr2)) {
+       if (check_errno && is_negated_errno(s390_gpr2)) {
                tcp->u_rval = -1;
-               u_error = -gpr2;
+               u_error = -s390_gpr2;
        }
        else {
-               tcp->u_rval = gpr2;
+               tcp->u_rval = s390_gpr2;
        }
 #elif defined(I386)
        if (check_errno && is_negated_errno(i386_regs.eax)) {
@@ -2268,7 +2278,7 @@ get_error(struct tcb *tcp)
                tcp->u_lrval = rax;
        }
 #elif defined(IA64)
-       if (ia32) {
+       if (ia64_ia32mode) {
                int err;
 
                err = (int)ia64_r8;
@@ -2298,12 +2308,12 @@ get_error(struct tcb *tcp)
 # endif
        }
 #elif defined(POWERPC)
-       if (check_errno && is_negated_errno(ppc_result)) {
+       if (check_errno && (ppc_regs.ccr & 0x10000000)) {
                tcp->u_rval = -1;
-               u_error = -ppc_result;
+               u_error = ppc_regs.gpr[3];
        }
        else {
-               tcp->u_rval = ppc_result;
+               tcp->u_rval = ppc_regs.gpr[3];
        }
 #elif defined(M68K)
        if (check_errno && is_negated_errno(m68k_d0)) {
@@ -2452,6 +2462,14 @@ get_error(struct tcb *tcp)
        else {
                tcp->u_rval = xtensa_a2;
        }
+#elif defined(ARC)
+       if (check_errno && is_negated_errno(arc_regs.scratch.r0)) {
+               tcp->u_rval = -1;
+               u_error = -arc_regs.scratch.r0;
+       }
+       else {
+               tcp->u_rval = arc_regs.scratch.r0;
+       }
 #endif
        tcp->u_error = u_error;
 }
@@ -2502,6 +2520,13 @@ trace_syscall_exiting(struct tcb *tcp)
        if (Tflag || cflag)
                gettimeofday(&tv, NULL);
 
+#ifdef USE_LIBUNWIND
+       if (stack_trace_enabled) {
+               if (tcp->s_ent->sys_flags & STACKTRACE_INVALIDATE_CACHE)
+                       unwind_cache_invalidate(tcp);
+       }
+#endif
+
 #if SUPPORTED_PERSONALITIES > 1
        update_personality(tcp, tcp->currpers);
 #endif
@@ -2516,8 +2541,7 @@ trace_syscall_exiting(struct tcb *tcp)
        }
 
        if (cflag) {
-               struct timeval t = tv;
-               count_syscall(tcp, &t);
+               count_syscall(tcp, &tv);
                if (cflag == CFLAG_ONLY_STATS) {
                        goto ret;
                }
@@ -2664,6 +2688,14 @@ trace_syscall_exiting(struct tcb *tcp)
                        case RVAL_DECIMAL:
                                tprintf("= %ld", tcp->u_rval);
                                break;
+                       case RVAL_FD:
+                               if (show_fd_path) {
+                                       tprints("= ");
+                                       printfd(tcp, tcp->u_rval);
+                               }
+                               else
+                                       tprintf("= %ld", tcp->u_rval);
+                               break;
 #if defined(LINUX_MIPSN32) || defined(X32)
                        /*
                        case RVAL_LHEX:
@@ -2700,6 +2732,11 @@ trace_syscall_exiting(struct tcb *tcp)
        dumpio(tcp);
        line_ended();
 
+#ifdef USE_LIBUNWIND
+       if (stack_trace_enabled)
+               unwind_print_stacktrace(tcp);
+#endif
+
  ret:
        tcp->flags &= ~TCB_INSYSCALL;
        return 0;
index 26d0d7f..435e2c1 100644 (file)
--- a/system.c
+++ b/system.c
 # include <asm/sysmips.h>
 #endif
 #include <linux/sysctl.h>
+#include <linux/personality.h>
 
-static const struct xlat mount_flags[] = {
-       { MS_MGC_VAL,   "MS_MGC_VAL"    },
-       { MS_RDONLY,    "MS_RDONLY"     },
-       { MS_NOSUID,    "MS_NOSUID"     },
-       { MS_NODEV,     "MS_NODEV"      },
-       { MS_NOEXEC,    "MS_NOEXEC"     },
-       { MS_SYNCHRONOUS,"MS_SYNCHRONOUS"},
-       { MS_REMOUNT,   "MS_REMOUNT"    },
-       { MS_RELATIME,  "MS_RELATIME"   },
-       { MS_KERNMOUNT, "MS_KERNMOUNT"  },
-       { MS_I_VERSION, "MS_I_VERSION"  },
-       { MS_STRICTATIME,"MS_STRICTATIME"},
-       { MS_NOSEC,     "MS_NOSEC"      },
-       { MS_BORN,      "MS_BORN"       },
-       { MS_MANDLOCK,  "MS_MANDLOCK"   },
-       { MS_NOATIME,   "MS_NOATIME"    },
-       { MS_NODIRATIME,"MS_NODIRATIME" },
-       { MS_BIND,      "MS_BIND"       },
-       { MS_MOVE,      "MS_MOVE"       },
-       { MS_REC,       "MS_REC"        },
-       { MS_SILENT,    "MS_SILENT"     },
-       { MS_POSIXACL,  "MS_POSIXACL"   },
-       { MS_UNBINDABLE,"MS_UNBINDABLE" },
-       { MS_PRIVATE,   "MS_PRIVATE"    },
-       { MS_SLAVE,     "MS_SLAVE"      },
-       { MS_SHARED,    "MS_SHARED"     },
-       { MS_ACTIVE,    "MS_ACTIVE"     },
-       { MS_NOUSER,    "MS_NOUSER"     },
-       { 0,            NULL            },
-};
+#include "xlat/mount_flags.h"
 
 int
 sys_mount(struct tcb *tcp)
@@ -154,12 +126,7 @@ sys_mount(struct tcb *tcp)
 #define MNT_DETACH     0x00000002      /* Just detach from the tree */
 #define MNT_EXPIRE     0x00000004      /* Mark for expiry */
 
-static const struct xlat umount_flags[] = {
-       { MNT_FORCE,    "MNT_FORCE"     },
-       { MNT_DETACH,   "MNT_DETACH"    },
-       { MNT_EXPIRE,   "MNT_EXPIRE"    },
-       { 0,            NULL            },
-};
+#include "xlat/umount_flags.h"
 
 int
 sys_umount2(struct tcb *tcp)
@@ -174,30 +141,7 @@ sys_umount2(struct tcb *tcp)
 
 /* These are not macros, but enums.  We just copy the values by hand
    from Linux 2.6.9 here.  */
-static const struct xlat personality_options[] = {
-       { 0,            "PER_LINUX"     },
-       { 0x00800000,   "PER_LINUX_32BIT"},
-       { 0x04100001,   "PER_SVR4"      },
-       { 0x05000002,   "PER_SVR3"      },
-       { 0x07000003,   "PER_SCOSVR3"   },
-       { 0x06000003,   "PER_OSR5"      },
-       { 0x05000004,   "PER_WYSEV386"  },
-       { 0x04000005,   "PER_ISCR4"     },
-       { 0x00000006,   "PER_BSD"       },
-       { 0x04000006,   "PER_SUNOS"     },
-       { 0x05000007,   "PER_XENIX"     },
-       { 0x00000008,   "PER_LINUX32"   },
-       { 0x08000008,   "PER_LINUX32_3GB"},
-       { 0x04000009,   "PER_IRIX32"    },
-       { 0x0400000a,   "PER_IRIXN32"   },
-       { 0x0400000b,   "PER_IRIX64"    },
-       { 0x0000000c,   "PER_RISCOS"    },
-       { 0x0400000d,   "PER_SOLARIS"   },
-       { 0x0410000e,   "PER_UW7"       },
-       { 0x0000000f,   "PER_OSF4"      },
-       { 0x00000010,   "PER_HPUX"      },
-       { 0,            NULL            },
-};
+#include "xlat/personality_options.h"
 
 int
 sys_personality(struct tcb *tcp)
@@ -221,20 +165,7 @@ enum {
        SYSLOG_ACTION_SIZE_BUFFER
 };
 
-static const struct xlat syslog_action_type[] = {
-       { SYSLOG_ACTION_CLOSE,          "SYSLOG_ACTION_CLOSE"           },
-       { SYSLOG_ACTION_OPEN,           "SYSLOG_ACTION_OPEN"            },
-       { SYSLOG_ACTION_READ,           "SYSLOG_ACTION_READ"            },
-       { SYSLOG_ACTION_READ_ALL,       "SYSLOG_ACTION_READ_ALL"        },
-       { SYSLOG_ACTION_READ_CLEAR,     "SYSLOG_ACTION_READ_CLEAR"      },
-       { SYSLOG_ACTION_CLEAR,          "SYSLOG_ACTION_CLEAR"           },
-       { SYSLOG_ACTION_CONSOLE_OFF,    "SYSLOG_ACTION_CONSOLE_OFF"     },
-       { SYSLOG_ACTION_CONSOLE_ON,     "SYSLOG_ACTION_CONSOLE_ON"      },
-       { SYSLOG_ACTION_CONSOLE_LEVEL,  "SYSLOG_ACTION_CONSOLE_LEVEL"   },
-       { SYSLOG_ACTION_SIZE_UNREAD,    "SYSLOG_ACTION_SIZE_UNREAD"     },
-       { SYSLOG_ACTION_SIZE_BUFFER,    "SYSLOG_ACTION_SIZE_BUFFER"     },
-       { 0,                            NULL                            }
-};
+#include "xlat/syslog_action_type.h"
 
 int
 sys_syslog(struct tcb *tcp)
@@ -273,71 +204,20 @@ sys_syslog(struct tcb *tcp)
        return 0;
 }
 
-#include <linux/reboot.h>
-static const struct xlat bootflags1[] = {
-       { LINUX_REBOOT_MAGIC1,  "LINUX_REBOOT_MAGIC1"   },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat bootflags2[] = {
-       { LINUX_REBOOT_MAGIC2,  "LINUX_REBOOT_MAGIC2"   },
-       { LINUX_REBOOT_MAGIC2A, "LINUX_REBOOT_MAGIC2A"  },
-       { LINUX_REBOOT_MAGIC2B, "LINUX_REBOOT_MAGIC2B"  },
-       { 0,                    NULL                    },
-};
-
-static const struct xlat bootflags3[] = {
-       { LINUX_REBOOT_CMD_CAD_OFF,     "LINUX_REBOOT_CMD_CAD_OFF"      },
-       { LINUX_REBOOT_CMD_RESTART,     "LINUX_REBOOT_CMD_RESTART"      },
-       { LINUX_REBOOT_CMD_HALT,        "LINUX_REBOOT_CMD_HALT"         },
-       { LINUX_REBOOT_CMD_CAD_ON,      "LINUX_REBOOT_CMD_CAD_ON"       },
-       { LINUX_REBOOT_CMD_POWER_OFF,   "LINUX_REBOOT_CMD_POWER_OFF"    },
-       { LINUX_REBOOT_CMD_RESTART2,    "LINUX_REBOOT_CMD_RESTART2"     },
-       { 0,                            NULL                            },
-};
-
-int
-sys_reboot(struct tcb *tcp)
-{
-       if (entering(tcp)) {
-               printflags(bootflags1, tcp->u_arg[0], "LINUX_REBOOT_MAGIC_???");
-               tprints(", ");
-               printflags(bootflags2, tcp->u_arg[1], "LINUX_REBOOT_MAGIC_???");
-               tprints(", ");
-               printflags(bootflags3, tcp->u_arg[2], "LINUX_REBOOT_CMD_???");
-               if (tcp->u_arg[2] == LINUX_REBOOT_CMD_RESTART2) {
-                       tprints(", ");
-                       printstr(tcp, tcp->u_arg[3], -1);
-               }
-       }
-       return 0;
-}
-
 #ifdef M68K
-static const struct xlat cacheflush_scope[] = {
-#ifdef FLUSH_SCOPE_LINE
-       { FLUSH_SCOPE_LINE,     "FLUSH_SCOPE_LINE" },
-#endif
-#ifdef FLUSH_SCOPE_PAGE
-       { FLUSH_SCOPE_PAGE,     "FLUSH_SCOPE_PAGE" },
-#endif
-#ifdef FLUSH_SCOPE_ALL
-       { FLUSH_SCOPE_ALL,      "FLUSH_SCOPE_ALL" },
-#endif
-       { 0,                    NULL },
-};
+#include "xlat/cacheflush_scope.h"
 
 static const struct xlat cacheflush_flags[] = {
 #ifdef FLUSH_CACHE_BOTH
-       { FLUSH_CACHE_BOTH,     "FLUSH_CACHE_BOTH" },
+       XLAT(FLUSH_CACHE_BOTH),
 #endif
 #ifdef FLUSH_CACHE_DATA
-       { FLUSH_CACHE_DATA,     "FLUSH_CACHE_DATA" },
+       XLAT(FLUSH_CACHE_DATA),
 #endif
 #ifdef FLUSH_CACHE_INSN
-       { FLUSH_CACHE_INSN,     "FLUSH_CACHE_INSN" },
+       XLAT(FLUSH_CACHE_INSN),
 #endif
-       { 0,                    NULL },
+       XLAT_END
 };
 
 int
@@ -362,14 +242,7 @@ sys_cacheflush(struct tcb *tcp)
 
 #include <bfin_sram.h>
 
-static const struct xlat sram_alloc_flags[] = {
-       { L1_INST_SRAM,         "L1_INST_SRAM" },
-       { L1_DATA_A_SRAM,       "L1_DATA_A_SRAM" },
-       { L1_DATA_B_SRAM,       "L1_DATA_B_SRAM" },
-       { L1_DATA_SRAM,         "L1_DATA_SRAM" },
-       { L2_SRAM,              "L2_SRAM" },
-       { 0,                    NULL },
-};
+#include "xlat/sram_alloc_flags.h"
 
 int
 sys_sram_alloc(struct tcb *tcp)
@@ -386,10 +259,10 @@ sys_sram_alloc(struct tcb *tcp)
 #include <asm/cachectl.h>
 
 static const struct xlat cacheflush_flags[] = {
-       { ICACHE,       "ICACHE" },
-       { DCACHE,       "DCACHE" },
-       { BCACHE,       "BCACHE" },
-       { 0,            NULL },
+       XLAT(ICACHE),
+       XLAT(DCACHE),
+       XLAT(BCACHE),
+       XLAT_END
 };
 
 int
@@ -411,18 +284,18 @@ sys_cacheflush(struct tcb *tcp)
 #ifdef SH
 static const struct xlat cacheflush_flags[] = {
 #ifdef CACHEFLUSH_D_INVAL
-       { CACHEFLUSH_D_INVAL,   "CACHEFLUSH_D_INVAL" },
+       XLAT(CACHEFLUSH_D_INVAL),
 #endif
 #ifdef CACHEFLUSH_D_WB
-       { CACHEFLUSH_D_WB,      "CACHEFLUSH_D_WB" },
+       XLAT(CACHEFLUSH_D_WB),
 #endif
 #ifdef CACHEFLUSH_D_PURGE
-       { CACHEFLUSH_D_PURGE,   "CACHEFLUSH_D_PURGE" },
+       XLAT(CACHEFLUSH_D_PURGE),
 #endif
 #ifdef CACHEFLUSH_I
-       { CACHEFLUSH_I,         "CACHEFLUSH_I" },
+       XLAT(CACHEFLUSH_I),
 #endif
-       { 0,                    NULL },
+       XLAT_END
 };
 
 int
@@ -442,51 +315,7 @@ sys_cacheflush(struct tcb *tcp)
 
 #ifdef SYS_capget
 
-static const struct xlat capabilities[] = {
-       { 1<<CAP_CHOWN,         "CAP_CHOWN"     },
-       { 1<<CAP_DAC_OVERRIDE,  "CAP_DAC_OVERRIDE"},
-       { 1<<CAP_DAC_READ_SEARCH,"CAP_DAC_READ_SEARCH"},
-       { 1<<CAP_FOWNER,        "CAP_FOWNER"    },
-       { 1<<CAP_FSETID,        "CAP_FSETID"    },
-       { 1<<CAP_KILL,          "CAP_KILL"      },
-       { 1<<CAP_SETGID,        "CAP_SETGID"    },
-       { 1<<CAP_SETUID,        "CAP_SETUID"    },
-       { 1<<CAP_SETPCAP,       "CAP_SETPCAP"   },
-       { 1<<CAP_LINUX_IMMUTABLE,"CAP_LINUX_IMMUTABLE"},
-       { 1<<CAP_NET_BIND_SERVICE,"CAP_NET_BIND_SERVICE"},
-       { 1<<CAP_NET_BROADCAST, "CAP_NET_BROADCAST"},
-       { 1<<CAP_NET_ADMIN,     "CAP_NET_ADMIN" },
-       { 1<<CAP_NET_RAW,       "CAP_NET_RAW"   },
-       { 1<<CAP_IPC_LOCK,      "CAP_IPC_LOCK"  },
-       { 1<<CAP_IPC_OWNER,     "CAP_IPC_OWNER" },
-       { 1<<CAP_SYS_MODULE,    "CAP_SYS_MODULE"},
-       { 1<<CAP_SYS_RAWIO,     "CAP_SYS_RAWIO" },
-       { 1<<CAP_SYS_CHROOT,    "CAP_SYS_CHROOT"},
-       { 1<<CAP_SYS_PTRACE,    "CAP_SYS_PTRACE"},
-       { 1<<CAP_SYS_PACCT,     "CAP_SYS_PACCT" },
-       { 1<<CAP_SYS_ADMIN,     "CAP_SYS_ADMIN" },
-       { 1<<CAP_SYS_BOOT,      "CAP_SYS_BOOT"  },
-       { 1<<CAP_SYS_NICE,      "CAP_SYS_NICE"  },
-       { 1<<CAP_SYS_RESOURCE,  "CAP_SYS_RESOURCE"},
-       { 1<<CAP_SYS_TIME,      "CAP_SYS_TIME"  },
-       { 1<<CAP_SYS_TTY_CONFIG,"CAP_SYS_TTY_CONFIG"},
-#ifdef CAP_MKNOD
-       { 1<<CAP_MKNOD,         "CAP_MKNOD"     },
-#endif
-#ifdef CAP_LEASE
-       { 1<<CAP_LEASE,         "CAP_LEASE"     },
-#endif
-#ifdef CAP_AUDIT_WRITE
-       { 1<<CAP_AUDIT_WRITE,   "CAP_AUDIT_WRITE"},
-#endif
-#ifdef CAP_AUDIT_CONTROL
-       { 1<<CAP_AUDIT_CONTROL, "CAP_AUDIT_CONTROL"},
-#endif
-#ifdef CAP_SETFCAP
-       { 1<<CAP_SETFCAP,       "CAP_SETFCAP"   },
-#endif
-       { 0,            NULL            },
-};
+#include "xlat/capabilities.h"
 
 #ifndef _LINUX_CAPABILITY_VERSION_1
 # define _LINUX_CAPABILITY_VERSION_1 0x19980330
@@ -498,12 +327,7 @@ static const struct xlat capabilities[] = {
 # define _LINUX_CAPABILITY_VERSION_3 0x20080522
 #endif
 
-static const struct xlat cap_version[] = {
-       { _LINUX_CAPABILITY_VERSION_1,  "_LINUX_CAPABILITY_VERSION_1"   },
-       { _LINUX_CAPABILITY_VERSION_2,  "_LINUX_CAPABILITY_VERSION_3"   },
-       { _LINUX_CAPABILITY_VERSION_3,  "_LINUX_CAPABILITY_VERSION_3"   },
-       { 0,                            NULL                            }
-};
+#include "xlat/cap_version.h"
 
 static void
 print_cap_header(struct tcb *tcp, unsigned long addr)
@@ -586,250 +410,17 @@ int sys_capset(struct tcb *tcp)
 
 #endif
 
-/* Linux 2.6.18+ headers removed CTL_PROC enum.  */
-# define CTL_PROC 4
-# define CTL_CPU 10            /* older headers lack */
-static const struct xlat sysctl_root[] = {
-       { CTL_KERN, "CTL_KERN" },
-       { CTL_VM, "CTL_VM" },
-       { CTL_NET, "CTL_NET" },
-       { CTL_PROC, "CTL_PROC" },
-       { CTL_FS, "CTL_FS" },
-       { CTL_DEBUG, "CTL_DEBUG" },
-       { CTL_DEV, "CTL_DEV" },
-       { CTL_BUS, "CTL_BUS" },
-       { CTL_ABI, "CTL_ABI" },
-       { CTL_CPU, "CTL_CPU" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_kern[] = {
-       { KERN_OSTYPE, "KERN_OSTYPE" },
-       { KERN_OSRELEASE, "KERN_OSRELEASE" },
-       { KERN_OSREV, "KERN_OSREV" },
-       { KERN_VERSION, "KERN_VERSION" },
-       { KERN_SECUREMASK, "KERN_SECUREMASK" },
-       { KERN_PROF, "KERN_PROF" },
-       { KERN_NODENAME, "KERN_NODENAME" },
-       { KERN_DOMAINNAME, "KERN_DOMAINNAME" },
-#ifdef KERN_SECURELVL
-       { KERN_SECURELVL, "KERN_SECURELVL" },
-#endif
-       { KERN_PANIC, "KERN_PANIC" },
-#ifdef KERN_REALROOTDEV
-       { KERN_REALROOTDEV, "KERN_REALROOTDEV" },
-#endif
-#ifdef KERN_JAVA_INTERPRETER
-       { KERN_JAVA_INTERPRETER, "KERN_JAVA_INTERPRETER" },
-#endif
-#ifdef KERN_JAVA_APPLETVIEWER
-       { KERN_JAVA_APPLETVIEWER, "KERN_JAVA_APPLETVIEWER" },
-#endif
-       { KERN_SPARC_REBOOT, "KERN_SPARC_REBOOT" },
-       { KERN_CTLALTDEL, "KERN_CTLALTDEL" },
-       { KERN_PRINTK, "KERN_PRINTK" },
-       { KERN_NAMETRANS, "KERN_NAMETRANS" },
-       { KERN_PPC_HTABRECLAIM, "KERN_PPC_HTABRECLAIM" },
-       { KERN_PPC_ZEROPAGED, "KERN_PPC_ZEROPAGED" },
-       { KERN_PPC_POWERSAVE_NAP, "KERN_PPC_POWERSAVE_NAP" },
-       { KERN_MODPROBE, "KERN_MODPROBE" },
-       { KERN_SG_BIG_BUFF, "KERN_SG_BIG_BUFF" },
-       { KERN_ACCT, "KERN_ACCT" },
-       { KERN_PPC_L2CR, "KERN_PPC_L2CR" },
-       { KERN_RTSIGNR, "KERN_RTSIGNR" },
-       { KERN_RTSIGMAX, "KERN_RTSIGMAX" },
-       { KERN_SHMMAX, "KERN_SHMMAX" },
-       { KERN_MSGMAX, "KERN_MSGMAX" },
-       { KERN_MSGMNB, "KERN_MSGMNB" },
-       { KERN_MSGPOOL, "KERN_MSGPOOL" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_vm[] = {
-#ifdef VM_SWAPCTL
-       { VM_SWAPCTL, "VM_SWAPCTL" },
-#endif
-#ifdef VM_UNUSED1
-       { VM_UNUSED1, "VM_UNUSED1" },
-#endif
-#ifdef VM_SWAPOUT
-       { VM_SWAPOUT, "VM_SWAPOUT" },
-#endif
-#ifdef VM_UNUSED2
-       { VM_UNUSED2, "VM_UNUSED2" },
-#endif
-#ifdef VM_FREEPG
-       { VM_FREEPG, "VM_FREEPG" },
-#endif
-#ifdef VM_UNUSED3
-       { VM_UNUSED3, "VM_UNUSED3" },
-#endif
-#ifdef VM_BDFLUSH
-       { VM_BDFLUSH, "VM_BDFLUSH" },
-#endif
-#ifdef VM_UNUSED4
-       { VM_UNUSED4, "VM_UNUSED4" },
-#endif
-       { VM_OVERCOMMIT_MEMORY, "VM_OVERCOMMIT_MEMORY" },
-#ifdef VM_BUFFERMEM
-       { VM_BUFFERMEM, "VM_BUFFERMEM" },
-#endif
-#ifdef VM_UNUSED5
-       { VM_UNUSED5, "VM_UNUSED5" },
-#endif
-#ifdef VM_PAGECACHE
-       { VM_PAGECACHE, "VM_PAGECACHE" },
-#endif
-#ifdef VM_UNUSED7
-       { VM_UNUSED7, "VM_UNUSED7" },
-#endif
-#ifdef VM_PAGERDAEMON
-       { VM_PAGERDAEMON, "VM_PAGERDAEMON" },
-#endif
-#ifdef VM_UNUSED8
-       { VM_UNUSED8, "VM_UNUSED8" },
-#endif
-#ifdef VM_PGT_CACHE
-       { VM_PGT_CACHE, "VM_PGT_CACHE" },
-#endif
-#ifdef VM_UNUSED9
-       { VM_UNUSED9, "VM_UNUSED9" },
-#endif
-       { VM_PAGE_CLUSTER, "VM_PAGE_CLUSTER" },
-       { 0, NULL },
-};
-
-static const struct xlat sysctl_net[] = {
-       { NET_CORE, "NET_CORE" },
-       { NET_ETHER, "NET_ETHER" },
-       { NET_802, "NET_802" },
-       { NET_UNIX, "NET_UNIX" },
-       { NET_IPV4, "NET_IPV4" },
-       { NET_IPX, "NET_IPX" },
-       { NET_ATALK, "NET_ATALK" },
-       { NET_NETROM, "NET_NETROM" },
-       { NET_AX25, "NET_AX25" },
-       { NET_BRIDGE, "NET_BRIDGE" },
-       { NET_ROSE, "NET_ROSE" },
-       { NET_IPV6, "NET_IPV6" },
-       { NET_X25, "NET_X25" },
-       { NET_TR, "NET_TR" },
-       { NET_DECNET, "NET_DECNET" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_net_core[] = {
-       { NET_CORE_WMEM_MAX, "NET_CORE_WMEM_MAX" },
-       { NET_CORE_RMEM_MAX, "NET_CORE_RMEM_MAX" },
-       { NET_CORE_WMEM_DEFAULT, "NET_CORE_WMEM_DEFAULT" },
-       { NET_CORE_RMEM_DEFAULT, "NET_CORE_RMEM_DEFAULT" },
-       { NET_CORE_MAX_BACKLOG, "NET_CORE_MAX_BACKLOG" },
-       { NET_CORE_FASTROUTE, "NET_CORE_FASTROUTE" },
-       { NET_CORE_MSG_COST, "NET_CORE_MSG_COST" },
-       { NET_CORE_MSG_BURST, "NET_CORE_MSG_BURST" },
-       { NET_CORE_OPTMEM_MAX, "NET_CORE_OPTMEM_MAX" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_net_unix[] = {
-       { NET_UNIX_DESTROY_DELAY, "NET_UNIX_DESTROY_DELAY" },
-       { NET_UNIX_DELETE_DELAY, "NET_UNIX_DELETE_DELAY" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_net_ipv4[] = {
-       { NET_IPV4_FORWARD, "NET_IPV4_FORWARD" },
-       { NET_IPV4_DYNADDR, "NET_IPV4_DYNADDR" },
-       { NET_IPV4_CONF, "NET_IPV4_CONF" },
-       { NET_IPV4_NEIGH, "NET_IPV4_NEIGH" },
-       { NET_IPV4_ROUTE, "NET_IPV4_ROUTE" },
-       { NET_IPV4_FIB_HASH, "NET_IPV4_FIB_HASH" },
-       { NET_IPV4_TCP_TIMESTAMPS, "NET_IPV4_TCP_TIMESTAMPS" },
-       { NET_IPV4_TCP_WINDOW_SCALING, "NET_IPV4_TCP_WINDOW_SCALING" },
-       { NET_IPV4_TCP_SACK, "NET_IPV4_TCP_SACK" },
-       { NET_IPV4_TCP_RETRANS_COLLAPSE, "NET_IPV4_TCP_RETRANS_COLLAPSE" },
-       { NET_IPV4_DEFAULT_TTL, "NET_IPV4_DEFAULT_TTL" },
-       { NET_IPV4_AUTOCONFIG, "NET_IPV4_AUTOCONFIG" },
-       { NET_IPV4_NO_PMTU_DISC, "NET_IPV4_NO_PMTU_DISC" },
-       { NET_IPV4_TCP_SYN_RETRIES, "NET_IPV4_TCP_SYN_RETRIES" },
-       { NET_IPV4_IPFRAG_HIGH_THRESH, "NET_IPV4_IPFRAG_HIGH_THRESH" },
-       { NET_IPV4_IPFRAG_LOW_THRESH, "NET_IPV4_IPFRAG_LOW_THRESH" },
-       { NET_IPV4_IPFRAG_TIME, "NET_IPV4_IPFRAG_TIME" },
-       { NET_IPV4_TCP_MAX_KA_PROBES, "NET_IPV4_TCP_MAX_KA_PROBES" },
-       { NET_IPV4_TCP_KEEPALIVE_TIME, "NET_IPV4_TCP_KEEPALIVE_TIME" },
-       { NET_IPV4_TCP_KEEPALIVE_PROBES, "NET_IPV4_TCP_KEEPALIVE_PROBES" },
-       { NET_IPV4_TCP_RETRIES1, "NET_IPV4_TCP_RETRIES1" },
-       { NET_IPV4_TCP_RETRIES2, "NET_IPV4_TCP_RETRIES2" },
-       { NET_IPV4_TCP_FIN_TIMEOUT, "NET_IPV4_TCP_FIN_TIMEOUT" },
-       { NET_IPV4_IP_MASQ_DEBUG, "NET_IPV4_IP_MASQ_DEBUG" },
-       { NET_TCP_SYNCOOKIES, "NET_TCP_SYNCOOKIES" },
-       { NET_TCP_STDURG, "NET_TCP_STDURG" },
-       { NET_TCP_RFC1337, "NET_TCP_RFC1337" },
-       { NET_TCP_SYN_TAILDROP, "NET_TCP_SYN_TAILDROP" },
-       { NET_TCP_MAX_SYN_BACKLOG, "NET_TCP_MAX_SYN_BACKLOG" },
-       { NET_IPV4_LOCAL_PORT_RANGE, "NET_IPV4_LOCAL_PORT_RANGE" },
-       { NET_IPV4_ICMP_ECHO_IGNORE_ALL, "NET_IPV4_ICMP_ECHO_IGNORE_ALL" },
-       { NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS, "NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS" },
-       { NET_IPV4_ICMP_SOURCEQUENCH_RATE, "NET_IPV4_ICMP_SOURCEQUENCH_RATE" },
-       { NET_IPV4_ICMP_DESTUNREACH_RATE, "NET_IPV4_ICMP_DESTUNREACH_RATE" },
-       { NET_IPV4_ICMP_TIMEEXCEED_RATE, "NET_IPV4_ICMP_TIMEEXCEED_RATE" },
-       { NET_IPV4_ICMP_PARAMPROB_RATE, "NET_IPV4_ICMP_PARAMPROB_RATE" },
-       { NET_IPV4_ICMP_ECHOREPLY_RATE, "NET_IPV4_ICMP_ECHOREPLY_RATE" },
-       { NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES, "NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES" },
-       { NET_IPV4_IGMP_MAX_MEMBERSHIPS, "NET_IPV4_IGMP_MAX_MEMBERSHIPS" },
-       {  0, NULL }
-};
-
-static const struct xlat sysctl_net_ipv4_route[] = {
-       { NET_IPV4_ROUTE_FLUSH, "NET_IPV4_ROUTE_FLUSH" },
-       { NET_IPV4_ROUTE_MIN_DELAY, "NET_IPV4_ROUTE_MIN_DELAY" },
-       { NET_IPV4_ROUTE_MAX_DELAY, "NET_IPV4_ROUTE_MAX_DELAY" },
-       { NET_IPV4_ROUTE_GC_THRESH, "NET_IPV4_ROUTE_GC_THRESH" },
-       { NET_IPV4_ROUTE_MAX_SIZE, "NET_IPV4_ROUTE_MAX_SIZE" },
-       { NET_IPV4_ROUTE_GC_MIN_INTERVAL, "NET_IPV4_ROUTE_GC_MIN_INTERVAL" },
-       { NET_IPV4_ROUTE_GC_TIMEOUT, "NET_IPV4_ROUTE_GC_TIMEOUT" },
-       { NET_IPV4_ROUTE_GC_INTERVAL, "NET_IPV4_ROUTE_GC_INTERVAL" },
-       { NET_IPV4_ROUTE_REDIRECT_LOAD, "NET_IPV4_ROUTE_REDIRECT_LOAD" },
-       { NET_IPV4_ROUTE_REDIRECT_NUMBER, "NET_IPV4_ROUTE_REDIRECT_NUMBER" },
-       { NET_IPV4_ROUTE_REDIRECT_SILENCE, "NET_IPV4_ROUTE_REDIRECT_SILENCE" },
-       { NET_IPV4_ROUTE_ERROR_COST, "NET_IPV4_ROUTE_ERROR_COST" },
-       { NET_IPV4_ROUTE_ERROR_BURST, "NET_IPV4_ROUTE_ERROR_BURST" },
-       { NET_IPV4_ROUTE_GC_ELASTICITY, "NET_IPV4_ROUTE_GC_ELASTICITY" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_net_ipv4_conf[] = {
-       { NET_IPV4_CONF_FORWARDING, "NET_IPV4_CONF_FORWARDING" },
-       { NET_IPV4_CONF_MC_FORWARDING, "NET_IPV4_CONF_MC_FORWARDING" },
-       { NET_IPV4_CONF_PROXY_ARP, "NET_IPV4_CONF_PROXY_ARP" },
-       { NET_IPV4_CONF_ACCEPT_REDIRECTS, "NET_IPV4_CONF_ACCEPT_REDIRECTS" },
-       { NET_IPV4_CONF_SECURE_REDIRECTS, "NET_IPV4_CONF_SECURE_REDIRECTS" },
-       { NET_IPV4_CONF_SEND_REDIRECTS, "NET_IPV4_CONF_SEND_REDIRECTS" },
-       { NET_IPV4_CONF_SHARED_MEDIA, "NET_IPV4_CONF_SHARED_MEDIA" },
-       { NET_IPV4_CONF_RP_FILTER, "NET_IPV4_CONF_RP_FILTER" },
-       { NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE, "NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE" },
-       { NET_IPV4_CONF_BOOTP_RELAY, "NET_IPV4_CONF_BOOTP_RELAY" },
-       { NET_IPV4_CONF_LOG_MARTIANS, "NET_IPV4_CONF_LOG_MARTIANS" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_net_ipv6[] = {
-       { NET_IPV6_CONF, "NET_IPV6_CONF" },
-       { NET_IPV6_NEIGH, "NET_IPV6_NEIGH" },
-       { NET_IPV6_ROUTE, "NET_IPV6_ROUTE" },
-       { 0, NULL }
-};
-
-static const struct xlat sysctl_net_ipv6_route[] = {
-       { NET_IPV6_ROUTE_FLUSH, "NET_IPV6_ROUTE_FLUSH" },
-       { NET_IPV6_ROUTE_GC_THRESH, "NET_IPV6_ROUTE_GC_THRESH" },
-       { NET_IPV6_ROUTE_MAX_SIZE, "NET_IPV6_ROUTE_MAX_SIZE" },
-       { NET_IPV6_ROUTE_GC_MIN_INTERVAL, "NET_IPV6_ROUTE_GC_MIN_INTERVAL" },
-       { NET_IPV6_ROUTE_GC_TIMEOUT, "NET_IPV6_ROUTE_GC_TIMEOUT" },
-       { NET_IPV6_ROUTE_GC_INTERVAL, "NET_IPV6_ROUTE_GC_INTERVAL" },
-       { NET_IPV6_ROUTE_GC_ELASTICITY, "NET_IPV6_ROUTE_GC_ELASTICITY" },
-       { 0, NULL }
-};
+#include "xlat/sysctl_root.h"
+#include "xlat/sysctl_kern.h"
+#include "xlat/sysctl_vm.h"
+#include "xlat/sysctl_net.h"
+#include "xlat/sysctl_net_core.h"
+#include "xlat/sysctl_net_unix.h"
+#include "xlat/sysctl_net_ipv4.h"
+#include "xlat/sysctl_net_ipv4_route.h"
+#include "xlat/sysctl_net_ipv4_conf.h"
+#include "xlat/sysctl_net_ipv6.h"
+#include "xlat/sysctl_net_ipv6_route.h"
 
 int
 sys_sysctl(struct tcb *tcp)
@@ -992,14 +583,7 @@ sys_sysctl(struct tcb *tcp)
 #define __NEW_UTS_LEN 64
 #endif
 
-static const struct xlat sysmips_operations[] = {
-       { SETNAME,              "SETNAME"       },
-       { FLUSH_CACHE,          "FLUSH_CACHE"   },
-       { MIPS_FIXADE,          "MIPS_FIXADE"   },
-       { MIPS_RDNVRAM,         "MIPS_RDNVRAM"  },
-       { MIPS_ATOMIC_SET,      "MIPS_ATOMIC_SET"       },
-       { 0, NULL }
-};
+#include "xlat/sysmips_operations.h"
 
 int sys_sysmips(struct tcb *tcp)
 {
@@ -1038,18 +622,7 @@ int sys_sysmips(struct tcb *tcp)
 #define OR1K_ATOMIC_UMAX        8
 #define OR1K_ATOMIC_UMIN        9
 
-static const struct xlat atomic_ops[] = {
-       { OR1K_ATOMIC_SWAP,             "SWAP"          },
-       { OR1K_ATOMIC_CMPXCHG,          "CMPXCHG"       },
-       { OR1K_ATOMIC_XCHG,             "XCHG"          },
-       { OR1K_ATOMIC_ADD,              "ADD"           },
-       { OR1K_ATOMIC_DECPOS,           "DECPOS"        },
-       { OR1K_ATOMIC_AND,              "AND"           },
-       { OR1K_ATOMIC_OR,               "OR"            },
-       { OR1K_ATOMIC_UMAX,             "UMAX"          },
-       { OR1K_ATOMIC_UMIN,             "UMIN"          },
-       { 0, NULL }
-};
+#include "xlat/atomic_ops.h"
 
 int sys_or1k_atomic(struct tcb *tcp)
 {
diff --git a/term.c b/term.c
index 7b7de74..d1c9b65 100644 (file)
--- a/term.c
+++ b/term.c
 # include <sys/filio.h>
 #endif
 
-static const struct xlat tcxonc_options[] = {
-       { TCOOFF,       "TCOOFF"        },
-       { TCOON,        "TCOON"         },
-       { TCIOFF,       "TCIOFF"        },
-       { TCION,        "TCION"         },
-       { 0,            NULL            },
-};
+#include "xlat/tcxonc_options.h"
 
 #ifdef TCLFLSH
-static const struct xlat tcflsh_options[] = {
-       { TCIFLUSH,     "TCIFLUSH"      },
-       { TCOFLUSH,     "TCOFLUSH"      },
-       { TCIOFLUSH,    "TCIOFLUSH"     },
-       { 0,            NULL            },
-};
+#include "xlat/tcflsh_options.h"
 #endif
 
-static const struct xlat baud_options[] = {
-       { B0,           "B0"            },
-       { B50,          "B50"           },
-       { B75,          "B75"           },
-       { B110,         "B110"          },
-       { B134,         "B134"          },
-       { B150,         "B150"          },
-       { B200,         "B200"          },
-       { B300,         "B300"          },
-       { B600,         "B600"          },
-       { B1200,        "B1200"         },
-       { B1800,        "B1800"         },
-       { B2400,        "B2400"         },
-       { B4800,        "B4800"         },
-       { B9600,        "B9600"         },
-#ifdef B19200
-       { B19200,       "B19200"        },
-#endif
-#ifdef B38400
-       { B38400,       "B38400"        },
-#endif
-#ifdef B57600
-       { B57600,       "B57600"        },
-#endif
-#ifdef B115200
-       { B115200,      "B115200"       },
-#endif
-#ifdef B230400
-       { B230400,      "B230400"       },
-#endif
-#ifdef B460800
-       { B460800,      "B460800"       },
-#endif
-#ifdef B500000
-       { B500000,      "B500000"       },
-#endif
-#ifdef B576000
-       { B576000,      "B576000"       },
-#endif
-#ifdef B921600
-       { B921600,      "B921600"       },
-#endif
-#ifdef B1000000
-       { B1000000,     "B1000000"      },
-#endif
-#ifdef B1152000
-       { B1152000,     "B1152000"      },
-#endif
-#ifdef B1500000
-       { B1500000,     "B1500000"      },
-#endif
-#ifdef B2000000
-       { B2000000,     "B2000000"      },
-#endif
-#ifdef B2500000
-       { B2500000,     "B2500000"      },
-#endif
-#ifdef B3000000
-       { B3000000,     "B3000000"      },
-#endif
-#ifdef B3500000
-       { B3500000,     "B3500000"      },
-#endif
-#ifdef B4000000
-       { B4000000,     "B4000000"      },
-#endif
-#ifdef EXTA
-       { EXTA,         "EXTA"          },
-#endif
-#ifdef EXTB
-       { EXTB,         "EXTB"          },
-#endif
-       { 0,            NULL            },
-};
-
-static const struct xlat modem_flags[] = {
-#ifdef TIOCM_LE
-       { TIOCM_LE,     "TIOCM_LE",     },
-#endif
-#ifdef TIOCM_DTR
-       { TIOCM_DTR,    "TIOCM_DTR",    },
-#endif
-#ifdef TIOCM_RTS
-       { TIOCM_RTS,    "TIOCM_RTS",    },
-#endif
-#ifdef TIOCM_ST
-       { TIOCM_ST,     "TIOCM_ST",     },
-#endif
-#ifdef TIOCM_SR
-       { TIOCM_SR,     "TIOCM_SR",     },
-#endif
-#ifdef TIOCM_CTS
-       { TIOCM_CTS,    "TIOCM_CTS",    },
-#endif
-#ifdef TIOCM_CAR
-       { TIOCM_CAR,    "TIOCM_CAR",    },
-#endif
-#ifdef TIOCM_CD
-       { TIOCM_CD,     "TIOCM_CD",     },
-#endif
-#ifdef TIOCM_RNG
-       { TIOCM_RNG,    "TIOCM_RNG",    },
-#endif
-#ifdef TIOCM_RI
-       { TIOCM_RI,     "TIOCM_RI",     },
-#endif
-#ifdef TIOCM_DSR
-       { TIOCM_DSR,    "TIOCM_DSR",    },
-#endif
-       { 0,            NULL,           },
-};
+#include "xlat/baud_options.h"
+#include "xlat/modem_flags.h"
 
 int term_ioctl(struct tcb *tcp, long code, long arg)
 {
diff --git a/test-driver b/test-driver
new file mode 100755 (executable)
index 0000000..d306056
--- /dev/null
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2013 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 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 <http://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>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+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-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
index a7f584d..922452a 100644 (file)
@@ -2,10 +2,38 @@
 
 AM_CFLAGS = $(WARN_CFLAGS)
 
-check_PROGRAMS = net-accept-connect
+check_PROGRAMS = \
+       net-accept-connect \
+       scm_rights \
+       set_ptracer_any \
+       sigaction \
+       stack-fcall \
+       uio
 
-TESTS = ptrace_setoptions strace-f qual_syscall stat net
+uio_CFLAGS = $(AM_CFLAGS) -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
 
-EXTRA_DIST = init.sh $(TESTS)
+TESTS = \
+       ptrace_setoptions.test \
+       strace-f.test \
+       qual_syscall.test \
+       scm_rights-fd.test \
+       sigaction.test \
+       stat.test \
+       net.test \
+       net-fd.test \
+       uio.test \
+       count.test \
+       detach-sleeping.test \
+       detach-stopped.test \
+       detach-running.test \
+       strace-k.test
 
-CLEANFILES = check.log
+net-fd.log: net.log
+
+TEST_LOG_COMPILER = $(srcdir)/run.sh
+
+EXTRA_DIST = init.sh run.sh sigaction.awk $(TESTS)
+
+CLEANFILES = $(TESTS:=.tmp)
index abf8196..2945d91 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in 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.
 
 # Automake input for strace tests.
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,9 +79,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-check_PROGRAMS = net-accept-connect$(EXEEXT)
+check_PROGRAMS = net-accept-connect$(EXEEXT) scm_rights$(EXEEXT) \
+       set_ptracer_any$(EXEEXT) sigaction$(EXEEXT) \
+       stack-fcall$(EXEEXT) uio$(EXEEXT)
 subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/depcomp $(top_srcdir)/test-driver
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/includedir.m4 \
        $(top_srcdir)/m4/long_long.m4 $(top_srcdir)/m4/stat.m4 \
@@ -69,37 +99,287 @@ CONFIG_CLEAN_VPATH_FILES =
 net_accept_connect_SOURCES = net-accept-connect.c
 net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT)
 net_accept_connect_LDADD = $(LDADD)
+scm_rights_SOURCES = scm_rights.c
+scm_rights_OBJECTS = scm_rights.$(OBJEXT)
+scm_rights_LDADD = $(LDADD)
+set_ptracer_any_SOURCES = set_ptracer_any.c
+set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
+set_ptracer_any_LDADD = $(LDADD)
+sigaction_SOURCES = sigaction.c
+sigaction_OBJECTS = sigaction.$(OBJEXT)
+sigaction_LDADD = $(LDADD)
+am_stack_fcall_OBJECTS = stack-fcall.$(OBJEXT) stack-fcall-0.$(OBJEXT) \
+       stack-fcall-1.$(OBJEXT) stack-fcall-2.$(OBJEXT) \
+       stack-fcall-3.$(OBJEXT)
+stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
+stack_fcall_LDADD = $(LDADD)
+uio_SOURCES = uio.c
+uio_OBJECTS = uio-uio.$(OBJEXT)
+uio_LDADD = $(LDADD)
+uio_LINK = $(CCLD) $(uio_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
+       $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = net-accept-connect.c
-DIST_SOURCES = net-accept-connect.c
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = net-accept-connect.c scm_rights.c set_ptracer_any.c \
+       sigaction.c $(stack_fcall_SOURCES) uio.c
+DIST_SOURCES = net-accept-connect.c scm_rights.c set_ptracer_any.c \
+       sigaction.c $(stack_fcall_SOURCES) uio.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -183,6 +463,9 @@ infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
+libunwind_LDFLAGS = @libunwind_LDFLAGS@
+libunwind_LIBS = @libunwind_LIBS@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
@@ -201,13 +484,33 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AM_CFLAGS = $(WARN_CFLAGS)
-TESTS = ptrace_setoptions strace-f qual_syscall stat net
-EXTRA_DIST = init.sh $(TESTS)
-CLEANFILES = check.log
+uio_CFLAGS = $(AM_CFLAGS) -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
+
+TESTS = \
+       ptrace_setoptions.test \
+       strace-f.test \
+       qual_syscall.test \
+       scm_rights-fd.test \
+       sigaction.test \
+       stat.test \
+       net.test \
+       net-fd.test \
+       uio.test \
+       count.test \
+       detach-sleeping.test \
+       detach-stopped.test \
+       detach-running.test \
+       strace-k.test
+
+TEST_LOG_COMPILER = $(srcdir)/run.sh
+EXTRA_DIST = init.sh run.sh sigaction.awk $(TESTS)
+CLEANFILES = $(TESTS:=.tmp)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .o .obj
+.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -241,10 +544,31 @@ $(am__aclocal_m4_deps):
 
 clean-checkPROGRAMS:
        -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
 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)
 
+scm_rights$(EXEEXT): $(scm_rights_OBJECTS) $(scm_rights_DEPENDENCIES) $(EXTRA_scm_rights_DEPENDENCIES) 
+       @rm -f scm_rights$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(scm_rights_OBJECTS) $(scm_rights_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)
+
+sigaction$(EXEEXT): $(sigaction_OBJECTS) $(sigaction_DEPENDENCIES) $(EXTRA_sigaction_DEPENDENCIES) 
+       @rm -f sigaction$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sigaction_OBJECTS) $(sigaction_LDADD) $(LIBS)
+
+stack-fcall$(EXEEXT): $(stack_fcall_OBJECTS) $(stack_fcall_DEPENDENCIES) $(EXTRA_stack_fcall_DEPENDENCIES) 
+       @rm -f stack-fcall$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
+
+uio$(EXEEXT): $(uio_OBJECTS) $(uio_DEPENDENCIES) $(EXTRA_uio_DEPENDENCIES) 
+       @rm -f uio$(EXEEXT)
+       $(AM_V_CCLD)$(uio_LINK) $(uio_OBJECTS) $(uio_LDADD) $(LIBS)
+
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
@@ -252,41 +576,53 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-accept-connect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaction.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uio-uio.Po@am__quote@
 
 .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
 @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 $<
+@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
 @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 `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+uio-uio.o: uio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uio_CFLAGS) $(CFLAGS) -MT uio-uio.o -MD -MP -MF $(DEPDIR)/uio-uio.Tpo -c -o uio-uio.o `test -f 'uio.c' || echo '$(srcdir)/'`uio.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/uio-uio.Tpo $(DEPDIR)/uio-uio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uio.c' object='uio-uio.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uio_CFLAGS) $(CFLAGS) -c -o uio-uio.o `test -f 'uio.c' || echo '$(srcdir)/'`uio.c
+
+uio-uio.obj: uio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uio_CFLAGS) $(CFLAGS) -MT uio-uio.obj -MD -MP -MF $(DEPDIR)/uio-uio.Tpo -c -o uio-uio.obj `if test -f 'uio.c'; then $(CYGPATH_W) 'uio.c'; else $(CYGPATH_W) '$(srcdir)/uio.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/uio-uio.Tpo $(DEPDIR)/uio-uio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uio.c' object='uio-uio.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(uio_CFLAGS) $(CFLAGS) -c -o uio-uio.obj `if test -f 'uio.c'; then $(CYGPATH_W) 'uio.c'; else $(CYGPATH_W) '$(srcdir)/uio.c'; fi`
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -298,15 +634,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -315,102 +647,180 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-check-TESTS: $(TESTS)
-       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
-       srcdir=$(srcdir); export srcdir; \
-       list=' $(TESTS) '; \
-       $(am__tty_colors); \
-       if test -n "$$list"; then \
-         for tst in $$list; do \
-           if test -f ./$$tst; then dir=./; \
-           elif test -f $$tst; then dir=; \
-           else dir="$(srcdir)/"; fi; \
-           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *[\ \     ]$$tst[\ \      ]*) \
-               xpass=`expr $$xpass + 1`; \
-               failed=`expr $$failed + 1`; \
-               col=$$red; res=XPASS; \
-             ;; \
-             *) \
-               col=$$grn; res=PASS; \
-             ;; \
-             esac; \
-           elif test $$? -ne 77; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *[\ \     ]$$tst[\ \      ]*) \
-               xfail=`expr $$xfail + 1`; \
-               col=$$lgn; res=XFAIL; \
-             ;; \
-             *) \
-               failed=`expr $$failed + 1`; \
-               col=$$red; res=FAIL; \
-             ;; \
-             esac; \
-           else \
-             skip=`expr $$skip + 1`; \
-             col=$$blu; res=SKIP; \
-           fi; \
-           echo "$${col}$$res$${std}: $$tst"; \
-         done; \
-         if test "$$all" -eq 1; then \
-           tests="test"; \
-           All=""; \
-         else \
-           tests="tests"; \
-           All="All "; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
          fi; \
-         if test "$$failed" -eq 0; then \
-           if test "$$xfail" -eq 0; then \
-             banner="$$All$$all $$tests passed"; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       else \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
            else \
-             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
            fi; \
-         else \
-           if test "$$xpass" -eq 0; then \
-             banner="$$failed of $$all $$tests failed"; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
            else \
-             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+             color_start= color_end=; \
            fi; \
-         fi; \
-         dashes="$$banner"; \
-         skipped=""; \
-         if test "$$skip" -ne 0; then \
-           if test "$$skip" -eq 1; then \
-             skipped="($$skip test was not run)"; \
-           else \
-             skipped="($$skip tests were not run)"; \
-           fi; \
-           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$skipped"; \
-         fi; \
-         report=""; \
-         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-           report="Please report to $(PACKAGE_BUGREPORT)"; \
-           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$report"; \
-         fi; \
-         dashes=`echo "$$dashes" | sed s/./=/g`; \
-         if test "$$failed" -eq 0; then \
-           col="$$grn"; \
-         else \
-           col="$$red"; \
-         fi; \
-         echo "$${col}$$dashes$${std}"; \
-         echo "$${col}$$banner$${std}"; \
-         test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
-         test -z "$$report" || echo "$${col}$$report$${std}"; \
-         echo "$${col}$$dashes$${std}"; \
-         test "$$failed" -eq 0; \
-       else :; fi
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS:
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all $(check_PROGRAMS)
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -468,6 +878,9 @@ install-strip:
            "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
        fi
 mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
        -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -550,19 +963,21 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
-       clean-checkPROGRAMS clean-generic ctags distclean \
-       distclean-compile distclean-generic distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-       uninstall-am
-
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+       distclean distclean-compile distclean-generic distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       recheck tags tags-am uninstall uninstall-am
+
+
+net-fd.log: net.log
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/count.test b/tests/count.test
new file mode 100755 (executable)
index 0000000..e9eafd9
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# Check whether -c and -w options work.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sleep
+check_prog grep
+
+make_log()
+{
+       $STRACE $args > $LOG 2>&1 || {
+               cat $LOG
+               fail_ "$STRACE $args failed"
+       }
+}
+
+grep_log()
+{
+       LC_ALL=C grep -E -x -e "$*" $LOG > /dev/null || {
+               cat $LOG
+               fail_ "unexpected output from $STRACE $args"
+       }
+}
+
+args='-c sleep 1'
+make_log
+grep nanosleep $LOG > /dev/null ||
+       skip_ 'sleep does not use nanosleep'
+grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'
+
+args='-c -enanosleep sleep 1'
+make_log
+grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'
+
+args='-cw sleep 1'
+make_log
+grep_log ' *[^ ]+ +(1\.0|0\.99)[^n]*nanosleep'
+
+args='-cw -enanosleep sleep 1'
+make_log
+grep_log '100\.00 +(1\.0|0\.99)[^n]*nanosleep'
+
+exit 0
diff --git a/tests/detach-running.test b/tests/detach-running.test
new file mode 100755 (executable)
index 0000000..e3b33f9
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# Ensure that strace can detach from running processes.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sleep
+check_prog grep
+
+set -e
+
+./set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
+
+while ! [ -s $LOG ]; do
+       kill -0 $! 2> /dev/null ||
+               fail_ 'set_ptracer_any sh failed'
+       $SLEEP_A_BIT
+done
+
+tracee_pid=$!
+
+cleanup()
+{
+       set +e
+       kill $tracee_pid
+       wait $tracee_pid 2> /dev/null
+       return 0
+}
+
+rm -f $LOG
+$STRACE -p $tracee_pid 2> $LOG &
+
+while ! grep -F "Process $tracee_pid attached" $LOG > /dev/null; do
+       kill -0 $! 2> /dev/null ||
+               { cat $LOG; cleanup; fail_ 'strace -p does not work'; }
+       $SLEEP_A_BIT
+done
+
+kill -INT $!
+wait $!
+
+grep -F "Process $tracee_pid detached" $LOG > /dev/null ||
+       { cat $LOG; cleanup; fail_ 'strace -p failed to detach'; }
+
+if [ -f /proc/self/status ]; then
+       $SLEEP_A_BIT
+       test -d /proc/$tracee_pid ||
+               { cat $LOG; cleanup; fail_ 'tracee died after detach'; }
+       grep '^State:.*R (running)' < /proc/$tracee_pid/status > /dev/null || {
+               cat $LOG
+               grep '^State:' < /proc/$tracee_pid/status
+               cleanup
+               fail_ 'tracee is not running after detach'
+       }
+fi
+
+cleanup
+exit 0
diff --git a/tests/detach-sleeping.test b/tests/detach-sleeping.test
new file mode 100755 (executable)
index 0000000..241d515
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+# Ensure that strace can detach from sleeping processes.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sleep
+check_prog grep
+
+set -e
+
+rm -f $LOG
+./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > $LOG &
+
+while ! [ -s $LOG ]; do
+       kill -0 $! 2> /dev/null ||
+               fail_ 'set_ptracer_any sleep failed'
+       $SLEEP_A_BIT
+done
+
+tracee_pid=$!
+
+cleanup()
+{
+       set +e
+       kill $tracee_pid
+       wait $tracee_pid 2> /dev/null
+       return 0
+}
+
+rm -f $LOG
+$STRACE -p $tracee_pid 2> $LOG &
+
+while ! grep -F "Process $tracee_pid attached" $LOG > /dev/null; do
+       kill -0 $! 2> /dev/null ||
+               { cat $LOG; cleanup; fail_ 'strace -p does not work'; }
+       $SLEEP_A_BIT
+done
+
+kill -INT $!
+wait $!
+
+grep -F "Process $tracee_pid detached" $LOG > /dev/null ||
+       { cat $LOG; cleanup; fail_ 'strace -p failed to detach'; }
+
+if [ -f /proc/self/status ]; then
+       $SLEEP_A_BIT
+       test -d /proc/$tracee_pid ||
+               { cat $LOG; cleanup; fail_ 'tracee died after detach'; }
+       grep '^State:.*S (sleeping)' < /proc/$tracee_pid/status > /dev/null || {
+               cat $LOG
+               grep '^State:' < /proc/$tracee_pid/status
+               cleanup
+               fail_ 'tracee is not sleeping after detach'
+       }
+fi
+
+cleanup
+exit 0
diff --git a/tests/detach-stopped.test b/tests/detach-stopped.test
new file mode 100755 (executable)
index 0000000..c41bc04
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+# Ensure that strace can detach from stopped processes.
+
+. "${srcdir=.}/init.sh"
+
+check_prog sleep
+check_prog grep
+
+$STRACE -d -enone / > /dev/null 2> $LOG
+if grep -F -x "PTRACE_SEIZE doesn't work" $LOG > /dev/null; then
+       skip_ "PTRACE_SEIZE doesn't work"
+fi
+
+set -e
+
+rm -f $LOG
+./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > $LOG &
+
+while ! [ -s $LOG ]; do
+       kill -0 $! 2> /dev/null ||
+               fail_ 'set_ptracer_any sleep failed'
+       $SLEEP_A_BIT
+done
+
+tracee_pid=$!
+kill -STOP $tracee_pid
+
+cleanup()
+{
+       set +e
+       kill $tracee_pid
+       kill -CONT $tracee_pid
+       wait $tracee_pid 2> /dev/null
+       return 0
+}
+
+rm -f $LOG
+$STRACE -p $tracee_pid 2> $LOG &
+
+while ! grep -F "Process $tracee_pid attached" $LOG > /dev/null; do
+       kill -0 $! 2> /dev/null ||
+               { cat $LOG; cleanup; fail_ 'strace -p does not work'; }
+       $SLEEP_A_BIT
+done
+
+while ! grep -F -e '--- stopped by ' $LOG > /dev/null; do
+       kill -0 $! 2> /dev/null ||
+               { cat $LOG; cleanup; fail_ 'strace -p does not work'; }
+       $SLEEP_A_BIT
+done
+
+kill -INT $!
+wait $!
+
+grep -F "Process $tracee_pid detached" $LOG > /dev/null ||
+       { cat $LOG; cleanup; fail_ 'strace -p failed to detach'; }
+
+if [ -f /proc/self/status ]; then
+       $SLEEP_A_BIT
+       test -d /proc/$tracee_pid ||
+               { cat $LOG; cleanup; fail_ 'tracee died after detach'; }
+       grep '^State:.*T (stopped)' < /proc/$tracee_pid/status > /dev/null || {
+               cat $LOG
+               grep '^State:' < /proc/$tracee_pid/status
+               cleanup
+               fail_ 'tracee is not group-stopped after detach'
+       }
+fi
+
+cleanup
+exit 0
index db7f102..3976a1e 100644 (file)
@@ -2,6 +2,9 @@
 
 ME_="${0##*/}"
 
+LOG="$ME_.tmp"
+rm -f "$LOG"
+
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
 skip_() { warn_ "$ME_: skipped test: $*"; exit 77; }
@@ -14,17 +17,6 @@ check_prog()
                framework_skip_ "$* is not available"
 }
 
-check_strace()
-{
-       STRACE=${*:-../strace}
-       $STRACE -V > /dev/null ||
-               framework_failure_ "$STRACE is not available"
-}
-
-timeout_duration=60
-check_timeout()
-{
-       TIMEOUT="timeout -s 9 $timeout_duration"
-       $TIMEOUT true > /dev/null 2>&1 ||
-               TIMEOUT=
-}
+: "${STRACE:=../strace}"
+: "${TIMEOUT_DURATION:=60}"
+: "${SLEEP_A_BIT:=sleep 1}"
diff --git a/tests/net-fd.test b/tests/net-fd.test
new file mode 100755 (executable)
index 0000000..fc0d3cd
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# Check how network syscalls are traced when decoding socket descriptors
+
+. "${srcdir=.}/init.sh"
+
+# strace -y is implemented using /proc/self/fd
+[ -d /proc/self/fd/ ] ||
+       framework_skip_ '/proc/self/fd/ is not available'
+
+check_prog grep
+check_prog rm
+
+rm -f $LOG.*
+
+./net-accept-connect ||
+       fail_ 'net-accept-connect failed'
+
+# using -y to test socket descriptors 'paths' decoding
+args="-tt -ff -y -o $LOG -enetwork ./net-accept-connect"
+$STRACE $args ||
+       fail_ "strace $args failed"
+
+"$srcdir"/../strace-log-merge $LOG > $LOG || {
+       cat $LOG
+       fail_ 'strace-log-merge failed'
+}
+
+rm -f $LOG.*
+
+grep_log()
+{
+       local syscall="$1"; shift
+       local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +'
+
+       LC_ALL=C grep -E -x "$prefix$syscall$@" $LOG > /dev/null || {
+               cat $LOG
+               fail_ "strace -enetwork failed to trace \"$syscall\" properly"
+       }
+}
+grep_log bind '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
+grep_log listen '\(0<socket:\[[0-9]+\]>, 5\) += 0'
+grep_log getsockname '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0'
+grep_log accept '\(0<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1<socket:\[[0-9]+\]>'
+grep_log connect '\(1<socket:\[[0-9]+\]>, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0'
+
+exit 0
similarity index 73%
rename from tests/net
rename to tests/net.test
index 64bcc77..de1dae1 100755 (executable)
--- a/tests/net
@@ -4,34 +4,32 @@
 
 . "${srcdir=.}/init.sh"
 
-check_strace
-check_timeout
 check_prog grep
 check_prog rm
 
-rm -f check.log.*
+rm -f $LOG.*
 
-$TIMEOUT ./net-accept-connect ||
+./net-accept-connect ||
        fail_ 'net-accept-connect failed'
 
-args='-tt -ff -o check.log -enetwork ./net-accept-connect'
-$TIMEOUT $STRACE $args ||
+args="-tt -ff -o $LOG -enetwork ./net-accept-connect"
+$STRACE $args ||
        fail_ "strace $args failed"
 
-"$srcdir"/../strace-log-merge check.log > check.log || {
-       cat check.log
+"$srcdir"/../strace-log-merge $LOG > $LOG || {
+       cat $LOG
        fail_ 'strace-log-merge failed'
 }
 
-rm -f check.log.*
+rm -f $LOG.*
 
 grep_log()
 {
        local syscall="$1"; shift
        local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +'
 
-       LC_ALL=C grep -E -x "$prefix$syscall$@" check.log > /dev/null || {
-               cat check.log
+       LC_ALL=C grep -E -x "$prefix$syscall$@" $LOG > /dev/null || {
+               cat $LOG
                fail_ "strace -enetwork failed to trace \"$syscall\" properly"
        }
 }
diff --git a/tests/ptrace_setoptions b/tests/ptrace_setoptions
deleted file mode 100755 (executable)
index 38a2a02..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-# Ensure that strace tests kernel PTRACE_O_TRACECLONE
-# and PTRACE_O_TRACESYSGOOD support properly.
-
-. "${srcdir=.}/init.sh"
-
-[ "$(uname -s)" = Linux ] ||
-       skip_ 'The kernel is not a Linux kernel'
-case "$(uname -r)" in
-       2.[6-9]*|2.[1-5][0-9]*|[3-9].*|[12][0-9]*) ;;
-       *) skip_ 'The kernel is not Linux 2.6.* or newer' ;;
-esac
-
-check_strace
-check_timeout
-
-$TIMEOUT $STRACE -df -enone / 2>&1 |
-       grep -F -x 'ptrace_setoptions = 0xe' > /dev/null ||
-               fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACECLONE support'
-
-$TIMEOUT $STRACE -df -enone / 2>&1 |
-       grep -F -x 'ptrace_setoptions = 0x1f' > /dev/null ||
-               fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
-
-$TIMEOUT $STRACE -d -enone / 2>&1 |
-       grep -F -x 'ptrace_setoptions = 0x11' > /dev/null ||
-               fail_ 'strace failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
diff --git a/tests/ptrace_setoptions.test b/tests/ptrace_setoptions.test
new file mode 100755 (executable)
index 0000000..e574e24
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# Ensure that strace tests kernel PTRACE_O_TRACECLONE
+# and PTRACE_O_TRACESYSGOOD support properly.
+
+. "${srcdir=.}/init.sh"
+
+[ "$(uname -s)" = Linux ] ||
+       skip_ 'The kernel is not a Linux kernel'
+case "$(uname -r)" in
+       2.[6-9]*|2.[1-5][0-9]*|[3-9].*|[12][0-9]*) ;;
+       *) skip_ 'The kernel is not Linux 2.6.* or newer' ;;
+esac
+
+$STRACE -df -enone / > /dev/null 2> $LOG
+grep -F -x 'ptrace_setoptions = 0xe' $LOG > /dev/null || {
+       cat $LOG
+       fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACECLONE support'
+}
+
+grep -F -x 'ptrace_setoptions = 0x1f' $LOG > /dev/null || {
+       cat $LOG
+       fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
+}
+
+$STRACE -d -enone / > /dev/null 2> $LOG
+grep -F -x 'ptrace_setoptions = 0x11' $LOG > /dev/null || {
+       cat $LOG
+       fail_ 'strace failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
+}
diff --git a/tests/qual_syscall b/tests/qual_syscall
deleted file mode 100755 (executable)
index f382f1a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-# Ensure that strace -e trace=set works.
-
-. "${srcdir=.}/init.sh"
-
-check_strace
-check_timeout
-check_prog ls
-check_prog grep
-
-$TIMEOUT $STRACE -e execve ls > /dev/null 2> check.log &&
-grep '^execve(' check.log > /dev/null ||
-       { cat check.log; fail_ 'strace -e execve does not work'; }
-
-grep -v '^execve(' check.log |
-LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
-       { cat check.log; fail_ 'strace -e execve does not work properly'; }
-
-$TIMEOUT $STRACE -e trace=process ls > /dev/null 2> check.log &&
-grep '^execve(' check.log > /dev/null ||
-       { cat check.log; fail_ 'strace -e trace=process does not work'; }
-
-grep '^open' check.log > /dev/null &&
-       { cat check.log; fail_ 'strace -e trace=process does not work properly'; }
-
-exit 0
diff --git a/tests/qual_syscall.test b/tests/qual_syscall.test
new file mode 100755 (executable)
index 0000000..652fcdb
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Ensure that strace -e trace=set works.
+
+. "${srcdir=.}/init.sh"
+
+check_prog ls
+check_prog grep
+
+$STRACE -e execve ls > /dev/null 2> $LOG &&
+grep '^execve(' $LOG > /dev/null ||
+       { cat $LOG; fail_ 'strace -e execve does not work'; }
+
+grep -v '^execve(' $LOG |
+LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
+       { cat $LOG; fail_ 'strace -e execve does not work properly'; }
+
+$STRACE -e trace=process ls > /dev/null 2> $LOG &&
+grep '^execve(' $LOG > /dev/null ||
+       { cat $LOG; fail_ 'strace -e trace=process does not work'; }
+
+grep '^open' $LOG > /dev/null &&
+       { cat $LOG; fail_ 'strace -e trace=process does not work properly'; }
+
+exit 0
diff --git a/tests/run.sh b/tests/run.sh
new file mode 100755 (executable)
index 0000000..02d9912
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+$STRACE -V > /dev/null ||
+       framework_failure_ "$STRACE is not available"
+
+TIMEOUT="timeout -s 9 $TIMEOUT_DURATION"
+$TIMEOUT true > /dev/null 2>&1 ||
+       TIMEOUT=
+
+exec $TIMEOUT "$@"
diff --git a/tests/scm_rights-fd.test b/tests/scm_rights-fd.test
new file mode 100755 (executable)
index 0000000..5a847da
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Check how SCM_RIGHTS control messages are decoded in -y mode.
+
+. "${srcdir=.}/init.sh"
+
+# strace -y is implemented using /proc/$pid/fd
+[ -d /proc/self/fd/ ] ||
+       framework_skip_ '/proc/self/fd/ is not available'
+
+check_prog grep
+check_prog rm
+
+rm -f $LOG.*
+
+./scm_rights ||
+       fail_ 'scm_rights failed'
+
+args="-tt -ff -y -xx -enetwork -o $LOG ./scm_rights"
+$STRACE $args ||
+       fail_ "$STRACE $args failed"
+
+"$srcdir"/../strace-log-merge $LOG > $LOG || {
+       cat $LOG
+       fail_ 'strace-log-merge failed'
+}
+rm -f $LOG.*
+
+grep_log()
+{
+       local syscall="$1"; shift
+       local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +'
+
+       LC_ALL=C grep -E -x "$prefix$syscall$*" $LOG > /dev/null || {
+               cat $LOG
+               fail_ "$STRACE $args failed to trace \"$syscall\" properly"
+       }
+}
+
+grep_log sendmsg '\(1<socket:\[[0-9]+\]>, \{msg_name\(0\)=NULL, msg_iov\(1\)=\[\{"\\x00\\x00\\x00\\x00[^"]*", [1-9][0-9]*\}\], msg_controllen=[1-9][0-9]*, \{cmsg_len=[1-9][0-9]*, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, \{3</dev/null>\}\}, msg_flags=0\}, 0\) += [1-9][0-9]*'
+grep_log recvmsg '\(0<socket:\[[0-9]+\]>, \{msg_name\(0\)=NULL, msg_iov\(1\)=\[\{"\\x00\\x00\\x00\\x00[^"]*", [1-9][0-9]*\}\], msg_controllen=[1-9][0-9]*, \{cmsg_len=[1-9][0-9]*, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, \{3</dev/null>\}\}, msg_flags=0\}, 0\) += [1-9][0-9]*'
+
+exit 0
diff --git a/tests/scm_rights.c b/tests/scm_rights.c
new file mode 100644 (file)
index 0000000..0cced9b
--- /dev/null
@@ -0,0 +1,71 @@
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+
+int main(void)
+{
+       union {
+               struct cmsghdr cmsghdr;
+               char buf[CMSG_SPACE(sizeof(int))];
+       } control = {};
+
+       int fd;
+       int data = 0;
+       struct iovec iov = {
+               .iov_base = &data,
+               .iov_len = sizeof(iov)
+       };
+
+       struct msghdr mh = {
+               .msg_iov = &iov,
+               .msg_iovlen = 1,
+               .msg_control = &control,
+               .msg_controllen = sizeof(control)
+       };
+
+       while ((fd = open("/dev/null", O_RDWR)) < 3)
+               assert(fd >= 0);
+       (void) close(3);
+
+       int sv[2];
+       assert(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
+
+       pid_t pid = fork();
+       assert(pid >= 0);
+
+       if (pid) {
+               assert(close(sv[0]) == 0);
+               assert(dup2(sv[1], 1) == 1);
+               assert(close(sv[1]) == 0);
+
+               assert((fd = open("/dev/null", O_RDWR)) == 3);
+
+               struct cmsghdr *cmsg = CMSG_FIRSTHDR(&mh);
+               cmsg->cmsg_level = SOL_SOCKET;
+               cmsg->cmsg_type = SCM_RIGHTS;
+               cmsg->cmsg_len = CMSG_LEN(sizeof fd);
+               memcpy(CMSG_DATA(cmsg), &fd, sizeof fd);
+               mh.msg_controllen = cmsg->cmsg_len;
+
+               assert(sendmsg(1, &mh, 0) == sizeof(iov));
+               assert(close(1) == 0);
+
+                int status;
+               assert(waitpid(pid, &status, 0) == pid);
+               assert(status == 0);
+       } else {
+               assert(close(sv[1]) == 0);
+               assert(dup2(sv[0], 0) == 0);
+               assert(close(sv[0]) == 0);
+
+               assert(recvmsg(0, &mh, 0) == sizeof(iov));
+               assert(close(0) == 0);
+       }
+
+       return 0;
+}
diff --git a/tests/set_ptracer_any.c b/tests/set_ptracer_any.c
new file mode 100644 (file)
index 0000000..dbd5337
--- /dev/null
@@ -0,0 +1,26 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#include <stdio.h>
+#include <unistd.h>
+#ifdef HAVE_PRCTL
+# include <sys/prctl.h>
+#endif
+
+int main(int argc, char **argv)
+{
+       if (argc < 2)
+               return 99;
+#if defined HAVE_PRCTL && defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY
+       /* Turn off restrictions on tracing if applicable.  If the options
+        * aren't available on this system, that's OK too.  */
+       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
+#endif
+       if (write(1, "\n", 1) != 1) {
+               perror("write");
+               return 99;
+       }
+       (void) execvp(argv[1], argv + 1);
+       perror(argv[1]);
+       return 99;
+}
diff --git a/tests/sigaction.awk b/tests/sigaction.awk
new file mode 100644 (file)
index 0000000..08f49c3
--- /dev/null
@@ -0,0 +1,55 @@
+# rt_sigaction on ALPHA has 5 args: sig, act, oact, sigsetsize, restorer.
+# rt_sigaction on SPARC has 5 args: sig, act, oact, restorer, sigsetsize.
+# rt_sigaction on other architectures has 4 args: sig, act, oact, sigsetsize.
+# Some architectures have SA_RESTORER, some don't;
+# in particular, SPARC has and ALPHA hasn't.
+#
+# There are two regexps for each test:
+# the 1st is for any architecture with SA_RESTORER, including SPARC;
+# the 2nd is for any architecture without SA_RESTORER, including ALPHA;
+# the 3rd is for any architecture without SA_RESTORER and swapped args.
+
+BEGIN {
+       lines = 5
+       fail = 0
+}
+
+# Test 1.
+NR == 1 && /^rt_sigaction\(SIGUSR2, {SIG_IGN, \[HUP INT\], SA_RESTORER\|SA_RESTART, 0x[0-9a-f]+}, {SIG_DFL, \[\], 0}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
+NR == 1 && /^rt_sigaction\(SIGUSR2, {SIG_IGN, \[HUP INT\], SA_RESTART}, {SIG_DFL, \[\], 0}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
+NR == 1 && /^rt_sigaction\(SIGUSR2, {SIG_IGN, \[HUP INT\], SA_RESTART}, {SIG_DFL, \[\], 0}, 0x[0-9a-f]+, (4|8|16)\) = 0$/ {next}
+
+# Test 2.
+NR == 2 && /^rt_sigaction\(SIGUSR2, {0x[0-9a-f]+, \[QUIT TERM\], SA_RESTORER\|SA_SIGINFO, 0x[0-9a-f]+}, {SIG_IGN, \[HUP INT\], SA_RESTORER\|SA_RESTART, 0x[0-9a-f]+}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
+NR == 2 && /^rt_sigaction\(SIGUSR2, {0x[0-9a-f]+, \[QUIT TERM\], SA_SIGINFO}, {SIG_IGN, \[HUP INT\], SA_RESTART}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
+NR == 2 && /^rt_sigaction\(SIGUSR2, {0x[0-9a-f]+, \[QUIT TERM\], SA_SIGINFO}, {SIG_IGN, \[HUP INT\], SA_RESTART}, 0x[0-9a-f]+, (4|8|16)\) = 0$/ {next}
+
+# Test 3.
+NR == 3 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, \[\], SA_RESTORER, 0x[0-9a-f]+}, {0x[0-9a-f]+, \[QUIT TERM\], SA_RESTORER\|SA_SIGINFO, 0x[0-9a-f]+}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
+NR == 3 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, \[\], 0}, {0x[0-9a-f]+, \[QUIT TERM\], SA_SIGINFO}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
+NR == 3 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, \[\], 0}, {0x[0-9a-f]+, \[QUIT TERM\], SA_SIGINFO}, 0x[0-9a-f]+, (4|8|16)\) = 0$/ {next}
+
+# Test 4.
+NR == 4 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, ~\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\], SA_RESTORER, 0x[0-9a-f]+}, {SIG_DFL, \[\], SA_RESTORER, 0x[0-9a-f]+}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
+NR == 4 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, ~\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\], 0}, {SIG_DFL, \[\], 0}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
+NR == 4 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, ~\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\], 0}, {SIG_DFL, \[\], 0}, 0x[0-9a-f]+, (4|8|16)\) = 0$/ {next}
+
+# The last line.
+NR == lines && /^\+\+\+ exited with 0 \+\+\+$/ {next}
+
+{
+  print "Line " NR " does not match: " $0
+  fail=1
+}
+
+END {
+  if (NR != lines) {
+    print "Expected " lines " lines, found " NR " line(s)."
+    print ""
+    exit 1
+  }
+  if (fail) {
+    print ""
+    exit 1
+  }
+}
diff --git a/tests/sigaction.c b/tests/sigaction.c
new file mode 100644 (file)
index 0000000..b5f19b5
--- /dev/null
@@ -0,0 +1,40 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+
+static void handle_signal(int no)
+{
+       _exit(128 + no);
+}
+
+int
+main(void)
+{
+       struct sigaction sa, sa0;
+
+       sa.sa_handler = SIG_IGN;
+       sigemptyset(&sa.sa_mask);
+       sigaddset(&sa.sa_mask, SIGHUP);
+       sigaddset(&sa.sa_mask, SIGINT);
+       sa.sa_flags = SA_RESTART;
+       assert(!sigaction(SIGUSR2, &sa, &sa0));
+
+       sa.sa_handler = handle_signal;
+       sigemptyset(&sa.sa_mask);
+       sigaddset(&sa.sa_mask, SIGQUIT);
+       sigaddset(&sa.sa_mask, SIGTERM);
+       sa.sa_flags = SA_SIGINFO;
+       assert(!sigaction(SIGUSR2, &sa, &sa0));
+
+       sa.sa_handler = SIG_DFL;
+       sigemptyset(&sa.sa_mask);
+       sa.sa_flags = 0;
+       assert(!sigaction(SIGUSR2, &sa, &sa0));
+
+       sigfillset(&sa.sa_mask);
+       sigdelset(&sa.sa_mask, SIGHUP);
+       assert(!sigaction(SIGUSR2, &sa, &sa0));
+
+       return 0;
+}
diff --git a/tests/sigaction.test b/tests/sigaction.test
new file mode 100755 (executable)
index 0000000..33732e0
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Check rt_sigaction decoding.
+
+. "${srcdir=.}/init.sh"
+
+check_prog awk
+
+./sigaction ||
+       fail_ 'sigaction failed'
+
+args="-o $LOG -ert_sigaction ./sigaction"
+$STRACE $args ||
+       fail_ "strace $args failed"
+
+awk -f "$srcdir"/sigaction.awk $LOG ||
+       { cat $LOG; fail_ 'unexpected output'; }
+
+exit 0
diff --git a/tests/stack-fcall-0.c b/tests/stack-fcall-0.c
new file mode 100644 (file)
index 0000000..12a260d
--- /dev/null
@@ -0,0 +1,6 @@
+int f1(int i);
+
+int f0(int i)
+{
+       return f1(i) - i;
+}
diff --git a/tests/stack-fcall-1.c b/tests/stack-fcall-1.c
new file mode 100644 (file)
index 0000000..8716702
--- /dev/null
@@ -0,0 +1,6 @@
+int f2(int i);
+
+int f1(int i)
+{
+       return f2(i) + i;
+}
diff --git a/tests/stack-fcall-2.c b/tests/stack-fcall-2.c
new file mode 100644 (file)
index 0000000..19f8cf8
--- /dev/null
@@ -0,0 +1,6 @@
+int f3(int i);
+
+int f2(int i)
+{
+       return f3(i) - i;
+}
diff --git a/tests/stack-fcall-3.c b/tests/stack-fcall-3.c
new file mode 100644 (file)
index 0000000..3af1667
--- /dev/null
@@ -0,0 +1,6 @@
+#include <unistd.h>
+
+int f3(int i)
+{
+       return getpid() + i;
+}
diff --git a/tests/stack-fcall.c b/tests/stack-fcall.c
new file mode 100644 (file)
index 0000000..134d54f
--- /dev/null
@@ -0,0 +1,7 @@
+int f0(int i);
+
+int main(int argc, char** argv)
+{
+       f0(argc);
+       return 0;
+}
diff --git a/tests/stat b/tests/stat
deleted file mode 100755 (executable)
index e0fc379..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-
-# Check how ftruncate, lseek and stat family syscalls are traced.
-
-. "${srcdir=.}/init.sh"
-
-check_strace
-check_timeout
-check_prog dd
-check_prog find
-check_prog grep
-check_prog rm
-
-umask 022
-truncate_cmd='dd seek=46118400000 obs=1 count=0 if=/dev/null of=sample'
-$truncate_cmd > check.log 2>&1 ||
-       { cat check.log; framework_skip_ 'failed to create a large sparse file'; }
-rm -f sample
-
-$TIMEOUT $STRACE -edesc $truncate_cmd 2>&1 > /dev/null 2> check.log &&
-LC_ALL=C grep -E -x 'ftruncate(64)?\(1, 46118400000\) += 0' check.log > /dev/null ||
-       { cat check.log; fail_ 'strace -edesc failed to trace ftruncate/ftruncate64 properly'; }
-
-LC_ALL=C grep -E -x 'lseek\(1, 46118400000, SEEK_CUR\) += 46118400000|_llseek\(1, 46118400000, \[46118400000\], SEEK_CUR\) += 0' check.log > /dev/null ||
-       { cat check.log; fail_ 'strace -edesc failed to trace lseek/_llseek properly'; }
-
-$TIMEOUT $STRACE -efile find -L sample > /dev/null 2> check.log &&
-LC_ALL=C grep -E -x 'stat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, 0\) += 0' check.log > /dev/null ||
-       { cat check.log; fail_ 'strace -efile failed to trace stat/stat64 properly'; }
-
-$TIMEOUT $STRACE -efile find sample > /dev/null 2> check.log &&
-LC_ALL=C grep -E -x 'lstat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, AT_SYMLINK_NOFOLLOW\) += 0' check.log > /dev/null ||
-       { cat check.log; fail_ 'strace -efile failed to trace fstatat/fstatat64 properly'; }
-
-rm -f sample
-
-exit 0
diff --git a/tests/stat.test b/tests/stat.test
new file mode 100755 (executable)
index 0000000..4176df0
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# Check how ftruncate, lseek and stat family syscalls are traced.
+
+. "${srcdir=.}/init.sh"
+
+check_prog dd
+check_prog find
+check_prog grep
+check_prog rm
+
+umask 022
+truncate_cmd='dd seek=46118400000 obs=1 count=0 if=/dev/null of=sample'
+$truncate_cmd > $LOG 2>&1 ||
+       { cat $LOG; framework_skip_ 'failed to create a large sparse file'; }
+rm -f sample
+
+$STRACE -edesc $truncate_cmd 2>&1 > /dev/null 2> $LOG &&
+LC_ALL=C grep -E -x 'ftruncate(64)?\(1, 46118400000\) += 0' $LOG > /dev/null ||
+       { cat $LOG; fail_ 'strace -edesc failed to trace ftruncate/ftruncate64 properly'; }
+
+LC_ALL=C grep -E -x 'lseek\(1, 46118400000, SEEK_CUR\) += 46118400000|_llseek\(1, 46118400000, \[46118400000\], SEEK_CUR\) += 0' $LOG > /dev/null ||
+       { cat $LOG; fail_ 'strace -edesc failed to trace lseek/_llseek properly'; }
+
+$STRACE -efile find -L sample > /dev/null 2> $LOG &&
+LC_ALL=C grep -E -x 'stat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, 0\) += 0' $LOG > /dev/null ||
+       { cat $LOG; fail_ 'strace -efile failed to trace stat/stat64 properly'; }
+
+$STRACE -efile find sample > /dev/null 2> $LOG &&
+LC_ALL=C grep -E -x 'lstat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, AT_SYMLINK_NOFOLLOW\) += 0' $LOG > /dev/null ||
+       { cat $LOG; fail_ 'strace -efile failed to trace fstatat/fstatat64 properly'; }
+
+rm -f sample
+
+exit 0
diff --git a/tests/strace-f b/tests/strace-f
deleted file mode 100755 (executable)
index 0f76afc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Ensure that strace -f works.
-
-. "${srcdir=.}/init.sh"
-
-check_strace
-check_timeout
-time=/usr/bin/time
-check_prog $time
-
-$TIMEOUT $STRACE -f $time /bin/ls > check.log 2>&1 ||
-       { cat check.log; fail_ 'strace -f does not work'; }
diff --git a/tests/strace-f.test b/tests/strace-f.test
new file mode 100755 (executable)
index 0000000..0c4622c
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Ensure that strace -f works.
+
+. "${srcdir=.}/init.sh"
+
+time=/usr/bin/time
+check_prog $time
+
+$STRACE -f $time /bin/ls > $LOG 2>&1 ||
+       { cat $LOG; fail_ 'strace -f does not work'; }
diff --git a/tests/strace-k.test b/tests/strace-k.test
new file mode 100755 (executable)
index 0000000..f757fb9
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# Ensure that strace -k works.
+
+. "${srcdir=.}/init.sh"
+
+# strace -k is implemented using /proc/$pid/maps
+[ -f /proc/self/maps ] ||
+       framework_skip_ '/proc/self/maps is not available'
+
+check_prog sed
+check_prog tr
+
+./stack-fcall ||
+       fail_ 'stack-fcall failed'
+
+$STRACE -h | grep '^-k' > /dev/null ||
+       skip_ 'strace -k is not available'
+
+args="-e getpid -k ./stack-fcall"
+$STRACE $args > $LOG 2>&1 || {
+       cat $LOG
+       fail_ "$STRACE $args failed"
+}
+
+expected='getpid f3 f2 f1 f0 main '
+result=$(sed -n '1,/(main+0x[a-f0-9]\+) .*/ s/^.*(\([^+]\+\)+0x[a-f0-9]\+) .*/\1/p' $LOG |
+       tr '\n' ' ')
+
+test "$result" = "$expected" || {
+       cat $LOG
+       echo "expected: \"$expected\""
+       echo "result: \"$result\""
+       fail_ "unexpected output from $STRACE $args"
+}
+
+exit 0
diff --git a/tests/uio.c b/tests/uio.c
new file mode 100644 (file)
index 0000000..aac123a
--- /dev/null
@@ -0,0 +1,32 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/uio.h>
+#include <assert.h>
+
+int
+main(void)
+{
+#if defined(HAVE_PREADV) && defined(HAVE_PWRITEV)
+       const off_t offset = 0xdefaceddeadbeefLL;
+       int fd;
+       char buf[4];
+       struct iovec iov = { buf, sizeof buf };
+
+       assert((fd = open("/dev/zero", O_RDONLY)) >= 0);
+       assert(pread(fd, buf, sizeof buf, offset) == 4);
+       assert(preadv(fd, &iov, 1, offset) == 4);
+       assert(!close(fd));
+
+       assert((fd = open("/dev/null", O_WRONLY)) >= 0);
+       assert(pwrite(fd, buf, sizeof buf, offset) == 4);
+       assert(pwritev(fd, &iov, 1, offset) == 4);
+       assert(!close(fd));
+
+       return 0;
+#else
+       return 77;
+#endif
+}
diff --git a/tests/uio.test b/tests/uio.test
new file mode 100755 (executable)
index 0000000..313761f
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# Check how pread/pwrite and preadv/pwritev syscalls are traced.
+
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+check_prog rm
+
+./uio || {
+       if [ $? -eq 77 ]; then
+               framework_skip_ 'preadv/pwritev syscalls are not available'
+       else
+               fail_ 'uio failed'
+       fi
+}
+
+args="-edesc ./uio"
+$STRACE $args > $LOG 2>&1 || {
+       cat $LOG
+       fail_ "$STRACE $args failed"
+}
+
+grep_log()
+{
+       local syscall="$1"; shift
+
+       LC_ALL=C grep -E -x "$syscall$*" $LOG > /dev/null || {
+               cat $LOG
+               fail_ "$STRACE $args failed to trace \"$syscall\" properly"
+       }
+}
+
+grep_log 'pread(64)?' '\(3, "\\0\\0\\0\\0", 4, 1004211379570065135\) += 4'
+grep_log 'preadv' '\(3, \[{"\\0\\0\\0\\0", 4}\], 1, 1004211379570065135\) += 4'
+grep_log 'pwrite(64)?' '\(3, "\\0\\0\\0\\0", 4, 1004211379570065135\) += 4'
+grep_log 'pwritev' '\(3, \[{"\\0\\0\\0\\0", 4}\], 1, 1004211379570065135\) += 4'
+
+exit 0
diff --git a/time.c b/time.c
index e457a5f..1ad90d9 100644 (file)
--- a/time.c
+++ b/time.c
@@ -256,25 +256,30 @@ sys_nanosleep(struct tcb *tcp)
                tprints(", ");
        } else {
                /* Second (returned) timespec is only significant
-                * if syscall was interrupted. We print only its address
-                * on _success_, since kernel doesn't modify its value.
+                * if syscall was interrupted. On success, we print
+                * only its address, since kernel doesn't modify it,
+                * and printing the value may show uninitialized data.
                 */
-               if (is_restart_error(tcp) || !tcp->u_arg[1])
-                       /* Interrupted (or NULL) */
+               switch (tcp->u_error) {
+               default:
+                       /* Not interrupted (slept entire interval) */
+                       if (tcp->u_arg[1]) {
+                               tprintf("%#lx", tcp->u_arg[1]);
+                               break;
+                       }
+                       /* Fall through: print_timespec(NULL) prints "NULL" */
+               case ERESTARTSYS:
+               case ERESTARTNOINTR:
+               case ERESTARTNOHAND:
+               case ERESTART_RESTARTBLOCK:
+                       /* Interrupted */
                        print_timespec(tcp, tcp->u_arg[1]);
-               else
-                       /* Success */
-                       tprintf("%#lx", tcp->u_arg[1]);
+               }
        }
        return 0;
 }
 
-static const struct xlat which[] = {
-       { ITIMER_REAL,  "ITIMER_REAL"   },
-       { ITIMER_VIRTUAL,"ITIMER_VIRTUAL"},
-       { ITIMER_PROF,  "ITIMER_PROF"   },
-       { 0,            NULL            },
-};
+#include "xlat/itimer_which.h"
 
 static void
 printitv_bitness(struct tcb *tcp, long addr, enum bitness_t bitness)
@@ -328,7 +333,7 @@ int
 sys_getitimer(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(which, tcp->u_arg[0], "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
        } else {
                if (syserror(tcp))
@@ -344,7 +349,7 @@ int
 sys_osf_getitimer(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(which, tcp->u_arg[0], "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
        } else {
                if (syserror(tcp))
@@ -360,7 +365,7 @@ int
 sys_setitimer(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(which, tcp->u_arg[0], "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
                printitv(tcp, tcp->u_arg[1]);
                tprints(", ");
@@ -378,7 +383,7 @@ int
 sys_osf_setitimer(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(which, tcp->u_arg[0], "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
                printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32);
                tprints(", ");
@@ -392,108 +397,9 @@ sys_osf_setitimer(struct tcb *tcp)
 }
 #endif
 
-static const struct xlat adjtimex_modes[] = {
-       { 0,            "0"                     },
-#ifdef ADJ_OFFSET
-       { ADJ_OFFSET,   "ADJ_OFFSET"            },
-#endif
-#ifdef ADJ_FREQUENCY
-       { ADJ_FREQUENCY, "ADJ_FREQUENCY"        },
-#endif
-#ifdef ADJ_MAXERROR
-       { ADJ_MAXERROR, "ADJ_MAXERROR"          },
-#endif
-#ifdef ADJ_ESTERROR
-       { ADJ_ESTERROR, "ADJ_ESTERROR"          },
-#endif
-#ifdef ADJ_STATUS
-       { ADJ_STATUS,   "ADJ_STATUS"            },
-#endif
-#ifdef ADJ_TIMECONST
-       { ADJ_TIMECONST, "ADJ_TIMECONST"        },
-#endif
-#ifdef ADJ_TICK
-       { ADJ_TICK,     "ADJ_TICK"              },
-#endif
-#ifdef ADJ_OFFSET_SINGLESHOT
-       { ADJ_OFFSET_SINGLESHOT, "ADJ_OFFSET_SINGLESHOT" },
-#endif
-       { 0,            NULL                    }
-};
-
-static const struct xlat adjtimex_status[] = {
-#ifdef STA_PLL
-       { STA_PLL,      "STA_PLL"       },
-#endif
-#ifdef STA_PPSFREQ
-       { STA_PPSFREQ,  "STA_PPSFREQ"   },
-#endif
-#ifdef STA_PPSTIME
-       { STA_PPSTIME,  "STA_PPSTIME"   },
-#endif
-#ifdef STA_FLL
-       { STA_FLL,      "STA_FLL"       },
-#endif
-#ifdef STA_INS
-       { STA_INS,      "STA_INS"       },
-#endif
-#ifdef STA_DEL
-       { STA_DEL,      "STA_DEL"       },
-#endif
-#ifdef STA_UNSYNC
-       { STA_UNSYNC,   "STA_UNSYNC"    },
-#endif
-#ifdef STA_FREQHOLD
-       { STA_FREQHOLD, "STA_FREQHOLD"  },
-#endif
-#ifdef STA_PPSSIGNAL
-       { STA_PPSSIGNAL, "STA_PPSSIGNAL" },
-#endif
-#ifdef STA_PPSJITTER
-       { STA_PPSJITTER, "STA_PPSJITTER" },
-#endif
-#ifdef STA_PPSWANDER
-       { STA_PPSWANDER, "STA_PPSWANDER" },
-#endif
-#ifdef STA_PPSERROR
-       { STA_PPSERROR, "STA_PPSERROR"  },
-#endif
-#ifdef STA_CLOCKERR
-       { STA_CLOCKERR, "STA_CLOCKERR"  },
-#endif
-#ifdef STA_NANO
-       { STA_NANO,     "STA_NANO"      },
-#endif
-#ifdef STA_MODE
-       { STA_MODE,     "STA_MODE"      },
-#endif
-#ifdef STA_CLK
-       { STA_CLK,      "STA_CLK"       },
-#endif
-       { 0,            NULL            }
-};
-
-static const struct xlat adjtimex_state[] = {
-#ifdef TIME_OK
-       { TIME_OK,      "TIME_OK"       },
-#endif
-#ifdef TIME_INS
-       { TIME_INS,     "TIME_INS"      },
-#endif
-#ifdef TIME_DEL
-       { TIME_DEL,     "TIME_DEL"      },
-#endif
-#ifdef TIME_OOP
-       { TIME_OOP,     "TIME_OOP"      },
-#endif
-#ifdef TIME_WAIT
-       { TIME_WAIT,    "TIME_WAIT"     },
-#endif
-#ifdef TIME_ERROR
-       { TIME_ERROR,   "TIME_ERROR"    },
-#endif
-       { 0,            NULL            }
-};
+#include "xlat/adjtimex_modes.h"
+#include "xlat/adjtimex_status.h"
+#include "xlat/adjtimex_state.h"
 
 #if SUPPORTED_PERSONALITIES > 1
 static int
@@ -613,41 +519,37 @@ sys_adjtimex(struct tcb *tcp)
        return 0;
 }
 
-static const struct xlat clockflags[] = {
-       { TIMER_ABSTIME,        "TIMER_ABSTIME" },
-       { 0,                    NULL            }
-};
+#include "xlat/clockflags.h"
+#include "xlat/clocknames.h"
 
-static const struct xlat clocknames[] = {
-#ifdef CLOCK_REALTIME
-       { CLOCK_REALTIME,               "CLOCK_REALTIME" },
-#endif
-#ifdef CLOCK_MONOTONIC
-       { CLOCK_MONOTONIC,              "CLOCK_MONOTONIC" },
-#endif
-#ifdef CLOCK_PROCESS_CPUTIME_ID
-       { CLOCK_PROCESS_CPUTIME_ID,     "CLOCK_PROCESS_CPUTIME_ID" },
-#endif
-#ifdef CLOCK_THREAD_CPUTIME_ID
-       { CLOCK_THREAD_CPUTIME_ID,      "CLOCK_THREAD_CPUTIME_ID" },
-#endif
-#ifdef CLOCK_MONOTONIC_RAW
-       { CLOCK_MONOTONIC_RAW,          "CLOCK_MONOTONIC_RAW" },
-#endif
-#ifdef CLOCK_REALTIME_COARSE
-       { CLOCK_REALTIME_COARSE,        "CLOCK_REALTIME_COARSE" },
-#endif
-#ifdef CLOCK_MONOTONIC_COARSE
-       { CLOCK_MONOTONIC_COARSE,       "CLOCK_MONOTONIC_COARSE" },
+static void
+printclockname(int clockid)
+{
+#ifdef CLOCKID_TO_FD
+# include "xlat/cpuclocknames.h"
+
+       if (clockid < 0) {
+               if ((clockid & CLOCKFD_MASK) == CLOCKFD)
+                       tprintf("FD_TO_CLOCKID(%d)", CLOCKID_TO_FD(clockid));
+               else {
+                       if(CPUCLOCK_PERTHREAD(clockid))
+                               tprintf("MAKE_THREAD_CPUCLOCK(%d,", CPUCLOCK_PID(clockid));
+                       else
+                               tprintf("MAKE_PROCESS_CPUCLOCK(%d,", CPUCLOCK_PID(clockid));
+                       printxval(cpuclocknames, clockid & CLOCKFD_MASK, "CPUCLOCK_???");
+                       tprints(")");
+               }
+       }
+       else
 #endif
-       { 0,                            NULL }
-};
+               printxval(clocknames, clockid, "CLOCK_???");
+}
 
 int
 sys_clock_settime(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
+               printclockname(tcp->u_arg[0]);
                tprints(", ");
                printtv(tcp, tcp->u_arg[1]);
        }
@@ -658,7 +560,7 @@ int
 sys_clock_gettime(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
+               printclockname(tcp->u_arg[0]);
                tprints(", ");
        } else {
                if (syserror(tcp))
@@ -673,7 +575,7 @@ int
 sys_clock_nanosleep(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
+               printclockname(tcp->u_arg[0]);
                tprints(", ");
                printflags(clockflags, tcp->u_arg[1], "TIMER_???");
                tprints(", ");
@@ -693,7 +595,7 @@ sys_clock_adjtime(struct tcb *tcp)
 {
        if (exiting(tcp))
                return do_adjtimex(tcp, tcp->u_arg[1]);
-       printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
+       printclockname(tcp->u_arg[0]);
        tprints(", ");
        return 0;
 }
@@ -701,13 +603,7 @@ sys_clock_adjtime(struct tcb *tcp)
 #ifndef SIGEV_THREAD_ID
 # define SIGEV_THREAD_ID 4
 #endif
-static const struct xlat sigev_value[] = {
-       { SIGEV_SIGNAL+1, "SIGEV_SIGNAL" },
-       { SIGEV_NONE+1, "SIGEV_NONE" },
-       { SIGEV_THREAD+1, "SIGEV_THREAD" },
-       { SIGEV_THREAD_ID+1, "SIGEV_THREAD_ID" },
-       { 0, NULL }
-};
+#include "xlat/sigev_value.h"
 
 #if SUPPORTED_PERSONALITIES > 1
 static void
@@ -734,7 +630,7 @@ printsigevent32(struct tcb *tcp, long arg)
                        tprintf("%s, ", signame(sev.sigev_signo));
                else
                        tprintf("%u, ", sev.sigev_signo);
-               printxval(sigev_value, sev.sigev_notify + 1, "SIGEV_???");
+               printxval(sigev_value, sev.sigev_notify, "SIGEV_???");
                tprints(", ");
                if (sev.sigev_notify == SIGEV_THREAD_ID)
                        tprintf("{%d}", sev.un.tid);
@@ -768,13 +664,20 @@ printsigevent(struct tcb *tcp, long arg)
                        tprintf("%s, ", signame(sev.sigev_signo));
                else
                        tprintf("%u, ", sev.sigev_signo);
-               printxval(sigev_value, sev.sigev_notify+1, "SIGEV_???");
+               printxval(sigev_value, sev.sigev_notify, "SIGEV_???");
                tprints(", ");
                if (sev.sigev_notify == SIGEV_THREAD_ID)
+#if defined(HAVE_STRUCT_SIGEVENT__SIGEV_UN__PAD)
                        /* _pad[0] is the _tid field which might not be
                           present in the userlevel definition of the
                           struct.  */
                        tprintf("{%d}", sev._sigev_un._pad[0]);
+#elif defined(HAVE_STRUCT_SIGEVENT___PAD)
+                       tprintf("{%d}", sev.__pad[0]);
+#else
+# warning unfamiliar struct sigevent => incomplete SIGEV_THREAD_ID decoding
+                       tprints("{...}");
+#endif
                else if (sev.sigev_notify == SIGEV_THREAD)
                        tprintf("{%p, %p}", sev.sigev_notify_function,
                                sev.sigev_notify_attributes);
@@ -788,7 +691,7 @@ int
 sys_timer_create(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
+               printclockname(tcp->u_arg[0]);
                tprints(", ");
                printsigevent(tcp, tcp->u_arg[1]);
                tprints(", ");
@@ -925,10 +828,7 @@ rtc_ioctl(struct tcb *tcp, long code, long arg)
 #define TFD_TIMER_ABSTIME (1 << 0)
 #endif
 
-static const struct xlat timerfdflags[] = {
-       { TFD_TIMER_ABSTIME,    "TFD_TIMER_ABSTIME"     },
-       { 0,                    NULL                    }
-};
+#include "xlat/timerfdflags.h"
 
 int
 sys_timerfd(struct tcb *tcp)
@@ -936,7 +836,7 @@ sys_timerfd(struct tcb *tcp)
        if (entering(tcp)) {
                /* It does not matter that the kernel uses itimerspec.  */
                tprintf("%ld, ", tcp->u_arg[0]);
-               printxval(clocknames, tcp->u_arg[1], "CLOCK_???");
+               printclockname(tcp->u_arg[0]);
                tprints(", ");
                printflags(timerfdflags, tcp->u_arg[2], "TFD_???");
                tprints(", ");
@@ -949,7 +849,7 @@ int
 sys_timerfd_create(struct tcb *tcp)
 {
        if (entering(tcp)) {
-               printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
+               printclockname(tcp->u_arg[0]);
                tprints(", ");
                printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
        }
diff --git a/unwind.c b/unwind.c
new file mode 100644 (file)
index 0000000..5b06008
--- /dev/null
+++ b/unwind.c
@@ -0,0 +1,600 @@
+/*
+ * Copyright (c) 2013 Luca Clementi <luca.clementi@gmail.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+#include <limits.h>
+#include <libunwind-ptrace.h>
+
+#ifdef _LARGEFILE64_SOURCE
+# ifdef HAVE_FOPEN64
+#  define fopen_for_input fopen64
+# else
+#  define fopen_for_input fopen
+# endif
+#else
+# define fopen_for_input fopen
+#endif
+
+#define DPRINTF(F, A, ...) if (debug_flag) fprintf(stderr, " [unwind(" A ")] " F "\n", __VA_ARGS__)
+
+/*
+ * Кeep a sorted array of cache entries,
+ * so that we can binary search through it.
+ */
+struct mmap_cache_t {
+       /**
+        * example entry:
+        * 7fabbb09b000-7fabbb09f000 r-xp 00179000 fc:00 1180246 /lib/libc-2.11.1.so
+        *
+        * start_addr  is 0x7fabbb09b000
+        * end_addr    is 0x7fabbb09f000
+        * mmap_offset is 0x179000
+        * binary_filename is "/lib/libc-2.11.1.so"
+        */
+       unsigned long start_addr;
+       unsigned long end_addr;
+       unsigned long mmap_offset;
+       char *binary_filename;
+};
+
+/*
+ * Type used in stacktrace walker
+ */
+typedef void (*call_action_fn)(void *data,
+                              const char *binary_filename,
+                              const char *symbol_name,
+                              unw_word_t function_offset,
+                              unsigned long true_offset);
+typedef void (*error_action_fn)(void *data,
+                               const char *error,
+                               unsigned long true_offset);
+
+/*
+ * Type used in stacktrace capturing
+ */
+struct call_t {
+       struct call_t* next;
+       char *output_line;
+};
+
+struct queue_t {
+       struct call_t *tail;
+       struct call_t *head;
+};
+
+static void queue_print(struct queue_t *queue);
+static void delete_mmap_cache(struct tcb *tcp, const char *caller);
+
+static unw_addr_space_t libunwind_as;
+static unsigned int mmap_cache_generation;
+
+void
+unwind_init(void)
+{
+       libunwind_as = unw_create_addr_space(&_UPT_accessors, 0);
+       if (!libunwind_as)
+               error_msg_and_die("failed to create address space for stack tracing");
+       unw_set_caching_policy(libunwind_as, UNW_CACHE_GLOBAL);
+}
+
+void
+unwind_tcb_init(struct tcb *tcp)
+{
+       tcp->libunwind_ui = _UPT_create(tcp->pid);
+       if (!tcp->libunwind_ui)
+               die_out_of_memory();
+
+       tcp->queue = malloc(sizeof(*tcp->queue));
+       if (!tcp->queue)
+               die_out_of_memory();
+       tcp->queue->head = NULL;
+       tcp->queue->tail = NULL;
+}
+
+void
+unwind_tcb_fin(struct tcb *tcp)
+{
+       queue_print(tcp->queue);
+       free(tcp->queue);
+       tcp->queue = NULL;
+
+       delete_mmap_cache(tcp, __FUNCTION__);
+
+       _UPT_destroy(tcp->libunwind_ui);
+       tcp->libunwind_ui = NULL;
+}
+
+/*
+ * caching of /proc/ID/maps for each process to speed up stack tracing
+ *
+ * The cache must be refreshed after syscalls that affect memory mappings,
+ * e.g. mmap, mprotect, munmap, execve.
+ */
+static void
+build_mmap_cache(struct tcb* tcp)
+{
+       FILE *fp;
+       struct mmap_cache_t *cache_head;
+       /* start with a small dynamically-allocated array and then expand it */
+       size_t cur_array_size = 10;
+       char filename[sizeof("/proc/4294967296/maps")];
+       char buffer[PATH_MAX + 80];
+
+       unw_flush_cache(libunwind_as, 0, 0);
+
+       sprintf(filename, "/proc/%u/maps", tcp->pid);
+       fp = fopen_for_input(filename, "r");
+       if (!fp) {
+               perror_msg("fopen: %s", filename);
+               return;
+       }
+
+       cache_head = calloc(cur_array_size, sizeof(*cache_head));
+       if (!cache_head)
+               die_out_of_memory();
+
+       while (fgets(buffer, sizeof(buffer), fp) != NULL) {
+               struct mmap_cache_t *entry;
+               unsigned long start_addr, end_addr, mmap_offset;
+               char exec_bit;
+               char binary_path[PATH_MAX];
+
+               if (sscanf(buffer, "%lx-%lx %*c%*c%c%*c %lx %*x:%*x %*d %[^\n]",
+                          &start_addr, &end_addr, &exec_bit,
+                          &mmap_offset, binary_path) != 5)
+                       continue;
+
+               /* ignore mappings that have no PROT_EXEC bit set */
+               if (exec_bit != 'x')
+                       continue;
+
+               if (end_addr < start_addr) {
+                       error_msg("%s: unrecognized file format", filename);
+                       break;
+               }
+
+               /*
+                * sanity check to make sure that we're storing
+                * non-overlapping regions in ascending order
+                */
+               if (tcp->mmap_cache_size > 0) {
+                       entry = &cache_head[tcp->mmap_cache_size - 1];
+                       if (entry->start_addr == start_addr &&
+                           entry->end_addr == end_addr) {
+                               /* duplicate entry, e.g. [vsyscall] */
+                               continue;
+                       }
+                       if (start_addr <= entry->start_addr ||
+                           start_addr < entry->end_addr) {
+                               error_msg("%s: overlapping memory region",
+                                         filename);
+                               continue;
+                       }
+               }
+
+               if (tcp->mmap_cache_size >= cur_array_size) {
+                       cur_array_size *= 2;
+                       cache_head = realloc(cache_head,
+                                            cur_array_size * sizeof(*cache_head));
+                       if (!cache_head)
+                               die_out_of_memory();
+               }
+
+               entry = &cache_head[tcp->mmap_cache_size];
+               entry->start_addr = start_addr;
+               entry->end_addr = end_addr;
+               entry->mmap_offset = mmap_offset;
+               entry->binary_filename = strdup(binary_path);
+               if (!entry->binary_filename)
+                       die_out_of_memory();
+               tcp->mmap_cache_size++;
+       }
+       fclose(fp);
+       tcp->mmap_cache = cache_head;
+       tcp->mmap_cache_generation = mmap_cache_generation;
+
+       DPRINTF("tgen=%u, ggen=%u, tcp=%p, cache=%p",
+               "cache-build",
+               tcp->mmap_cache_generation,
+               mmap_cache_generation,
+               tcp, tcp->mmap_cache);
+}
+
+/* deleting the cache */
+static void
+delete_mmap_cache(struct tcb *tcp, const char *caller)
+{
+       unsigned int i;
+
+       DPRINTF("tgen=%u, ggen=%u, tcp=%p, cache=%p, caller=%s",
+               "cache-delete",
+               tcp->mmap_cache_generation,
+               mmap_cache_generation,
+               tcp, tcp->mmap_cache, caller);
+
+       for (i = 0; i < tcp->mmap_cache_size; i++) {
+               free(tcp->mmap_cache[i].binary_filename);
+               tcp->mmap_cache[i].binary_filename = NULL;
+       }
+       free(tcp->mmap_cache);
+       tcp->mmap_cache = NULL;
+       tcp->mmap_cache_size = 0;
+}
+
+static bool
+rebuild_cache_if_invalid(struct tcb *tcp, const char *caller)
+{
+       if ((tcp->mmap_cache_generation != mmap_cache_generation)
+           && tcp->mmap_cache)
+               delete_mmap_cache(tcp, caller);
+
+       if (!tcp->mmap_cache)
+               build_mmap_cache(tcp);
+
+       if (!tcp->mmap_cache || !tcp->mmap_cache_size)
+               return false;
+       else
+               return true;
+}
+
+void
+unwind_cache_invalidate(struct tcb* tcp)
+{
+#if SUPPORTED_PERSONALITIES > 1
+       if (tcp->currpers != DEFAULT_PERSONALITY) {
+               /* disable strack trace */
+               return;
+       }
+#endif
+       mmap_cache_generation++;
+       DPRINTF("tgen=%u, ggen=%u, tcp=%p, cache=%p", "increment",
+               tcp->mmap_cache_generation,
+               mmap_cache_generation,
+               tcp,
+               tcp->mmap_cache);
+}
+
+static void
+get_symbol_name(unw_cursor_t *cursor, char **name,
+               size_t *size, unw_word_t *offset)
+{
+       for (;;) {
+               int rc = unw_get_proc_name(cursor, *name, *size, offset);
+               if (rc == 0)
+                       break;
+               if (rc != -UNW_ENOMEM) {
+                       **name = '\0';
+                       *offset = 0;
+                       break;
+               }
+               *size *= 2;
+               *name = realloc(*name, *size);
+               if (!*name)
+                       die_out_of_memory();
+       }
+}
+
+static int
+print_stack_frame(struct tcb *tcp,
+                 call_action_fn call_action,
+                 error_action_fn error_action,
+                 void *data,
+                 unw_cursor_t *cursor,
+                 char **symbol_name,
+                 size_t *symbol_name_size)
+{
+       unw_word_t ip;
+       int lower = 0;
+       int upper = (int) tcp->mmap_cache_size - 1;
+
+       if (unw_get_reg(cursor, UNW_REG_IP, &ip) < 0) {
+               perror_msg("Can't walk the stack of process %d", tcp->pid);
+               return -1;
+       }
+
+       while (lower <= upper) {
+               struct mmap_cache_t *cur_mmap_cache;
+               int mid = (upper + lower) / 2;
+
+               cur_mmap_cache = &tcp->mmap_cache[mid];
+
+               if (ip >= cur_mmap_cache->start_addr &&
+                   ip < cur_mmap_cache->end_addr) {
+                       unsigned long true_offset;
+                       unw_word_t function_offset;
+
+                       get_symbol_name(cursor, symbol_name, symbol_name_size,
+                                       &function_offset);
+                       true_offset = ip - cur_mmap_cache->start_addr +
+                               cur_mmap_cache->mmap_offset;
+                       call_action(data,
+                                   cur_mmap_cache->binary_filename,
+                                   *symbol_name,
+                                   function_offset,
+                                   true_offset);
+                       return 0;
+               }
+               else if (ip < cur_mmap_cache->start_addr)
+                       upper = mid - 1;
+               else
+                       lower = mid + 1;
+       }
+
+       /*
+        * there is a bug in libunwind >= 1.0
+        * after a set_tid_address syscall
+        * unw_get_reg returns IP == 0
+        */
+       if(ip)
+               error_action(data, "unexpected_backtracing_error", ip);
+       return -1;
+}
+
+/*
+ * walking the stack
+ */
+static void
+stacktrace_walk(struct tcb *tcp,
+               call_action_fn call_action,
+               error_action_fn error_action,
+               void *data)
+{
+       char *symbol_name;
+       size_t symbol_name_size = 40;
+       unw_cursor_t cursor;
+       int stack_depth;
+
+       if (!tcp->mmap_cache)
+               error_msg_and_die("bug: mmap_cache is NULL");
+       if (tcp->mmap_cache_size == 0)
+               error_msg_and_die("bug: mmap_cache is empty");
+
+       symbol_name = malloc(symbol_name_size);
+       if (!symbol_name)
+               die_out_of_memory();
+
+       if (unw_init_remote(&cursor, libunwind_as, tcp->libunwind_ui) < 0)
+               perror_msg_and_die("Can't initiate libunwind");
+
+       for (stack_depth = 0; stack_depth < 256; ++stack_depth) {
+               if (print_stack_frame(tcp, call_action, error_action, data,
+                               &cursor, &symbol_name, &symbol_name_size) < 0)
+                       break;
+               if (unw_step(&cursor) <= 0)
+                       break;
+       }
+       if (stack_depth >= 256)
+               error_action(data, "too many stack frames", 0);
+
+       free(symbol_name);
+}
+
+/*
+ * printing an entry in stack to stream or buffer
+ */
+/*
+ * we want to keep the format used by backtrace_symbols from the glibc
+ *
+ * ./a.out() [0x40063d]
+ * ./a.out() [0x4006bb]
+ * ./a.out() [0x4006c6]
+ * /lib64/libc.so.6(__libc_start_main+0xed) [0x7fa2f8a5976d]
+ * ./a.out() [0x400569]
+ */
+#define STACK_ENTRY_SYMBOL_FMT                 \
+       " > %s(%s+0x%lx) [0x%lx]\n",            \
+       binary_filename,                        \
+       symbol_name,                            \
+       (unsigned long) function_offset,        \
+       true_offset
+#define STACK_ENTRY_NOSYMBOL_FMT               \
+       " > %s() [0x%lx]\n",                    \
+       binary_filename, true_offset
+#define STACK_ENTRY_BUG_FMT                    \
+       " > BUG IN %s\n"
+#define STACK_ENTRY_ERROR_WITH_OFFSET_FMT      \
+       " > %s [0x%lx]\n", error, true_offset
+#define STACK_ENTRY_ERROR_FMT                  \
+       " > %s\n", error
+
+static void
+print_call_cb(void *dummy,
+             const char *binary_filename,
+             const char *symbol_name,
+             unw_word_t function_offset,
+             unsigned long true_offset)
+{
+       if (symbol_name)
+               tprintf(STACK_ENTRY_SYMBOL_FMT);
+       else if (binary_filename)
+               tprintf(STACK_ENTRY_NOSYMBOL_FMT);
+       else
+               tprintf(STACK_ENTRY_BUG_FMT, __FUNCTION__);
+
+       line_ended();
+}
+
+static void
+print_error_cb(void *dummy,
+              const char *error,
+              unsigned long true_offset)
+{
+       if (true_offset)
+               tprintf(STACK_ENTRY_ERROR_WITH_OFFSET_FMT);
+       else
+               tprintf(STACK_ENTRY_ERROR_FMT);
+
+       line_ended();
+}
+
+static char *
+sprint_call_or_error(const char *binary_filename,
+                    const char *symbol_name,
+                    unw_word_t function_offset,
+                    unsigned long true_offset,
+                    const char *error)
+{
+       char *output_line = NULL;
+       int n;
+
+       if (symbol_name)
+               n = asprintf(&output_line, STACK_ENTRY_SYMBOL_FMT);
+       else if (binary_filename)
+               n = asprintf(&output_line, STACK_ENTRY_NOSYMBOL_FMT);
+       else if (error)
+               n = true_offset
+                       ? asprintf(&output_line, STACK_ENTRY_ERROR_WITH_OFFSET_FMT)
+                       : asprintf(&output_line, STACK_ENTRY_ERROR_FMT);
+       else
+               n = asprintf(&output_line, STACK_ENTRY_BUG_FMT, __FUNCTION__);
+
+       if (n < 0)
+               error_msg_and_die("error in asprintf");
+
+       return output_line;
+}
+
+/*
+ * queue manipulators
+ */
+static void
+queue_put(struct queue_t *queue,
+         const char *binary_filename,
+         const char *symbol_name,
+         unw_word_t function_offset,
+         unsigned long true_offset,
+         const char *error)
+{
+       struct call_t *call;
+
+       call = malloc(sizeof(*call));
+       if (!call)
+               die_out_of_memory();
+
+       call->output_line = sprint_call_or_error(binary_filename,
+                                                symbol_name,
+                                                function_offset,
+                                                true_offset,
+                                                error);
+       call->next = NULL;
+
+       if (!queue->head) {
+               queue->head = call;
+               queue->tail = call;
+       } else {
+               queue->tail->next = call;
+               queue->tail = call;
+       }
+}
+
+static void
+queue_put_call(void *queue,
+              const char *binary_filename,
+              const char *symbol_name,
+              unw_word_t function_offset,
+              unsigned long true_offset)
+{
+       queue_put(queue,
+                 binary_filename,
+                 symbol_name,
+                 function_offset,
+                 true_offset,
+                 NULL);
+}
+
+static void
+queue_put_error(void *queue,
+               const char *error,
+               unsigned long ip)
+{
+       queue_put(queue, NULL, NULL, 0, ip, error);
+}
+
+static void
+queue_print(struct queue_t *queue)
+{
+       struct call_t *call, *tmp;
+
+       queue->tail = NULL;
+       call = queue->head;
+       queue->head = NULL;
+       while (call) {
+               tmp = call;
+               call = call->next;
+
+               tprints(tmp->output_line);
+               line_ended();
+
+               free(tmp->output_line);
+               tmp->output_line = NULL;
+               tmp->next = NULL;
+               free(tmp);
+       }
+}
+
+/*
+ * printing stack
+ */
+void
+unwind_print_stacktrace(struct tcb* tcp)
+{
+#if SUPPORTED_PERSONALITIES > 1
+       if (tcp->currpers != DEFAULT_PERSONALITY) {
+               /* disable strack trace */
+               return;
+       }
+#endif
+       if (tcp->queue->head) {
+              DPRINTF("tcp=%p, queue=%p", "queueprint", tcp, tcp->queue->head);
+              queue_print(tcp->queue);
+       }
+       else if (rebuild_cache_if_invalid(tcp, __FUNCTION__)) {
+               DPRINTF("tcp=%p, queue=%p", "stackprint", tcp, tcp->queue->head);
+               stacktrace_walk(tcp, print_call_cb, print_error_cb, NULL);
+       }
+}
+
+/*
+ * capturing stack
+ */
+void
+unwind_capture_stacktrace(struct tcb *tcp)
+{
+#if SUPPORTED_PERSONALITIES > 1
+       if (tcp->currpers != DEFAULT_PERSONALITY) {
+               /* disable strack trace */
+               return;
+       }
+#endif
+       if (tcp->queue->head)
+               error_msg_and_die("bug: unprinted entries in queue");
+
+       if (rebuild_cache_if_invalid(tcp, __FUNCTION__)) {
+               stacktrace_walk(tcp, queue_put_call, queue_put_error,
+                               tcp->queue);
+               DPRINTF("tcp=%p, queue=%p", "captured", tcp, tcp->queue->head);
+       }
+}
diff --git a/util.c b/util.c
index 6acdbc2..c78e962 100644 (file)
--- a/util.c
+++ b/util.c
@@ -46,7 +46,6 @@
 
 #ifdef HAVE_SYS_REG_H
 # include <sys/reg.h>
-# define PTRACE_PEEKUSR PTRACE_PEEKUSER
 #elif defined(HAVE_LINUX_PTRACE_H)
 # undef PTRACE_SYSCALL
 # ifdef HAVE_STRUCT_IA64_FPREG
 # ifdef HAVE_STRUCT_PT_ALL_USER_REGS
 #  define pt_all_user_regs XXX_pt_all_user_regs
 # endif
+# ifdef HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS
+#  define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+# endif
 # include <linux/ptrace.h>
+# undef ptrace_peeksiginfo_args
 # undef ia64_fpreg
 # undef pt_all_user_regs
 #endif
@@ -76,13 +79,13 @@ string_to_uint(const char *str)
 }
 
 int
-tv_nz(struct timeval *a)
+tv_nz(const struct timeval *a)
 {
        return a->tv_sec || a->tv_usec;
 }
 
 int
-tv_cmp(struct timeval *a, struct timeval *b)
+tv_cmp(const struct timeval *a, const struct timeval *b)
 {
        if (a->tv_sec < b->tv_sec
            || (a->tv_sec == b->tv_sec && a->tv_usec < b->tv_usec))
@@ -94,13 +97,13 @@ tv_cmp(struct timeval *a, struct timeval *b)
 }
 
 double
-tv_float(struct timeval *tv)
+tv_float(const struct timeval *tv)
 {
        return tv->tv_sec + tv->tv_usec/1000000.0;
 }
 
 void
-tv_add(struct timeval *tv, struct timeval *a, struct timeval *b)
+tv_add(struct timeval *tv, const struct timeval *a, const struct timeval *b)
 {
        tv->tv_sec = a->tv_sec + b->tv_sec;
        tv->tv_usec = a->tv_usec + b->tv_usec;
@@ -111,7 +114,7 @@ tv_add(struct timeval *tv, struct timeval *a, struct timeval *b)
 }
 
 void
-tv_sub(struct timeval *tv, struct timeval *a, struct timeval *b)
+tv_sub(struct timeval *tv, const struct timeval *a, const struct timeval *b)
 {
        tv->tv_sec = a->tv_sec - b->tv_sec;
        tv->tv_usec = a->tv_usec - b->tv_usec;
@@ -122,7 +125,7 @@ tv_sub(struct timeval *tv, struct timeval *a, struct timeval *b)
 }
 
 void
-tv_div(struct timeval *tv, struct timeval *a, int n)
+tv_div(struct timeval *tv, const struct timeval *a, int n)
 {
        tv->tv_usec = (a->tv_sec % n * 1000000 + a->tv_usec + n / 2) / n;
        tv->tv_sec = a->tv_sec / n + tv->tv_usec / 1000000;
@@ -130,7 +133,7 @@ tv_div(struct timeval *tv, struct timeval *a, int n)
 }
 
 void
-tv_mul(struct timeval *tv, struct timeval *a, int n)
+tv_mul(struct timeval *tv, const struct timeval *a, int n)
 {
        tv->tv_usec = a->tv_usec * n;
        tv->tv_sec = a->tv_sec * n + tv->tv_usec / 1000000;
@@ -156,6 +159,53 @@ stpcpy(char *dst, const char *src)
 }
 #endif
 
+/* Find a next bit which is set.
+ * Starts testing at cur_bit.
+ * Returns -1 if no more bits are set.
+ *
+ * We never touch bytes we don't need to.
+ * On big-endian, array is assumed to consist of
+ * current_wordsize wide words: for example, is current_wordsize is 4,
+ * the bytes are walked in 3,2,1,0, 7,6,5,4, 11,10,9,8 ... sequence.
+ * On little-endian machines, word size is immaterial.
+ */
+int
+next_set_bit(const void *bit_array, unsigned cur_bit, unsigned size_bits)
+{
+       const unsigned endian = 1;
+       int little_endian = *(char*)&endian;
+
+       const uint8_t *array = bit_array;
+       unsigned pos = cur_bit / 8;
+       unsigned pos_xor_mask = little_endian ? 0 : current_wordsize-1;
+
+       for (;;) {
+               uint8_t bitmask;
+               uint8_t cur_byte;
+
+               if (cur_bit >= size_bits)
+                       return -1;
+               cur_byte = array[pos ^ pos_xor_mask];
+               if (cur_byte == 0) {
+                       cur_bit = (cur_bit + 8) & (-8);
+                       pos++;
+                       continue;
+               }
+               bitmask = 1 << (cur_bit & 7);
+               for (;;) {
+                       if (cur_byte & bitmask)
+                               return cur_bit;
+                       cur_bit++;
+                       if (cur_bit >= size_bits)
+                               return -1;
+                       bitmask <<= 1;
+                       /* This check *can't be* optimized out: */
+                       if (bitmask == 0)
+                               break;
+               }
+               pos++;
+       }
+}
 /*
  * Print entry in struct xlat table, if there.
  */
@@ -1056,15 +1106,15 @@ umovestr(struct tcb *tcp, long addr, int len, char *laddr)
 }
 
 int
-upeek(struct tcb *tcp, long off, long *res)
+upeek(int pid, long off, long *res)
 {
        long val;
 
        errno = 0;
-       val = ptrace(PTRACE_PEEKUSER, tcp->pid, (char *) off, 0);
+       val = ptrace(PTRACE_PEEKUSER, (pid_t)pid, (char *) off, 0);
        if (val == -1 && errno) {
                if (errno != ESRCH) {
-                       perror_msg("upeek: PTRACE_PEEKUSER pid:%d @0x%lx)", tcp->pid, off);
+                       perror_msg("upeek: PTRACE_PEEKUSER pid:%d @0x%lx)", pid, off);
                }
                return -1;
        }
@@ -1106,15 +1156,15 @@ arg_setup(struct tcb *tcp, arg_setup_state *state)
        unsigned long cfm, sof, sol;
        long bsp;
 
-       if (ia32) {
+       if (ia64_ia32mode) {
                /* Satisfy a false GCC warning.  */
                *state = NULL;
                return 0;
        }
 
-       if (upeek(tcp, PT_AR_BSP, &bsp) < 0)
+       if (upeek(tcp->pid, PT_AR_BSP, &bsp) < 0)
                return -1;
-       if (upeek(tcp, PT_CFM, (long *) &cfm) < 0)
+       if (upeek(tcp->pid, PT_CFM, (long *) &cfm) < 0)
                return -1;
 
        sof = (cfm >> 0) & 0x7f;
@@ -1132,8 +1182,8 @@ get_arg0(struct tcb *tcp, arg_setup_state *state, long *valp)
 {
        int ret;
 
-       if (ia32)
-               ret = upeek(tcp, PT_R11, valp);
+       if (ia64_ia32mode)
+               ret = upeek(tcp->pid, PT_R11, valp);
        else
                ret = umoven(tcp,
                              (unsigned long) ia64_rse_skip_regs(*state, 0),
@@ -1146,8 +1196,8 @@ get_arg1(struct tcb *tcp, arg_setup_state *state, long *valp)
 {
        int ret;
 
-       if (ia32)
-               ret = upeek(tcp, PT_R9, valp);
+       if (ia64_ia32mode)
+               ret = upeek(tcp->pid, PT_R9, valp);
        else
                ret = umoven(tcp,
                              (unsigned long) ia64_rse_skip_regs(*state, 1),
@@ -1161,7 +1211,7 @@ set_arg0(struct tcb *tcp, arg_setup_state *state, long val)
        int req = PTRACE_POKEDATA;
        void *ap;
 
-       if (ia32) {
+       if (ia64_ia32mode) {
                ap = (void *) (intptr_t) PT_R11;         /* r11 == EBX */
                req = PTRACE_POKEUSER;
        } else
@@ -1177,7 +1227,7 @@ set_arg1(struct tcb *tcp, arg_setup_state *state, long val)
        int req = PTRACE_POKEDATA;
        void *ap;
 
-       if (ia32) {
+       if (ia64_ia32mode) {
                ap = (void *) (intptr_t) PT_R9;         /* r9 == ECX */
                req = PTRACE_POKEUSER;
        } else
@@ -1268,8 +1318,8 @@ typedef int arg_setup_state;
 
 # define arg_setup(tcp, state)         (0)
 # define arg_finish_change(tcp, state) 0
-# define get_arg0(tcp, cookie, valp)   (upeek((tcp), arg0_offset, (valp)))
-# define get_arg1(tcp, cookie, valp)   (upeek((tcp), arg1_offset, (valp)))
+# define get_arg0(tcp, cookie, valp)   (upeek((tcp)->pid, arg0_offset, (valp)))
+# define get_arg1(tcp, cookie, valp)   (upeek((tcp)->pid, arg1_offset, (valp)))
 
 static int
 set_arg0(struct tcb *tcp, void *cookie, long val)
@@ -1343,7 +1393,7 @@ change_syscall(struct tcb *tcp, arg_setup_state *state, int new)
        /* setbpt/clearbpt never used: */
        /* Blackfin is only supported since about linux-2.6.23 */
 #elif defined(IA64)
-       if (ia32) {
+       if (ia64_ia32mode) {
                switch (new) {
                case 2:
                        break;  /* x86 SYS_fork */
@@ -1404,6 +1454,9 @@ change_syscall(struct tcb *tcp, arg_setup_state *state, int new)
 #elif defined(XTENSA)
        /* setbpt/clearbpt never used: */
        /* Xtensa is only supported since linux 2.6.13 */
+#elif defined(ARC)
+       /* setbpt/clearbpt never used: */
+       /* ARC only supported since 3.9 */
 #else
 #warning Do not know how to handle change_syscall for this architecture
 #endif /* architecture */
@@ -1435,8 +1488,7 @@ setbpt(struct tcb *tcp)
                        }
        }
 
-       if (tcp->s_ent->sys_func == sys_fork ||
-           tcp->s_ent->sys_func == sys_vfork) {
+       if (tcp->s_ent->sys_func == sys_fork) {
                if (arg_setup(tcp, &state) < 0
                    || get_arg0(tcp, &state, &tcp->inst[0]) < 0
                    || get_arg1(tcp, &state, &tcp->inst[1]) < 0
index f6019f0..0125e72 100644 (file)
 
 #include "defs.h"
 
-#ifdef USE_CUSTOM_PRINTF
+#if USE_CUSTOM_PRINTF
 
 #include <stdarg.h>
 #include <limits.h>
 
+#ifndef HAVE_FPUTS_UNLOCKED
+# define fputs_unlocked fputs
+#endif
+
 #define noinline_for_stack /*nothing*/
 #define likely(expr)       (expr)
 #define unlikely(expr)     (expr)
diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am
new file mode 100644 (file)
index 0000000..ea6f246
--- /dev/null
@@ -0,0 +1,350 @@
+XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclcmds.in xlat/aclipc.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/at_flags.in xlat/atomic_ops.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/cacheflush_scope.in xlat/cap_version.in xlat/capabilities.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/delete_module_flags.in xlat/direnttypes.in xlat/domains.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.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/fileflags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_valid.in xlat/iffflags.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ipc_msg_flags.in xlat/itimer_which.in xlat/kexec_arch_values.in xlat/kexec_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_funcs.in xlat/mctl_lockas.in xlat/mctl_sync.in xlat/mempolicyflags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/modflags.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/msgflags.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/netlink_protocols.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/openmodessol.in xlat/perf_event_open_flags.in xlat/personality_options.in xlat/pmsgflags.in xlat/policies.in xlat/pollflags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_setoptions_flags.in xlat/qm_which.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/schedulers.in xlat/scmvals.in xlat/semctl_flags.in xlat/semop_flags.in xlat/sg_io_dxfer_direction.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/sock_type_flags.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/umount_flags.in xlat/usagewho.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in 
+XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclcmds.h xlat/aclipc.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/at_flags.h xlat/atomic_ops.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/cacheflush_scope.h xlat/cap_version.h xlat/capabilities.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/delete_module_flags.h xlat/direnttypes.h xlat/domains.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.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/fileflags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_valid.h xlat/iffflags.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ipc_msg_flags.h xlat/itimer_which.h xlat/kexec_arch_values.h xlat/kexec_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_funcs.h xlat/mctl_lockas.h xlat/mctl_sync.h xlat/mempolicyflags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/modflags.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/msgflags.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/netlink_protocols.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/openmodessol.h xlat/perf_event_open_flags.h xlat/personality_options.h xlat/pmsgflags.h xlat/policies.h xlat/pollflags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_setoptions_flags.h xlat/qm_which.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/schedulers.h xlat/scmvals.h xlat/semctl_flags.h xlat/semop_flags.h xlat/sg_io_dxfer_direction.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/sock_type_flags.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/umount_flags.h xlat/usagewho.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h 
+$(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/aclcmds.h: $(top_srcdir)/xlat/aclcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/aclipc.h: $(top_srcdir)/xlat/aclipc.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/adjtimex_modes.h: $(top_srcdir)/xlat/adjtimex_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/adjtimex_state.h: $(top_srcdir)/xlat/adjtimex_state.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/adjtimex_status.h: $(top_srcdir)/xlat/adjtimex_status.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/advise.h: $(top_srcdir)/xlat/advise.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/af_packet_types.h: $(top_srcdir)/xlat/af_packet_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/archvals.h: $(top_srcdir)/xlat/archvals.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/at_flags.h: $(top_srcdir)/xlat/at_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/atomic_ops.h: $(top_srcdir)/xlat/atomic_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/baud_options.h: $(top_srcdir)/xlat/baud_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/blkpg_ops.h: $(top_srcdir)/xlat/blkpg_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bootflags1.h: $(top_srcdir)/xlat/bootflags1.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bootflags2.h: $(top_srcdir)/xlat/bootflags2.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bootflags3.h: $(top_srcdir)/xlat/bootflags3.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cacheflush_scope.h: $(top_srcdir)/xlat/cacheflush_scope.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cap_version.h: $(top_srcdir)/xlat/cap_version.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/capabilities.h: $(top_srcdir)/xlat/capabilities.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clockflags.h: $(top_srcdir)/xlat/clockflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clocknames.h: $(top_srcdir)/xlat/clocknames.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clone_flags.h: $(top_srcdir)/xlat/clone_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cpuclocknames.h: $(top_srcdir)/xlat/cpuclocknames.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/delete_module_flags.h: $(top_srcdir)/xlat/delete_module_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/direnttypes.h: $(top_srcdir)/xlat/direnttypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/domains.h: $(top_srcdir)/xlat/domains.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/epollctls.h: $(top_srcdir)/xlat/epollctls.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/epollevents.h: $(top_srcdir)/xlat/epollevents.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/epollflags.h: $(top_srcdir)/xlat/epollflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_classes.h: $(top_srcdir)/xlat/fan_classes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_event_flags.h: $(top_srcdir)/xlat/fan_event_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_init_flags.h: $(top_srcdir)/xlat/fan_init_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fan_mark_flags.h: $(top_srcdir)/xlat/fan_mark_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fcntlcmds.h: $(top_srcdir)/xlat/fcntlcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fdflags.h: $(top_srcdir)/xlat/fdflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fileflags.h: $(top_srcdir)/xlat/fileflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/futexwakecmps.h: $(top_srcdir)/xlat/futexwakecmps.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/futexwakeops.h: $(top_srcdir)/xlat/futexwakeops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/icmpfilterflags.h: $(top_srcdir)/xlat/icmpfilterflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/if_dqblk_valid.h: $(top_srcdir)/xlat/if_dqblk_valid.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/if_dqinfo_valid.h: $(top_srcdir)/xlat/if_dqinfo_valid.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/iffflags.h: $(top_srcdir)/xlat/iffflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet_protocols.h: $(top_srcdir)/xlat/inet_protocols.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inotify_flags.h: $(top_srcdir)/xlat/inotify_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inotify_init_flags.h: $(top_srcdir)/xlat/inotify_init_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ioprio_class.h: $(top_srcdir)/xlat/ioprio_class.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ioprio_who.h: $(top_srcdir)/xlat/ioprio_who.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ipc_msg_flags.h: $(top_srcdir)/xlat/ipc_msg_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/itimer_which.h: $(top_srcdir)/xlat/itimer_which.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/kexec_arch_values.h: $(top_srcdir)/xlat/kexec_arch_values.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/kexec_flags.h: $(top_srcdir)/xlat/kexec_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/key_perms.h: $(top_srcdir)/xlat/key_perms.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/key_reqkeys.h: $(top_srcdir)/xlat/key_reqkeys.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/key_spec.h: $(top_srcdir)/xlat/key_spec.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_commands.h: $(top_srcdir)/xlat/keyctl_commands.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/lockfcmds.h: $(top_srcdir)/xlat/lockfcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/loop_crypt_type_options.h: $(top_srcdir)/xlat/loop_crypt_type_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/loop_flags_options.h: $(top_srcdir)/xlat/loop_flags_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/madvise_cmds.h: $(top_srcdir)/xlat/madvise_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mctl_funcs.h: $(top_srcdir)/xlat/mctl_funcs.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mctl_lockas.h: $(top_srcdir)/xlat/mctl_lockas.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mempolicyflags.h: $(top_srcdir)/xlat/mempolicyflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mlockall_flags.h: $(top_srcdir)/xlat/mlockall_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mmap_flags.h: $(top_srcdir)/xlat/mmap_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mmap_prot.h: $(top_srcdir)/xlat/mmap_prot.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/modem_flags.h: $(top_srcdir)/xlat/modem_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/modetypes.h: $(top_srcdir)/xlat/modetypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/modflags.h: $(top_srcdir)/xlat/modflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/module_init_flags.h: $(top_srcdir)/xlat/module_init_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mount_flags.h: $(top_srcdir)/xlat/mount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/move_pages_flags.h: $(top_srcdir)/xlat/move_pages_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mremap_flags.h: $(top_srcdir)/xlat/mremap_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/msg_flags.h: $(top_srcdir)/xlat/msg_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/msgctl_flags.h: $(top_srcdir)/xlat/msgctl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/msgflags.h: $(top_srcdir)/xlat/msgflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_flags_options.h: $(top_srcdir)/xlat/mtd_flags_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_mode_options.h: $(top_srcdir)/xlat/mtd_mode_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_nandecc_options.h: $(top_srcdir)/xlat/mtd_nandecc_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/netlink_protocols.h: $(top_srcdir)/xlat/netlink_protocols.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/notifyflags.h: $(top_srcdir)/xlat/notifyflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nt_descriptor_types.h: $(top_srcdir)/xlat/nt_descriptor_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_access_modes.h: $(top_srcdir)/xlat/open_access_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/openmodessol.h: $(top_srcdir)/xlat/openmodessol.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/perf_event_open_flags.h: $(top_srcdir)/xlat/perf_event_open_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/personality_options.h: $(top_srcdir)/xlat/personality_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/pmsgflags.h: $(top_srcdir)/xlat/pmsgflags.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/prctl_options.h: $(top_srcdir)/xlat/prctl_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/priorities.h: $(top_srcdir)/xlat/priorities.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptp_flags_options.h: $(top_srcdir)/xlat/ptp_flags_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptrace_cmds.h: $(top_srcdir)/xlat/ptrace_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptrace_setoptions_flags.h: $(top_srcdir)/xlat/ptrace_setoptions_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/qm_which.h: $(top_srcdir)/xlat/qm_which.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/quota_formats.h: $(top_srcdir)/xlat/quota_formats.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/quotacmds.h: $(top_srcdir)/xlat/quotacmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/quotatypes.h: $(top_srcdir)/xlat/quotatypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rename_flags.h: $(top_srcdir)/xlat/rename_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/resource_flags.h: $(top_srcdir)/xlat/resource_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/resources.h: $(top_srcdir)/xlat/resources.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/schedulers.h: $(top_srcdir)/xlat/schedulers.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/scmvals.h: $(top_srcdir)/xlat/scmvals.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/semctl_flags.h: $(top_srcdir)/xlat/semctl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/semop_flags.h: $(top_srcdir)/xlat/semop_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sg_io_dxfer_direction.h: $(top_srcdir)/xlat/sg_io_dxfer_direction.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shm_flags.h: $(top_srcdir)/xlat/shm_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shm_resource_flags.h: $(top_srcdir)/xlat/shm_resource_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shmctl_flags.h: $(top_srcdir)/xlat/shmctl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/shutdown_modes.h: $(top_srcdir)/xlat/shutdown_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigact_flags.h: $(top_srcdir)/xlat/sigact_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigaltstack_flags.h: $(top_srcdir)/xlat/sigaltstack_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigbus_codes.h: $(top_srcdir)/xlat/sigbus_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigchld_codes.h: $(top_srcdir)/xlat/sigchld_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigemt_codes.h: $(top_srcdir)/xlat/sigemt_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigev_value.h: $(top_srcdir)/xlat/sigev_value.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigfpe_codes.h: $(top_srcdir)/xlat/sigfpe_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigill_codes.h: $(top_srcdir)/xlat/sigill_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/siginfo_codes.h: $(top_srcdir)/xlat/siginfo_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigpoll_codes.h: $(top_srcdir)/xlat/sigpoll_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigprocmaskcmds.h: $(top_srcdir)/xlat/sigprocmaskcmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigprof_codes.h: $(top_srcdir)/xlat/sigprof_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigsegv_codes.h: $(top_srcdir)/xlat/sigsegv_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigsys_codes.h: $(top_srcdir)/xlat/sigsys_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sigtrap_codes.h: $(top_srcdir)/xlat/sigtrap_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_type_flags.h: $(top_srcdir)/xlat/sock_type_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socketlayers.h: $(top_srcdir)/xlat/socketlayers.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockipoptions.h: $(top_srcdir)/xlat/sockipoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockipv6options.h: $(top_srcdir)/xlat/sockipv6options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockipxoptions.h: $(top_srcdir)/xlat/sockipxoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockoptions.h: $(top_srcdir)/xlat/sockoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockpacketoptions.h: $(top_srcdir)/xlat/sockpacketoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sockrawoptions.h: $(top_srcdir)/xlat/sockrawoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socksctpoptions.h: $(top_srcdir)/xlat/socksctpoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socktcpoptions.h: $(top_srcdir)/xlat/socktcpoptions.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/socktypes.h: $(top_srcdir)/xlat/socktypes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/splice_flags.h: $(top_srcdir)/xlat/splice_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sram_alloc_flags.h: $(top_srcdir)/xlat/sram_alloc_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/swap_flags.h: $(top_srcdir)/xlat/swap_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sync_file_range_flags.h: $(top_srcdir)/xlat/sync_file_range_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_kern.h: $(top_srcdir)/xlat/sysctl_kern.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net.h: $(top_srcdir)/xlat/sysctl_net.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_core.h: $(top_srcdir)/xlat/sysctl_net_core.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv4.h: $(top_srcdir)/xlat/sysctl_net_ipv4.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv4_conf.h: $(top_srcdir)/xlat/sysctl_net_ipv4_conf.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv4_route.h: $(top_srcdir)/xlat/sysctl_net_ipv4_route.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv6.h: $(top_srcdir)/xlat/sysctl_net_ipv6.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_ipv6_route.h: $(top_srcdir)/xlat/sysctl_net_ipv6_route.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_net_unix.h: $(top_srcdir)/xlat/sysctl_net_unix.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_root.h: $(top_srcdir)/xlat/sysctl_root.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysctl_vm.h: $(top_srcdir)/xlat/sysctl_vm.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/syslog_action_type.h: $(top_srcdir)/xlat/syslog_action_type.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sysmips_operations.h: $(top_srcdir)/xlat/sysmips_operations.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tcflsh_options.h: $(top_srcdir)/xlat/tcflsh_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tcxonc_options.h: $(top_srcdir)/xlat/tcxonc_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/timerfdflags.h: $(top_srcdir)/xlat/timerfdflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ubi_volume_props.h: $(top_srcdir)/xlat/ubi_volume_props.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ubi_volume_types.h: $(top_srcdir)/xlat/ubi_volume_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/umount_flags.h: $(top_srcdir)/xlat/umount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/usagewho.h: $(top_srcdir)/xlat/usagewho.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/whence_codes.h: $(top_srcdir)/xlat/whence_codes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/xattrflags.h: $(top_srcdir)/xlat/xattrflags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/xfs_dqblk_flags.h: $(top_srcdir)/xlat/xfs_dqblk_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/xfs_quota_flags.h: $(top_srcdir)/xlat/xfs_quota_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
diff --git a/xlat/access_flags.h b/xlat/access_flags.h
new file mode 100644 (file)
index 0000000..afce1ef
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/access_flags.in; do not edit. */
+
+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
+};
diff --git a/xlat/access_flags.in b/xlat/access_flags.in
new file mode 100644 (file)
index 0000000..cc46ad5
--- /dev/null
@@ -0,0 +1,6 @@
+F_OK
+R_OK
+W_OK
+X_OK
+EFF_ONLY_OK
+EX_OK
diff --git a/xlat/aclcmds.h b/xlat/aclcmds.h
new file mode 100644 (file)
index 0000000..d12302a
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/aclcmds.in; do not edit. */
+
+static const struct xlat aclcmds[] = {
+#if defined(SETACL) || (defined(HAVE_DECL_SETACL) && HAVE_DECL_SETACL)
+       XLAT(SETACL),
+#endif
+#if defined(GETACL) || (defined(HAVE_DECL_GETACL) && HAVE_DECL_GETACL)
+       XLAT(GETACL),
+#endif
+#if defined(GETACLCNT) || (defined(HAVE_DECL_GETACLCNT) && HAVE_DECL_GETACLCNT)
+       XLAT(GETACLCNT),
+#endif
+#if defined(ACL_GET) || (defined(HAVE_DECL_ACL_GET) && HAVE_DECL_ACL_GET)
+       XLAT(ACL_GET),
+#endif
+#if defined(ACL_SET) || (defined(HAVE_DECL_ACL_SET) && HAVE_DECL_ACL_SET)
+       XLAT(ACL_SET),
+#endif
+#if defined(ACL_CNT) || (defined(HAVE_DECL_ACL_CNT) && HAVE_DECL_ACL_CNT)
+       XLAT(ACL_CNT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/aclcmds.in b/xlat/aclcmds.in
new file mode 100644 (file)
index 0000000..87559c6
--- /dev/null
@@ -0,0 +1,6 @@
+SETACL
+GETACL
+GETACLCNT
+ACL_GET
+ACL_SET
+ACL_CNT
diff --git a/xlat/aclipc.h b/xlat/aclipc.h
new file mode 100644 (file)
index 0000000..82b7949
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/aclipc.in; do not edit. */
+
+static const struct xlat aclipc[] = {
+#if defined(IPC_SHM) || (defined(HAVE_DECL_IPC_SHM) && HAVE_DECL_IPC_SHM)
+       XLAT(IPC_SHM),
+#endif
+#if defined(IPC_SEM) || (defined(HAVE_DECL_IPC_SEM) && HAVE_DECL_IPC_SEM)
+       XLAT(IPC_SEM),
+#endif
+#if defined(IPC_MSG) || (defined(HAVE_DECL_IPC_MSG) && HAVE_DECL_IPC_MSG)
+       XLAT(IPC_MSG),
+#endif
+       XLAT_END
+};
diff --git a/xlat/aclipc.in b/xlat/aclipc.in
new file mode 100644 (file)
index 0000000..fd4d61c
--- /dev/null
@@ -0,0 +1,3 @@
+IPC_SHM
+IPC_SEM
+IPC_MSG
diff --git a/xlat/addrfams.h b/xlat/addrfams.h
new file mode 100644 (file)
index 0000000..c3489c5
--- /dev/null
@@ -0,0 +1,128 @@
+/* Generated by ./xlat/gen.sh from ./xlat/addrfams.in; do not edit. */
+
+const struct xlat addrfams[] = {
+#if defined(AF_UNSPEC) || (defined(HAVE_DECL_AF_UNSPEC) && HAVE_DECL_AF_UNSPEC)
+       XLAT(AF_UNSPEC),
+#endif
+#if defined(AF_LOCAL) || (defined(HAVE_DECL_AF_LOCAL) && HAVE_DECL_AF_LOCAL)
+       XLAT(AF_LOCAL),
+#endif
+#if defined(AF_UNIX) || (defined(HAVE_DECL_AF_UNIX) && HAVE_DECL_AF_UNIX)
+       XLAT(AF_UNIX),
+#endif
+#if defined(AF_INET) || (defined(HAVE_DECL_AF_INET) && HAVE_DECL_AF_INET)
+       XLAT(AF_INET),
+#endif
+#if defined(AF_AX25) || (defined(HAVE_DECL_AF_AX25) && HAVE_DECL_AF_AX25)
+       XLAT(AF_AX25),
+#endif
+#if defined(AF_IPX) || (defined(HAVE_DECL_AF_IPX) && HAVE_DECL_AF_IPX)
+       XLAT(AF_IPX),
+#endif
+#if defined(AF_APPLETALK) || (defined(HAVE_DECL_AF_APPLETALK) && HAVE_DECL_AF_APPLETALK)
+       XLAT(AF_APPLETALK),
+#endif
+#if defined(AF_NETROM) || (defined(HAVE_DECL_AF_NETROM) && HAVE_DECL_AF_NETROM)
+       XLAT(AF_NETROM),
+#endif
+#if defined(AF_BRIDGE) || (defined(HAVE_DECL_AF_BRIDGE) && HAVE_DECL_AF_BRIDGE)
+       XLAT(AF_BRIDGE),
+#endif
+#if defined(AF_ATMPVC) || (defined(HAVE_DECL_AF_ATMPVC) && HAVE_DECL_AF_ATMPVC)
+       XLAT(AF_ATMPVC),
+#endif
+#if defined(AF_X25) || (defined(HAVE_DECL_AF_X25) && HAVE_DECL_AF_X25)
+       XLAT(AF_X25),
+#endif
+#if defined(AF_INET6) || (defined(HAVE_DECL_AF_INET6) && HAVE_DECL_AF_INET6)
+       XLAT(AF_INET6),
+#endif
+#if defined(AF_ROSE) || (defined(HAVE_DECL_AF_ROSE) && HAVE_DECL_AF_ROSE)
+       XLAT(AF_ROSE),
+#endif
+#if defined(AF_DECnet) || (defined(HAVE_DECL_AF_DECnet) && HAVE_DECL_AF_DECnet)
+       XLAT(AF_DECnet),
+#endif
+#if defined(AF_NETBEUI) || (defined(HAVE_DECL_AF_NETBEUI) && HAVE_DECL_AF_NETBEUI)
+       XLAT(AF_NETBEUI),
+#endif
+#if defined(AF_SECURITY) || (defined(HAVE_DECL_AF_SECURITY) && HAVE_DECL_AF_SECURITY)
+       XLAT(AF_SECURITY),
+#endif
+#if defined(AF_KEY) || (defined(HAVE_DECL_AF_KEY) && HAVE_DECL_AF_KEY)
+       XLAT(AF_KEY),
+#endif
+#if defined(AF_NETLINK) || (defined(HAVE_DECL_AF_NETLINK) && HAVE_DECL_AF_NETLINK)
+       XLAT(AF_NETLINK),
+#endif
+#if defined(AF_ROUTE) || (defined(HAVE_DECL_AF_ROUTE) && HAVE_DECL_AF_ROUTE)
+       XLAT(AF_ROUTE),
+#endif
+#if defined(AF_PACKET) || (defined(HAVE_DECL_AF_PACKET) && HAVE_DECL_AF_PACKET)
+       XLAT(AF_PACKET),
+#endif
+#if defined(AF_ASH) || (defined(HAVE_DECL_AF_ASH) && HAVE_DECL_AF_ASH)
+       XLAT(AF_ASH),
+#endif
+#if defined(AF_ECONET) || (defined(HAVE_DECL_AF_ECONET) && HAVE_DECL_AF_ECONET)
+       XLAT(AF_ECONET),
+#endif
+#if defined(AF_ATMSVC) || (defined(HAVE_DECL_AF_ATMSVC) && HAVE_DECL_AF_ATMSVC)
+       XLAT(AF_ATMSVC),
+#endif
+#if defined(AF_RDS) || (defined(HAVE_DECL_AF_RDS) && HAVE_DECL_AF_RDS)
+       XLAT(AF_RDS),
+#endif
+#if defined(AF_SNA) || (defined(HAVE_DECL_AF_SNA) && HAVE_DECL_AF_SNA)
+       XLAT(AF_SNA),
+#endif
+#if defined(AF_IRDA) || (defined(HAVE_DECL_AF_IRDA) && HAVE_DECL_AF_IRDA)
+       XLAT(AF_IRDA),
+#endif
+#if defined(AF_PPPOX) || (defined(HAVE_DECL_AF_PPPOX) && HAVE_DECL_AF_PPPOX)
+       XLAT(AF_PPPOX),
+#endif
+#if defined(AF_WANPIPE) || (defined(HAVE_DECL_AF_WANPIPE) && HAVE_DECL_AF_WANPIPE)
+       XLAT(AF_WANPIPE),
+#endif
+#if defined(AF_LLC) || (defined(HAVE_DECL_AF_LLC) && HAVE_DECL_AF_LLC)
+       XLAT(AF_LLC),
+#endif
+#if defined(AF_CAN) || (defined(HAVE_DECL_AF_CAN) && HAVE_DECL_AF_CAN)
+       XLAT(AF_CAN),
+#endif
+#if defined(AF_TIPC) || (defined(HAVE_DECL_AF_TIPC) && HAVE_DECL_AF_TIPC)
+       XLAT(AF_TIPC),
+#endif
+#if defined(AF_BLUETOOTH) || (defined(HAVE_DECL_AF_BLUETOOTH) && HAVE_DECL_AF_BLUETOOTH)
+       XLAT(AF_BLUETOOTH),
+#endif
+#if defined(AF_IUCV) || (defined(HAVE_DECL_AF_IUCV) && HAVE_DECL_AF_IUCV)
+       XLAT(AF_IUCV),
+#endif
+#if defined(AF_RXRPC) || (defined(HAVE_DECL_AF_RXRPC) && HAVE_DECL_AF_RXRPC)
+       XLAT(AF_RXRPC),
+#endif
+#if defined(AF_ISDN) || (defined(HAVE_DECL_AF_ISDN) && HAVE_DECL_AF_ISDN)
+       XLAT(AF_ISDN),
+#endif
+#if defined(AF_PHONET) || (defined(HAVE_DECL_AF_PHONET) && HAVE_DECL_AF_PHONET)
+       XLAT(AF_PHONET),
+#endif
+#if defined(AF_IEEE802154) || (defined(HAVE_DECL_AF_IEEE802154) && HAVE_DECL_AF_IEEE802154)
+       XLAT(AF_IEEE802154),
+#endif
+#if defined(AF_CAIF) || (defined(HAVE_DECL_AF_CAIF) && HAVE_DECL_AF_CAIF)
+       XLAT(AF_CAIF),
+#endif
+#if defined(AF_ALG) || (defined(HAVE_DECL_AF_ALG) && HAVE_DECL_AF_ALG)
+       XLAT(AF_ALG),
+#endif
+#if defined(AF_NFC) || (defined(HAVE_DECL_AF_NFC) && HAVE_DECL_AF_NFC)
+       XLAT(AF_NFC),
+#endif
+#if defined(AF_VSOCK) || (defined(HAVE_DECL_AF_VSOCK) && HAVE_DECL_AF_VSOCK)
+       XLAT(AF_VSOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/addrfams.in b/xlat/addrfams.in
new file mode 100644 (file)
index 0000000..a869574
--- /dev/null
@@ -0,0 +1,41 @@
+AF_UNSPEC
+AF_LOCAL
+AF_UNIX
+AF_INET
+AF_AX25
+AF_IPX
+AF_APPLETALK
+AF_NETROM
+AF_BRIDGE
+AF_ATMPVC
+AF_X25
+AF_INET6
+AF_ROSE
+AF_DECnet
+AF_NETBEUI
+AF_SECURITY
+AF_KEY
+AF_NETLINK
+AF_ROUTE
+AF_PACKET
+AF_ASH
+AF_ECONET
+AF_ATMSVC
+AF_RDS
+AF_SNA
+AF_IRDA
+AF_PPPOX
+AF_WANPIPE
+AF_LLC
+AF_CAN
+AF_TIPC
+AF_BLUETOOTH
+AF_IUCV
+AF_RXRPC
+AF_ISDN
+AF_PHONET
+AF_IEEE802154
+AF_CAIF
+AF_ALG
+AF_NFC
+AF_VSOCK
diff --git a/xlat/adjtimex_modes.h b/xlat/adjtimex_modes.h
new file mode 100644 (file)
index 0000000..37461f8
--- /dev/null
@@ -0,0 +1,45 @@
+/* Generated by ./xlat/gen.sh from ./xlat/adjtimex_modes.in; do not edit. */
+
+static const struct xlat adjtimex_modes[] = {
+       XLAT(0),
+#if defined(ADJ_OFFSET) || (defined(HAVE_DECL_ADJ_OFFSET) && HAVE_DECL_ADJ_OFFSET)
+       XLAT(ADJ_OFFSET),
+#endif
+#if defined(ADJ_FREQUENCY) || (defined(HAVE_DECL_ADJ_FREQUENCY) && HAVE_DECL_ADJ_FREQUENCY)
+       XLAT(ADJ_FREQUENCY),
+#endif
+#if defined(ADJ_MAXERROR) || (defined(HAVE_DECL_ADJ_MAXERROR) && HAVE_DECL_ADJ_MAXERROR)
+       XLAT(ADJ_MAXERROR),
+#endif
+#if defined(ADJ_ESTERROR) || (defined(HAVE_DECL_ADJ_ESTERROR) && HAVE_DECL_ADJ_ESTERROR)
+       XLAT(ADJ_ESTERROR),
+#endif
+#if defined(ADJ_STATUS) || (defined(HAVE_DECL_ADJ_STATUS) && HAVE_DECL_ADJ_STATUS)
+       XLAT(ADJ_STATUS),
+#endif
+#if defined(ADJ_TIMECONST) || (defined(HAVE_DECL_ADJ_TIMECONST) && HAVE_DECL_ADJ_TIMECONST)
+       XLAT(ADJ_TIMECONST),
+#endif
+#if defined(ADJ_TAI) || (defined(HAVE_DECL_ADJ_TAI) && HAVE_DECL_ADJ_TAI)
+       XLAT(ADJ_TAI),
+#endif
+#if defined(ADJ_SETOFFSET) || (defined(HAVE_DECL_ADJ_SETOFFSET) && HAVE_DECL_ADJ_SETOFFSET)
+       XLAT(ADJ_SETOFFSET),
+#endif
+#if defined(ADJ_MICRO) || (defined(HAVE_DECL_ADJ_MICRO) && HAVE_DECL_ADJ_MICRO)
+       XLAT(ADJ_MICRO),
+#endif
+#if defined(ADJ_NANO) || (defined(HAVE_DECL_ADJ_NANO) && HAVE_DECL_ADJ_NANO)
+       XLAT(ADJ_NANO),
+#endif
+#if defined(ADJ_TICK) || (defined(HAVE_DECL_ADJ_TICK) && HAVE_DECL_ADJ_TICK)
+       XLAT(ADJ_TICK),
+#endif
+#if defined(ADJ_OFFSET_SINGLESHOT) || (defined(HAVE_DECL_ADJ_OFFSET_SINGLESHOT) && HAVE_DECL_ADJ_OFFSET_SINGLESHOT)
+       XLAT(ADJ_OFFSET_SINGLESHOT),
+#endif
+#if defined(ADJ_OFFSET_SS_READ) || (defined(HAVE_DECL_ADJ_OFFSET_SS_READ) && HAVE_DECL_ADJ_OFFSET_SS_READ)
+       XLAT(ADJ_OFFSET_SS_READ),
+#endif
+       XLAT_END
+};
diff --git a/xlat/adjtimex_modes.in b/xlat/adjtimex_modes.in
new file mode 100644 (file)
index 0000000..e2ca680
--- /dev/null
@@ -0,0 +1,14 @@
+0
+ADJ_OFFSET
+ADJ_FREQUENCY
+ADJ_MAXERROR
+ADJ_ESTERROR
+ADJ_STATUS
+ADJ_TIMECONST
+ADJ_TAI
+ADJ_SETOFFSET
+ADJ_MICRO
+ADJ_NANO
+ADJ_TICK
+ADJ_OFFSET_SINGLESHOT
+ADJ_OFFSET_SS_READ
diff --git a/xlat/adjtimex_state.h b/xlat/adjtimex_state.h
new file mode 100644 (file)
index 0000000..ff31449
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/adjtimex_state.in; do not edit. */
+
+static const struct xlat adjtimex_state[] = {
+#if defined(TIME_OK) || (defined(HAVE_DECL_TIME_OK) && HAVE_DECL_TIME_OK)
+       XLAT(TIME_OK),
+#endif
+#if defined(TIME_INS) || (defined(HAVE_DECL_TIME_INS) && HAVE_DECL_TIME_INS)
+       XLAT(TIME_INS),
+#endif
+#if defined(TIME_DEL) || (defined(HAVE_DECL_TIME_DEL) && HAVE_DECL_TIME_DEL)
+       XLAT(TIME_DEL),
+#endif
+#if defined(TIME_OOP) || (defined(HAVE_DECL_TIME_OOP) && HAVE_DECL_TIME_OOP)
+       XLAT(TIME_OOP),
+#endif
+#if defined(TIME_WAIT) || (defined(HAVE_DECL_TIME_WAIT) && HAVE_DECL_TIME_WAIT)
+       XLAT(TIME_WAIT),
+#endif
+#if defined(TIME_ERROR) || (defined(HAVE_DECL_TIME_ERROR) && HAVE_DECL_TIME_ERROR)
+       XLAT(TIME_ERROR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/adjtimex_state.in b/xlat/adjtimex_state.in
new file mode 100644 (file)
index 0000000..873b9a1
--- /dev/null
@@ -0,0 +1,6 @@
+TIME_OK
+TIME_INS
+TIME_DEL
+TIME_OOP
+TIME_WAIT
+TIME_ERROR
diff --git a/xlat/adjtimex_status.h b/xlat/adjtimex_status.h
new file mode 100644 (file)
index 0000000..f1a7c99
--- /dev/null
@@ -0,0 +1,53 @@
+/* Generated by ./xlat/gen.sh from ./xlat/adjtimex_status.in; do not edit. */
+
+static const struct xlat adjtimex_status[] = {
+#if defined(STA_PLL) || (defined(HAVE_DECL_STA_PLL) && HAVE_DECL_STA_PLL)
+       XLAT(STA_PLL),
+#endif
+#if defined(STA_PPSFREQ) || (defined(HAVE_DECL_STA_PPSFREQ) && HAVE_DECL_STA_PPSFREQ)
+       XLAT(STA_PPSFREQ),
+#endif
+#if defined(STA_PPSTIME) || (defined(HAVE_DECL_STA_PPSTIME) && HAVE_DECL_STA_PPSTIME)
+       XLAT(STA_PPSTIME),
+#endif
+#if defined(STA_FLL) || (defined(HAVE_DECL_STA_FLL) && HAVE_DECL_STA_FLL)
+       XLAT(STA_FLL),
+#endif
+#if defined(STA_INS) || (defined(HAVE_DECL_STA_INS) && HAVE_DECL_STA_INS)
+       XLAT(STA_INS),
+#endif
+#if defined(STA_DEL) || (defined(HAVE_DECL_STA_DEL) && HAVE_DECL_STA_DEL)
+       XLAT(STA_DEL),
+#endif
+#if defined(STA_UNSYNC) || (defined(HAVE_DECL_STA_UNSYNC) && HAVE_DECL_STA_UNSYNC)
+       XLAT(STA_UNSYNC),
+#endif
+#if defined(STA_FREQHOLD) || (defined(HAVE_DECL_STA_FREQHOLD) && HAVE_DECL_STA_FREQHOLD)
+       XLAT(STA_FREQHOLD),
+#endif
+#if defined(STA_PPSSIGNAL) || (defined(HAVE_DECL_STA_PPSSIGNAL) && HAVE_DECL_STA_PPSSIGNAL)
+       XLAT(STA_PPSSIGNAL),
+#endif
+#if defined(STA_PPSJITTER) || (defined(HAVE_DECL_STA_PPSJITTER) && HAVE_DECL_STA_PPSJITTER)
+       XLAT(STA_PPSJITTER),
+#endif
+#if defined(STA_PPSWANDER) || (defined(HAVE_DECL_STA_PPSWANDER) && HAVE_DECL_STA_PPSWANDER)
+       XLAT(STA_PPSWANDER),
+#endif
+#if defined(STA_PPSERROR) || (defined(HAVE_DECL_STA_PPSERROR) && HAVE_DECL_STA_PPSERROR)
+       XLAT(STA_PPSERROR),
+#endif
+#if defined(STA_CLOCKERR) || (defined(HAVE_DECL_STA_CLOCKERR) && HAVE_DECL_STA_CLOCKERR)
+       XLAT(STA_CLOCKERR),
+#endif
+#if defined(STA_NANO) || (defined(HAVE_DECL_STA_NANO) && HAVE_DECL_STA_NANO)
+       XLAT(STA_NANO),
+#endif
+#if defined(STA_MODE) || (defined(HAVE_DECL_STA_MODE) && HAVE_DECL_STA_MODE)
+       XLAT(STA_MODE),
+#endif
+#if defined(STA_CLK) || (defined(HAVE_DECL_STA_CLK) && HAVE_DECL_STA_CLK)
+       XLAT(STA_CLK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/adjtimex_status.in b/xlat/adjtimex_status.in
new file mode 100644 (file)
index 0000000..c6b6264
--- /dev/null
@@ -0,0 +1,16 @@
+STA_PLL
+STA_PPSFREQ
+STA_PPSTIME
+STA_FLL
+STA_INS
+STA_DEL
+STA_UNSYNC
+STA_FREQHOLD
+STA_PPSSIGNAL
+STA_PPSJITTER
+STA_PPSWANDER
+STA_PPSERROR
+STA_CLOCKERR
+STA_NANO
+STA_MODE
+STA_CLK
diff --git a/xlat/advise.h b/xlat/advise.h
new file mode 100644 (file)
index 0000000..58e9bd8
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/advise.in; do not edit. */
+
+static const struct xlat advise[] = {
+#if defined(POSIX_FADV_NORMAL) || (defined(HAVE_DECL_POSIX_FADV_NORMAL) && HAVE_DECL_POSIX_FADV_NORMAL)
+       XLAT(POSIX_FADV_NORMAL),
+#endif
+#if defined(POSIX_FADV_RANDOM) || (defined(HAVE_DECL_POSIX_FADV_RANDOM) && HAVE_DECL_POSIX_FADV_RANDOM)
+       XLAT(POSIX_FADV_RANDOM),
+#endif
+#if defined(POSIX_FADV_SEQUENTIAL) || (defined(HAVE_DECL_POSIX_FADV_SEQUENTIAL) && HAVE_DECL_POSIX_FADV_SEQUENTIAL)
+       XLAT(POSIX_FADV_SEQUENTIAL),
+#endif
+#if defined(POSIX_FADV_WILLNEED) || (defined(HAVE_DECL_POSIX_FADV_WILLNEED) && HAVE_DECL_POSIX_FADV_WILLNEED)
+       XLAT(POSIX_FADV_WILLNEED),
+#endif
+#if defined(POSIX_FADV_DONTNEED) || (defined(HAVE_DECL_POSIX_FADV_DONTNEED) && HAVE_DECL_POSIX_FADV_DONTNEED)
+       XLAT(POSIX_FADV_DONTNEED),
+#endif
+#if defined(POSIX_FADV_NOREUSE) || (defined(HAVE_DECL_POSIX_FADV_NOREUSE) && HAVE_DECL_POSIX_FADV_NOREUSE)
+       XLAT(POSIX_FADV_NOREUSE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/advise.in b/xlat/advise.in
new file mode 100644 (file)
index 0000000..47540e0
--- /dev/null
@@ -0,0 +1,6 @@
+POSIX_FADV_NORMAL
+POSIX_FADV_RANDOM
+POSIX_FADV_SEQUENTIAL
+POSIX_FADV_WILLNEED
+POSIX_FADV_DONTNEED
+POSIX_FADV_NOREUSE
diff --git a/xlat/af_packet_types.h b/xlat/af_packet_types.h
new file mode 100644 (file)
index 0000000..64eeff2
--- /dev/null
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/af_packet_types.in; do not edit. */
+
+static const struct xlat af_packet_types[] = {
+#if defined(PACKET_HOST) || (defined(HAVE_DECL_PACKET_HOST) && HAVE_DECL_PACKET_HOST)
+       XLAT(PACKET_HOST),
+#endif
+#if defined(PACKET_BROADCAST) || (defined(HAVE_DECL_PACKET_BROADCAST) && HAVE_DECL_PACKET_BROADCAST)
+       XLAT(PACKET_BROADCAST),
+#endif
+#if defined(PACKET_MULTICAST) || (defined(HAVE_DECL_PACKET_MULTICAST) && HAVE_DECL_PACKET_MULTICAST)
+       XLAT(PACKET_MULTICAST),
+#endif
+#if defined(PACKET_OTHERHOST) || (defined(HAVE_DECL_PACKET_OTHERHOST) && HAVE_DECL_PACKET_OTHERHOST)
+       XLAT(PACKET_OTHERHOST),
+#endif
+#if defined(PACKET_OUTGOING) || (defined(HAVE_DECL_PACKET_OUTGOING) && HAVE_DECL_PACKET_OUTGOING)
+       XLAT(PACKET_OUTGOING),
+#endif
+#if defined(PACKET_LOOPBACK) || (defined(HAVE_DECL_PACKET_LOOPBACK) && HAVE_DECL_PACKET_LOOPBACK)
+       XLAT(PACKET_LOOPBACK),
+#endif
+#if defined(PACKET_FASTROUTE) || (defined(HAVE_DECL_PACKET_FASTROUTE) && HAVE_DECL_PACKET_FASTROUTE)
+       XLAT(PACKET_FASTROUTE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/af_packet_types.in b/xlat/af_packet_types.in
new file mode 100644 (file)
index 0000000..18cf655
--- /dev/null
@@ -0,0 +1,7 @@
+PACKET_HOST
+PACKET_BROADCAST
+PACKET_MULTICAST
+PACKET_OTHERHOST
+PACKET_OUTGOING
+PACKET_LOOPBACK
+PACKET_FASTROUTE
diff --git a/xlat/archvals.h b/xlat/archvals.h
new file mode 100644 (file)
index 0000000..6e17eb8
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/archvals.in; do not edit. */
+
+static const struct xlat archvals[] = {
+#if defined(ARCH_SET_GS) || (defined(HAVE_DECL_ARCH_SET_GS) && HAVE_DECL_ARCH_SET_GS)
+       XLAT(ARCH_SET_GS),
+#endif
+#if defined(ARCH_SET_FS) || (defined(HAVE_DECL_ARCH_SET_FS) && HAVE_DECL_ARCH_SET_FS)
+       XLAT(ARCH_SET_FS),
+#endif
+#if defined(ARCH_GET_FS) || (defined(HAVE_DECL_ARCH_GET_FS) && HAVE_DECL_ARCH_GET_FS)
+       XLAT(ARCH_GET_FS),
+#endif
+#if defined(ARCH_GET_GS) || (defined(HAVE_DECL_ARCH_GET_GS) && HAVE_DECL_ARCH_GET_GS)
+       XLAT(ARCH_GET_GS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/archvals.in b/xlat/archvals.in
new file mode 100644 (file)
index 0000000..22ad7c1
--- /dev/null
@@ -0,0 +1,4 @@
+ARCH_SET_GS
+ARCH_SET_FS
+ARCH_GET_FS
+ARCH_GET_GS
diff --git a/xlat/at_flags.h b/xlat/at_flags.h
new file mode 100644 (file)
index 0000000..cbee3d2
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/at_flags.in; do not edit. */
+
+static const struct xlat at_flags[] = {
+#if defined(AT_SYMLINK_NOFOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_NOFOLLOW) && HAVE_DECL_AT_SYMLINK_NOFOLLOW)
+       XLAT(AT_SYMLINK_NOFOLLOW),
+#endif
+#if defined(AT_REMOVEDIR) || (defined(HAVE_DECL_AT_REMOVEDIR) && HAVE_DECL_AT_REMOVEDIR)
+       XLAT(AT_REMOVEDIR),
+#endif
+#if defined(AT_SYMLINK_FOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_FOLLOW) && HAVE_DECL_AT_SYMLINK_FOLLOW)
+       XLAT(AT_SYMLINK_FOLLOW),
+#endif
+#if defined(AT_NO_AUTOMOUNT) || (defined(HAVE_DECL_AT_NO_AUTOMOUNT) && HAVE_DECL_AT_NO_AUTOMOUNT)
+       XLAT(AT_NO_AUTOMOUNT),
+#endif
+#if defined(AT_EMPTY_PATH) || (defined(HAVE_DECL_AT_EMPTY_PATH) && HAVE_DECL_AT_EMPTY_PATH)
+       XLAT(AT_EMPTY_PATH),
+#endif
+       XLAT_END
+};
diff --git a/xlat/at_flags.in b/xlat/at_flags.in
new file mode 100644 (file)
index 0000000..1a790d5
--- /dev/null
@@ -0,0 +1,5 @@
+AT_SYMLINK_NOFOLLOW
+AT_REMOVEDIR
+AT_SYMLINK_FOLLOW
+AT_NO_AUTOMOUNT
+AT_EMPTY_PATH
diff --git a/xlat/atomic_ops.h b/xlat/atomic_ops.h
new file mode 100644 (file)
index 0000000..83c3a60
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/atomic_ops.in; do not edit. */
+
+static const struct xlat atomic_ops[] = {
+{ OR1K_ATOMIC_SWAP,            "SWAP"          },
+{ OR1K_ATOMIC_CMPXCHG,         "CMPXCHG"       },
+{ OR1K_ATOMIC_XCHG,            "XCHG"          },
+{ OR1K_ATOMIC_ADD,             "ADD"           },
+{ OR1K_ATOMIC_DECPOS,          "DECPOS"        },
+{ OR1K_ATOMIC_AND,             "AND"           },
+{ OR1K_ATOMIC_OR,              "OR"            },
+{ OR1K_ATOMIC_UMAX,            "UMAX"          },
+{ OR1K_ATOMIC_UMIN,            "UMIN"          },
+       XLAT_END
+};
diff --git a/xlat/atomic_ops.in b/xlat/atomic_ops.in
new file mode 100644 (file)
index 0000000..42261ea
--- /dev/null
@@ -0,0 +1,9 @@
+       { OR1K_ATOMIC_SWAP,             "SWAP"          },
+       { OR1K_ATOMIC_CMPXCHG,          "CMPXCHG"       },
+       { OR1K_ATOMIC_XCHG,             "XCHG"          },
+       { OR1K_ATOMIC_ADD,              "ADD"           },
+       { OR1K_ATOMIC_DECPOS,           "DECPOS"        },
+       { OR1K_ATOMIC_AND,              "AND"           },
+       { OR1K_ATOMIC_OR,               "OR"            },
+       { OR1K_ATOMIC_UMAX,             "UMAX"          },
+       { OR1K_ATOMIC_UMIN,             "UMIN"          },
diff --git a/xlat/baud_options.h b/xlat/baud_options.h
new file mode 100644 (file)
index 0000000..aff9b85
--- /dev/null
@@ -0,0 +1,104 @@
+/* Generated by ./xlat/gen.sh from ./xlat/baud_options.in; do not edit. */
+
+static const struct xlat baud_options[] = {
+#if defined(B0) || (defined(HAVE_DECL_B0) && HAVE_DECL_B0)
+       XLAT(B0),
+#endif
+#if defined(B50) || (defined(HAVE_DECL_B50) && HAVE_DECL_B50)
+       XLAT(B50),
+#endif
+#if defined(B75) || (defined(HAVE_DECL_B75) && HAVE_DECL_B75)
+       XLAT(B75),
+#endif
+#if defined(B110) || (defined(HAVE_DECL_B110) && HAVE_DECL_B110)
+       XLAT(B110),
+#endif
+#if defined(B134) || (defined(HAVE_DECL_B134) && HAVE_DECL_B134)
+       XLAT(B134),
+#endif
+#if defined(B150) || (defined(HAVE_DECL_B150) && HAVE_DECL_B150)
+       XLAT(B150),
+#endif
+#if defined(B200) || (defined(HAVE_DECL_B200) && HAVE_DECL_B200)
+       XLAT(B200),
+#endif
+#if defined(B300) || (defined(HAVE_DECL_B300) && HAVE_DECL_B300)
+       XLAT(B300),
+#endif
+#if defined(B600) || (defined(HAVE_DECL_B600) && HAVE_DECL_B600)
+       XLAT(B600),
+#endif
+#if defined(B1200) || (defined(HAVE_DECL_B1200) && HAVE_DECL_B1200)
+       XLAT(B1200),
+#endif
+#if defined(B1800) || (defined(HAVE_DECL_B1800) && HAVE_DECL_B1800)
+       XLAT(B1800),
+#endif
+#if defined(B2400) || (defined(HAVE_DECL_B2400) && HAVE_DECL_B2400)
+       XLAT(B2400),
+#endif
+#if defined(B4800) || (defined(HAVE_DECL_B4800) && HAVE_DECL_B4800)
+       XLAT(B4800),
+#endif
+#if defined(B9600) || (defined(HAVE_DECL_B9600) && HAVE_DECL_B9600)
+       XLAT(B9600),
+#endif
+#if defined(B19200) || (defined(HAVE_DECL_B19200) && HAVE_DECL_B19200)
+       XLAT(B19200),
+#endif
+#if defined(B38400) || (defined(HAVE_DECL_B38400) && HAVE_DECL_B38400)
+       XLAT(B38400),
+#endif
+#if defined(B57600) || (defined(HAVE_DECL_B57600) && HAVE_DECL_B57600)
+       XLAT(B57600),
+#endif
+#if defined(B115200) || (defined(HAVE_DECL_B115200) && HAVE_DECL_B115200)
+       XLAT(B115200),
+#endif
+#if defined(B230400) || (defined(HAVE_DECL_B230400) && HAVE_DECL_B230400)
+       XLAT(B230400),
+#endif
+#if defined(B460800) || (defined(HAVE_DECL_B460800) && HAVE_DECL_B460800)
+       XLAT(B460800),
+#endif
+#if defined(B500000) || (defined(HAVE_DECL_B500000) && HAVE_DECL_B500000)
+       XLAT(B500000),
+#endif
+#if defined(B576000) || (defined(HAVE_DECL_B576000) && HAVE_DECL_B576000)
+       XLAT(B576000),
+#endif
+#if defined(B921600) || (defined(HAVE_DECL_B921600) && HAVE_DECL_B921600)
+       XLAT(B921600),
+#endif
+#if defined(B1000000) || (defined(HAVE_DECL_B1000000) && HAVE_DECL_B1000000)
+       XLAT(B1000000),
+#endif
+#if defined(B1152000) || (defined(HAVE_DECL_B1152000) && HAVE_DECL_B1152000)
+       XLAT(B1152000),
+#endif
+#if defined(B1500000) || (defined(HAVE_DECL_B1500000) && HAVE_DECL_B1500000)
+       XLAT(B1500000),
+#endif
+#if defined(B2000000) || (defined(HAVE_DECL_B2000000) && HAVE_DECL_B2000000)
+       XLAT(B2000000),
+#endif
+#if defined(B2500000) || (defined(HAVE_DECL_B2500000) && HAVE_DECL_B2500000)
+       XLAT(B2500000),
+#endif
+#if defined(B3000000) || (defined(HAVE_DECL_B3000000) && HAVE_DECL_B3000000)
+       XLAT(B3000000),
+#endif
+#if defined(B3500000) || (defined(HAVE_DECL_B3500000) && HAVE_DECL_B3500000)
+       XLAT(B3500000),
+#endif
+#if defined(B4000000) || (defined(HAVE_DECL_B4000000) && HAVE_DECL_B4000000)
+       XLAT(B4000000),
+#endif
+#if defined(EXTA) || (defined(HAVE_DECL_EXTA) && HAVE_DECL_EXTA)
+       XLAT(EXTA),
+#endif
+#if defined(EXTB) || (defined(HAVE_DECL_EXTB) && HAVE_DECL_EXTB)
+       XLAT(EXTB),
+#endif
+       XLAT_END
+};
diff --git a/xlat/baud_options.in b/xlat/baud_options.in
new file mode 100644 (file)
index 0000000..be7311a
--- /dev/null
@@ -0,0 +1,33 @@
+B0
+B50
+B75
+B110
+B134
+B150
+B200
+B300
+B600
+B1200
+B1800
+B2400
+B4800
+B9600
+B19200
+B38400
+B57600
+B115200
+B230400
+B460800
+B500000
+B576000
+B921600
+B1000000
+B1152000
+B1500000
+B2000000
+B2500000
+B3000000
+B3500000
+B4000000
+EXTA
+EXTB
diff --git a/xlat/blkpg_ops.h b/xlat/blkpg_ops.h
new file mode 100644 (file)
index 0000000..cde1315
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/blkpg_ops.in; do not edit. */
+
+static const struct xlat blkpg_ops[] = {
+#if defined(BLKPG_ADD_PARTITION) || (defined(HAVE_DECL_BLKPG_ADD_PARTITION) && HAVE_DECL_BLKPG_ADD_PARTITION)
+       XLAT(BLKPG_ADD_PARTITION),
+#endif
+#if defined(BLKPG_DEL_PARTITION) || (defined(HAVE_DECL_BLKPG_DEL_PARTITION) && HAVE_DECL_BLKPG_DEL_PARTITION)
+       XLAT(BLKPG_DEL_PARTITION),
+#endif
+       XLAT_END
+};
diff --git a/xlat/blkpg_ops.in b/xlat/blkpg_ops.in
new file mode 100644 (file)
index 0000000..75f6f70
--- /dev/null
@@ -0,0 +1,2 @@
+BLKPG_ADD_PARTITION
+BLKPG_DEL_PARTITION
diff --git a/xlat/bootflags1.h b/xlat/bootflags1.h
new file mode 100644 (file)
index 0000000..05a01b2
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/bootflags1.in; do not edit. */
+
+static const struct xlat bootflags1[] = {
+#if defined(LINUX_REBOOT_MAGIC1) || (defined(HAVE_DECL_LINUX_REBOOT_MAGIC1) && HAVE_DECL_LINUX_REBOOT_MAGIC1)
+       XLAT(LINUX_REBOOT_MAGIC1),
+#endif
+       XLAT_END
+};
diff --git a/xlat/bootflags1.in b/xlat/bootflags1.in
new file mode 100644 (file)
index 0000000..d2b5f9f
--- /dev/null
@@ -0,0 +1 @@
+LINUX_REBOOT_MAGIC1
diff --git a/xlat/bootflags2.h b/xlat/bootflags2.h
new file mode 100644 (file)
index 0000000..f240510
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/bootflags2.in; do not edit. */
+
+static const struct xlat bootflags2[] = {
+#if defined(LINUX_REBOOT_MAGIC2) || (defined(HAVE_DECL_LINUX_REBOOT_MAGIC2) && HAVE_DECL_LINUX_REBOOT_MAGIC2)
+       XLAT(LINUX_REBOOT_MAGIC2),
+#endif
+#if defined(LINUX_REBOOT_MAGIC2A) || (defined(HAVE_DECL_LINUX_REBOOT_MAGIC2A) && HAVE_DECL_LINUX_REBOOT_MAGIC2A)
+       XLAT(LINUX_REBOOT_MAGIC2A),
+#endif
+#if defined(LINUX_REBOOT_MAGIC2B) || (defined(HAVE_DECL_LINUX_REBOOT_MAGIC2B) && HAVE_DECL_LINUX_REBOOT_MAGIC2B)
+       XLAT(LINUX_REBOOT_MAGIC2B),
+#endif
+#if defined(LINUX_REBOOT_MAGIC2C) || (defined(HAVE_DECL_LINUX_REBOOT_MAGIC2C) && HAVE_DECL_LINUX_REBOOT_MAGIC2C)
+       XLAT(LINUX_REBOOT_MAGIC2C),
+#endif
+       XLAT_END
+};
diff --git a/xlat/bootflags2.in b/xlat/bootflags2.in
new file mode 100644 (file)
index 0000000..56ad023
--- /dev/null
@@ -0,0 +1,4 @@
+LINUX_REBOOT_MAGIC2
+LINUX_REBOOT_MAGIC2A
+LINUX_REBOOT_MAGIC2B
+LINUX_REBOOT_MAGIC2C
diff --git a/xlat/bootflags3.h b/xlat/bootflags3.h
new file mode 100644 (file)
index 0000000..5f50120
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/bootflags3.in; do not edit. */
+
+static const struct xlat bootflags3[] = {
+#if defined(LINUX_REBOOT_CMD_RESTART) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_RESTART) && HAVE_DECL_LINUX_REBOOT_CMD_RESTART)
+       XLAT(LINUX_REBOOT_CMD_RESTART),
+#endif
+#if defined(LINUX_REBOOT_CMD_HALT) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_HALT) && HAVE_DECL_LINUX_REBOOT_CMD_HALT)
+       XLAT(LINUX_REBOOT_CMD_HALT),
+#endif
+#if defined(LINUX_REBOOT_CMD_CAD_ON) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_CAD_ON) && HAVE_DECL_LINUX_REBOOT_CMD_CAD_ON)
+       XLAT(LINUX_REBOOT_CMD_CAD_ON),
+#endif
+#if defined(LINUX_REBOOT_CMD_CAD_OFF) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_CAD_OFF) && HAVE_DECL_LINUX_REBOOT_CMD_CAD_OFF)
+       XLAT(LINUX_REBOOT_CMD_CAD_OFF),
+#endif
+#if defined(LINUX_REBOOT_CMD_POWER_OFF) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_POWER_OFF) && HAVE_DECL_LINUX_REBOOT_CMD_POWER_OFF)
+       XLAT(LINUX_REBOOT_CMD_POWER_OFF),
+#endif
+#if defined(LINUX_REBOOT_CMD_RESTART2) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_RESTART2) && HAVE_DECL_LINUX_REBOOT_CMD_RESTART2)
+       XLAT(LINUX_REBOOT_CMD_RESTART2),
+#endif
+#if defined(LINUX_REBOOT_CMD_SW_SUSPEND) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_SW_SUSPEND) && HAVE_DECL_LINUX_REBOOT_CMD_SW_SUSPEND)
+       XLAT(LINUX_REBOOT_CMD_SW_SUSPEND),
+#endif
+#if defined(LINUX_REBOOT_CMD_KEXEC) || (defined(HAVE_DECL_LINUX_REBOOT_CMD_KEXEC) && HAVE_DECL_LINUX_REBOOT_CMD_KEXEC)
+       XLAT(LINUX_REBOOT_CMD_KEXEC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/bootflags3.in b/xlat/bootflags3.in
new file mode 100644 (file)
index 0000000..d13ab87
--- /dev/null
@@ -0,0 +1,8 @@
+LINUX_REBOOT_CMD_RESTART
+LINUX_REBOOT_CMD_HALT
+LINUX_REBOOT_CMD_CAD_ON
+LINUX_REBOOT_CMD_CAD_OFF
+LINUX_REBOOT_CMD_POWER_OFF
+LINUX_REBOOT_CMD_RESTART2
+LINUX_REBOOT_CMD_SW_SUSPEND
+LINUX_REBOOT_CMD_KEXEC
diff --git a/xlat/cacheflush_scope.h b/xlat/cacheflush_scope.h
new file mode 100644 (file)
index 0000000..62459f5
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/cacheflush_scope.in; do not edit. */
+
+static const struct xlat cacheflush_scope[] = {
+#if defined(FLUSH_SCOPE_LINE) || (defined(HAVE_DECL_FLUSH_SCOPE_LINE) && HAVE_DECL_FLUSH_SCOPE_LINE)
+       XLAT(FLUSH_SCOPE_LINE),
+#endif
+#if defined(FLUSH_SCOPE_PAGE) || (defined(HAVE_DECL_FLUSH_SCOPE_PAGE) && HAVE_DECL_FLUSH_SCOPE_PAGE)
+       XLAT(FLUSH_SCOPE_PAGE),
+#endif
+#if defined(FLUSH_SCOPE_ALL) || (defined(HAVE_DECL_FLUSH_SCOPE_ALL) && HAVE_DECL_FLUSH_SCOPE_ALL)
+       XLAT(FLUSH_SCOPE_ALL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/cacheflush_scope.in b/xlat/cacheflush_scope.in
new file mode 100644 (file)
index 0000000..5f91b90
--- /dev/null
@@ -0,0 +1,3 @@
+FLUSH_SCOPE_LINE
+FLUSH_SCOPE_PAGE
+FLUSH_SCOPE_ALL
diff --git a/xlat/cap_version.h b/xlat/cap_version.h
new file mode 100644 (file)
index 0000000..408e550
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/cap_version.in; do not edit. */
+
+static const struct xlat cap_version[] = {
+#if defined(_LINUX_CAPABILITY_VERSION_1) || (defined(HAVE_DECL__LINUX_CAPABILITY_VERSION_1) && HAVE_DECL__LINUX_CAPABILITY_VERSION_1)
+       XLAT(_LINUX_CAPABILITY_VERSION_1),
+#endif
+#if defined(_LINUX_CAPABILITY_VERSION_2) || (defined(HAVE_DECL__LINUX_CAPABILITY_VERSION_2) && HAVE_DECL__LINUX_CAPABILITY_VERSION_2)
+       XLAT(_LINUX_CAPABILITY_VERSION_2),
+#endif
+#if defined(_LINUX_CAPABILITY_VERSION_3) || (defined(HAVE_DECL__LINUX_CAPABILITY_VERSION_3) && HAVE_DECL__LINUX_CAPABILITY_VERSION_3)
+       XLAT(_LINUX_CAPABILITY_VERSION_3),
+#endif
+       XLAT_END
+};
diff --git a/xlat/cap_version.in b/xlat/cap_version.in
new file mode 100644 (file)
index 0000000..70d6cae
--- /dev/null
@@ -0,0 +1,3 @@
+_LINUX_CAPABILITY_VERSION_1
+_LINUX_CAPABILITY_VERSION_2
+_LINUX_CAPABILITY_VERSION_3
diff --git a/xlat/capabilities.h b/xlat/capabilities.h
new file mode 100644 (file)
index 0000000..4e4cfad
--- /dev/null
@@ -0,0 +1,101 @@
+/* Generated by ./xlat/gen.sh from ./xlat/capabilities.in; do not edit. */
+
+static const struct xlat capabilities[] = {
+#if defined(CAP_CHOWN) || (defined(HAVE_DECL_CAP_CHOWN) && HAVE_DECL_CAP_CHOWN)
+       { 1<<CAP_CHOWN, "CAP_CHOWN" },
+#endif
+#if defined(CAP_DAC_OVERRIDE) || (defined(HAVE_DECL_CAP_DAC_OVERRIDE) && HAVE_DECL_CAP_DAC_OVERRIDE)
+       { 1<<CAP_DAC_OVERRIDE, "CAP_DAC_OVERRIDE" },
+#endif
+#if defined(CAP_DAC_READ_SEARCH) || (defined(HAVE_DECL_CAP_DAC_READ_SEARCH) && HAVE_DECL_CAP_DAC_READ_SEARCH)
+       { 1<<CAP_DAC_READ_SEARCH, "CAP_DAC_READ_SEARCH" },
+#endif
+#if defined(CAP_FOWNER) || (defined(HAVE_DECL_CAP_FOWNER) && HAVE_DECL_CAP_FOWNER)
+       { 1<<CAP_FOWNER, "CAP_FOWNER" },
+#endif
+#if defined(CAP_FSETID) || (defined(HAVE_DECL_CAP_FSETID) && HAVE_DECL_CAP_FSETID)
+       { 1<<CAP_FSETID, "CAP_FSETID" },
+#endif
+#if defined(CAP_KILL) || (defined(HAVE_DECL_CAP_KILL) && HAVE_DECL_CAP_KILL)
+       { 1<<CAP_KILL, "CAP_KILL" },
+#endif
+#if defined(CAP_SETGID) || (defined(HAVE_DECL_CAP_SETGID) && HAVE_DECL_CAP_SETGID)
+       { 1<<CAP_SETGID, "CAP_SETGID" },
+#endif
+#if defined(CAP_SETUID) || (defined(HAVE_DECL_CAP_SETUID) && HAVE_DECL_CAP_SETUID)
+       { 1<<CAP_SETUID, "CAP_SETUID" },
+#endif
+#if defined(CAP_SETPCAP) || (defined(HAVE_DECL_CAP_SETPCAP) && HAVE_DECL_CAP_SETPCAP)
+       { 1<<CAP_SETPCAP, "CAP_SETPCAP" },
+#endif
+#if defined(CAP_LINUX_IMMUTABLE) || (defined(HAVE_DECL_CAP_LINUX_IMMUTABLE) && HAVE_DECL_CAP_LINUX_IMMUTABLE)
+       { 1<<CAP_LINUX_IMMUTABLE, "CAP_LINUX_IMMUTABLE" },
+#endif
+#if defined(CAP_NET_BIND_SERVICE) || (defined(HAVE_DECL_CAP_NET_BIND_SERVICE) && HAVE_DECL_CAP_NET_BIND_SERVICE)
+       { 1<<CAP_NET_BIND_SERVICE, "CAP_NET_BIND_SERVICE" },
+#endif
+#if defined(CAP_NET_BROADCAST) || (defined(HAVE_DECL_CAP_NET_BROADCAST) && HAVE_DECL_CAP_NET_BROADCAST)
+       { 1<<CAP_NET_BROADCAST, "CAP_NET_BROADCAST" },
+#endif
+#if defined(CAP_NET_ADMIN) || (defined(HAVE_DECL_CAP_NET_ADMIN) && HAVE_DECL_CAP_NET_ADMIN)
+       { 1<<CAP_NET_ADMIN, "CAP_NET_ADMIN" },
+#endif
+#if defined(CAP_NET_RAW) || (defined(HAVE_DECL_CAP_NET_RAW) && HAVE_DECL_CAP_NET_RAW)
+       { 1<<CAP_NET_RAW, "CAP_NET_RAW" },
+#endif
+#if defined(CAP_IPC_LOCK) || (defined(HAVE_DECL_CAP_IPC_LOCK) && HAVE_DECL_CAP_IPC_LOCK)
+       { 1<<CAP_IPC_LOCK, "CAP_IPC_LOCK" },
+#endif
+#if defined(CAP_IPC_OWNER) || (defined(HAVE_DECL_CAP_IPC_OWNER) && HAVE_DECL_CAP_IPC_OWNER)
+       { 1<<CAP_IPC_OWNER, "CAP_IPC_OWNER" },
+#endif
+#if defined(CAP_SYS_MODULE) || (defined(HAVE_DECL_CAP_SYS_MODULE) && HAVE_DECL_CAP_SYS_MODULE)
+       { 1<<CAP_SYS_MODULE, "CAP_SYS_MODULE" },
+#endif
+#if defined(CAP_SYS_RAWIO) || (defined(HAVE_DECL_CAP_SYS_RAWIO) && HAVE_DECL_CAP_SYS_RAWIO)
+       { 1<<CAP_SYS_RAWIO, "CAP_SYS_RAWIO" },
+#endif
+#if defined(CAP_SYS_CHROOT) || (defined(HAVE_DECL_CAP_SYS_CHROOT) && HAVE_DECL_CAP_SYS_CHROOT)
+       { 1<<CAP_SYS_CHROOT, "CAP_SYS_CHROOT" },
+#endif
+#if defined(CAP_SYS_PTRACE) || (defined(HAVE_DECL_CAP_SYS_PTRACE) && HAVE_DECL_CAP_SYS_PTRACE)
+       { 1<<CAP_SYS_PTRACE, "CAP_SYS_PTRACE" },
+#endif
+#if defined(CAP_SYS_PACCT) || (defined(HAVE_DECL_CAP_SYS_PACCT) && HAVE_DECL_CAP_SYS_PACCT)
+       { 1<<CAP_SYS_PACCT, "CAP_SYS_PACCT" },
+#endif
+#if defined(CAP_SYS_ADMIN) || (defined(HAVE_DECL_CAP_SYS_ADMIN) && HAVE_DECL_CAP_SYS_ADMIN)
+       { 1<<CAP_SYS_ADMIN, "CAP_SYS_ADMIN" },
+#endif
+#if defined(CAP_SYS_BOOT) || (defined(HAVE_DECL_CAP_SYS_BOOT) && HAVE_DECL_CAP_SYS_BOOT)
+       { 1<<CAP_SYS_BOOT, "CAP_SYS_BOOT" },
+#endif
+#if defined(CAP_SYS_NICE) || (defined(HAVE_DECL_CAP_SYS_NICE) && HAVE_DECL_CAP_SYS_NICE)
+       { 1<<CAP_SYS_NICE, "CAP_SYS_NICE" },
+#endif
+#if defined(CAP_SYS_RESOURCE) || (defined(HAVE_DECL_CAP_SYS_RESOURCE) && HAVE_DECL_CAP_SYS_RESOURCE)
+       { 1<<CAP_SYS_RESOURCE, "CAP_SYS_RESOURCE" },
+#endif
+#if defined(CAP_SYS_TIME) || (defined(HAVE_DECL_CAP_SYS_TIME) && HAVE_DECL_CAP_SYS_TIME)
+       { 1<<CAP_SYS_TIME, "CAP_SYS_TIME" },
+#endif
+#if defined(CAP_SYS_TTY_CONFIG) || (defined(HAVE_DECL_CAP_SYS_TTY_CONFIG) && HAVE_DECL_CAP_SYS_TTY_CONFIG)
+       { 1<<CAP_SYS_TTY_CONFIG, "CAP_SYS_TTY_CONFIG" },
+#endif
+#if defined(CAP_MKNOD) || (defined(HAVE_DECL_CAP_MKNOD) && HAVE_DECL_CAP_MKNOD)
+       { 1<<CAP_MKNOD, "CAP_MKNOD" },
+#endif
+#if defined(CAP_LEASE) || (defined(HAVE_DECL_CAP_LEASE) && HAVE_DECL_CAP_LEASE)
+       { 1<<CAP_LEASE, "CAP_LEASE" },
+#endif
+#if defined(CAP_AUDIT_WRITE) || (defined(HAVE_DECL_CAP_AUDIT_WRITE) && HAVE_DECL_CAP_AUDIT_WRITE)
+       { 1<<CAP_AUDIT_WRITE, "CAP_AUDIT_WRITE" },
+#endif
+#if defined(CAP_AUDIT_CONTROL) || (defined(HAVE_DECL_CAP_AUDIT_CONTROL) && HAVE_DECL_CAP_AUDIT_CONTROL)
+       { 1<<CAP_AUDIT_CONTROL, "CAP_AUDIT_CONTROL" },
+#endif
+#if defined(CAP_SETFCAP) || (defined(HAVE_DECL_CAP_SETFCAP) && HAVE_DECL_CAP_SETFCAP)
+       { 1<<CAP_SETFCAP, "CAP_SETFCAP" },
+#endif
+       XLAT_END
+};
diff --git a/xlat/capabilities.in b/xlat/capabilities.in
new file mode 100644 (file)
index 0000000..59f24f7
--- /dev/null
@@ -0,0 +1,32 @@
+1<<CAP_CHOWN
+1<<CAP_DAC_OVERRIDE
+1<<CAP_DAC_READ_SEARCH
+1<<CAP_FOWNER
+1<<CAP_FSETID
+1<<CAP_KILL
+1<<CAP_SETGID
+1<<CAP_SETUID
+1<<CAP_SETPCAP
+1<<CAP_LINUX_IMMUTABLE
+1<<CAP_NET_BIND_SERVICE
+1<<CAP_NET_BROADCAST
+1<<CAP_NET_ADMIN
+1<<CAP_NET_RAW
+1<<CAP_IPC_LOCK
+1<<CAP_IPC_OWNER
+1<<CAP_SYS_MODULE
+1<<CAP_SYS_RAWIO
+1<<CAP_SYS_CHROOT
+1<<CAP_SYS_PTRACE
+1<<CAP_SYS_PACCT
+1<<CAP_SYS_ADMIN
+1<<CAP_SYS_BOOT
+1<<CAP_SYS_NICE
+1<<CAP_SYS_RESOURCE
+1<<CAP_SYS_TIME
+1<<CAP_SYS_TTY_CONFIG
+1<<CAP_MKNOD
+1<<CAP_LEASE
+1<<CAP_AUDIT_WRITE
+1<<CAP_AUDIT_CONTROL
+1<<CAP_SETFCAP
diff --git a/xlat/clockflags.h b/xlat/clockflags.h
new file mode 100644 (file)
index 0000000..91dc44d
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/clockflags.in; do not edit. */
+
+static const struct xlat clockflags[] = {
+#if defined(TIMER_ABSTIME) || (defined(HAVE_DECL_TIMER_ABSTIME) && HAVE_DECL_TIMER_ABSTIME)
+       XLAT(TIMER_ABSTIME),
+#endif
+       XLAT_END
+};
diff --git a/xlat/clockflags.in b/xlat/clockflags.in
new file mode 100644 (file)
index 0000000..2c3a82f
--- /dev/null
@@ -0,0 +1 @@
+TIMER_ABSTIME
diff --git a/xlat/clocknames.h b/xlat/clocknames.h
new file mode 100644 (file)
index 0000000..17ff470
--- /dev/null
@@ -0,0 +1,41 @@
+/* Generated by ./xlat/gen.sh from ./xlat/clocknames.in; do not edit. */
+
+static const struct xlat clocknames[] = {
+#if defined(CLOCK_REALTIME) || (defined(HAVE_DECL_CLOCK_REALTIME) && HAVE_DECL_CLOCK_REALTIME)
+       XLAT(CLOCK_REALTIME),
+#endif
+#if defined(CLOCK_MONOTONIC) || (defined(HAVE_DECL_CLOCK_MONOTONIC) && HAVE_DECL_CLOCK_MONOTONIC)
+       XLAT(CLOCK_MONOTONIC),
+#endif
+#if defined(CLOCK_PROCESS_CPUTIME_ID) || (defined(HAVE_DECL_CLOCK_PROCESS_CPUTIME_ID) && HAVE_DECL_CLOCK_PROCESS_CPUTIME_ID)
+       XLAT(CLOCK_PROCESS_CPUTIME_ID),
+#endif
+#if defined(CLOCK_THREAD_CPUTIME_ID) || (defined(HAVE_DECL_CLOCK_THREAD_CPUTIME_ID) && HAVE_DECL_CLOCK_THREAD_CPUTIME_ID)
+       XLAT(CLOCK_THREAD_CPUTIME_ID),
+#endif
+#if defined(CLOCK_MONOTONIC_RAW) || (defined(HAVE_DECL_CLOCK_MONOTONIC_RAW) && HAVE_DECL_CLOCK_MONOTONIC_RAW)
+       XLAT(CLOCK_MONOTONIC_RAW),
+#endif
+#if defined(CLOCK_REALTIME_COARSE) || (defined(HAVE_DECL_CLOCK_REALTIME_COARSE) && HAVE_DECL_CLOCK_REALTIME_COARSE)
+       XLAT(CLOCK_REALTIME_COARSE),
+#endif
+#if defined(CLOCK_MONOTONIC_COARSE) || (defined(HAVE_DECL_CLOCK_MONOTONIC_COARSE) && HAVE_DECL_CLOCK_MONOTONIC_COARSE)
+       XLAT(CLOCK_MONOTONIC_COARSE),
+#endif
+#if defined(CLOCK_BOOTTIME) || (defined(HAVE_DECL_CLOCK_BOOTTIME) && HAVE_DECL_CLOCK_BOOTTIME)
+       XLAT(CLOCK_BOOTTIME),
+#endif
+#if defined(CLOCK_REALTIME_ALARM) || (defined(HAVE_DECL_CLOCK_REALTIME_ALARM) && HAVE_DECL_CLOCK_REALTIME_ALARM)
+       XLAT(CLOCK_REALTIME_ALARM),
+#endif
+#if defined(CLOCK_BOOTTIME_ALARM) || (defined(HAVE_DECL_CLOCK_BOOTTIME_ALARM) && HAVE_DECL_CLOCK_BOOTTIME_ALARM)
+       XLAT(CLOCK_BOOTTIME_ALARM),
+#endif
+#if defined(CLOCK_SGI_CYCLE) || (defined(HAVE_DECL_CLOCK_SGI_CYCLE) && HAVE_DECL_CLOCK_SGI_CYCLE)
+       XLAT(CLOCK_SGI_CYCLE),
+#endif
+#if defined(CLOCK_TAI) || (defined(HAVE_DECL_CLOCK_TAI) && HAVE_DECL_CLOCK_TAI)
+       XLAT(CLOCK_TAI),
+#endif
+       XLAT_END
+};
diff --git a/xlat/clocknames.in b/xlat/clocknames.in
new file mode 100644 (file)
index 0000000..4485666
--- /dev/null
@@ -0,0 +1,12 @@
+CLOCK_REALTIME
+CLOCK_MONOTONIC
+CLOCK_PROCESS_CPUTIME_ID
+CLOCK_THREAD_CPUTIME_ID
+CLOCK_MONOTONIC_RAW
+CLOCK_REALTIME_COARSE
+CLOCK_MONOTONIC_COARSE
+CLOCK_BOOTTIME
+CLOCK_REALTIME_ALARM
+CLOCK_BOOTTIME_ALARM
+CLOCK_SGI_CYCLE
+CLOCK_TAI
diff --git a/xlat/clone_flags.h b/xlat/clone_flags.h
new file mode 100644 (file)
index 0000000..4a1a8b8
--- /dev/null
@@ -0,0 +1,74 @@
+/* Generated by ./xlat/gen.sh from ./xlat/clone_flags.in; do not edit. */
+
+static const struct xlat clone_flags[] = {
+#if defined(CLONE_VM) || (defined(HAVE_DECL_CLONE_VM) && HAVE_DECL_CLONE_VM)
+       XLAT(CLONE_VM),
+#endif
+#if defined(CLONE_FS) || (defined(HAVE_DECL_CLONE_FS) && HAVE_DECL_CLONE_FS)
+       XLAT(CLONE_FS),
+#endif
+#if defined(CLONE_FILES) || (defined(HAVE_DECL_CLONE_FILES) && HAVE_DECL_CLONE_FILES)
+       XLAT(CLONE_FILES),
+#endif
+#if defined(CLONE_SIGHAND) || (defined(HAVE_DECL_CLONE_SIGHAND) && HAVE_DECL_CLONE_SIGHAND)
+       XLAT(CLONE_SIGHAND),
+#endif
+#if defined(CLONE_IDLETASK) || (defined(HAVE_DECL_CLONE_IDLETASK) && HAVE_DECL_CLONE_IDLETASK)
+       XLAT(CLONE_IDLETASK),
+#endif
+#if defined(CLONE_PTRACE) || (defined(HAVE_DECL_CLONE_PTRACE) && HAVE_DECL_CLONE_PTRACE)
+       XLAT(CLONE_PTRACE),
+#endif
+#if defined(CLONE_VFORK) || (defined(HAVE_DECL_CLONE_VFORK) && HAVE_DECL_CLONE_VFORK)
+       XLAT(CLONE_VFORK),
+#endif
+#if defined(CLONE_PARENT) || (defined(HAVE_DECL_CLONE_PARENT) && HAVE_DECL_CLONE_PARENT)
+       XLAT(CLONE_PARENT),
+#endif
+#if defined(CLONE_THREAD) || (defined(HAVE_DECL_CLONE_THREAD) && HAVE_DECL_CLONE_THREAD)
+       XLAT(CLONE_THREAD),
+#endif
+#if defined(CLONE_NEWNS) || (defined(HAVE_DECL_CLONE_NEWNS) && HAVE_DECL_CLONE_NEWNS)
+       XLAT(CLONE_NEWNS),
+#endif
+#if defined(CLONE_SYSVSEM) || (defined(HAVE_DECL_CLONE_SYSVSEM) && HAVE_DECL_CLONE_SYSVSEM)
+       XLAT(CLONE_SYSVSEM),
+#endif
+#if defined(CLONE_SETTLS) || (defined(HAVE_DECL_CLONE_SETTLS) && HAVE_DECL_CLONE_SETTLS)
+       XLAT(CLONE_SETTLS),
+#endif
+#if defined(CLONE_PARENT_SETTID) || (defined(HAVE_DECL_CLONE_PARENT_SETTID) && HAVE_DECL_CLONE_PARENT_SETTID)
+       XLAT(CLONE_PARENT_SETTID),
+#endif
+#if defined(CLONE_CHILD_CLEARTID) || (defined(HAVE_DECL_CLONE_CHILD_CLEARTID) && HAVE_DECL_CLONE_CHILD_CLEARTID)
+       XLAT(CLONE_CHILD_CLEARTID),
+#endif
+#if defined(CLONE_UNTRACED) || (defined(HAVE_DECL_CLONE_UNTRACED) && HAVE_DECL_CLONE_UNTRACED)
+       XLAT(CLONE_UNTRACED),
+#endif
+#if defined(CLONE_CHILD_SETTID) || (defined(HAVE_DECL_CLONE_CHILD_SETTID) && HAVE_DECL_CLONE_CHILD_SETTID)
+       XLAT(CLONE_CHILD_SETTID),
+#endif
+#if defined(CLONE_STOPPED) || (defined(HAVE_DECL_CLONE_STOPPED) && HAVE_DECL_CLONE_STOPPED)
+       XLAT(CLONE_STOPPED),
+#endif
+#if defined(CLONE_NEWUTS) || (defined(HAVE_DECL_CLONE_NEWUTS) && HAVE_DECL_CLONE_NEWUTS)
+       XLAT(CLONE_NEWUTS),
+#endif
+#if defined(CLONE_NEWIPC) || (defined(HAVE_DECL_CLONE_NEWIPC) && HAVE_DECL_CLONE_NEWIPC)
+       XLAT(CLONE_NEWIPC),
+#endif
+#if defined(CLONE_NEWUSER) || (defined(HAVE_DECL_CLONE_NEWUSER) && HAVE_DECL_CLONE_NEWUSER)
+       XLAT(CLONE_NEWUSER),
+#endif
+#if defined(CLONE_NEWPID) || (defined(HAVE_DECL_CLONE_NEWPID) && HAVE_DECL_CLONE_NEWPID)
+       XLAT(CLONE_NEWPID),
+#endif
+#if defined(CLONE_NEWNET) || (defined(HAVE_DECL_CLONE_NEWNET) && HAVE_DECL_CLONE_NEWNET)
+       XLAT(CLONE_NEWNET),
+#endif
+#if defined(CLONE_IO) || (defined(HAVE_DECL_CLONE_IO) && HAVE_DECL_CLONE_IO)
+       XLAT(CLONE_IO),
+#endif
+       XLAT_END
+};
diff --git a/xlat/clone_flags.in b/xlat/clone_flags.in
new file mode 100644 (file)
index 0000000..1a914b6
--- /dev/null
@@ -0,0 +1,23 @@
+CLONE_VM
+CLONE_FS
+CLONE_FILES
+CLONE_SIGHAND
+CLONE_IDLETASK
+CLONE_PTRACE
+CLONE_VFORK
+CLONE_PARENT
+CLONE_THREAD
+CLONE_NEWNS
+CLONE_SYSVSEM
+CLONE_SETTLS
+CLONE_PARENT_SETTID
+CLONE_CHILD_CLEARTID
+CLONE_UNTRACED
+CLONE_CHILD_SETTID
+CLONE_STOPPED
+CLONE_NEWUTS
+CLONE_NEWIPC
+CLONE_NEWUSER
+CLONE_NEWPID
+CLONE_NEWNET
+CLONE_IO
diff --git a/xlat/cpuclocknames.h b/xlat/cpuclocknames.h
new file mode 100644 (file)
index 0000000..c985758
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/cpuclocknames.in; do not edit. */
+
+static const struct xlat cpuclocknames[] = {
+#if defined(CPUCLOCK_PROF) || (defined(HAVE_DECL_CPUCLOCK_PROF) && HAVE_DECL_CPUCLOCK_PROF)
+       XLAT(CPUCLOCK_PROF),
+#endif
+#if defined(CPUCLOCK_VIRT) || (defined(HAVE_DECL_CPUCLOCK_VIRT) && HAVE_DECL_CPUCLOCK_VIRT)
+       XLAT(CPUCLOCK_VIRT),
+#endif
+#if defined(CPUCLOCK_SCHED) || (defined(HAVE_DECL_CPUCLOCK_SCHED) && HAVE_DECL_CPUCLOCK_SCHED)
+       XLAT(CPUCLOCK_SCHED),
+#endif
+       XLAT_END
+};
diff --git a/xlat/cpuclocknames.in b/xlat/cpuclocknames.in
new file mode 100644 (file)
index 0000000..e61fa8f
--- /dev/null
@@ -0,0 +1,3 @@
+CPUCLOCK_PROF
+CPUCLOCK_VIRT
+CPUCLOCK_SCHED
diff --git a/xlat/delete_module_flags.h b/xlat/delete_module_flags.h
new file mode 100644 (file)
index 0000000..484cbcf
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/delete_module_flags.in; do not edit. */
+
+static const struct xlat delete_module_flags[] = {
+#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
+       XLAT(O_NONBLOCK),
+#endif
+#if defined(O_TRUNC) || (defined(HAVE_DECL_O_TRUNC) && HAVE_DECL_O_TRUNC)
+       XLAT(O_TRUNC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/delete_module_flags.in b/xlat/delete_module_flags.in
new file mode 100644 (file)
index 0000000..8f02711
--- /dev/null
@@ -0,0 +1,2 @@
+O_NONBLOCK
+O_TRUNC
diff --git a/xlat/direnttypes.h b/xlat/direnttypes.h
new file mode 100644 (file)
index 0000000..1888810
--- /dev/null
@@ -0,0 +1,32 @@
+/* Generated by ./xlat/gen.sh from ./xlat/direnttypes.in; do not edit. */
+
+static const struct xlat direnttypes[] = {
+#if defined(DT_UNKNOWN) || (defined(HAVE_DECL_DT_UNKNOWN) && HAVE_DECL_DT_UNKNOWN)
+       XLAT(DT_UNKNOWN),
+#endif
+#if defined(DT_FIFO) || (defined(HAVE_DECL_DT_FIFO) && HAVE_DECL_DT_FIFO)
+       XLAT(DT_FIFO),
+#endif
+#if defined(DT_CHR) || (defined(HAVE_DECL_DT_CHR) && HAVE_DECL_DT_CHR)
+       XLAT(DT_CHR),
+#endif
+#if defined(DT_DIR) || (defined(HAVE_DECL_DT_DIR) && HAVE_DECL_DT_DIR)
+       XLAT(DT_DIR),
+#endif
+#if defined(DT_BLK) || (defined(HAVE_DECL_DT_BLK) && HAVE_DECL_DT_BLK)
+       XLAT(DT_BLK),
+#endif
+#if defined(DT_REG) || (defined(HAVE_DECL_DT_REG) && HAVE_DECL_DT_REG)
+       XLAT(DT_REG),
+#endif
+#if defined(DT_LNK) || (defined(HAVE_DECL_DT_LNK) && HAVE_DECL_DT_LNK)
+       XLAT(DT_LNK),
+#endif
+#if defined(DT_SOCK) || (defined(HAVE_DECL_DT_SOCK) && HAVE_DECL_DT_SOCK)
+       XLAT(DT_SOCK),
+#endif
+#if defined(DT_WHT) || (defined(HAVE_DECL_DT_WHT) && HAVE_DECL_DT_WHT)
+       XLAT(DT_WHT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/direnttypes.in b/xlat/direnttypes.in
new file mode 100644 (file)
index 0000000..b16cc21
--- /dev/null
@@ -0,0 +1,9 @@
+DT_UNKNOWN
+DT_FIFO
+DT_CHR
+DT_DIR
+DT_BLK
+DT_REG
+DT_LNK
+DT_SOCK
+DT_WHT
diff --git a/xlat/domains.h b/xlat/domains.h
new file mode 100644 (file)
index 0000000..b0704f6
--- /dev/null
@@ -0,0 +1,128 @@
+/* Generated by ./xlat/gen.sh from ./xlat/domains.in; do not edit. */
+
+static const struct xlat domains[] = {
+#if defined(PF_UNSPEC) || (defined(HAVE_DECL_PF_UNSPEC) && HAVE_DECL_PF_UNSPEC)
+       XLAT(PF_UNSPEC),
+#endif
+#if defined(PF_LOCAL) || (defined(HAVE_DECL_PF_LOCAL) && HAVE_DECL_PF_LOCAL)
+       XLAT(PF_LOCAL),
+#endif
+#if defined(PF_UNIX) || (defined(HAVE_DECL_PF_UNIX) && HAVE_DECL_PF_UNIX)
+       XLAT(PF_UNIX),
+#endif
+#if defined(PF_INET) || (defined(HAVE_DECL_PF_INET) && HAVE_DECL_PF_INET)
+       XLAT(PF_INET),
+#endif
+#if defined(PF_AX25) || (defined(HAVE_DECL_PF_AX25) && HAVE_DECL_PF_AX25)
+       XLAT(PF_AX25),
+#endif
+#if defined(PF_IPX) || (defined(HAVE_DECL_PF_IPX) && HAVE_DECL_PF_IPX)
+       XLAT(PF_IPX),
+#endif
+#if defined(PF_APPLETALK) || (defined(HAVE_DECL_PF_APPLETALK) && HAVE_DECL_PF_APPLETALK)
+       XLAT(PF_APPLETALK),
+#endif
+#if defined(PF_NETROM) || (defined(HAVE_DECL_PF_NETROM) && HAVE_DECL_PF_NETROM)
+       XLAT(PF_NETROM),
+#endif
+#if defined(PF_BRIDGE) || (defined(HAVE_DECL_PF_BRIDGE) && HAVE_DECL_PF_BRIDGE)
+       XLAT(PF_BRIDGE),
+#endif
+#if defined(PF_ATMPVC) || (defined(HAVE_DECL_PF_ATMPVC) && HAVE_DECL_PF_ATMPVC)
+       XLAT(PF_ATMPVC),
+#endif
+#if defined(PF_X25) || (defined(HAVE_DECL_PF_X25) && HAVE_DECL_PF_X25)
+       XLAT(PF_X25),
+#endif
+#if defined(PF_INET6) || (defined(HAVE_DECL_PF_INET6) && HAVE_DECL_PF_INET6)
+       XLAT(PF_INET6),
+#endif
+#if defined(PF_ROSE) || (defined(HAVE_DECL_PF_ROSE) && HAVE_DECL_PF_ROSE)
+       XLAT(PF_ROSE),
+#endif
+#if defined(PF_DECnet) || (defined(HAVE_DECL_PF_DECnet) && HAVE_DECL_PF_DECnet)
+       XLAT(PF_DECnet),
+#endif
+#if defined(PF_NETBEUI) || (defined(HAVE_DECL_PF_NETBEUI) && HAVE_DECL_PF_NETBEUI)
+       XLAT(PF_NETBEUI),
+#endif
+#if defined(PF_SECURITY) || (defined(HAVE_DECL_PF_SECURITY) && HAVE_DECL_PF_SECURITY)
+       XLAT(PF_SECURITY),
+#endif
+#if defined(PF_KEY) || (defined(HAVE_DECL_PF_KEY) && HAVE_DECL_PF_KEY)
+       XLAT(PF_KEY),
+#endif
+#if defined(PF_NETLINK) || (defined(HAVE_DECL_PF_NETLINK) && HAVE_DECL_PF_NETLINK)
+       XLAT(PF_NETLINK),
+#endif
+#if defined(PF_ROUTE) || (defined(HAVE_DECL_PF_ROUTE) && HAVE_DECL_PF_ROUTE)
+       XLAT(PF_ROUTE),
+#endif
+#if defined(PF_PACKET) || (defined(HAVE_DECL_PF_PACKET) && HAVE_DECL_PF_PACKET)
+       XLAT(PF_PACKET),
+#endif
+#if defined(PF_ASH) || (defined(HAVE_DECL_PF_ASH) && HAVE_DECL_PF_ASH)
+       XLAT(PF_ASH),
+#endif
+#if defined(PF_ECONET) || (defined(HAVE_DECL_PF_ECONET) && HAVE_DECL_PF_ECONET)
+       XLAT(PF_ECONET),
+#endif
+#if defined(PF_ATMSVC) || (defined(HAVE_DECL_PF_ATMSVC) && HAVE_DECL_PF_ATMSVC)
+       XLAT(PF_ATMSVC),
+#endif
+#if defined(PF_RDS) || (defined(HAVE_DECL_PF_RDS) && HAVE_DECL_PF_RDS)
+       XLAT(PF_RDS),
+#endif
+#if defined(PF_SNA) || (defined(HAVE_DECL_PF_SNA) && HAVE_DECL_PF_SNA)
+       XLAT(PF_SNA),
+#endif
+#if defined(PF_IRDA) || (defined(HAVE_DECL_PF_IRDA) && HAVE_DECL_PF_IRDA)
+       XLAT(PF_IRDA),
+#endif
+#if defined(PF_PPPOX) || (defined(HAVE_DECL_PF_PPPOX) && HAVE_DECL_PF_PPPOX)
+       XLAT(PF_PPPOX),
+#endif
+#if defined(PF_WANPIPE) || (defined(HAVE_DECL_PF_WANPIPE) && HAVE_DECL_PF_WANPIPE)
+       XLAT(PF_WANPIPE),
+#endif
+#if defined(PF_LLC) || (defined(HAVE_DECL_PF_LLC) && HAVE_DECL_PF_LLC)
+       XLAT(PF_LLC),
+#endif
+#if defined(PF_CAN) || (defined(HAVE_DECL_PF_CAN) && HAVE_DECL_PF_CAN)
+       XLAT(PF_CAN),
+#endif
+#if defined(PF_TIPC) || (defined(HAVE_DECL_PF_TIPC) && HAVE_DECL_PF_TIPC)
+       XLAT(PF_TIPC),
+#endif
+#if defined(PF_BLUETOOTH) || (defined(HAVE_DECL_PF_BLUETOOTH) && HAVE_DECL_PF_BLUETOOTH)
+       XLAT(PF_BLUETOOTH),
+#endif
+#if defined(PF_IUCV) || (defined(HAVE_DECL_PF_IUCV) && HAVE_DECL_PF_IUCV)
+       XLAT(PF_IUCV),
+#endif
+#if defined(PF_RXRPC) || (defined(HAVE_DECL_PF_RXRPC) && HAVE_DECL_PF_RXRPC)
+       XLAT(PF_RXRPC),
+#endif
+#if defined(PF_ISDN) || (defined(HAVE_DECL_PF_ISDN) && HAVE_DECL_PF_ISDN)
+       XLAT(PF_ISDN),
+#endif
+#if defined(PF_PHONET) || (defined(HAVE_DECL_PF_PHONET) && HAVE_DECL_PF_PHONET)
+       XLAT(PF_PHONET),
+#endif
+#if defined(PF_IEEE802154) || (defined(HAVE_DECL_PF_IEEE802154) && HAVE_DECL_PF_IEEE802154)
+       XLAT(PF_IEEE802154),
+#endif
+#if defined(PF_CAIF) || (defined(HAVE_DECL_PF_CAIF) && HAVE_DECL_PF_CAIF)
+       XLAT(PF_CAIF),
+#endif
+#if defined(PF_ALG) || (defined(HAVE_DECL_PF_ALG) && HAVE_DECL_PF_ALG)
+       XLAT(PF_ALG),
+#endif
+#if defined(PF_NFC) || (defined(HAVE_DECL_PF_NFC) && HAVE_DECL_PF_NFC)
+       XLAT(PF_NFC),
+#endif
+#if defined(PF_VSOCK) || (defined(HAVE_DECL_PF_VSOCK) && HAVE_DECL_PF_VSOCK)
+       XLAT(PF_VSOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/domains.in b/xlat/domains.in
new file mode 100644 (file)
index 0000000..bb216ba
--- /dev/null
@@ -0,0 +1,41 @@
+PF_UNSPEC
+PF_LOCAL
+PF_UNIX
+PF_INET
+PF_AX25
+PF_IPX
+PF_APPLETALK
+PF_NETROM
+PF_BRIDGE
+PF_ATMPVC
+PF_X25
+PF_INET6
+PF_ROSE
+PF_DECnet
+PF_NETBEUI
+PF_SECURITY
+PF_KEY
+PF_NETLINK
+PF_ROUTE
+PF_PACKET
+PF_ASH
+PF_ECONET
+PF_ATMSVC
+PF_RDS
+PF_SNA
+PF_IRDA
+PF_PPPOX
+PF_WANPIPE
+PF_LLC
+PF_CAN
+PF_TIPC
+PF_BLUETOOTH
+PF_IUCV
+PF_RXRPC
+PF_ISDN
+PF_PHONET
+PF_IEEE802154
+PF_CAIF
+PF_ALG
+PF_NFC
+PF_VSOCK
diff --git a/xlat/epollctls.h b/xlat/epollctls.h
new file mode 100644 (file)
index 0000000..e4ccff7
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/epollctls.in; do not edit. */
+
+static const struct xlat epollctls[] = {
+#if defined(EPOLL_CTL_ADD) || (defined(HAVE_DECL_EPOLL_CTL_ADD) && HAVE_DECL_EPOLL_CTL_ADD)
+       XLAT(EPOLL_CTL_ADD),
+#endif
+#if defined(EPOLL_CTL_MOD) || (defined(HAVE_DECL_EPOLL_CTL_MOD) && HAVE_DECL_EPOLL_CTL_MOD)
+       XLAT(EPOLL_CTL_MOD),
+#endif
+#if defined(EPOLL_CTL_DEL) || (defined(HAVE_DECL_EPOLL_CTL_DEL) && HAVE_DECL_EPOLL_CTL_DEL)
+       XLAT(EPOLL_CTL_DEL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/epollctls.in b/xlat/epollctls.in
new file mode 100644 (file)
index 0000000..45b573e
--- /dev/null
@@ -0,0 +1,3 @@
+EPOLL_CTL_ADD
+EPOLL_CTL_MOD
+EPOLL_CTL_DEL
diff --git a/xlat/epollevents.h b/xlat/epollevents.h
new file mode 100644 (file)
index 0000000..899cbd9
--- /dev/null
@@ -0,0 +1,44 @@
+/* Generated by ./xlat/gen.sh from ./xlat/epollevents.in; do not edit. */
+
+static const struct xlat epollevents[] = {
+#if defined(EPOLLIN) || (defined(HAVE_DECL_EPOLLIN) && HAVE_DECL_EPOLLIN)
+       XLAT(EPOLLIN),
+#endif
+#if defined(EPOLLPRI) || (defined(HAVE_DECL_EPOLLPRI) && HAVE_DECL_EPOLLPRI)
+       XLAT(EPOLLPRI),
+#endif
+#if defined(EPOLLOUT) || (defined(HAVE_DECL_EPOLLOUT) && HAVE_DECL_EPOLLOUT)
+       XLAT(EPOLLOUT),
+#endif
+#if defined(EPOLLRDNORM) || (defined(HAVE_DECL_EPOLLRDNORM) && HAVE_DECL_EPOLLRDNORM)
+       XLAT(EPOLLRDNORM),
+#endif
+#if defined(EPOLLRDBAND) || (defined(HAVE_DECL_EPOLLRDBAND) && HAVE_DECL_EPOLLRDBAND)
+       XLAT(EPOLLRDBAND),
+#endif
+#if defined(EPOLLWRNORM) || (defined(HAVE_DECL_EPOLLWRNORM) && HAVE_DECL_EPOLLWRNORM)
+       XLAT(EPOLLWRNORM),
+#endif
+#if defined(EPOLLWRBAND) || (defined(HAVE_DECL_EPOLLWRBAND) && HAVE_DECL_EPOLLWRBAND)
+       XLAT(EPOLLWRBAND),
+#endif
+#if defined(EPOLLMSG) || (defined(HAVE_DECL_EPOLLMSG) && HAVE_DECL_EPOLLMSG)
+       XLAT(EPOLLMSG),
+#endif
+#if defined(EPOLLERR) || (defined(HAVE_DECL_EPOLLERR) && HAVE_DECL_EPOLLERR)
+       XLAT(EPOLLERR),
+#endif
+#if defined(EPOLLHUP) || (defined(HAVE_DECL_EPOLLHUP) && HAVE_DECL_EPOLLHUP)
+       XLAT(EPOLLHUP),
+#endif
+#if defined(EPOLLRDHUP) || (defined(HAVE_DECL_EPOLLRDHUP) && HAVE_DECL_EPOLLRDHUP)
+       XLAT(EPOLLRDHUP),
+#endif
+#if defined(EPOLLONESHOT) || (defined(HAVE_DECL_EPOLLONESHOT) && HAVE_DECL_EPOLLONESHOT)
+       XLAT(EPOLLONESHOT),
+#endif
+#if defined(EPOLLET) || (defined(HAVE_DECL_EPOLLET) && HAVE_DECL_EPOLLET)
+       XLAT(EPOLLET),
+#endif
+       XLAT_END
+};
diff --git a/xlat/epollevents.in b/xlat/epollevents.in
new file mode 100644 (file)
index 0000000..0448588
--- /dev/null
@@ -0,0 +1,13 @@
+EPOLLIN
+EPOLLPRI
+EPOLLOUT
+EPOLLRDNORM
+EPOLLRDBAND
+EPOLLWRNORM
+EPOLLWRBAND
+EPOLLMSG
+EPOLLERR
+EPOLLHUP
+EPOLLRDHUP
+EPOLLONESHOT
+EPOLLET
diff --git a/xlat/epollflags.h b/xlat/epollflags.h
new file mode 100644 (file)
index 0000000..eb20235
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/epollflags.in; do not edit. */
+
+static const struct xlat epollflags[] = {
+#if defined(EPOLL_CLOEXEC) || (defined(HAVE_DECL_EPOLL_CLOEXEC) && HAVE_DECL_EPOLL_CLOEXEC)
+       XLAT(EPOLL_CLOEXEC),
+#endif
+#if defined(EPOLL_NONBLOCK) || (defined(HAVE_DECL_EPOLL_NONBLOCK) && HAVE_DECL_EPOLL_NONBLOCK)
+       XLAT(EPOLL_NONBLOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/epollflags.in b/xlat/epollflags.in
new file mode 100644 (file)
index 0000000..a5ab4d0
--- /dev/null
@@ -0,0 +1,2 @@
+EPOLL_CLOEXEC
+EPOLL_NONBLOCK
diff --git a/xlat/fan_classes.h b/xlat/fan_classes.h
new file mode 100644 (file)
index 0000000..d1dc17a
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fan_classes.in; do not edit. */
+
+static const struct xlat fan_classes[] = {
+#if defined(FAN_CLASS_NOTIF) || (defined(HAVE_DECL_FAN_CLASS_NOTIF) && HAVE_DECL_FAN_CLASS_NOTIF)
+       XLAT(FAN_CLASS_NOTIF),
+#endif
+#if defined(FAN_CLASS_CONTENT) || (defined(HAVE_DECL_FAN_CLASS_CONTENT) && HAVE_DECL_FAN_CLASS_CONTENT)
+       XLAT(FAN_CLASS_CONTENT),
+#endif
+#if defined(FAN_CLASS_PRE_CONTENT) || (defined(HAVE_DECL_FAN_CLASS_PRE_CONTENT) && HAVE_DECL_FAN_CLASS_PRE_CONTENT)
+       XLAT(FAN_CLASS_PRE_CONTENT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/fan_classes.in b/xlat/fan_classes.in
new file mode 100644 (file)
index 0000000..d9f24de
--- /dev/null
@@ -0,0 +1,3 @@
+FAN_CLASS_NOTIF
+FAN_CLASS_CONTENT
+FAN_CLASS_PRE_CONTENT
diff --git a/xlat/fan_event_flags.h b/xlat/fan_event_flags.h
new file mode 100644 (file)
index 0000000..22a1529
--- /dev/null
@@ -0,0 +1,38 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fan_event_flags.in; do not edit. */
+
+static const struct xlat fan_event_flags[] = {
+#if defined(FAN_ACCESS) || (defined(HAVE_DECL_FAN_ACCESS) && HAVE_DECL_FAN_ACCESS)
+       XLAT(FAN_ACCESS),
+#endif
+#if defined(FAN_MODIFY) || (defined(HAVE_DECL_FAN_MODIFY) && HAVE_DECL_FAN_MODIFY)
+       XLAT(FAN_MODIFY),
+#endif
+#if defined(FAN_CLOSE) || (defined(HAVE_DECL_FAN_CLOSE) && HAVE_DECL_FAN_CLOSE)
+       XLAT(FAN_CLOSE),
+#endif
+#if defined(FAN_CLOSE_WRITE) || (defined(HAVE_DECL_FAN_CLOSE_WRITE) && HAVE_DECL_FAN_CLOSE_WRITE)
+       XLAT(FAN_CLOSE_WRITE),
+#endif
+#if defined(FAN_CLOSE_NOWRITE) || (defined(HAVE_DECL_FAN_CLOSE_NOWRITE) && HAVE_DECL_FAN_CLOSE_NOWRITE)
+       XLAT(FAN_CLOSE_NOWRITE),
+#endif
+#if defined(FAN_OPEN) || (defined(HAVE_DECL_FAN_OPEN) && HAVE_DECL_FAN_OPEN)
+       XLAT(FAN_OPEN),
+#endif
+#if defined(FAN_Q_OVERFLOW) || (defined(HAVE_DECL_FAN_Q_OVERFLOW) && HAVE_DECL_FAN_Q_OVERFLOW)
+       XLAT(FAN_Q_OVERFLOW),
+#endif
+#if defined(FAN_OPEN_PERM) || (defined(HAVE_DECL_FAN_OPEN_PERM) && HAVE_DECL_FAN_OPEN_PERM)
+       XLAT(FAN_OPEN_PERM),
+#endif
+#if defined(FAN_ACCESS_PERM) || (defined(HAVE_DECL_FAN_ACCESS_PERM) && HAVE_DECL_FAN_ACCESS_PERM)
+       XLAT(FAN_ACCESS_PERM),
+#endif
+#if defined(FAN_ONDIR) || (defined(HAVE_DECL_FAN_ONDIR) && HAVE_DECL_FAN_ONDIR)
+       XLAT(FAN_ONDIR),
+#endif
+#if defined(FAN_EVENT_ON_CHILD) || (defined(HAVE_DECL_FAN_EVENT_ON_CHILD) && HAVE_DECL_FAN_EVENT_ON_CHILD)
+       XLAT(FAN_EVENT_ON_CHILD),
+#endif
+       XLAT_END
+};
diff --git a/xlat/fan_event_flags.in b/xlat/fan_event_flags.in
new file mode 100644 (file)
index 0000000..79c6b2b
--- /dev/null
@@ -0,0 +1,11 @@
+FAN_ACCESS
+FAN_MODIFY
+FAN_CLOSE
+FAN_CLOSE_WRITE
+FAN_CLOSE_NOWRITE
+FAN_OPEN
+FAN_Q_OVERFLOW
+FAN_OPEN_PERM
+FAN_ACCESS_PERM
+FAN_ONDIR
+FAN_EVENT_ON_CHILD
diff --git a/xlat/fan_init_flags.h b/xlat/fan_init_flags.h
new file mode 100644 (file)
index 0000000..b4873e5
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fan_init_flags.in; do not edit. */
+
+static const struct xlat fan_init_flags[] = {
+#if defined(FAN_CLOEXEC) || (defined(HAVE_DECL_FAN_CLOEXEC) && HAVE_DECL_FAN_CLOEXEC)
+       XLAT(FAN_CLOEXEC),
+#endif
+#if defined(FAN_NONBLOCK) || (defined(HAVE_DECL_FAN_NONBLOCK) && HAVE_DECL_FAN_NONBLOCK)
+       XLAT(FAN_NONBLOCK),
+#endif
+#if defined(FAN_UNLIMITED_QUEUE) || (defined(HAVE_DECL_FAN_UNLIMITED_QUEUE) && HAVE_DECL_FAN_UNLIMITED_QUEUE)
+       XLAT(FAN_UNLIMITED_QUEUE),
+#endif
+#if defined(FAN_UNLIMITED_MARKS) || (defined(HAVE_DECL_FAN_UNLIMITED_MARKS) && HAVE_DECL_FAN_UNLIMITED_MARKS)
+       XLAT(FAN_UNLIMITED_MARKS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/fan_init_flags.in b/xlat/fan_init_flags.in
new file mode 100644 (file)
index 0000000..2752269
--- /dev/null
@@ -0,0 +1,4 @@
+FAN_CLOEXEC
+FAN_NONBLOCK
+FAN_UNLIMITED_QUEUE
+FAN_UNLIMITED_MARKS
diff --git a/xlat/fan_mark_flags.h b/xlat/fan_mark_flags.h
new file mode 100644 (file)
index 0000000..5ab20d8
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fan_mark_flags.in; do not edit. */
+
+static const struct xlat fan_mark_flags[] = {
+#if defined(FAN_MARK_ADD) || (defined(HAVE_DECL_FAN_MARK_ADD) && HAVE_DECL_FAN_MARK_ADD)
+       XLAT(FAN_MARK_ADD),
+#endif
+#if defined(FAN_MARK_REMOVE) || (defined(HAVE_DECL_FAN_MARK_REMOVE) && HAVE_DECL_FAN_MARK_REMOVE)
+       XLAT(FAN_MARK_REMOVE),
+#endif
+#if defined(FAN_MARK_DONT_FOLLOW) || (defined(HAVE_DECL_FAN_MARK_DONT_FOLLOW) && HAVE_DECL_FAN_MARK_DONT_FOLLOW)
+       XLAT(FAN_MARK_DONT_FOLLOW),
+#endif
+#if defined(FAN_MARK_ONLYDIR) || (defined(HAVE_DECL_FAN_MARK_ONLYDIR) && HAVE_DECL_FAN_MARK_ONLYDIR)
+       XLAT(FAN_MARK_ONLYDIR),
+#endif
+#if defined(FAN_MARK_MOUNT) || (defined(HAVE_DECL_FAN_MARK_MOUNT) && HAVE_DECL_FAN_MARK_MOUNT)
+       XLAT(FAN_MARK_MOUNT),
+#endif
+#if defined(FAN_MARK_IGNORED_MASK) || (defined(HAVE_DECL_FAN_MARK_IGNORED_MASK) && HAVE_DECL_FAN_MARK_IGNORED_MASK)
+       XLAT(FAN_MARK_IGNORED_MASK),
+#endif
+#if defined(FAN_MARK_IGNORED_SURV_MODIFY) || (defined(HAVE_DECL_FAN_MARK_IGNORED_SURV_MODIFY) && HAVE_DECL_FAN_MARK_IGNORED_SURV_MODIFY)
+       XLAT(FAN_MARK_IGNORED_SURV_MODIFY),
+#endif
+#if defined(FAN_MARK_FLUSH) || (defined(HAVE_DECL_FAN_MARK_FLUSH) && HAVE_DECL_FAN_MARK_FLUSH)
+       XLAT(FAN_MARK_FLUSH),
+#endif
+       XLAT_END
+};
diff --git a/xlat/fan_mark_flags.in b/xlat/fan_mark_flags.in
new file mode 100644 (file)
index 0000000..4526665
--- /dev/null
@@ -0,0 +1,8 @@
+FAN_MARK_ADD
+FAN_MARK_REMOVE
+FAN_MARK_DONT_FOLLOW
+FAN_MARK_ONLYDIR
+FAN_MARK_MOUNT
+FAN_MARK_IGNORED_MASK
+FAN_MARK_IGNORED_SURV_MODIFY
+FAN_MARK_FLUSH
diff --git a/xlat/fcntlcmds.h b/xlat/fcntlcmds.h
new file mode 100644 (file)
index 0000000..5a170fd
--- /dev/null
@@ -0,0 +1,125 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fcntlcmds.in; do not edit. */
+
+static const struct xlat fcntlcmds[] = {
+#if defined(F_DUPFD) || (defined(HAVE_DECL_F_DUPFD) && HAVE_DECL_F_DUPFD)
+       XLAT(F_DUPFD),
+#endif
+#if defined(F_GETFD) || (defined(HAVE_DECL_F_GETFD) && HAVE_DECL_F_GETFD)
+       XLAT(F_GETFD),
+#endif
+#if defined(F_SETFD) || (defined(HAVE_DECL_F_SETFD) && HAVE_DECL_F_SETFD)
+       XLAT(F_SETFD),
+#endif
+#if defined(F_GETFL) || (defined(HAVE_DECL_F_GETFL) && HAVE_DECL_F_GETFL)
+       XLAT(F_GETFL),
+#endif
+#if defined(F_SETFL) || (defined(HAVE_DECL_F_SETFL) && HAVE_DECL_F_SETFL)
+       XLAT(F_SETFL),
+#endif
+#if defined(F_GETLK) || (defined(HAVE_DECL_F_GETLK) && HAVE_DECL_F_GETLK)
+       XLAT(F_GETLK),
+#endif
+#if defined(F_SETLK) || (defined(HAVE_DECL_F_SETLK) && HAVE_DECL_F_SETLK)
+       XLAT(F_SETLK),
+#endif
+#if defined(F_SETLKW) || (defined(HAVE_DECL_F_SETLKW) && HAVE_DECL_F_SETLKW)
+       XLAT(F_SETLKW),
+#endif
+#if defined(F_GETOWN) || (defined(HAVE_DECL_F_GETOWN) && HAVE_DECL_F_GETOWN)
+       XLAT(F_GETOWN),
+#endif
+#if defined(F_SETOWN) || (defined(HAVE_DECL_F_SETOWN) && HAVE_DECL_F_SETOWN)
+       XLAT(F_SETOWN),
+#endif
+#if defined(F_RSETLK) || (defined(HAVE_DECL_F_RSETLK) && HAVE_DECL_F_RSETLK)
+       XLAT(F_RSETLK),
+#endif
+#if defined(F_RSETLKW) || (defined(HAVE_DECL_F_RSETLKW) && HAVE_DECL_F_RSETLKW)
+       XLAT(F_RSETLKW),
+#endif
+#if defined(F_RGETLK) || (defined(HAVE_DECL_F_RGETLK) && HAVE_DECL_F_RGETLK)
+       XLAT(F_RGETLK),
+#endif
+#if defined(F_CNVT) || (defined(HAVE_DECL_F_CNVT) && HAVE_DECL_F_CNVT)
+       XLAT(F_CNVT),
+#endif
+#if defined(F_SETSIG) || (defined(HAVE_DECL_F_SETSIG) && HAVE_DECL_F_SETSIG)
+       XLAT(F_SETSIG),
+#endif
+#if defined(F_GETSIG) || (defined(HAVE_DECL_F_GETSIG) && HAVE_DECL_F_GETSIG)
+       XLAT(F_GETSIG),
+#endif
+#if defined(F_CHKFL) || (defined(HAVE_DECL_F_CHKFL) && HAVE_DECL_F_CHKFL)
+       XLAT(F_CHKFL),
+#endif
+#if defined(F_DUP2FD) || (defined(HAVE_DECL_F_DUP2FD) && HAVE_DECL_F_DUP2FD)
+       XLAT(F_DUP2FD),
+#endif
+#if defined(F_ALLOCSP) || (defined(HAVE_DECL_F_ALLOCSP) && HAVE_DECL_F_ALLOCSP)
+       XLAT(F_ALLOCSP),
+#endif
+#if defined(F_ISSTREAM) || (defined(HAVE_DECL_F_ISSTREAM) && HAVE_DECL_F_ISSTREAM)
+       XLAT(F_ISSTREAM),
+#endif
+#if defined(F_PRIV) || (defined(HAVE_DECL_F_PRIV) && HAVE_DECL_F_PRIV)
+       XLAT(F_PRIV),
+#endif
+#if defined(F_NPRIV) || (defined(HAVE_DECL_F_NPRIV) && HAVE_DECL_F_NPRIV)
+       XLAT(F_NPRIV),
+#endif
+#if defined(F_QUOTACL) || (defined(HAVE_DECL_F_QUOTACL) && HAVE_DECL_F_QUOTACL)
+       XLAT(F_QUOTACL),
+#endif
+#if defined(F_BLOCKS) || (defined(HAVE_DECL_F_BLOCKS) && HAVE_DECL_F_BLOCKS)
+       XLAT(F_BLOCKS),
+#endif
+#if defined(F_BLKSIZE) || (defined(HAVE_DECL_F_BLKSIZE) && HAVE_DECL_F_BLKSIZE)
+       XLAT(F_BLKSIZE),
+#endif
+#if defined(F_GETOWN) || (defined(HAVE_DECL_F_GETOWN) && HAVE_DECL_F_GETOWN)
+       XLAT(F_GETOWN),
+#endif
+#if defined(F_SETOWN) || (defined(HAVE_DECL_F_SETOWN) && HAVE_DECL_F_SETOWN)
+       XLAT(F_SETOWN),
+#endif
+#if defined(F_REVOKE) || (defined(HAVE_DECL_F_REVOKE) && HAVE_DECL_F_REVOKE)
+       XLAT(F_REVOKE),
+#endif
+#if defined(F_SETLK) || (defined(HAVE_DECL_F_SETLK) && HAVE_DECL_F_SETLK)
+       XLAT(F_SETLK),
+#endif
+#if defined(F_SETLKW) || (defined(HAVE_DECL_F_SETLKW) && HAVE_DECL_F_SETLKW)
+       XLAT(F_SETLKW),
+#endif
+#if defined(F_GETLK) || (defined(HAVE_DECL_F_GETLK) && HAVE_DECL_F_GETLK)
+       XLAT(F_GETLK),
+#endif
+#if defined(F_SETLK64) || (defined(HAVE_DECL_F_SETLK64) && HAVE_DECL_F_SETLK64)
+       XLAT(F_SETLK64),
+#endif
+#if defined(F_SETLKW64) || (defined(HAVE_DECL_F_SETLKW64) && HAVE_DECL_F_SETLKW64)
+       XLAT(F_SETLKW64),
+#endif
+#if defined(F_GETLK64) || (defined(HAVE_DECL_F_GETLK64) && HAVE_DECL_F_GETLK64)
+       XLAT(F_GETLK64),
+#endif
+#if defined(F_SHARE) || (defined(HAVE_DECL_F_SHARE) && HAVE_DECL_F_SHARE)
+       XLAT(F_SHARE),
+#endif
+#if defined(F_UNSHARE) || (defined(HAVE_DECL_F_UNSHARE) && HAVE_DECL_F_UNSHARE)
+       XLAT(F_UNSHARE),
+#endif
+#if defined(F_SETLEASE) || (defined(HAVE_DECL_F_SETLEASE) && HAVE_DECL_F_SETLEASE)
+       XLAT(F_SETLEASE),
+#endif
+#if defined(F_GETLEASE) || (defined(HAVE_DECL_F_GETLEASE) && HAVE_DECL_F_GETLEASE)
+       XLAT(F_GETLEASE),
+#endif
+#if defined(F_NOTIFY) || (defined(HAVE_DECL_F_NOTIFY) && HAVE_DECL_F_NOTIFY)
+       XLAT(F_NOTIFY),
+#endif
+#if defined(F_DUPFD_CLOEXEC) || (defined(HAVE_DECL_F_DUPFD_CLOEXEC) && HAVE_DECL_F_DUPFD_CLOEXEC)
+       XLAT(F_DUPFD_CLOEXEC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/fcntlcmds.in b/xlat/fcntlcmds.in
new file mode 100644 (file)
index 0000000..7db4222
--- /dev/null
@@ -0,0 +1,40 @@
+F_DUPFD
+F_GETFD
+F_SETFD
+F_GETFL
+F_SETFL
+F_GETLK
+F_SETLK
+F_SETLKW
+F_GETOWN
+F_SETOWN
+F_RSETLK
+F_RSETLKW
+F_RGETLK
+F_CNVT
+F_SETSIG
+F_GETSIG
+F_CHKFL
+F_DUP2FD
+F_ALLOCSP
+F_ISSTREAM
+F_PRIV
+F_NPRIV
+F_QUOTACL
+F_BLOCKS
+F_BLKSIZE
+F_GETOWN
+F_SETOWN
+F_REVOKE
+F_SETLK
+F_SETLKW
+F_GETLK
+F_SETLK64
+F_SETLKW64
+F_GETLK64
+F_SHARE
+F_UNSHARE
+F_SETLEASE
+F_GETLEASE
+F_NOTIFY
+F_DUPFD_CLOEXEC
diff --git a/xlat/fdflags.h b/xlat/fdflags.h
new file mode 100644 (file)
index 0000000..085eb7d
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fdflags.in; do not edit. */
+
+static const struct xlat fdflags[] = {
+#if defined(FD_CLOEXEC) || (defined(HAVE_DECL_FD_CLOEXEC) && HAVE_DECL_FD_CLOEXEC)
+       XLAT(FD_CLOEXEC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/fdflags.in b/xlat/fdflags.in
new file mode 100644 (file)
index 0000000..f6c02b4
--- /dev/null
@@ -0,0 +1 @@
+FD_CLOEXEC
diff --git a/xlat/fileflags.h b/xlat/fileflags.h
new file mode 100644 (file)
index 0000000..3b47cf0
--- /dev/null
@@ -0,0 +1,5 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fileflags.in; do not edit. */
+
+static const struct xlat fileflags[] = {
+       XLAT_END
+};
diff --git a/xlat/fileflags.in b/xlat/fileflags.in
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/xlat/flockcmds.h b/xlat/flockcmds.h
new file mode 100644 (file)
index 0000000..1cdd912
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/flockcmds.in; do not edit. */
+
+static const struct xlat flockcmds[] = {
+#if defined(LOCK_SH) || (defined(HAVE_DECL_LOCK_SH) && HAVE_DECL_LOCK_SH)
+       XLAT(LOCK_SH),
+#endif
+#if defined(LOCK_EX) || (defined(HAVE_DECL_LOCK_EX) && HAVE_DECL_LOCK_EX)
+       XLAT(LOCK_EX),
+#endif
+#if defined(LOCK_NB) || (defined(HAVE_DECL_LOCK_NB) && HAVE_DECL_LOCK_NB)
+       XLAT(LOCK_NB),
+#endif
+#if defined(LOCK_UN) || (defined(HAVE_DECL_LOCK_UN) && HAVE_DECL_LOCK_UN)
+       XLAT(LOCK_UN),
+#endif
+       XLAT_END
+};
diff --git a/xlat/flockcmds.in b/xlat/flockcmds.in
new file mode 100644 (file)
index 0000000..50ef45d
--- /dev/null
@@ -0,0 +1,4 @@
+LOCK_SH
+LOCK_EX
+LOCK_NB
+LOCK_UN
diff --git a/xlat/fsmagic.h b/xlat/fsmagic.h
new file mode 100644 (file)
index 0000000..ba7f450
--- /dev/null
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fsmagic.in; do not edit. */
+
+static const struct xlat fsmagic[] = {
+{ 0x73757245,  "CODA_SUPER_MAGIC"      },
+{ 0x012ff7b7,  "COH_SUPER_MAGIC"       },
+{ 0x1373,      "DEVFS_SUPER_MAGIC"     },
+{ 0x1cd1,      "DEVPTS_SUPER_MAGIC"    },
+{ 0x414A53,    "EFS_SUPER_MAGIC"       },
+{ 0xef51,      "EXT2_OLD_SUPER_MAGIC"  },
+{ 0xef53,      "EXT2_SUPER_MAGIC"      },
+{ 0x137d,      "EXT_SUPER_MAGIC"       },
+{ 0xf995e849,  "HPFS_SUPER_MAGIC"      },
+{ 0x9660,      "ISOFS_SUPER_MAGIC"     },
+{ 0x137f,      "MINIX_SUPER_MAGIC"     },
+{ 0x138f,      "MINIX_SUPER_MAGIC2"    },
+{ 0x2468,      "MINIX2_SUPER_MAGIC"    },
+{ 0x2478,      "MINIX2_SUPER_MAGIC2"   },
+{ 0x4d44,      "MSDOS_SUPER_MAGIC"     },
+{ 0x564c,      "NCP_SUPER_MAGIC"       },
+{ 0x6969,      "NFS_SUPER_MAGIC"       },
+{ 0x9fa0,      "PROC_SUPER_MAGIC"      },
+{ 0x002f,      "QNX4_SUPER_MAGIC"      },
+{ 0x52654973,  "REISERFS_SUPER_MAGIC"  },
+{ 0x02011994,  "SHMFS_SUPER_MAGIC"     },
+{ 0x517b,      "SMB_SUPER_MAGIC"       },
+{ 0x012ff7b6,  "SYSV2_SUPER_MAGIC"     },
+{ 0x012ff7b5,  "SYSV4_SUPER_MAGIC"     },
+{ 0x00011954,  "UFS_MAGIC"             },
+{ 0x54190100,  "UFS_CIGAM"             },
+{ 0x012ff7b4,  "XENIX_SUPER_MAGIC"     },
+{ 0x012fd16d,  "XIAFS_SUPER_MAGIC"     },
+{ 0x62656572,  "SYSFS_MAGIC"           },
+       XLAT_END
+};
diff --git a/xlat/fsmagic.in b/xlat/fsmagic.in
new file mode 100644 (file)
index 0000000..24f8efa
--- /dev/null
@@ -0,0 +1,29 @@
+       { 0x73757245,   "CODA_SUPER_MAGIC"      },
+       { 0x012ff7b7,   "COH_SUPER_MAGIC"       },
+       { 0x1373,       "DEVFS_SUPER_MAGIC"     },
+       { 0x1cd1,       "DEVPTS_SUPER_MAGIC"    },
+       { 0x414A53,     "EFS_SUPER_MAGIC"       },
+       { 0xef51,       "EXT2_OLD_SUPER_MAGIC"  },
+       { 0xef53,       "EXT2_SUPER_MAGIC"      },
+       { 0x137d,       "EXT_SUPER_MAGIC"       },
+       { 0xf995e849,   "HPFS_SUPER_MAGIC"      },
+       { 0x9660,       "ISOFS_SUPER_MAGIC"     },
+       { 0x137f,       "MINIX_SUPER_MAGIC"     },
+       { 0x138f,       "MINIX_SUPER_MAGIC2"    },
+       { 0x2468,       "MINIX2_SUPER_MAGIC"    },
+       { 0x2478,       "MINIX2_SUPER_MAGIC2"   },
+       { 0x4d44,       "MSDOS_SUPER_MAGIC"     },
+       { 0x564c,       "NCP_SUPER_MAGIC"       },
+       { 0x6969,       "NFS_SUPER_MAGIC"       },
+       { 0x9fa0,       "PROC_SUPER_MAGIC"      },
+       { 0x002f,       "QNX4_SUPER_MAGIC"      },
+       { 0x52654973,   "REISERFS_SUPER_MAGIC"  },
+       { 0x02011994,   "SHMFS_SUPER_MAGIC"     },
+       { 0x517b,       "SMB_SUPER_MAGIC"       },
+       { 0x012ff7b6,   "SYSV2_SUPER_MAGIC"     },
+       { 0x012ff7b5,   "SYSV4_SUPER_MAGIC"     },
+       { 0x00011954,   "UFS_MAGIC"             },
+       { 0x54190100,   "UFS_CIGAM"             },
+       { 0x012ff7b4,   "XENIX_SUPER_MAGIC"     },
+       { 0x012fd16d,   "XIAFS_SUPER_MAGIC"     },
+       { 0x62656572,   "SYSFS_MAGIC"           },
diff --git a/xlat/futexops.h b/xlat/futexops.h
new file mode 100644 (file)
index 0000000..f130bca
--- /dev/null
@@ -0,0 +1,95 @@
+/* Generated by ./xlat/gen.sh from ./xlat/futexops.in; do not edit. */
+
+static const struct xlat futexops[] = {
+#if defined(FUTEX_WAIT) || (defined(HAVE_DECL_FUTEX_WAIT) && HAVE_DECL_FUTEX_WAIT)
+       XLAT(FUTEX_WAIT),
+#endif
+#if defined(FUTEX_WAKE) || (defined(HAVE_DECL_FUTEX_WAKE) && HAVE_DECL_FUTEX_WAKE)
+       XLAT(FUTEX_WAKE),
+#endif
+#if defined(FUTEX_FD) || (defined(HAVE_DECL_FUTEX_FD) && HAVE_DECL_FUTEX_FD)
+       XLAT(FUTEX_FD),
+#endif
+#if defined(FUTEX_REQUEUE) || (defined(HAVE_DECL_FUTEX_REQUEUE) && HAVE_DECL_FUTEX_REQUEUE)
+       XLAT(FUTEX_REQUEUE),
+#endif
+#if defined(FUTEX_CMP_REQUEUE) || (defined(HAVE_DECL_FUTEX_CMP_REQUEUE) && HAVE_DECL_FUTEX_CMP_REQUEUE)
+       XLAT(FUTEX_CMP_REQUEUE),
+#endif
+#if defined(FUTEX_WAKE_OP) || (defined(HAVE_DECL_FUTEX_WAKE_OP) && HAVE_DECL_FUTEX_WAKE_OP)
+       XLAT(FUTEX_WAKE_OP),
+#endif
+#if defined(FUTEX_LOCK_PI) || (defined(HAVE_DECL_FUTEX_LOCK_PI) && HAVE_DECL_FUTEX_LOCK_PI)
+       XLAT(FUTEX_LOCK_PI),
+#endif
+#if defined(FUTEX_UNLOCK_PI) || (defined(HAVE_DECL_FUTEX_UNLOCK_PI) && HAVE_DECL_FUTEX_UNLOCK_PI)
+       XLAT(FUTEX_UNLOCK_PI),
+#endif
+#if defined(FUTEX_TRYLOCK_PI) || (defined(HAVE_DECL_FUTEX_TRYLOCK_PI) && HAVE_DECL_FUTEX_TRYLOCK_PI)
+       XLAT(FUTEX_TRYLOCK_PI),
+#endif
+#if defined(FUTEX_WAIT_BITSET) || (defined(HAVE_DECL_FUTEX_WAIT_BITSET) && HAVE_DECL_FUTEX_WAIT_BITSET)
+       XLAT(FUTEX_WAIT_BITSET),
+#endif
+#if defined(FUTEX_WAKE_BITSET) || (defined(HAVE_DECL_FUTEX_WAKE_BITSET) && HAVE_DECL_FUTEX_WAKE_BITSET)
+       XLAT(FUTEX_WAKE_BITSET),
+#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),
+#endif
+#if defined(FUTEX_CMP_REQUEUE_PI) || (defined(HAVE_DECL_FUTEX_CMP_REQUEUE_PI) && HAVE_DECL_FUTEX_CMP_REQUEUE_PI)
+       XLAT(FUTEX_CMP_REQUEUE_PI),
+#endif
+#if defined(FUTEX_WAIT_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAIT_PRIVATE) && HAVE_DECL_FUTEX_WAIT_PRIVATE)
+       XLAT(FUTEX_WAIT_PRIVATE),
+#endif
+#if defined(FUTEX_WAKE_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAKE_PRIVATE) && HAVE_DECL_FUTEX_WAKE_PRIVATE)
+       XLAT(FUTEX_WAKE_PRIVATE),
+#endif
+#if defined(FUTEX_FD) || (defined(HAVE_DECL_FUTEX_FD) && HAVE_DECL_FUTEX_FD)
+       XLAT(FUTEX_FD|FUTEX_PRIVATE_FLAG),
+#endif
+#if defined(FUTEX_REQUEUE_PRIVATE) || (defined(HAVE_DECL_FUTEX_REQUEUE_PRIVATE) && HAVE_DECL_FUTEX_REQUEUE_PRIVATE)
+       XLAT(FUTEX_REQUEUE_PRIVATE),
+#endif
+#if defined(FUTEX_CMP_REQUEUE_PRIVATE) || (defined(HAVE_DECL_FUTEX_CMP_REQUEUE_PRIVATE) && HAVE_DECL_FUTEX_CMP_REQUEUE_PRIVATE)
+       XLAT(FUTEX_CMP_REQUEUE_PRIVATE),
+#endif
+#if defined(FUTEX_WAKE_OP_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAKE_OP_PRIVATE) && HAVE_DECL_FUTEX_WAKE_OP_PRIVATE)
+       XLAT(FUTEX_WAKE_OP_PRIVATE),
+#endif
+#if defined(FUTEX_LOCK_PI_PRIVATE) || (defined(HAVE_DECL_FUTEX_LOCK_PI_PRIVATE) && HAVE_DECL_FUTEX_LOCK_PI_PRIVATE)
+       XLAT(FUTEX_LOCK_PI_PRIVATE),
+#endif
+#if defined(FUTEX_UNLOCK_PI_PRIVATE) || (defined(HAVE_DECL_FUTEX_UNLOCK_PI_PRIVATE) && HAVE_DECL_FUTEX_UNLOCK_PI_PRIVATE)
+       XLAT(FUTEX_UNLOCK_PI_PRIVATE),
+#endif
+#if defined(FUTEX_TRYLOCK_PI_PRIVATE) || (defined(HAVE_DECL_FUTEX_TRYLOCK_PI_PRIVATE) && HAVE_DECL_FUTEX_TRYLOCK_PI_PRIVATE)
+       XLAT(FUTEX_TRYLOCK_PI_PRIVATE),
+#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),
+#endif
+#if defined(FUTEX_WAKE_BITSET_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAKE_BITSET_PRIVATE) && HAVE_DECL_FUTEX_WAKE_BITSET_PRIVATE)
+       XLAT(FUTEX_WAKE_BITSET_PRIVATE),
+#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),
+#endif
+#if defined(FUTEX_CMP_REQUEUE_PI_PRIVATE) || (defined(HAVE_DECL_FUTEX_CMP_REQUEUE_PI_PRIVATE) && HAVE_DECL_FUTEX_CMP_REQUEUE_PI_PRIVATE)
+       XLAT(FUTEX_CMP_REQUEUE_PI_PRIVATE),
+#endif
+#if defined(FUTEX_WAIT_BITSET) || (defined(HAVE_DECL_FUTEX_WAIT_BITSET) && HAVE_DECL_FUTEX_WAIT_BITSET)
+       XLAT(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),
+#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),
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/futexops.in b/xlat/futexops.in
new file mode 100644 (file)
index 0000000..46bbc3e
--- /dev/null
@@ -0,0 +1,30 @@
+FUTEX_WAIT
+FUTEX_WAKE
+FUTEX_FD
+FUTEX_REQUEUE
+FUTEX_CMP_REQUEUE
+FUTEX_WAKE_OP
+FUTEX_LOCK_PI
+FUTEX_UNLOCK_PI
+FUTEX_TRYLOCK_PI
+FUTEX_WAIT_BITSET
+FUTEX_WAKE_BITSET
+FUTEX_WAIT_REQUEUE_PI
+FUTEX_CMP_REQUEUE_PI
+FUTEX_WAIT_PRIVATE
+FUTEX_WAKE_PRIVATE
+FUTEX_FD|FUTEX_PRIVATE_FLAG
+FUTEX_REQUEUE_PRIVATE
+FUTEX_CMP_REQUEUE_PRIVATE
+FUTEX_WAKE_OP_PRIVATE
+FUTEX_LOCK_PI_PRIVATE
+FUTEX_UNLOCK_PI_PRIVATE
+FUTEX_TRYLOCK_PI_PRIVATE
+FUTEX_WAIT_BITSET_PRIVATE
+FUTEX_WAKE_BITSET_PRIVATE
+FUTEX_WAIT_REQUEUE_PI_PRIVATE
+FUTEX_CMP_REQUEUE_PI_PRIVATE
+FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
+FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME
+FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME
+FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME
diff --git a/xlat/futexwakecmps.h b/xlat/futexwakecmps.h
new file mode 100644 (file)
index 0000000..a99a6f5
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/futexwakecmps.in; do not edit. */
+
+static const struct xlat futexwakecmps[] = {
+#if defined(FUTEX_OP_CMP_EQ) || (defined(HAVE_DECL_FUTEX_OP_CMP_EQ) && HAVE_DECL_FUTEX_OP_CMP_EQ)
+       XLAT(FUTEX_OP_CMP_EQ),
+#endif
+#if defined(FUTEX_OP_CMP_NE) || (defined(HAVE_DECL_FUTEX_OP_CMP_NE) && HAVE_DECL_FUTEX_OP_CMP_NE)
+       XLAT(FUTEX_OP_CMP_NE),
+#endif
+#if defined(FUTEX_OP_CMP_LT) || (defined(HAVE_DECL_FUTEX_OP_CMP_LT) && HAVE_DECL_FUTEX_OP_CMP_LT)
+       XLAT(FUTEX_OP_CMP_LT),
+#endif
+#if defined(FUTEX_OP_CMP_LE) || (defined(HAVE_DECL_FUTEX_OP_CMP_LE) && HAVE_DECL_FUTEX_OP_CMP_LE)
+       XLAT(FUTEX_OP_CMP_LE),
+#endif
+#if defined(FUTEX_OP_CMP_GT) || (defined(HAVE_DECL_FUTEX_OP_CMP_GT) && HAVE_DECL_FUTEX_OP_CMP_GT)
+       XLAT(FUTEX_OP_CMP_GT),
+#endif
+#if defined(FUTEX_OP_CMP_GE) || (defined(HAVE_DECL_FUTEX_OP_CMP_GE) && HAVE_DECL_FUTEX_OP_CMP_GE)
+       XLAT(FUTEX_OP_CMP_GE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/futexwakecmps.in b/xlat/futexwakecmps.in
new file mode 100644 (file)
index 0000000..2afb9f5
--- /dev/null
@@ -0,0 +1,6 @@
+FUTEX_OP_CMP_EQ
+FUTEX_OP_CMP_NE
+FUTEX_OP_CMP_LT
+FUTEX_OP_CMP_LE
+FUTEX_OP_CMP_GT
+FUTEX_OP_CMP_GE
diff --git a/xlat/futexwakeops.h b/xlat/futexwakeops.h
new file mode 100644 (file)
index 0000000..e0a0f40
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/futexwakeops.in; do not edit. */
+
+static const struct xlat futexwakeops[] = {
+#if defined(FUTEX_OP_SET) || (defined(HAVE_DECL_FUTEX_OP_SET) && HAVE_DECL_FUTEX_OP_SET)
+       XLAT(FUTEX_OP_SET),
+#endif
+#if defined(FUTEX_OP_ADD) || (defined(HAVE_DECL_FUTEX_OP_ADD) && HAVE_DECL_FUTEX_OP_ADD)
+       XLAT(FUTEX_OP_ADD),
+#endif
+#if defined(FUTEX_OP_OR) || (defined(HAVE_DECL_FUTEX_OP_OR) && HAVE_DECL_FUTEX_OP_OR)
+       XLAT(FUTEX_OP_OR),
+#endif
+#if defined(FUTEX_OP_ANDN) || (defined(HAVE_DECL_FUTEX_OP_ANDN) && HAVE_DECL_FUTEX_OP_ANDN)
+       XLAT(FUTEX_OP_ANDN),
+#endif
+#if defined(FUTEX_OP_XOR) || (defined(HAVE_DECL_FUTEX_OP_XOR) && HAVE_DECL_FUTEX_OP_XOR)
+       XLAT(FUTEX_OP_XOR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/futexwakeops.in b/xlat/futexwakeops.in
new file mode 100644 (file)
index 0000000..3d12929
--- /dev/null
@@ -0,0 +1,5 @@
+FUTEX_OP_SET
+FUTEX_OP_ADD
+FUTEX_OP_OR
+FUTEX_OP_ANDN
+FUTEX_OP_XOR
diff --git a/xlat/gen.sh b/xlat/gen.sh
new file mode 100755 (executable)
index 0000000..f217840
--- /dev/null
@@ -0,0 +1,133 @@
+#!/bin/sh
+
+usage() {
+       cat <<EOF
+Usage: $0 <input> <output>
+
+Generate xlat header files from <input> (a file or dir of files) and write
+the generated headers to <output>.
+EOF
+       exit 1
+}
+
+gen_header() {
+       local input="$1" output="$2" name="$3"
+       echo "generating ${output}"
+       (
+       local defs="${0%/*}/../defs.h"
+       local prefix
+       if grep -x "extern const struct xlat ${name}\\[\\];" "${defs}" > /dev/null; then
+               prefix=
+       else
+               prefix='static '
+       fi
+
+       cat <<-EOF
+               /* Generated by $0 from $1; do not edit. */
+
+               ${prefix}const struct xlat ${name}[] = {
+       EOF
+       local unconditional= unterminated= line
+       while read line; do
+               LC_COLLATE=C
+               case ${line} in
+               '#unconditional')
+                       unconditional=1
+                       ;;
+               '#unterminated')
+                       unterminated=1
+                       ;;
+               [A-Z_]*)        # symbolic constants
+                       local m="${line%%|*}"
+                       [ -n "${unconditional}" ] ||
+                               echo "#if defined(${m}) || (defined(HAVE_DECL_${m}) && HAVE_DECL_${m})"
+                       echo "  XLAT(${line}),"
+                       [ -n "${unconditional}" ] ||
+                               echo "#endif"
+                       ;;
+               '1<<'[A-Z_]*)   # symbolic constants with shift
+                       local m="${line#1<<}"
+                       [ -n "${unconditional}" ] ||
+                               echo "#if defined(${m}) || (defined(HAVE_DECL_${m}) && HAVE_DECL_${m})"
+                       echo "  { ${line}, \"${m}\" },"
+                       [ -n "${unconditional}" ] ||
+                               echo "#endif"
+                       ;;
+               [0-9]*) # numeric constants
+                       echo "  XLAT(${line}),"
+                       ;;
+               *)      # verbatim lines
+                       echo "${line}"
+                       ;;
+               esac
+       done < "${input}"
+       if [ -n "${unterminated}" ]; then
+               echo "  /* this array should remain not NULL-terminated */"
+       else
+               echo "  XLAT_END"
+       fi
+       echo "};"
+       ) >"${output}"
+}
+
+gen_make() {
+       local output="$1"
+       local name
+       shift
+       echo "generating ${output}"
+       (
+               printf "XLAT_INPUT_FILES = "
+               printf 'xlat/%s.in ' "$@"
+               echo
+               printf "XLAT_HEADER_FILES = "
+               printf 'xlat/%s.h ' "$@"
+               echo
+               for name; do
+                       printf '$(top_srcdir)/xlat/%s.h: $(top_srcdir)/xlat/%s.in $(top_srcdir)/xlat/gen.sh\n' \
+                               "${name}" "${name}"
+                       echo '  $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@'
+               done
+       ) >"${output}"
+}
+
+gen_git() {
+       local output="$1"
+       shift
+       echo "generating ${output}"
+       (
+               printf '/%s\n' .gitignore Makemodule.am
+               printf '/%s.h\n' "$@"
+       ) >"${output}"
+}
+
+main() {
+       case $# in
+       0) set -- "${0%/*}" "${0%/*}" ;;
+       2) ;;
+       *) usage ;;
+       esac
+
+       local input="$1"
+       local output="$2"
+       local name
+
+       if [ -d "${input}" ]; then
+               local f names=
+               for f in "${input}"/*.in; do
+                       [ -f "${f}" ] || continue
+                       name=${f##*/}
+                       name=${name%.in}
+                       gen_header "${f}" "${output}/${name}.h" "${name}" &
+                       names="${names} ${name}"
+               done
+               gen_git "${output}/.gitignore" ${names}
+               gen_make "${output}/Makemodule.am" ${names}
+               wait
+       else
+               name=${input##*/}
+               name=${name%.in}
+               gen_header "${input}" "${output}" "${name}"
+       fi
+}
+
+main "$@"
diff --git a/xlat/icmpfilterflags.h b/xlat/icmpfilterflags.h
new file mode 100644 (file)
index 0000000..872438c
--- /dev/null
@@ -0,0 +1,44 @@
+/* Generated by ./xlat/gen.sh from ./xlat/icmpfilterflags.in; do not edit. */
+
+static const struct xlat icmpfilterflags[] = {
+#if defined(ICMP_ECHOREPLY) || (defined(HAVE_DECL_ICMP_ECHOREPLY) && HAVE_DECL_ICMP_ECHOREPLY)
+       { 1<<ICMP_ECHOREPLY, "ICMP_ECHOREPLY" },
+#endif
+#if defined(ICMP_DEST_UNREACH) || (defined(HAVE_DECL_ICMP_DEST_UNREACH) && HAVE_DECL_ICMP_DEST_UNREACH)
+       { 1<<ICMP_DEST_UNREACH, "ICMP_DEST_UNREACH" },
+#endif
+#if defined(ICMP_SOURCE_QUENCH) || (defined(HAVE_DECL_ICMP_SOURCE_QUENCH) && HAVE_DECL_ICMP_SOURCE_QUENCH)
+       { 1<<ICMP_SOURCE_QUENCH, "ICMP_SOURCE_QUENCH" },
+#endif
+#if defined(ICMP_REDIRECT) || (defined(HAVE_DECL_ICMP_REDIRECT) && HAVE_DECL_ICMP_REDIRECT)
+       { 1<<ICMP_REDIRECT, "ICMP_REDIRECT" },
+#endif
+#if defined(ICMP_ECHO) || (defined(HAVE_DECL_ICMP_ECHO) && HAVE_DECL_ICMP_ECHO)
+       { 1<<ICMP_ECHO, "ICMP_ECHO" },
+#endif
+#if defined(ICMP_TIME_EXCEEDED) || (defined(HAVE_DECL_ICMP_TIME_EXCEEDED) && HAVE_DECL_ICMP_TIME_EXCEEDED)
+       { 1<<ICMP_TIME_EXCEEDED, "ICMP_TIME_EXCEEDED" },
+#endif
+#if defined(ICMP_PARAMETERPROB) || (defined(HAVE_DECL_ICMP_PARAMETERPROB) && HAVE_DECL_ICMP_PARAMETERPROB)
+       { 1<<ICMP_PARAMETERPROB, "ICMP_PARAMETERPROB" },
+#endif
+#if defined(ICMP_TIMESTAMP) || (defined(HAVE_DECL_ICMP_TIMESTAMP) && HAVE_DECL_ICMP_TIMESTAMP)
+       { 1<<ICMP_TIMESTAMP, "ICMP_TIMESTAMP" },
+#endif
+#if defined(ICMP_TIMESTAMPREPLY) || (defined(HAVE_DECL_ICMP_TIMESTAMPREPLY) && HAVE_DECL_ICMP_TIMESTAMPREPLY)
+       { 1<<ICMP_TIMESTAMPREPLY, "ICMP_TIMESTAMPREPLY" },
+#endif
+#if defined(ICMP_INFO_REQUEST) || (defined(HAVE_DECL_ICMP_INFO_REQUEST) && HAVE_DECL_ICMP_INFO_REQUEST)
+       { 1<<ICMP_INFO_REQUEST, "ICMP_INFO_REQUEST" },
+#endif
+#if defined(ICMP_INFO_REPLY) || (defined(HAVE_DECL_ICMP_INFO_REPLY) && HAVE_DECL_ICMP_INFO_REPLY)
+       { 1<<ICMP_INFO_REPLY, "ICMP_INFO_REPLY" },
+#endif
+#if defined(ICMP_ADDRESS) || (defined(HAVE_DECL_ICMP_ADDRESS) && HAVE_DECL_ICMP_ADDRESS)
+       { 1<<ICMP_ADDRESS, "ICMP_ADDRESS" },
+#endif
+#if defined(ICMP_ADDRESSREPLY) || (defined(HAVE_DECL_ICMP_ADDRESSREPLY) && HAVE_DECL_ICMP_ADDRESSREPLY)
+       { 1<<ICMP_ADDRESSREPLY, "ICMP_ADDRESSREPLY" },
+#endif
+       XLAT_END
+};
diff --git a/xlat/icmpfilterflags.in b/xlat/icmpfilterflags.in
new file mode 100644 (file)
index 0000000..dac579e
--- /dev/null
@@ -0,0 +1,13 @@
+1<<ICMP_ECHOREPLY
+1<<ICMP_DEST_UNREACH
+1<<ICMP_SOURCE_QUENCH
+1<<ICMP_REDIRECT
+1<<ICMP_ECHO
+1<<ICMP_TIME_EXCEEDED
+1<<ICMP_PARAMETERPROB
+1<<ICMP_TIMESTAMP
+1<<ICMP_TIMESTAMPREPLY
+1<<ICMP_INFO_REQUEST
+1<<ICMP_INFO_REPLY
+1<<ICMP_ADDRESS
+1<<ICMP_ADDRESSREPLY
diff --git a/xlat/if_dqblk_valid.h b/xlat/if_dqblk_valid.h
new file mode 100644 (file)
index 0000000..2de9378
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/if_dqblk_valid.in; do not edit. */
+
+static const struct xlat if_dqblk_valid[] = {
+#if defined(QIF_BLIMITS) || (defined(HAVE_DECL_QIF_BLIMITS) && HAVE_DECL_QIF_BLIMITS)
+       XLAT(QIF_BLIMITS),
+#endif
+#if defined(QIF_SPACE) || (defined(HAVE_DECL_QIF_SPACE) && HAVE_DECL_QIF_SPACE)
+       XLAT(QIF_SPACE),
+#endif
+#if defined(QIF_ILIMITS) || (defined(HAVE_DECL_QIF_ILIMITS) && HAVE_DECL_QIF_ILIMITS)
+       XLAT(QIF_ILIMITS),
+#endif
+#if defined(QIF_INODES) || (defined(HAVE_DECL_QIF_INODES) && HAVE_DECL_QIF_INODES)
+       XLAT(QIF_INODES),
+#endif
+#if defined(QIF_BTIME) || (defined(HAVE_DECL_QIF_BTIME) && HAVE_DECL_QIF_BTIME)
+       XLAT(QIF_BTIME),
+#endif
+#if defined(QIF_ITIME) || (defined(HAVE_DECL_QIF_ITIME) && HAVE_DECL_QIF_ITIME)
+       XLAT(QIF_ITIME),
+#endif
+       XLAT_END
+};
diff --git a/xlat/if_dqblk_valid.in b/xlat/if_dqblk_valid.in
new file mode 100644 (file)
index 0000000..05993cb
--- /dev/null
@@ -0,0 +1,6 @@
+QIF_BLIMITS
+QIF_SPACE
+QIF_ILIMITS
+QIF_INODES
+QIF_BTIME
+QIF_ITIME
diff --git a/xlat/if_dqinfo_valid.h b/xlat/if_dqinfo_valid.h
new file mode 100644 (file)
index 0000000..d330267
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/if_dqinfo_valid.in; do not edit. */
+
+static const struct xlat if_dqinfo_valid[] = {
+#if defined(IIF_BGRACE) || (defined(HAVE_DECL_IIF_BGRACE) && HAVE_DECL_IIF_BGRACE)
+       XLAT(IIF_BGRACE),
+#endif
+#if defined(IIF_IGRACE) || (defined(HAVE_DECL_IIF_IGRACE) && HAVE_DECL_IIF_IGRACE)
+       XLAT(IIF_IGRACE),
+#endif
+#if defined(IIF_FLAGS) || (defined(HAVE_DECL_IIF_FLAGS) && HAVE_DECL_IIF_FLAGS)
+       XLAT(IIF_FLAGS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/if_dqinfo_valid.in b/xlat/if_dqinfo_valid.in
new file mode 100644 (file)
index 0000000..9e9fc3d
--- /dev/null
@@ -0,0 +1,3 @@
+IIF_BGRACE
+IIF_IGRACE
+IIF_FLAGS
diff --git a/xlat/iffflags.h b/xlat/iffflags.h
new file mode 100644 (file)
index 0000000..0b9de3f
--- /dev/null
@@ -0,0 +1,50 @@
+/* Generated by ./xlat/gen.sh from ./xlat/iffflags.in; do not edit. */
+
+static const struct xlat iffflags[] = {
+#if defined(IFF_UP) || (defined(HAVE_DECL_IFF_UP) && HAVE_DECL_IFF_UP)
+       XLAT(IFF_UP),
+#endif
+#if defined(IFF_BROADCAST) || (defined(HAVE_DECL_IFF_BROADCAST) && HAVE_DECL_IFF_BROADCAST)
+       XLAT(IFF_BROADCAST),
+#endif
+#if defined(IFF_DEBUG) || (defined(HAVE_DECL_IFF_DEBUG) && HAVE_DECL_IFF_DEBUG)
+       XLAT(IFF_DEBUG),
+#endif
+#if defined(IFF_LOOPBACK) || (defined(HAVE_DECL_IFF_LOOPBACK) && HAVE_DECL_IFF_LOOPBACK)
+       XLAT(IFF_LOOPBACK),
+#endif
+#if defined(IFF_POINTOPOINT) || (defined(HAVE_DECL_IFF_POINTOPOINT) && HAVE_DECL_IFF_POINTOPOINT)
+       XLAT(IFF_POINTOPOINT),
+#endif
+#if defined(IFF_NOTRAILERS) || (defined(HAVE_DECL_IFF_NOTRAILERS) && HAVE_DECL_IFF_NOTRAILERS)
+       XLAT(IFF_NOTRAILERS),
+#endif
+#if defined(IFF_RUNNING) || (defined(HAVE_DECL_IFF_RUNNING) && HAVE_DECL_IFF_RUNNING)
+       XLAT(IFF_RUNNING),
+#endif
+#if defined(IFF_NOARP) || (defined(HAVE_DECL_IFF_NOARP) && HAVE_DECL_IFF_NOARP)
+       XLAT(IFF_NOARP),
+#endif
+#if defined(IFF_PROMISC) || (defined(HAVE_DECL_IFF_PROMISC) && HAVE_DECL_IFF_PROMISC)
+       XLAT(IFF_PROMISC),
+#endif
+#if defined(IFF_ALLMULTI) || (defined(HAVE_DECL_IFF_ALLMULTI) && HAVE_DECL_IFF_ALLMULTI)
+       XLAT(IFF_ALLMULTI),
+#endif
+#if defined(IFF_MASTER) || (defined(HAVE_DECL_IFF_MASTER) && HAVE_DECL_IFF_MASTER)
+       XLAT(IFF_MASTER),
+#endif
+#if defined(IFF_SLAVE) || (defined(HAVE_DECL_IFF_SLAVE) && HAVE_DECL_IFF_SLAVE)
+       XLAT(IFF_SLAVE),
+#endif
+#if defined(IFF_MULTICAST) || (defined(HAVE_DECL_IFF_MULTICAST) && HAVE_DECL_IFF_MULTICAST)
+       XLAT(IFF_MULTICAST),
+#endif
+#if defined(IFF_PORTSEL) || (defined(HAVE_DECL_IFF_PORTSEL) && HAVE_DECL_IFF_PORTSEL)
+       XLAT(IFF_PORTSEL),
+#endif
+#if defined(IFF_AUTOMEDIA) || (defined(HAVE_DECL_IFF_AUTOMEDIA) && HAVE_DECL_IFF_AUTOMEDIA)
+       XLAT(IFF_AUTOMEDIA),
+#endif
+       XLAT_END
+};
diff --git a/xlat/iffflags.in b/xlat/iffflags.in
new file mode 100644 (file)
index 0000000..a6249b0
--- /dev/null
@@ -0,0 +1,15 @@
+IFF_UP
+IFF_BROADCAST
+IFF_DEBUG
+IFF_LOOPBACK
+IFF_POINTOPOINT
+IFF_NOTRAILERS
+IFF_RUNNING
+IFF_NOARP
+IFF_PROMISC
+IFF_ALLMULTI
+IFF_MASTER
+IFF_SLAVE
+IFF_MULTICAST
+IFF_PORTSEL
+IFF_AUTOMEDIA
diff --git a/xlat/inet_protocols.h b/xlat/inet_protocols.h
new file mode 100644 (file)
index 0000000..54ed5f7
--- /dev/null
@@ -0,0 +1,101 @@
+/* Generated by ./xlat/gen.sh from ./xlat/inet_protocols.in; do not edit. */
+
+static const struct xlat inet_protocols[] = {
+#if defined(IPPROTO_IP) || (defined(HAVE_DECL_IPPROTO_IP) && HAVE_DECL_IPPROTO_IP)
+       XLAT(IPPROTO_IP),
+#endif
+#if defined(IPPROTO_ICMP) || (defined(HAVE_DECL_IPPROTO_ICMP) && HAVE_DECL_IPPROTO_ICMP)
+       XLAT(IPPROTO_ICMP),
+#endif
+#if defined(IPPROTO_TCP) || (defined(HAVE_DECL_IPPROTO_TCP) && HAVE_DECL_IPPROTO_TCP)
+       XLAT(IPPROTO_TCP),
+#endif
+#if defined(IPPROTO_UDP) || (defined(HAVE_DECL_IPPROTO_UDP) && HAVE_DECL_IPPROTO_UDP)
+       XLAT(IPPROTO_UDP),
+#endif
+#if defined(IPPROTO_IGMP) || (defined(HAVE_DECL_IPPROTO_IGMP) && HAVE_DECL_IPPROTO_IGMP)
+       XLAT(IPPROTO_IGMP),
+#endif
+#if defined(IPPROTO_GGP) || (defined(HAVE_DECL_IPPROTO_GGP) && HAVE_DECL_IPPROTO_GGP)
+       XLAT(IPPROTO_GGP),
+#endif
+#if defined(IPPROTO_IPIP) || (defined(HAVE_DECL_IPPROTO_IPIP) && HAVE_DECL_IPPROTO_IPIP)
+       XLAT(IPPROTO_IPIP),
+#endif
+#if defined(IPPROTO_EGP) || (defined(HAVE_DECL_IPPROTO_EGP) && HAVE_DECL_IPPROTO_EGP)
+       XLAT(IPPROTO_EGP),
+#endif
+#if defined(IPPROTO_PUP) || (defined(HAVE_DECL_IPPROTO_PUP) && HAVE_DECL_IPPROTO_PUP)
+       XLAT(IPPROTO_PUP),
+#endif
+#if defined(IPPROTO_IDP) || (defined(HAVE_DECL_IPPROTO_IDP) && HAVE_DECL_IPPROTO_IDP)
+       XLAT(IPPROTO_IDP),
+#endif
+#if defined(IPPROTO_TP) || (defined(HAVE_DECL_IPPROTO_TP) && HAVE_DECL_IPPROTO_TP)
+       XLAT(IPPROTO_TP),
+#endif
+#if defined(IPPROTO_DCCP) || (defined(HAVE_DECL_IPPROTO_DCCP) && HAVE_DECL_IPPROTO_DCCP)
+       XLAT(IPPROTO_DCCP),
+#endif
+#if defined(IPPROTO_IPV6) || (defined(HAVE_DECL_IPPROTO_IPV6) && HAVE_DECL_IPPROTO_IPV6)
+       XLAT(IPPROTO_IPV6),
+#endif
+#if defined(IPPROTO_ROUTING) || (defined(HAVE_DECL_IPPROTO_ROUTING) && HAVE_DECL_IPPROTO_ROUTING)
+       XLAT(IPPROTO_ROUTING),
+#endif
+#if defined(IPPROTO_FRAGMENT) || (defined(HAVE_DECL_IPPROTO_FRAGMENT) && HAVE_DECL_IPPROTO_FRAGMENT)
+       XLAT(IPPROTO_FRAGMENT),
+#endif
+#if defined(IPPROTO_RSVP) || (defined(HAVE_DECL_IPPROTO_RSVP) && HAVE_DECL_IPPROTO_RSVP)
+       XLAT(IPPROTO_RSVP),
+#endif
+#if defined(IPPROTO_GRE) || (defined(HAVE_DECL_IPPROTO_GRE) && HAVE_DECL_IPPROTO_GRE)
+       XLAT(IPPROTO_GRE),
+#endif
+#if defined(IPPROTO_ESP) || (defined(HAVE_DECL_IPPROTO_ESP) && HAVE_DECL_IPPROTO_ESP)
+       XLAT(IPPROTO_ESP),
+#endif
+#if defined(IPPROTO_AH) || (defined(HAVE_DECL_IPPROTO_AH) && HAVE_DECL_IPPROTO_AH)
+       XLAT(IPPROTO_AH),
+#endif
+#if defined(IPPROTO_ICMPV6) || (defined(HAVE_DECL_IPPROTO_ICMPV6) && HAVE_DECL_IPPROTO_ICMPV6)
+       XLAT(IPPROTO_ICMPV6),
+#endif
+#if defined(IPPROTO_NONE) || (defined(HAVE_DECL_IPPROTO_NONE) && HAVE_DECL_IPPROTO_NONE)
+       XLAT(IPPROTO_NONE),
+#endif
+#if defined(IPPROTO_DSTOPTS) || (defined(HAVE_DECL_IPPROTO_DSTOPTS) && HAVE_DECL_IPPROTO_DSTOPTS)
+       XLAT(IPPROTO_DSTOPTS),
+#endif
+#if defined(IPPROTO_HELLO) || (defined(HAVE_DECL_IPPROTO_HELLO) && HAVE_DECL_IPPROTO_HELLO)
+       XLAT(IPPROTO_HELLO),
+#endif
+#if defined(IPPROTO_ND) || (defined(HAVE_DECL_IPPROTO_ND) && HAVE_DECL_IPPROTO_ND)
+       XLAT(IPPROTO_ND),
+#endif
+#if defined(IPPROTO_MTP) || (defined(HAVE_DECL_IPPROTO_MTP) && HAVE_DECL_IPPROTO_MTP)
+       XLAT(IPPROTO_MTP),
+#endif
+#if defined(IPPROTO_ENCAP) || (defined(HAVE_DECL_IPPROTO_ENCAP) && HAVE_DECL_IPPROTO_ENCAP)
+       XLAT(IPPROTO_ENCAP),
+#endif
+#if defined(IPPROTO_PIM) || (defined(HAVE_DECL_IPPROTO_PIM) && HAVE_DECL_IPPROTO_PIM)
+       XLAT(IPPROTO_PIM),
+#endif
+#if defined(IPPROTO_COMP) || (defined(HAVE_DECL_IPPROTO_COMP) && HAVE_DECL_IPPROTO_COMP)
+       XLAT(IPPROTO_COMP),
+#endif
+#if defined(IPPROTO_SCTP) || (defined(HAVE_DECL_IPPROTO_SCTP) && HAVE_DECL_IPPROTO_SCTP)
+       XLAT(IPPROTO_SCTP),
+#endif
+#if defined(IPPROTO_UDPLITE) || (defined(HAVE_DECL_IPPROTO_UDPLITE) && HAVE_DECL_IPPROTO_UDPLITE)
+       XLAT(IPPROTO_UDPLITE),
+#endif
+#if defined(IPPROTO_RAW) || (defined(HAVE_DECL_IPPROTO_RAW) && HAVE_DECL_IPPROTO_RAW)
+       XLAT(IPPROTO_RAW),
+#endif
+#if defined(IPPROTO_MAX) || (defined(HAVE_DECL_IPPROTO_MAX) && HAVE_DECL_IPPROTO_MAX)
+       XLAT(IPPROTO_MAX),
+#endif
+       XLAT_END
+};
diff --git a/xlat/inet_protocols.in b/xlat/inet_protocols.in
new file mode 100644 (file)
index 0000000..6092f2b
--- /dev/null
@@ -0,0 +1,32 @@
+IPPROTO_IP
+IPPROTO_ICMP
+IPPROTO_TCP
+IPPROTO_UDP
+IPPROTO_IGMP
+IPPROTO_GGP
+IPPROTO_IPIP
+IPPROTO_EGP
+IPPROTO_PUP
+IPPROTO_IDP
+IPPROTO_TP
+IPPROTO_DCCP
+IPPROTO_IPV6
+IPPROTO_ROUTING
+IPPROTO_FRAGMENT
+IPPROTO_RSVP
+IPPROTO_GRE
+IPPROTO_ESP
+IPPROTO_AH
+IPPROTO_ICMPV6
+IPPROTO_NONE
+IPPROTO_DSTOPTS
+IPPROTO_HELLO
+IPPROTO_ND
+IPPROTO_MTP
+IPPROTO_ENCAP
+IPPROTO_PIM
+IPPROTO_COMP
+IPPROTO_SCTP
+IPPROTO_UDPLITE
+IPPROTO_RAW
+IPPROTO_MAX
diff --git a/xlat/inotify_flags.h b/xlat/inotify_flags.h
new file mode 100644 (file)
index 0000000..847222d
--- /dev/null
@@ -0,0 +1,74 @@
+/* Generated by ./xlat/gen.sh from ./xlat/inotify_flags.in; do not edit. */
+
+static const struct xlat inotify_flags[] = {
+#if defined(IN_ACCESS) || (defined(HAVE_DECL_IN_ACCESS) && HAVE_DECL_IN_ACCESS)
+       XLAT(IN_ACCESS),
+#endif
+#if defined(IN_MODIFY) || (defined(HAVE_DECL_IN_MODIFY) && HAVE_DECL_IN_MODIFY)
+       XLAT(IN_MODIFY),
+#endif
+#if defined(IN_ATTRIB) || (defined(HAVE_DECL_IN_ATTRIB) && HAVE_DECL_IN_ATTRIB)
+       XLAT(IN_ATTRIB),
+#endif
+#if defined(IN_CLOSE) || (defined(HAVE_DECL_IN_CLOSE) && HAVE_DECL_IN_CLOSE)
+       XLAT(IN_CLOSE),
+#endif
+#if defined(IN_CLOSE_WRITE) || (defined(HAVE_DECL_IN_CLOSE_WRITE) && HAVE_DECL_IN_CLOSE_WRITE)
+       XLAT(IN_CLOSE_WRITE),
+#endif
+#if defined(IN_CLOSE_NOWRITE) || (defined(HAVE_DECL_IN_CLOSE_NOWRITE) && HAVE_DECL_IN_CLOSE_NOWRITE)
+       XLAT(IN_CLOSE_NOWRITE),
+#endif
+#if defined(IN_OPEN) || (defined(HAVE_DECL_IN_OPEN) && HAVE_DECL_IN_OPEN)
+       XLAT(IN_OPEN),
+#endif
+#if defined(IN_MOVE) || (defined(HAVE_DECL_IN_MOVE) && HAVE_DECL_IN_MOVE)
+       XLAT(IN_MOVE),
+#endif
+#if defined(IN_MOVED_FROM) || (defined(HAVE_DECL_IN_MOVED_FROM) && HAVE_DECL_IN_MOVED_FROM)
+       XLAT(IN_MOVED_FROM),
+#endif
+#if defined(IN_MOVED_TO) || (defined(HAVE_DECL_IN_MOVED_TO) && HAVE_DECL_IN_MOVED_TO)
+       XLAT(IN_MOVED_TO),
+#endif
+#if defined(IN_CREATE) || (defined(HAVE_DECL_IN_CREATE) && HAVE_DECL_IN_CREATE)
+       XLAT(IN_CREATE),
+#endif
+#if defined(IN_DELETE) || (defined(HAVE_DECL_IN_DELETE) && HAVE_DECL_IN_DELETE)
+       XLAT(IN_DELETE),
+#endif
+#if defined(IN_DELETE_SELF) || (defined(HAVE_DECL_IN_DELETE_SELF) && HAVE_DECL_IN_DELETE_SELF)
+       XLAT(IN_DELETE_SELF),
+#endif
+#if defined(IN_MOVE_SELF) || (defined(HAVE_DECL_IN_MOVE_SELF) && HAVE_DECL_IN_MOVE_SELF)
+       XLAT(IN_MOVE_SELF),
+#endif
+#if defined(IN_UNMOUNT) || (defined(HAVE_DECL_IN_UNMOUNT) && HAVE_DECL_IN_UNMOUNT)
+       XLAT(IN_UNMOUNT),
+#endif
+#if defined(IN_Q_OVERFLOW) || (defined(HAVE_DECL_IN_Q_OVERFLOW) && HAVE_DECL_IN_Q_OVERFLOW)
+       XLAT(IN_Q_OVERFLOW),
+#endif
+#if defined(IN_IGNORED) || (defined(HAVE_DECL_IN_IGNORED) && HAVE_DECL_IN_IGNORED)
+       XLAT(IN_IGNORED),
+#endif
+#if defined(IN_ONLYDIR) || (defined(HAVE_DECL_IN_ONLYDIR) && HAVE_DECL_IN_ONLYDIR)
+       XLAT(IN_ONLYDIR),
+#endif
+#if defined(IN_DONT_FOLLOW) || (defined(HAVE_DECL_IN_DONT_FOLLOW) && HAVE_DECL_IN_DONT_FOLLOW)
+       XLAT(IN_DONT_FOLLOW),
+#endif
+#if defined(IN_EXCL_UNLINK) || (defined(HAVE_DECL_IN_EXCL_UNLINK) && HAVE_DECL_IN_EXCL_UNLINK)
+       XLAT(IN_EXCL_UNLINK),
+#endif
+#if defined(IN_MASK_ADD) || (defined(HAVE_DECL_IN_MASK_ADD) && HAVE_DECL_IN_MASK_ADD)
+       XLAT(IN_MASK_ADD),
+#endif
+#if defined(IN_ISDIR) || (defined(HAVE_DECL_IN_ISDIR) && HAVE_DECL_IN_ISDIR)
+       XLAT(IN_ISDIR),
+#endif
+#if defined(IN_ONESHOT) || (defined(HAVE_DECL_IN_ONESHOT) && HAVE_DECL_IN_ONESHOT)
+       XLAT(IN_ONESHOT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/inotify_flags.in b/xlat/inotify_flags.in
new file mode 100644 (file)
index 0000000..605b864
--- /dev/null
@@ -0,0 +1,23 @@
+IN_ACCESS
+IN_MODIFY
+IN_ATTRIB
+IN_CLOSE
+IN_CLOSE_WRITE
+IN_CLOSE_NOWRITE
+IN_OPEN
+IN_MOVE
+IN_MOVED_FROM
+IN_MOVED_TO
+IN_CREATE
+IN_DELETE
+IN_DELETE_SELF
+IN_MOVE_SELF
+IN_UNMOUNT
+IN_Q_OVERFLOW
+IN_IGNORED
+IN_ONLYDIR
+IN_DONT_FOLLOW
+IN_EXCL_UNLINK
+IN_MASK_ADD
+IN_ISDIR
+IN_ONESHOT
diff --git a/xlat/inotify_init_flags.h b/xlat/inotify_init_flags.h
new file mode 100644 (file)
index 0000000..ce0e0af
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/inotify_init_flags.in; do not edit. */
+
+static const struct xlat inotify_init_flags[] = {
+#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
+       XLAT(O_NONBLOCK),
+#endif
+#if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
+       XLAT(O_CLOEXEC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/inotify_init_flags.in b/xlat/inotify_init_flags.in
new file mode 100644 (file)
index 0000000..fb0338b
--- /dev/null
@@ -0,0 +1,2 @@
+O_NONBLOCK
+O_CLOEXEC
diff --git a/xlat/ioprio_class.h b/xlat/ioprio_class.h
new file mode 100644 (file)
index 0000000..5a4d8cc
--- /dev/null
@@ -0,0 +1,9 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ioprio_class.in; do not edit. */
+
+static const struct xlat ioprio_class[] = {
+       XLAT(IOPRIO_CLASS_NONE),
+       XLAT(IOPRIO_CLASS_RT),
+       XLAT(IOPRIO_CLASS_BE),
+       XLAT(IOPRIO_CLASS_IDLE),
+       XLAT_END
+};
diff --git a/xlat/ioprio_class.in b/xlat/ioprio_class.in
new file mode 100644 (file)
index 0000000..5020e5a
--- /dev/null
@@ -0,0 +1,5 @@
+#unconditional
+IOPRIO_CLASS_NONE
+IOPRIO_CLASS_RT
+IOPRIO_CLASS_BE
+IOPRIO_CLASS_IDLE
diff --git a/xlat/ioprio_who.h b/xlat/ioprio_who.h
new file mode 100644 (file)
index 0000000..c23f591
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ioprio_who.in; do not edit. */
+
+static const struct xlat ioprio_who[] = {
+       XLAT(IOPRIO_WHO_PROCESS),
+       XLAT(IOPRIO_WHO_PGRP),
+       XLAT(IOPRIO_WHO_USER),
+       XLAT_END
+};
diff --git a/xlat/ioprio_who.in b/xlat/ioprio_who.in
new file mode 100644 (file)
index 0000000..20b1bd1
--- /dev/null
@@ -0,0 +1,4 @@
+#unconditional
+IOPRIO_WHO_PROCESS
+IOPRIO_WHO_PGRP
+IOPRIO_WHO_USER
diff --git a/xlat/ipc_msg_flags.h b/xlat/ipc_msg_flags.h
new file mode 100644 (file)
index 0000000..b01671b
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ipc_msg_flags.in; do not edit. */
+
+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
+};
diff --git a/xlat/ipc_msg_flags.in b/xlat/ipc_msg_flags.in
new file mode 100644 (file)
index 0000000..5aef101
--- /dev/null
@@ -0,0 +1,3 @@
+MSG_NOERROR
+MSG_EXCEPT
+IPC_NOWAIT
diff --git a/xlat/itimer_which.h b/xlat/itimer_which.h
new file mode 100644 (file)
index 0000000..8b001eb
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/itimer_which.in; do not edit. */
+
+static const struct xlat itimer_which[] = {
+#if defined(ITIMER_REAL) || (defined(HAVE_DECL_ITIMER_REAL) && HAVE_DECL_ITIMER_REAL)
+       XLAT(ITIMER_REAL),
+#endif
+#if defined(ITIMER_VIRTUAL) || (defined(HAVE_DECL_ITIMER_VIRTUAL) && HAVE_DECL_ITIMER_VIRTUAL)
+       XLAT(ITIMER_VIRTUAL),
+#endif
+#if defined(ITIMER_PROF) || (defined(HAVE_DECL_ITIMER_PROF) && HAVE_DECL_ITIMER_PROF)
+       XLAT(ITIMER_PROF),
+#endif
+       XLAT_END
+};
diff --git a/xlat/itimer_which.in b/xlat/itimer_which.in
new file mode 100644 (file)
index 0000000..768b20f
--- /dev/null
@@ -0,0 +1,3 @@
+ITIMER_REAL
+ITIMER_VIRTUAL
+ITIMER_PROF
diff --git a/xlat/kexec_arch_values.h b/xlat/kexec_arch_values.h
new file mode 100644 (file)
index 0000000..c702768
--- /dev/null
@@ -0,0 +1,38 @@
+/* Generated by ./xlat/gen.sh from ./xlat/kexec_arch_values.in; do not edit. */
+
+static const struct xlat kexec_arch_values[] = {
+#if defined(KEXEC_ARCH_DEFAULT) || (defined(HAVE_DECL_KEXEC_ARCH_DEFAULT) && HAVE_DECL_KEXEC_ARCH_DEFAULT)
+       XLAT(KEXEC_ARCH_DEFAULT),
+#endif
+#if defined(KEXEC_ARCH_386) || (defined(HAVE_DECL_KEXEC_ARCH_386) && HAVE_DECL_KEXEC_ARCH_386)
+       XLAT(KEXEC_ARCH_386),
+#endif
+#if defined(KEXEC_ARCH_X86_64) || (defined(HAVE_DECL_KEXEC_ARCH_X86_64) && HAVE_DECL_KEXEC_ARCH_X86_64)
+       XLAT(KEXEC_ARCH_X86_64),
+#endif
+#if defined(KEXEC_ARCH_PPC) || (defined(HAVE_DECL_KEXEC_ARCH_PPC) && HAVE_DECL_KEXEC_ARCH_PPC)
+       XLAT(KEXEC_ARCH_PPC),
+#endif
+#if defined(KEXEC_ARCH_PPC64) || (defined(HAVE_DECL_KEXEC_ARCH_PPC64) && HAVE_DECL_KEXEC_ARCH_PPC64)
+       XLAT(KEXEC_ARCH_PPC64),
+#endif
+#if defined(KEXEC_ARCH_IA_64) || (defined(HAVE_DECL_KEXEC_ARCH_IA_64) && HAVE_DECL_KEXEC_ARCH_IA_64)
+       XLAT(KEXEC_ARCH_IA_64),
+#endif
+#if defined(KEXEC_ARCH_ARM) || (defined(HAVE_DECL_KEXEC_ARCH_ARM) && HAVE_DECL_KEXEC_ARCH_ARM)
+       XLAT(KEXEC_ARCH_ARM),
+#endif
+#if defined(KEXEC_ARCH_S390) || (defined(HAVE_DECL_KEXEC_ARCH_S390) && HAVE_DECL_KEXEC_ARCH_S390)
+       XLAT(KEXEC_ARCH_S390),
+#endif
+#if defined(KEXEC_ARCH_SH) || (defined(HAVE_DECL_KEXEC_ARCH_SH) && HAVE_DECL_KEXEC_ARCH_SH)
+       XLAT(KEXEC_ARCH_SH),
+#endif
+#if defined(KEXEC_ARCH_MIPS_LE) || (defined(HAVE_DECL_KEXEC_ARCH_MIPS_LE) && HAVE_DECL_KEXEC_ARCH_MIPS_LE)
+       XLAT(KEXEC_ARCH_MIPS_LE),
+#endif
+#if defined(KEXEC_ARCH_MIPS) || (defined(HAVE_DECL_KEXEC_ARCH_MIPS) && HAVE_DECL_KEXEC_ARCH_MIPS)
+       XLAT(KEXEC_ARCH_MIPS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/kexec_arch_values.in b/xlat/kexec_arch_values.in
new file mode 100644 (file)
index 0000000..92ae8ae
--- /dev/null
@@ -0,0 +1,11 @@
+KEXEC_ARCH_DEFAULT
+KEXEC_ARCH_386
+KEXEC_ARCH_X86_64
+KEXEC_ARCH_PPC
+KEXEC_ARCH_PPC64
+KEXEC_ARCH_IA_64
+KEXEC_ARCH_ARM
+KEXEC_ARCH_S390
+KEXEC_ARCH_SH
+KEXEC_ARCH_MIPS_LE
+KEXEC_ARCH_MIPS
diff --git a/xlat/kexec_flags.h b/xlat/kexec_flags.h
new file mode 100644 (file)
index 0000000..e43ebff
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/kexec_flags.in; do not edit. */
+
+static const struct xlat kexec_flags[] = {
+#if defined(KEXEC_ON_CRASH) || (defined(HAVE_DECL_KEXEC_ON_CRASH) && HAVE_DECL_KEXEC_ON_CRASH)
+       XLAT(KEXEC_ON_CRASH),
+#endif
+#if defined(KEXEC_PRESERVE_CONTEXT) || (defined(HAVE_DECL_KEXEC_PRESERVE_CONTEXT) && HAVE_DECL_KEXEC_PRESERVE_CONTEXT)
+       XLAT(KEXEC_PRESERVE_CONTEXT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/kexec_flags.in b/xlat/kexec_flags.in
new file mode 100644 (file)
index 0000000..43eb497
--- /dev/null
@@ -0,0 +1,2 @@
+KEXEC_ON_CRASH
+KEXEC_PRESERVE_CONTEXT
diff --git a/xlat/key_perms.h b/xlat/key_perms.h
new file mode 100644 (file)
index 0000000..5cba3a0
--- /dev/null
@@ -0,0 +1,89 @@
+/* Generated by ./xlat/gen.sh from ./xlat/key_perms.in; do not edit. */
+
+static const struct xlat key_perms[] = {
+#if defined(KEY_POS_VIEW) || (defined(HAVE_DECL_KEY_POS_VIEW) && HAVE_DECL_KEY_POS_VIEW)
+       XLAT(KEY_POS_VIEW),
+#endif
+#if defined(KEY_POS_READ) || (defined(HAVE_DECL_KEY_POS_READ) && HAVE_DECL_KEY_POS_READ)
+       XLAT(KEY_POS_READ),
+#endif
+#if defined(KEY_POS_WRITE) || (defined(HAVE_DECL_KEY_POS_WRITE) && HAVE_DECL_KEY_POS_WRITE)
+       XLAT(KEY_POS_WRITE),
+#endif
+#if defined(KEY_POS_SEARCH) || (defined(HAVE_DECL_KEY_POS_SEARCH) && HAVE_DECL_KEY_POS_SEARCH)
+       XLAT(KEY_POS_SEARCH),
+#endif
+#if defined(KEY_POS_LINK) || (defined(HAVE_DECL_KEY_POS_LINK) && HAVE_DECL_KEY_POS_LINK)
+       XLAT(KEY_POS_LINK),
+#endif
+#if defined(KEY_POS_SETATTR) || (defined(HAVE_DECL_KEY_POS_SETATTR) && HAVE_DECL_KEY_POS_SETATTR)
+       XLAT(KEY_POS_SETATTR),
+#endif
+#if defined(KEY_POS_ALL) || (defined(HAVE_DECL_KEY_POS_ALL) && HAVE_DECL_KEY_POS_ALL)
+       XLAT(KEY_POS_ALL),
+#endif
+#if defined(KEY_USR_VIEW) || (defined(HAVE_DECL_KEY_USR_VIEW) && HAVE_DECL_KEY_USR_VIEW)
+       XLAT(KEY_USR_VIEW),
+#endif
+#if defined(KEY_USR_READ) || (defined(HAVE_DECL_KEY_USR_READ) && HAVE_DECL_KEY_USR_READ)
+       XLAT(KEY_USR_READ),
+#endif
+#if defined(KEY_USR_WRITE) || (defined(HAVE_DECL_KEY_USR_WRITE) && HAVE_DECL_KEY_USR_WRITE)
+       XLAT(KEY_USR_WRITE),
+#endif
+#if defined(KEY_USR_SEARCH) || (defined(HAVE_DECL_KEY_USR_SEARCH) && HAVE_DECL_KEY_USR_SEARCH)
+       XLAT(KEY_USR_SEARCH),
+#endif
+#if defined(KEY_USR_LINK) || (defined(HAVE_DECL_KEY_USR_LINK) && HAVE_DECL_KEY_USR_LINK)
+       XLAT(KEY_USR_LINK),
+#endif
+#if defined(KEY_USR_SETATTR) || (defined(HAVE_DECL_KEY_USR_SETATTR) && HAVE_DECL_KEY_USR_SETATTR)
+       XLAT(KEY_USR_SETATTR),
+#endif
+#if defined(KEY_USR_ALL) || (defined(HAVE_DECL_KEY_USR_ALL) && HAVE_DECL_KEY_USR_ALL)
+       XLAT(KEY_USR_ALL),
+#endif
+#if defined(KEY_GRP_VIEW) || (defined(HAVE_DECL_KEY_GRP_VIEW) && HAVE_DECL_KEY_GRP_VIEW)
+       XLAT(KEY_GRP_VIEW),
+#endif
+#if defined(KEY_GRP_READ) || (defined(HAVE_DECL_KEY_GRP_READ) && HAVE_DECL_KEY_GRP_READ)
+       XLAT(KEY_GRP_READ),
+#endif
+#if defined(KEY_GRP_WRITE) || (defined(HAVE_DECL_KEY_GRP_WRITE) && HAVE_DECL_KEY_GRP_WRITE)
+       XLAT(KEY_GRP_WRITE),
+#endif
+#if defined(KEY_GRP_SEARCH) || (defined(HAVE_DECL_KEY_GRP_SEARCH) && HAVE_DECL_KEY_GRP_SEARCH)
+       XLAT(KEY_GRP_SEARCH),
+#endif
+#if defined(KEY_GRP_LINK) || (defined(HAVE_DECL_KEY_GRP_LINK) && HAVE_DECL_KEY_GRP_LINK)
+       XLAT(KEY_GRP_LINK),
+#endif
+#if defined(KEY_GRP_SETATTR) || (defined(HAVE_DECL_KEY_GRP_SETATTR) && HAVE_DECL_KEY_GRP_SETATTR)
+       XLAT(KEY_GRP_SETATTR),
+#endif
+#if defined(KEY_GRP_ALL) || (defined(HAVE_DECL_KEY_GRP_ALL) && HAVE_DECL_KEY_GRP_ALL)
+       XLAT(KEY_GRP_ALL),
+#endif
+#if defined(KEY_OTH_VIEW) || (defined(HAVE_DECL_KEY_OTH_VIEW) && HAVE_DECL_KEY_OTH_VIEW)
+       XLAT(KEY_OTH_VIEW),
+#endif
+#if defined(KEY_OTH_READ) || (defined(HAVE_DECL_KEY_OTH_READ) && HAVE_DECL_KEY_OTH_READ)
+       XLAT(KEY_OTH_READ),
+#endif
+#if defined(KEY_OTH_WRITE) || (defined(HAVE_DECL_KEY_OTH_WRITE) && HAVE_DECL_KEY_OTH_WRITE)
+       XLAT(KEY_OTH_WRITE),
+#endif
+#if defined(KEY_OTH_SEARCH) || (defined(HAVE_DECL_KEY_OTH_SEARCH) && HAVE_DECL_KEY_OTH_SEARCH)
+       XLAT(KEY_OTH_SEARCH),
+#endif
+#if defined(KEY_OTH_LINK) || (defined(HAVE_DECL_KEY_OTH_LINK) && HAVE_DECL_KEY_OTH_LINK)
+       XLAT(KEY_OTH_LINK),
+#endif
+#if defined(KEY_OTH_SETATTR) || (defined(HAVE_DECL_KEY_OTH_SETATTR) && HAVE_DECL_KEY_OTH_SETATTR)
+       XLAT(KEY_OTH_SETATTR),
+#endif
+#if defined(KEY_OTH_ALL) || (defined(HAVE_DECL_KEY_OTH_ALL) && HAVE_DECL_KEY_OTH_ALL)
+       XLAT(KEY_OTH_ALL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/key_perms.in b/xlat/key_perms.in
new file mode 100644 (file)
index 0000000..f7e8edb
--- /dev/null
@@ -0,0 +1,28 @@
+KEY_POS_VIEW
+KEY_POS_READ
+KEY_POS_WRITE
+KEY_POS_SEARCH
+KEY_POS_LINK
+KEY_POS_SETATTR
+KEY_POS_ALL
+KEY_USR_VIEW
+KEY_USR_READ
+KEY_USR_WRITE
+KEY_USR_SEARCH
+KEY_USR_LINK
+KEY_USR_SETATTR
+KEY_USR_ALL
+KEY_GRP_VIEW
+KEY_GRP_READ
+KEY_GRP_WRITE
+KEY_GRP_SEARCH
+KEY_GRP_LINK
+KEY_GRP_SETATTR
+KEY_GRP_ALL
+KEY_OTH_VIEW
+KEY_OTH_READ
+KEY_OTH_WRITE
+KEY_OTH_SEARCH
+KEY_OTH_LINK
+KEY_OTH_SETATTR
+KEY_OTH_ALL
diff --git a/xlat/key_reqkeys.h b/xlat/key_reqkeys.h
new file mode 100644 (file)
index 0000000..fd4ac0a
--- /dev/null
@@ -0,0 +1,32 @@
+/* Generated by ./xlat/gen.sh from ./xlat/key_reqkeys.in; do not edit. */
+
+static const struct xlat key_reqkeys[] = {
+#if defined(KEY_REQKEY_DEFL_NO_CHANGE) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_NO_CHANGE) && HAVE_DECL_KEY_REQKEY_DEFL_NO_CHANGE)
+       XLAT(KEY_REQKEY_DEFL_NO_CHANGE),
+#endif
+#if defined(KEY_REQKEY_DEFL_DEFAULT) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_DEFAULT) && HAVE_DECL_KEY_REQKEY_DEFL_DEFAULT)
+       XLAT(KEY_REQKEY_DEFL_DEFAULT),
+#endif
+#if defined(KEY_REQKEY_DEFL_THREAD_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_THREAD_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_THREAD_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_THREAD_KEYRING),
+#endif
+#if defined(KEY_REQKEY_DEFL_PROCESS_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_PROCESS_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_PROCESS_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_PROCESS_KEYRING),
+#endif
+#if defined(KEY_REQKEY_DEFL_SESSION_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_SESSION_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_SESSION_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_SESSION_KEYRING),
+#endif
+#if defined(KEY_REQKEY_DEFL_USER_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_USER_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_USER_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_USER_KEYRING),
+#endif
+#if defined(KEY_REQKEY_DEFL_USER_SESSION_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_USER_SESSION_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_USER_SESSION_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_USER_SESSION_KEYRING),
+#endif
+#if defined(KEY_REQKEY_DEFL_GROUP_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_GROUP_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_GROUP_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_GROUP_KEYRING),
+#endif
+#if defined(KEY_REQKEY_DEFL_REQUESTOR_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_REQUESTOR_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_REQUESTOR_KEYRING)
+       XLAT(KEY_REQKEY_DEFL_REQUESTOR_KEYRING),
+#endif
+       XLAT_END
+};
diff --git a/xlat/key_reqkeys.in b/xlat/key_reqkeys.in
new file mode 100644 (file)
index 0000000..6da0ff7
--- /dev/null
@@ -0,0 +1,9 @@
+KEY_REQKEY_DEFL_NO_CHANGE
+KEY_REQKEY_DEFL_DEFAULT
+KEY_REQKEY_DEFL_THREAD_KEYRING
+KEY_REQKEY_DEFL_PROCESS_KEYRING
+KEY_REQKEY_DEFL_SESSION_KEYRING
+KEY_REQKEY_DEFL_USER_KEYRING
+KEY_REQKEY_DEFL_USER_SESSION_KEYRING
+KEY_REQKEY_DEFL_GROUP_KEYRING
+KEY_REQKEY_DEFL_REQUESTOR_KEYRING
diff --git a/xlat/key_spec.h b/xlat/key_spec.h
new file mode 100644 (file)
index 0000000..71c6fc1
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/key_spec.in; do not edit. */
+
+static const struct xlat key_spec[] = {
+#if defined(KEY_SPEC_THREAD_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_THREAD_KEYRING) && HAVE_DECL_KEY_SPEC_THREAD_KEYRING)
+       XLAT(KEY_SPEC_THREAD_KEYRING),
+#endif
+#if defined(KEY_SPEC_PROCESS_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_PROCESS_KEYRING) && HAVE_DECL_KEY_SPEC_PROCESS_KEYRING)
+       XLAT(KEY_SPEC_PROCESS_KEYRING),
+#endif
+#if defined(KEY_SPEC_SESSION_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_SESSION_KEYRING) && HAVE_DECL_KEY_SPEC_SESSION_KEYRING)
+       XLAT(KEY_SPEC_SESSION_KEYRING),
+#endif
+#if defined(KEY_SPEC_USER_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_USER_KEYRING) && HAVE_DECL_KEY_SPEC_USER_KEYRING)
+       XLAT(KEY_SPEC_USER_KEYRING),
+#endif
+#if defined(KEY_SPEC_USER_SESSION_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_USER_SESSION_KEYRING) && HAVE_DECL_KEY_SPEC_USER_SESSION_KEYRING)
+       XLAT(KEY_SPEC_USER_SESSION_KEYRING),
+#endif
+#if defined(KEY_SPEC_GROUP_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_GROUP_KEYRING) && HAVE_DECL_KEY_SPEC_GROUP_KEYRING)
+       XLAT(KEY_SPEC_GROUP_KEYRING),
+#endif
+#if defined(KEY_SPEC_REQKEY_AUTH_KEY) || (defined(HAVE_DECL_KEY_SPEC_REQKEY_AUTH_KEY) && HAVE_DECL_KEY_SPEC_REQKEY_AUTH_KEY)
+       XLAT(KEY_SPEC_REQKEY_AUTH_KEY),
+#endif
+#if defined(KEY_SPEC_REQUESTOR_KEYRING) || (defined(HAVE_DECL_KEY_SPEC_REQUESTOR_KEYRING) && HAVE_DECL_KEY_SPEC_REQUESTOR_KEYRING)
+       XLAT(KEY_SPEC_REQUESTOR_KEYRING),
+#endif
+       XLAT_END
+};
diff --git a/xlat/key_spec.in b/xlat/key_spec.in
new file mode 100644 (file)
index 0000000..942b7ef
--- /dev/null
@@ -0,0 +1,8 @@
+KEY_SPEC_THREAD_KEYRING
+KEY_SPEC_PROCESS_KEYRING
+KEY_SPEC_SESSION_KEYRING
+KEY_SPEC_USER_KEYRING
+KEY_SPEC_USER_SESSION_KEYRING
+KEY_SPEC_GROUP_KEYRING
+KEY_SPEC_REQKEY_AUTH_KEY
+KEY_SPEC_REQUESTOR_KEYRING
diff --git a/xlat/keyctl_commands.h b/xlat/keyctl_commands.h
new file mode 100644 (file)
index 0000000..6fc7246
--- /dev/null
@@ -0,0 +1,74 @@
+/* Generated by ./xlat/gen.sh from ./xlat/keyctl_commands.in; do not edit. */
+
+static const struct xlat keyctl_commands[] = {
+#if defined(KEYCTL_GET_KEYRING_ID) || (defined(HAVE_DECL_KEYCTL_GET_KEYRING_ID) && HAVE_DECL_KEYCTL_GET_KEYRING_ID)
+       XLAT(KEYCTL_GET_KEYRING_ID),
+#endif
+#if defined(KEYCTL_JOIN_SESSION_KEYRING) || (defined(HAVE_DECL_KEYCTL_JOIN_SESSION_KEYRING) && HAVE_DECL_KEYCTL_JOIN_SESSION_KEYRING)
+       XLAT(KEYCTL_JOIN_SESSION_KEYRING),
+#endif
+#if defined(KEYCTL_UPDATE) || (defined(HAVE_DECL_KEYCTL_UPDATE) && HAVE_DECL_KEYCTL_UPDATE)
+       XLAT(KEYCTL_UPDATE),
+#endif
+#if defined(KEYCTL_REVOKE) || (defined(HAVE_DECL_KEYCTL_REVOKE) && HAVE_DECL_KEYCTL_REVOKE)
+       XLAT(KEYCTL_REVOKE),
+#endif
+#if defined(KEYCTL_CHOWN) || (defined(HAVE_DECL_KEYCTL_CHOWN) && HAVE_DECL_KEYCTL_CHOWN)
+       XLAT(KEYCTL_CHOWN),
+#endif
+#if defined(KEYCTL_SETPERM) || (defined(HAVE_DECL_KEYCTL_SETPERM) && HAVE_DECL_KEYCTL_SETPERM)
+       XLAT(KEYCTL_SETPERM),
+#endif
+#if defined(KEYCTL_DESCRIBE) || (defined(HAVE_DECL_KEYCTL_DESCRIBE) && HAVE_DECL_KEYCTL_DESCRIBE)
+       XLAT(KEYCTL_DESCRIBE),
+#endif
+#if defined(KEYCTL_CLEAR) || (defined(HAVE_DECL_KEYCTL_CLEAR) && HAVE_DECL_KEYCTL_CLEAR)
+       XLAT(KEYCTL_CLEAR),
+#endif
+#if defined(KEYCTL_LINK) || (defined(HAVE_DECL_KEYCTL_LINK) && HAVE_DECL_KEYCTL_LINK)
+       XLAT(KEYCTL_LINK),
+#endif
+#if defined(KEYCTL_UNLINK) || (defined(HAVE_DECL_KEYCTL_UNLINK) && HAVE_DECL_KEYCTL_UNLINK)
+       XLAT(KEYCTL_UNLINK),
+#endif
+#if defined(KEYCTL_SEARCH) || (defined(HAVE_DECL_KEYCTL_SEARCH) && HAVE_DECL_KEYCTL_SEARCH)
+       XLAT(KEYCTL_SEARCH),
+#endif
+#if defined(KEYCTL_READ) || (defined(HAVE_DECL_KEYCTL_READ) && HAVE_DECL_KEYCTL_READ)
+       XLAT(KEYCTL_READ),
+#endif
+#if defined(KEYCTL_INSTANTIATE) || (defined(HAVE_DECL_KEYCTL_INSTANTIATE) && HAVE_DECL_KEYCTL_INSTANTIATE)
+       XLAT(KEYCTL_INSTANTIATE),
+#endif
+#if defined(KEYCTL_NEGATE) || (defined(HAVE_DECL_KEYCTL_NEGATE) && HAVE_DECL_KEYCTL_NEGATE)
+       XLAT(KEYCTL_NEGATE),
+#endif
+#if defined(KEYCTL_SET_REQKEY_KEYRING) || (defined(HAVE_DECL_KEYCTL_SET_REQKEY_KEYRING) && HAVE_DECL_KEYCTL_SET_REQKEY_KEYRING)
+       XLAT(KEYCTL_SET_REQKEY_KEYRING),
+#endif
+#if defined(KEYCTL_SET_TIMEOUT) || (defined(HAVE_DECL_KEYCTL_SET_TIMEOUT) && HAVE_DECL_KEYCTL_SET_TIMEOUT)
+       XLAT(KEYCTL_SET_TIMEOUT),
+#endif
+#if defined(KEYCTL_ASSUME_AUTHORITY) || (defined(HAVE_DECL_KEYCTL_ASSUME_AUTHORITY) && HAVE_DECL_KEYCTL_ASSUME_AUTHORITY)
+       XLAT(KEYCTL_ASSUME_AUTHORITY),
+#endif
+#if defined(KEYCTL_GET_SECURITY) || (defined(HAVE_DECL_KEYCTL_GET_SECURITY) && HAVE_DECL_KEYCTL_GET_SECURITY)
+       XLAT(KEYCTL_GET_SECURITY),
+#endif
+#if defined(KEYCTL_SESSION_TO_PARENT) || (defined(HAVE_DECL_KEYCTL_SESSION_TO_PARENT) && HAVE_DECL_KEYCTL_SESSION_TO_PARENT)
+       XLAT(KEYCTL_SESSION_TO_PARENT),
+#endif
+#if defined(KEYCTL_REJECT) || (defined(HAVE_DECL_KEYCTL_REJECT) && HAVE_DECL_KEYCTL_REJECT)
+       XLAT(KEYCTL_REJECT),
+#endif
+#if defined(KEYCTL_INSTANTIATE_IOV) || (defined(HAVE_DECL_KEYCTL_INSTANTIATE_IOV) && HAVE_DECL_KEYCTL_INSTANTIATE_IOV)
+       XLAT(KEYCTL_INSTANTIATE_IOV),
+#endif
+#if defined(KEYCTL_INVALIDATE) || (defined(HAVE_DECL_KEYCTL_INVALIDATE) && HAVE_DECL_KEYCTL_INVALIDATE)
+       XLAT(KEYCTL_INVALIDATE),
+#endif
+#if defined(KEYCTL_GET_PERSISTENT) || (defined(HAVE_DECL_KEYCTL_GET_PERSISTENT) && HAVE_DECL_KEYCTL_GET_PERSISTENT)
+       XLAT(KEYCTL_GET_PERSISTENT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/keyctl_commands.in b/xlat/keyctl_commands.in
new file mode 100644 (file)
index 0000000..33daf51
--- /dev/null
@@ -0,0 +1,23 @@
+KEYCTL_GET_KEYRING_ID
+KEYCTL_JOIN_SESSION_KEYRING
+KEYCTL_UPDATE
+KEYCTL_REVOKE
+KEYCTL_CHOWN
+KEYCTL_SETPERM
+KEYCTL_DESCRIBE
+KEYCTL_CLEAR
+KEYCTL_LINK
+KEYCTL_UNLINK
+KEYCTL_SEARCH
+KEYCTL_READ
+KEYCTL_INSTANTIATE
+KEYCTL_NEGATE
+KEYCTL_SET_REQKEY_KEYRING
+KEYCTL_SET_TIMEOUT
+KEYCTL_ASSUME_AUTHORITY
+KEYCTL_GET_SECURITY
+KEYCTL_SESSION_TO_PARENT
+KEYCTL_REJECT
+KEYCTL_INSTANTIATE_IOV
+KEYCTL_INVALIDATE
+KEYCTL_GET_PERSISTENT
diff --git a/xlat/lockfcmds.h b/xlat/lockfcmds.h
new file mode 100644 (file)
index 0000000..ea50d5f
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/lockfcmds.in; do not edit. */
+
+static const struct xlat lockfcmds[] = {
+#if defined(F_RDLCK) || (defined(HAVE_DECL_F_RDLCK) && HAVE_DECL_F_RDLCK)
+       XLAT(F_RDLCK),
+#endif
+#if defined(F_WRLCK) || (defined(HAVE_DECL_F_WRLCK) && HAVE_DECL_F_WRLCK)
+       XLAT(F_WRLCK),
+#endif
+#if defined(F_UNLCK) || (defined(HAVE_DECL_F_UNLCK) && HAVE_DECL_F_UNLCK)
+       XLAT(F_UNLCK),
+#endif
+#if defined(F_EXLCK) || (defined(HAVE_DECL_F_EXLCK) && HAVE_DECL_F_EXLCK)
+       XLAT(F_EXLCK),
+#endif
+#if defined(F_SHLCK) || (defined(HAVE_DECL_F_SHLCK) && HAVE_DECL_F_SHLCK)
+       XLAT(F_SHLCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/lockfcmds.in b/xlat/lockfcmds.in
new file mode 100644 (file)
index 0000000..2d65ba9
--- /dev/null
@@ -0,0 +1,5 @@
+F_RDLCK
+F_WRLCK
+F_UNLCK
+F_EXLCK
+F_SHLCK
diff --git a/xlat/loop_crypt_type_options.h b/xlat/loop_crypt_type_options.h
new file mode 100644 (file)
index 0000000..3b1c287
--- /dev/null
@@ -0,0 +1,35 @@
+/* Generated by ./xlat/gen.sh from ./xlat/loop_crypt_type_options.in; do not edit. */
+
+static const struct xlat loop_crypt_type_options[] = {
+#if defined(LO_CRYPT_NONE) || (defined(HAVE_DECL_LO_CRYPT_NONE) && HAVE_DECL_LO_CRYPT_NONE)
+       XLAT(LO_CRYPT_NONE),
+#endif
+#if defined(LO_CRYPT_XOR) || (defined(HAVE_DECL_LO_CRYPT_XOR) && HAVE_DECL_LO_CRYPT_XOR)
+       XLAT(LO_CRYPT_XOR),
+#endif
+#if defined(LO_CRYPT_DES) || (defined(HAVE_DECL_LO_CRYPT_DES) && HAVE_DECL_LO_CRYPT_DES)
+       XLAT(LO_CRYPT_DES),
+#endif
+#if defined(LO_CRYPT_FISH2) || (defined(HAVE_DECL_LO_CRYPT_FISH2) && HAVE_DECL_LO_CRYPT_FISH2)
+       XLAT(LO_CRYPT_FISH2),
+#endif
+#if defined(LO_CRYPT_BLOW) || (defined(HAVE_DECL_LO_CRYPT_BLOW) && HAVE_DECL_LO_CRYPT_BLOW)
+       XLAT(LO_CRYPT_BLOW),
+#endif
+#if defined(LO_CRYPT_CAST128) || (defined(HAVE_DECL_LO_CRYPT_CAST128) && HAVE_DECL_LO_CRYPT_CAST128)
+       XLAT(LO_CRYPT_CAST128),
+#endif
+#if defined(LO_CRYPT_IDEA) || (defined(HAVE_DECL_LO_CRYPT_IDEA) && HAVE_DECL_LO_CRYPT_IDEA)
+       XLAT(LO_CRYPT_IDEA),
+#endif
+#if defined(LO_CRYPT_DUMMY) || (defined(HAVE_DECL_LO_CRYPT_DUMMY) && HAVE_DECL_LO_CRYPT_DUMMY)
+       XLAT(LO_CRYPT_DUMMY),
+#endif
+#if defined(LO_CRYPT_SKIPJACK) || (defined(HAVE_DECL_LO_CRYPT_SKIPJACK) && HAVE_DECL_LO_CRYPT_SKIPJACK)
+       XLAT(LO_CRYPT_SKIPJACK),
+#endif
+#if defined(LO_CRYPT_CRYPTOAPI) || (defined(HAVE_DECL_LO_CRYPT_CRYPTOAPI) && HAVE_DECL_LO_CRYPT_CRYPTOAPI)
+       XLAT(LO_CRYPT_CRYPTOAPI),
+#endif
+       XLAT_END
+};
diff --git a/xlat/loop_crypt_type_options.in b/xlat/loop_crypt_type_options.in
new file mode 100644 (file)
index 0000000..e9b7bdd
--- /dev/null
@@ -0,0 +1,10 @@
+LO_CRYPT_NONE
+LO_CRYPT_XOR
+LO_CRYPT_DES
+LO_CRYPT_FISH2
+LO_CRYPT_BLOW
+LO_CRYPT_CAST128
+LO_CRYPT_IDEA
+LO_CRYPT_DUMMY
+LO_CRYPT_SKIPJACK
+LO_CRYPT_CRYPTOAPI
diff --git a/xlat/loop_flags_options.h b/xlat/loop_flags_options.h
new file mode 100644 (file)
index 0000000..1333714
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/loop_flags_options.in; do not edit. */
+
+static const struct xlat loop_flags_options[] = {
+#if defined(LO_FLAGS_READ_ONLY) || (defined(HAVE_DECL_LO_FLAGS_READ_ONLY) && HAVE_DECL_LO_FLAGS_READ_ONLY)
+       XLAT(LO_FLAGS_READ_ONLY),
+#endif
+#if defined(LO_FLAGS_AUTOCLEAR) || (defined(HAVE_DECL_LO_FLAGS_AUTOCLEAR) && HAVE_DECL_LO_FLAGS_AUTOCLEAR)
+       XLAT(LO_FLAGS_AUTOCLEAR),
+#endif
+#if defined(LO_FLAGS_PARTSCAN) || (defined(HAVE_DECL_LO_FLAGS_PARTSCAN) && HAVE_DECL_LO_FLAGS_PARTSCAN)
+       XLAT(LO_FLAGS_PARTSCAN),
+#endif
+       XLAT_END
+};
diff --git a/xlat/loop_flags_options.in b/xlat/loop_flags_options.in
new file mode 100644 (file)
index 0000000..9235dbb
--- /dev/null
@@ -0,0 +1,3 @@
+LO_FLAGS_READ_ONLY
+LO_FLAGS_AUTOCLEAR
+LO_FLAGS_PARTSCAN
diff --git a/xlat/madvise_cmds.h b/xlat/madvise_cmds.h
new file mode 100644 (file)
index 0000000..1ff9641
--- /dev/null
@@ -0,0 +1,53 @@
+/* Generated by ./xlat/gen.sh from ./xlat/madvise_cmds.in; do not edit. */
+
+static const struct xlat madvise_cmds[] = {
+#if defined(MADV_NORMAL) || (defined(HAVE_DECL_MADV_NORMAL) && HAVE_DECL_MADV_NORMAL)
+       XLAT(MADV_NORMAL),
+#endif
+#if defined(MADV_RANDOM) || (defined(HAVE_DECL_MADV_RANDOM) && HAVE_DECL_MADV_RANDOM)
+       XLAT(MADV_RANDOM),
+#endif
+#if defined(MADV_SEQUENTIAL) || (defined(HAVE_DECL_MADV_SEQUENTIAL) && HAVE_DECL_MADV_SEQUENTIAL)
+       XLAT(MADV_SEQUENTIAL),
+#endif
+#if defined(MADV_WILLNEED) || (defined(HAVE_DECL_MADV_WILLNEED) && HAVE_DECL_MADV_WILLNEED)
+       XLAT(MADV_WILLNEED),
+#endif
+#if defined(MADV_DONTNEED) || (defined(HAVE_DECL_MADV_DONTNEED) && HAVE_DECL_MADV_DONTNEED)
+       XLAT(MADV_DONTNEED),
+#endif
+#if defined(MADV_REMOVE) || (defined(HAVE_DECL_MADV_REMOVE) && HAVE_DECL_MADV_REMOVE)
+       XLAT(MADV_REMOVE),
+#endif
+#if defined(MADV_DONTFORK) || (defined(HAVE_DECL_MADV_DONTFORK) && HAVE_DECL_MADV_DONTFORK)
+       XLAT(MADV_DONTFORK),
+#endif
+#if defined(MADV_DOFORK) || (defined(HAVE_DECL_MADV_DOFORK) && HAVE_DECL_MADV_DOFORK)
+       XLAT(MADV_DOFORK),
+#endif
+#if defined(MADV_HWPOISON) || (defined(HAVE_DECL_MADV_HWPOISON) && HAVE_DECL_MADV_HWPOISON)
+       XLAT(MADV_HWPOISON),
+#endif
+#if defined(MADV_SOFT_OFFLINE) || (defined(HAVE_DECL_MADV_SOFT_OFFLINE) && HAVE_DECL_MADV_SOFT_OFFLINE)
+       XLAT(MADV_SOFT_OFFLINE),
+#endif
+#if defined(MADV_MERGEABLE) || (defined(HAVE_DECL_MADV_MERGEABLE) && HAVE_DECL_MADV_MERGEABLE)
+       XLAT(MADV_MERGEABLE),
+#endif
+#if defined(MADV_UNMERGEABLE) || (defined(HAVE_DECL_MADV_UNMERGEABLE) && HAVE_DECL_MADV_UNMERGEABLE)
+       XLAT(MADV_UNMERGEABLE),
+#endif
+#if defined(MADV_HUGEPAGE) || (defined(HAVE_DECL_MADV_HUGEPAGE) && HAVE_DECL_MADV_HUGEPAGE)
+       XLAT(MADV_HUGEPAGE),
+#endif
+#if defined(MADV_NOHUGEPAGE) || (defined(HAVE_DECL_MADV_NOHUGEPAGE) && HAVE_DECL_MADV_NOHUGEPAGE)
+       XLAT(MADV_NOHUGEPAGE),
+#endif
+#if defined(MADV_DONTDUMP) || (defined(HAVE_DECL_MADV_DONTDUMP) && HAVE_DECL_MADV_DONTDUMP)
+       XLAT(MADV_DONTDUMP),
+#endif
+#if defined(MADV_DODUMP) || (defined(HAVE_DECL_MADV_DODUMP) && HAVE_DECL_MADV_DODUMP)
+       XLAT(MADV_DODUMP),
+#endif
+       XLAT_END
+};
diff --git a/xlat/madvise_cmds.in b/xlat/madvise_cmds.in
new file mode 100644 (file)
index 0000000..dc2abff
--- /dev/null
@@ -0,0 +1,16 @@
+MADV_NORMAL
+MADV_RANDOM
+MADV_SEQUENTIAL
+MADV_WILLNEED
+MADV_DONTNEED
+MADV_REMOVE
+MADV_DONTFORK
+MADV_DOFORK
+MADV_HWPOISON
+MADV_SOFT_OFFLINE
+MADV_MERGEABLE
+MADV_UNMERGEABLE
+MADV_HUGEPAGE
+MADV_NOHUGEPAGE
+MADV_DONTDUMP
+MADV_DODUMP
diff --git a/xlat/mbindflags.h b/xlat/mbindflags.h
new file mode 100644 (file)
index 0000000..b789068
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mbindflags.in; do not edit. */
+
+static const struct xlat mbindflags[] = {
+#if defined(MPOL_MF_STRICT) || (defined(HAVE_DECL_MPOL_MF_STRICT) && HAVE_DECL_MPOL_MF_STRICT)
+       XLAT(MPOL_MF_STRICT),
+#endif
+#if defined(MPOL_MF_MOVE) || (defined(HAVE_DECL_MPOL_MF_MOVE) && HAVE_DECL_MPOL_MF_MOVE)
+       XLAT(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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mbindflags.in b/xlat/mbindflags.in
new file mode 100644 (file)
index 0000000..105504e
--- /dev/null
@@ -0,0 +1,3 @@
+MPOL_MF_STRICT
+MPOL_MF_MOVE
+MPOL_MF_MOVE_ALL
diff --git a/xlat/mctl_funcs.h b/xlat/mctl_funcs.h
new file mode 100644 (file)
index 0000000..a6075cf
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mctl_funcs.in; do not edit. */
+
+static const struct xlat mctl_funcs[] = {
+#if defined(MC_LOCK) || (defined(HAVE_DECL_MC_LOCK) && HAVE_DECL_MC_LOCK)
+       XLAT(MC_LOCK),
+#endif
+#if defined(MC_LOCKAS) || (defined(HAVE_DECL_MC_LOCKAS) && HAVE_DECL_MC_LOCKAS)
+       XLAT(MC_LOCKAS),
+#endif
+#if defined(MC_SYNC) || (defined(HAVE_DECL_MC_SYNC) && HAVE_DECL_MC_SYNC)
+       XLAT(MC_SYNC),
+#endif
+#if defined(MC_UNLOCK) || (defined(HAVE_DECL_MC_UNLOCK) && HAVE_DECL_MC_UNLOCK)
+       XLAT(MC_UNLOCK),
+#endif
+#if defined(MC_UNLOCKAS) || (defined(HAVE_DECL_MC_UNLOCKAS) && HAVE_DECL_MC_UNLOCKAS)
+       XLAT(MC_UNLOCKAS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mctl_funcs.in b/xlat/mctl_funcs.in
new file mode 100644 (file)
index 0000000..1274cdd
--- /dev/null
@@ -0,0 +1,5 @@
+MC_LOCK
+MC_LOCKAS
+MC_SYNC
+MC_UNLOCK
+MC_UNLOCKAS
diff --git a/xlat/mctl_lockas.h b/xlat/mctl_lockas.h
new file mode 100644 (file)
index 0000000..647ee2d
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mctl_lockas.in; do not edit. */
+
+static const struct xlat mctl_lockas[] = {
+#if defined(MCL_CURRENT) || (defined(HAVE_DECL_MCL_CURRENT) && HAVE_DECL_MCL_CURRENT)
+       XLAT(MCL_CURRENT),
+#endif
+#if defined(MCL_FUTURE) || (defined(HAVE_DECL_MCL_FUTURE) && HAVE_DECL_MCL_FUTURE)
+       XLAT(MCL_FUTURE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mctl_lockas.in b/xlat/mctl_lockas.in
new file mode 100644 (file)
index 0000000..ba28847
--- /dev/null
@@ -0,0 +1,2 @@
+MCL_CURRENT
+MCL_FUTURE
diff --git a/xlat/mctl_sync.h b/xlat/mctl_sync.h
new file mode 100644 (file)
index 0000000..bae678e
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mctl_sync.in; do not edit. */
+
+static const struct xlat mctl_sync[] = {
+#if defined(MS_SYNC) || (defined(HAVE_DECL_MS_SYNC) && HAVE_DECL_MS_SYNC)
+       XLAT(MS_SYNC),
+#endif
+#if defined(MS_ASYNC) || (defined(HAVE_DECL_MS_ASYNC) && HAVE_DECL_MS_ASYNC)
+       XLAT(MS_ASYNC),
+#endif
+#if defined(MS_INVALIDATE) || (defined(HAVE_DECL_MS_INVALIDATE) && HAVE_DECL_MS_INVALIDATE)
+       XLAT(MS_INVALIDATE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mctl_sync.in b/xlat/mctl_sync.in
new file mode 100644 (file)
index 0000000..1db4068
--- /dev/null
@@ -0,0 +1,3 @@
+MS_SYNC
+MS_ASYNC
+MS_INVALIDATE
diff --git a/xlat/mempolicyflags.h b/xlat/mempolicyflags.h
new file mode 100644 (file)
index 0000000..c88f326
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mempolicyflags.in; do not edit. */
+
+static const struct xlat mempolicyflags[] = {
+#if defined(MPOL_F_NODE) || (defined(HAVE_DECL_MPOL_F_NODE) && HAVE_DECL_MPOL_F_NODE)
+       XLAT(MPOL_F_NODE),
+#endif
+#if defined(MPOL_F_ADDR) || (defined(HAVE_DECL_MPOL_F_ADDR) && HAVE_DECL_MPOL_F_ADDR)
+       XLAT(MPOL_F_ADDR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mempolicyflags.in b/xlat/mempolicyflags.in
new file mode 100644 (file)
index 0000000..89c414b
--- /dev/null
@@ -0,0 +1,2 @@
+MPOL_F_NODE
+MPOL_F_ADDR
diff --git a/xlat/mlockall_flags.h b/xlat/mlockall_flags.h
new file mode 100644 (file)
index 0000000..8cf80bb
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mlockall_flags.in; do not edit. */
+
+static const struct xlat mlockall_flags[] = {
+#if defined(MCL_CURRENT) || (defined(HAVE_DECL_MCL_CURRENT) && HAVE_DECL_MCL_CURRENT)
+       XLAT(MCL_CURRENT),
+#endif
+#if defined(MCL_FUTURE) || (defined(HAVE_DECL_MCL_FUTURE) && HAVE_DECL_MCL_FUTURE)
+       XLAT(MCL_FUTURE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mlockall_flags.in b/xlat/mlockall_flags.in
new file mode 100644 (file)
index 0000000..ba28847
--- /dev/null
@@ -0,0 +1,2 @@
+MCL_CURRENT
+MCL_FUTURE
diff --git a/xlat/mmap_flags.h b/xlat/mmap_flags.h
new file mode 100644 (file)
index 0000000..91029f8
--- /dev/null
@@ -0,0 +1,106 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mmap_flags.in; do not edit. */
+
+static const struct xlat mmap_flags[] = {
+#if defined(MAP_SHARED) || (defined(HAVE_DECL_MAP_SHARED) && HAVE_DECL_MAP_SHARED)
+       XLAT(MAP_SHARED),
+#endif
+#if defined(MAP_PRIVATE) || (defined(HAVE_DECL_MAP_PRIVATE) && HAVE_DECL_MAP_PRIVATE)
+       XLAT(MAP_PRIVATE),
+#endif
+#if defined(MAP_FIXED) || (defined(HAVE_DECL_MAP_FIXED) && HAVE_DECL_MAP_FIXED)
+       XLAT(MAP_FIXED),
+#endif
+#if defined(MAP_ANONYMOUS) || (defined(HAVE_DECL_MAP_ANONYMOUS) && HAVE_DECL_MAP_ANONYMOUS)
+       XLAT(MAP_ANONYMOUS),
+#endif
+#if defined(MAP_32BIT) || (defined(HAVE_DECL_MAP_32BIT) && HAVE_DECL_MAP_32BIT)
+       XLAT(MAP_32BIT),
+#endif
+#if defined(MAP_RENAME) || (defined(HAVE_DECL_MAP_RENAME) && HAVE_DECL_MAP_RENAME)
+       XLAT(MAP_RENAME),
+#endif
+#if defined(MAP_NORESERVE) || (defined(HAVE_DECL_MAP_NORESERVE) && HAVE_DECL_MAP_NORESERVE)
+       XLAT(MAP_NORESERVE),
+#endif
+#if defined(MAP_POPULATE) || (defined(HAVE_DECL_MAP_POPULATE) && HAVE_DECL_MAP_POPULATE)
+       XLAT(MAP_POPULATE),
+#endif
+#if defined(MAP_NONBLOCK) || (defined(HAVE_DECL_MAP_NONBLOCK) && HAVE_DECL_MAP_NONBLOCK)
+       XLAT(MAP_NONBLOCK),
+#endif
+/*
+* XXX - this was introduced in SunOS 4.x to distinguish between
+* the old pre-4.x "mmap()", which:
+*
+*      only let you map devices with an "mmap" routine (e.g.,
+*      frame buffers) in;
+*
+*      required you to specify the mapping address;
+*
+*      returned 0 on success and -1 on failure;
+*
+* memory and which, and the 4.x "mmap()" which:
+*
+*      can map plain files;
+*
+*      can be asked to pick where to map the file;
+*
+*      returns the address where it mapped the file on success
+*      and -1 on failure.
+*
+* It's not actually used in source code that calls "mmap()"; the
+* "mmap()" routine adds it for you.
+*
+* It'd be nice to come up with some way of eliminating it from
+* the flags, e.g. reporting calls *without* it as "old_mmap()"
+* and calls with it as "mmap()".
+*/
+#if defined(_MAP_NEW) || (defined(HAVE_DECL__MAP_NEW) && HAVE_DECL__MAP_NEW)
+       XLAT(_MAP_NEW),
+#endif
+#if defined(MAP_GROWSDOWN) || (defined(HAVE_DECL_MAP_GROWSDOWN) && HAVE_DECL_MAP_GROWSDOWN)
+       XLAT(MAP_GROWSDOWN),
+#endif
+#if defined(MAP_DENYWRITE) || (defined(HAVE_DECL_MAP_DENYWRITE) && HAVE_DECL_MAP_DENYWRITE)
+       XLAT(MAP_DENYWRITE),
+#endif
+#if defined(MAP_EXECUTABLE) || (defined(HAVE_DECL_MAP_EXECUTABLE) && HAVE_DECL_MAP_EXECUTABLE)
+       XLAT(MAP_EXECUTABLE),
+#endif
+#if defined(MAP_INHERIT) || (defined(HAVE_DECL_MAP_INHERIT) && HAVE_DECL_MAP_INHERIT)
+       XLAT(MAP_INHERIT),
+#endif
+#if defined(MAP_FILE) || (defined(HAVE_DECL_MAP_FILE) && HAVE_DECL_MAP_FILE)
+       XLAT(MAP_FILE),
+#endif
+#if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
+       XLAT(MAP_LOCKED),
+#endif
+/* FreeBSD ones */
+#if defined(MAP_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
+#if defined(MAP_ANON) || (defined(HAVE_DECL_MAP_ANON) && HAVE_DECL_MAP_ANON)
+       XLAT(MAP_ANON),
+#endif
+#endif
+#if defined(MAP_HASSEMAPHORE) || (defined(HAVE_DECL_MAP_HASSEMAPHORE) && HAVE_DECL_MAP_HASSEMAPHORE)
+       XLAT(MAP_HASSEMAPHORE),
+#endif
+#if defined(MAP_STACK) || (defined(HAVE_DECL_MAP_STACK) && HAVE_DECL_MAP_STACK)
+       XLAT(MAP_STACK),
+#endif
+#if defined(MAP_HUGETLB) || (defined(HAVE_DECL_MAP_HUGETLB) && HAVE_DECL_MAP_HUGETLB)
+       XLAT(MAP_HUGETLB),
+#endif
+#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
+#if defined(MAP_UNINITIALIZED) || (defined(HAVE_DECL_MAP_UNINITIALIZED) && HAVE_DECL_MAP_UNINITIALIZED)
+       XLAT(MAP_UNINITIALIZED),
+#endif
+#endif
+#if defined(MAP_NOSYNC) || (defined(HAVE_DECL_MAP_NOSYNC) && HAVE_DECL_MAP_NOSYNC)
+       XLAT(MAP_NOSYNC),
+#endif
+#if defined(MAP_NOCORE) || (defined(HAVE_DECL_MAP_NOCORE) && HAVE_DECL_MAP_NOCORE)
+       XLAT(MAP_NOCORE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mmap_flags.in b/xlat/mmap_flags.in
new file mode 100644 (file)
index 0000000..e9fde44
--- /dev/null
@@ -0,0 +1,55 @@
+MAP_SHARED
+MAP_PRIVATE
+MAP_FIXED
+MAP_ANONYMOUS
+MAP_32BIT
+MAP_RENAME
+MAP_NORESERVE
+MAP_POPULATE
+MAP_NONBLOCK
+/*
+ * XXX - this was introduced in SunOS 4.x to distinguish between
+ * the old pre-4.x "mmap()", which:
+ *
+ *     only let you map devices with an "mmap" routine (e.g.,
+ *     frame buffers) in;
+ *
+ *     required you to specify the mapping address;
+ *
+ *     returned 0 on success and -1 on failure;
+ *
+ * memory and which, and the 4.x "mmap()" which:
+ *
+ *     can map plain files;
+ *
+ *     can be asked to pick where to map the file;
+ *
+ *     returns the address where it mapped the file on success
+ *     and -1 on failure.
+ *
+ * It's not actually used in source code that calls "mmap()"; the
+ * "mmap()" routine adds it for you.
+ *
+ * It'd be nice to come up with some way of eliminating it from
+ * the flags, e.g. reporting calls *without* it as "old_mmap()"
+ * and calls with it as "mmap()".
+ */
+_MAP_NEW
+MAP_GROWSDOWN
+MAP_DENYWRITE
+MAP_EXECUTABLE
+MAP_INHERIT
+MAP_FILE
+MAP_LOCKED
+/* FreeBSD ones */
+#if defined(MAP_ANON) && (!defined(MAP_ANONYMOUS) || MAP_ANON != MAP_ANONYMOUS)
+MAP_ANON
+#endif
+MAP_HASSEMAPHORE
+MAP_STACK
+MAP_HUGETLB
+#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
+MAP_UNINITIALIZED
+#endif
+MAP_NOSYNC
+MAP_NOCORE
diff --git a/xlat/mmap_prot.h b/xlat/mmap_prot.h
new file mode 100644 (file)
index 0000000..8b18690
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mmap_prot.in; do not edit. */
+
+static const struct xlat mmap_prot[] = {
+#if defined(PROT_NONE) || (defined(HAVE_DECL_PROT_NONE) && HAVE_DECL_PROT_NONE)
+       XLAT(PROT_NONE),
+#endif
+#if defined(PROT_READ) || (defined(HAVE_DECL_PROT_READ) && HAVE_DECL_PROT_READ)
+       XLAT(PROT_READ),
+#endif
+#if defined(PROT_WRITE) || (defined(HAVE_DECL_PROT_WRITE) && HAVE_DECL_PROT_WRITE)
+       XLAT(PROT_WRITE),
+#endif
+#if defined(PROT_EXEC) || (defined(HAVE_DECL_PROT_EXEC) && HAVE_DECL_PROT_EXEC)
+       XLAT(PROT_EXEC),
+#endif
+#if defined(PROT_SEM) || (defined(HAVE_DECL_PROT_SEM) && HAVE_DECL_PROT_SEM)
+       XLAT(PROT_SEM),
+#endif
+#if defined(PROT_GROWSDOWN) || (defined(HAVE_DECL_PROT_GROWSDOWN) && HAVE_DECL_PROT_GROWSDOWN)
+       XLAT(PROT_GROWSDOWN),
+#endif
+#if defined(PROT_GROWSUP) || (defined(HAVE_DECL_PROT_GROWSUP) && HAVE_DECL_PROT_GROWSUP)
+       XLAT(PROT_GROWSUP),
+#endif
+#if defined(PROT_SAO) || (defined(HAVE_DECL_PROT_SAO) && HAVE_DECL_PROT_SAO)
+       XLAT(PROT_SAO),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mmap_prot.in b/xlat/mmap_prot.in
new file mode 100644 (file)
index 0000000..0589980
--- /dev/null
@@ -0,0 +1,8 @@
+PROT_NONE
+PROT_READ
+PROT_WRITE
+PROT_EXEC
+PROT_SEM
+PROT_GROWSDOWN
+PROT_GROWSUP
+PROT_SAO
diff --git a/xlat/modem_flags.h b/xlat/modem_flags.h
new file mode 100644 (file)
index 0000000..8678eb9
--- /dev/null
@@ -0,0 +1,38 @@
+/* Generated by ./xlat/gen.sh from ./xlat/modem_flags.in; do not edit. */
+
+static const struct xlat modem_flags[] = {
+#if defined(TIOCM_LE) || (defined(HAVE_DECL_TIOCM_LE) && HAVE_DECL_TIOCM_LE)
+       XLAT(TIOCM_LE),
+#endif
+#if defined(TIOCM_DTR) || (defined(HAVE_DECL_TIOCM_DTR) && HAVE_DECL_TIOCM_DTR)
+       XLAT(TIOCM_DTR),
+#endif
+#if defined(TIOCM_RTS) || (defined(HAVE_DECL_TIOCM_RTS) && HAVE_DECL_TIOCM_RTS)
+       XLAT(TIOCM_RTS),
+#endif
+#if defined(TIOCM_ST) || (defined(HAVE_DECL_TIOCM_ST) && HAVE_DECL_TIOCM_ST)
+       XLAT(TIOCM_ST),
+#endif
+#if defined(TIOCM_SR) || (defined(HAVE_DECL_TIOCM_SR) && HAVE_DECL_TIOCM_SR)
+       XLAT(TIOCM_SR),
+#endif
+#if defined(TIOCM_CTS) || (defined(HAVE_DECL_TIOCM_CTS) && HAVE_DECL_TIOCM_CTS)
+       XLAT(TIOCM_CTS),
+#endif
+#if defined(TIOCM_CAR) || (defined(HAVE_DECL_TIOCM_CAR) && HAVE_DECL_TIOCM_CAR)
+       XLAT(TIOCM_CAR),
+#endif
+#if defined(TIOCM_CD) || (defined(HAVE_DECL_TIOCM_CD) && HAVE_DECL_TIOCM_CD)
+       XLAT(TIOCM_CD),
+#endif
+#if defined(TIOCM_RNG) || (defined(HAVE_DECL_TIOCM_RNG) && HAVE_DECL_TIOCM_RNG)
+       XLAT(TIOCM_RNG),
+#endif
+#if defined(TIOCM_RI) || (defined(HAVE_DECL_TIOCM_RI) && HAVE_DECL_TIOCM_RI)
+       XLAT(TIOCM_RI),
+#endif
+#if defined(TIOCM_DSR) || (defined(HAVE_DECL_TIOCM_DSR) && HAVE_DECL_TIOCM_DSR)
+       XLAT(TIOCM_DSR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/modem_flags.in b/xlat/modem_flags.in
new file mode 100644 (file)
index 0000000..ad42d5e
--- /dev/null
@@ -0,0 +1,11 @@
+TIOCM_LE
+TIOCM_DTR
+TIOCM_RTS
+TIOCM_ST
+TIOCM_SR
+TIOCM_CTS
+TIOCM_CAR
+TIOCM_CD
+TIOCM_RNG
+TIOCM_RI
+TIOCM_DSR
diff --git a/xlat/modetypes.h b/xlat/modetypes.h
new file mode 100644 (file)
index 0000000..1438b02
--- /dev/null
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/modetypes.in; do not edit. */
+
+static const struct xlat modetypes[] = {
+#if defined(S_IFREG) || (defined(HAVE_DECL_S_IFREG) && HAVE_DECL_S_IFREG)
+       XLAT(S_IFREG),
+#endif
+#if defined(S_IFSOCK) || (defined(HAVE_DECL_S_IFSOCK) && HAVE_DECL_S_IFSOCK)
+       XLAT(S_IFSOCK),
+#endif
+#if defined(S_IFIFO) || (defined(HAVE_DECL_S_IFIFO) && HAVE_DECL_S_IFIFO)
+       XLAT(S_IFIFO),
+#endif
+#if defined(S_IFLNK) || (defined(HAVE_DECL_S_IFLNK) && HAVE_DECL_S_IFLNK)
+       XLAT(S_IFLNK),
+#endif
+#if defined(S_IFDIR) || (defined(HAVE_DECL_S_IFDIR) && HAVE_DECL_S_IFDIR)
+       XLAT(S_IFDIR),
+#endif
+#if defined(S_IFBLK) || (defined(HAVE_DECL_S_IFBLK) && HAVE_DECL_S_IFBLK)
+       XLAT(S_IFBLK),
+#endif
+#if defined(S_IFCHR) || (defined(HAVE_DECL_S_IFCHR) && HAVE_DECL_S_IFCHR)
+       XLAT(S_IFCHR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/modetypes.in b/xlat/modetypes.in
new file mode 100644 (file)
index 0000000..602cb00
--- /dev/null
@@ -0,0 +1,7 @@
+S_IFREG
+S_IFSOCK
+S_IFIFO
+S_IFLNK
+S_IFDIR
+S_IFBLK
+S_IFCHR
diff --git a/xlat/modflags.h b/xlat/modflags.h
new file mode 100644 (file)
index 0000000..664e9c1
--- /dev/null
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/modflags.in; do not edit. */
+
+static const struct xlat modflags[] = {
+#if defined(MOD_UNINITIALIZED) || (defined(HAVE_DECL_MOD_UNINITIALIZED) && HAVE_DECL_MOD_UNINITIALIZED)
+       XLAT(MOD_UNINITIALIZED),
+#endif
+#if defined(MOD_RUNNING) || (defined(HAVE_DECL_MOD_RUNNING) && HAVE_DECL_MOD_RUNNING)
+       XLAT(MOD_RUNNING),
+#endif
+#if defined(MOD_DELETED) || (defined(HAVE_DECL_MOD_DELETED) && HAVE_DECL_MOD_DELETED)
+       XLAT(MOD_DELETED),
+#endif
+#if defined(MOD_AUTOCLEAN) || (defined(HAVE_DECL_MOD_AUTOCLEAN) && HAVE_DECL_MOD_AUTOCLEAN)
+       XLAT(MOD_AUTOCLEAN),
+#endif
+#if defined(MOD_VISITED) || (defined(HAVE_DECL_MOD_VISITED) && HAVE_DECL_MOD_VISITED)
+       XLAT(MOD_VISITED),
+#endif
+#if defined(MOD_USED_ONCE) || (defined(HAVE_DECL_MOD_USED_ONCE) && HAVE_DECL_MOD_USED_ONCE)
+       XLAT(MOD_USED_ONCE),
+#endif
+#if defined(MOD_JUST_FREED) || (defined(HAVE_DECL_MOD_JUST_FREED) && HAVE_DECL_MOD_JUST_FREED)
+       XLAT(MOD_JUST_FREED),
+#endif
+       XLAT_END
+};
diff --git a/xlat/modflags.in b/xlat/modflags.in
new file mode 100644 (file)
index 0000000..2edf7e9
--- /dev/null
@@ -0,0 +1,7 @@
+MOD_UNINITIALIZED
+MOD_RUNNING
+MOD_DELETED
+MOD_AUTOCLEAN
+MOD_VISITED
+MOD_USED_ONCE
+MOD_JUST_FREED
diff --git a/xlat/module_init_flags.h b/xlat/module_init_flags.h
new file mode 100644 (file)
index 0000000..00ae3d6
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/module_init_flags.in; do not edit. */
+
+static const struct xlat module_init_flags[] = {
+#if defined(MODULE_INIT_IGNORE_MODVERSIONS) || (defined(HAVE_DECL_MODULE_INIT_IGNORE_MODVERSIONS) && HAVE_DECL_MODULE_INIT_IGNORE_MODVERSIONS)
+       XLAT(MODULE_INIT_IGNORE_MODVERSIONS),
+#endif
+#if defined(MODULE_INIT_IGNORE_VERMAGIC) || (defined(HAVE_DECL_MODULE_INIT_IGNORE_VERMAGIC) && HAVE_DECL_MODULE_INIT_IGNORE_VERMAGIC)
+       XLAT(MODULE_INIT_IGNORE_VERMAGIC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/module_init_flags.in b/xlat/module_init_flags.in
new file mode 100644 (file)
index 0000000..e672a59
--- /dev/null
@@ -0,0 +1,2 @@
+MODULE_INIT_IGNORE_MODVERSIONS
+MODULE_INIT_IGNORE_VERMAGIC
diff --git a/xlat/mount_flags.h b/xlat/mount_flags.h
new file mode 100644 (file)
index 0000000..cbd8e76
--- /dev/null
@@ -0,0 +1,86 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mount_flags.in; do not edit. */
+
+static const struct xlat mount_flags[] = {
+#if defined(MS_MGC_VAL) || (defined(HAVE_DECL_MS_MGC_VAL) && HAVE_DECL_MS_MGC_VAL)
+       XLAT(MS_MGC_VAL),
+#endif
+#if defined(MS_RDONLY) || (defined(HAVE_DECL_MS_RDONLY) && HAVE_DECL_MS_RDONLY)
+       XLAT(MS_RDONLY),
+#endif
+#if defined(MS_NOSUID) || (defined(HAVE_DECL_MS_NOSUID) && HAVE_DECL_MS_NOSUID)
+       XLAT(MS_NOSUID),
+#endif
+#if defined(MS_NODEV) || (defined(HAVE_DECL_MS_NODEV) && HAVE_DECL_MS_NODEV)
+       XLAT(MS_NODEV),
+#endif
+#if defined(MS_NOEXEC) || (defined(HAVE_DECL_MS_NOEXEC) && HAVE_DECL_MS_NOEXEC)
+       XLAT(MS_NOEXEC),
+#endif
+#if defined(MS_SYNCHRONOUS) || (defined(HAVE_DECL_MS_SYNCHRONOUS) && HAVE_DECL_MS_SYNCHRONOUS)
+       XLAT(MS_SYNCHRONOUS),
+#endif
+#if defined(MS_REMOUNT) || (defined(HAVE_DECL_MS_REMOUNT) && HAVE_DECL_MS_REMOUNT)
+       XLAT(MS_REMOUNT),
+#endif
+#if defined(MS_RELATIME) || (defined(HAVE_DECL_MS_RELATIME) && HAVE_DECL_MS_RELATIME)
+       XLAT(MS_RELATIME),
+#endif
+#if defined(MS_KERNMOUNT) || (defined(HAVE_DECL_MS_KERNMOUNT) && HAVE_DECL_MS_KERNMOUNT)
+       XLAT(MS_KERNMOUNT),
+#endif
+#if defined(MS_I_VERSION) || (defined(HAVE_DECL_MS_I_VERSION) && HAVE_DECL_MS_I_VERSION)
+       XLAT(MS_I_VERSION),
+#endif
+#if defined(MS_STRICTATIME) || (defined(HAVE_DECL_MS_STRICTATIME) && HAVE_DECL_MS_STRICTATIME)
+       XLAT(MS_STRICTATIME),
+#endif
+#if defined(MS_NOSEC) || (defined(HAVE_DECL_MS_NOSEC) && HAVE_DECL_MS_NOSEC)
+       XLAT(MS_NOSEC),
+#endif
+#if defined(MS_BORN) || (defined(HAVE_DECL_MS_BORN) && HAVE_DECL_MS_BORN)
+       XLAT(MS_BORN),
+#endif
+#if defined(MS_MANDLOCK) || (defined(HAVE_DECL_MS_MANDLOCK) && HAVE_DECL_MS_MANDLOCK)
+       XLAT(MS_MANDLOCK),
+#endif
+#if defined(MS_NOATIME) || (defined(HAVE_DECL_MS_NOATIME) && HAVE_DECL_MS_NOATIME)
+       XLAT(MS_NOATIME),
+#endif
+#if defined(MS_NODIRATIME) || (defined(HAVE_DECL_MS_NODIRATIME) && HAVE_DECL_MS_NODIRATIME)
+       XLAT(MS_NODIRATIME),
+#endif
+#if defined(MS_BIND) || (defined(HAVE_DECL_MS_BIND) && HAVE_DECL_MS_BIND)
+       XLAT(MS_BIND),
+#endif
+#if defined(MS_MOVE) || (defined(HAVE_DECL_MS_MOVE) && HAVE_DECL_MS_MOVE)
+       XLAT(MS_MOVE),
+#endif
+#if defined(MS_REC) || (defined(HAVE_DECL_MS_REC) && HAVE_DECL_MS_REC)
+       XLAT(MS_REC),
+#endif
+#if defined(MS_SILENT) || (defined(HAVE_DECL_MS_SILENT) && HAVE_DECL_MS_SILENT)
+       XLAT(MS_SILENT),
+#endif
+#if defined(MS_POSIXACL) || (defined(HAVE_DECL_MS_POSIXACL) && HAVE_DECL_MS_POSIXACL)
+       XLAT(MS_POSIXACL),
+#endif
+#if defined(MS_UNBINDABLE) || (defined(HAVE_DECL_MS_UNBINDABLE) && HAVE_DECL_MS_UNBINDABLE)
+       XLAT(MS_UNBINDABLE),
+#endif
+#if defined(MS_PRIVATE) || (defined(HAVE_DECL_MS_PRIVATE) && HAVE_DECL_MS_PRIVATE)
+       XLAT(MS_PRIVATE),
+#endif
+#if defined(MS_SLAVE) || (defined(HAVE_DECL_MS_SLAVE) && HAVE_DECL_MS_SLAVE)
+       XLAT(MS_SLAVE),
+#endif
+#if defined(MS_SHARED) || (defined(HAVE_DECL_MS_SHARED) && HAVE_DECL_MS_SHARED)
+       XLAT(MS_SHARED),
+#endif
+#if defined(MS_ACTIVE) || (defined(HAVE_DECL_MS_ACTIVE) && HAVE_DECL_MS_ACTIVE)
+       XLAT(MS_ACTIVE),
+#endif
+#if defined(MS_NOUSER) || (defined(HAVE_DECL_MS_NOUSER) && HAVE_DECL_MS_NOUSER)
+       XLAT(MS_NOUSER),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mount_flags.in b/xlat/mount_flags.in
new file mode 100644 (file)
index 0000000..8e72e58
--- /dev/null
@@ -0,0 +1,27 @@
+MS_MGC_VAL
+MS_RDONLY
+MS_NOSUID
+MS_NODEV
+MS_NOEXEC
+MS_SYNCHRONOUS
+MS_REMOUNT
+MS_RELATIME
+MS_KERNMOUNT
+MS_I_VERSION
+MS_STRICTATIME
+MS_NOSEC
+MS_BORN
+MS_MANDLOCK
+MS_NOATIME
+MS_NODIRATIME
+MS_BIND
+MS_MOVE
+MS_REC
+MS_SILENT
+MS_POSIXACL
+MS_UNBINDABLE
+MS_PRIVATE
+MS_SLAVE
+MS_SHARED
+MS_ACTIVE
+MS_NOUSER
diff --git a/xlat/move_pages_flags.h b/xlat/move_pages_flags.h
new file mode 100644 (file)
index 0000000..cbdf3bc
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/move_pages_flags.in; do not edit. */
+
+static const struct xlat move_pages_flags[] = {
+#if defined(MPOL_MF_MOVE) || (defined(HAVE_DECL_MPOL_MF_MOVE) && HAVE_DECL_MPOL_MF_MOVE)
+       XLAT(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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/move_pages_flags.in b/xlat/move_pages_flags.in
new file mode 100644 (file)
index 0000000..03555b8
--- /dev/null
@@ -0,0 +1,2 @@
+MPOL_MF_MOVE
+MPOL_MF_MOVE_ALL
diff --git a/xlat/mremap_flags.h b/xlat/mremap_flags.h
new file mode 100644 (file)
index 0000000..3dac3a5
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mremap_flags.in; do not edit. */
+
+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
+};
diff --git a/xlat/mremap_flags.in b/xlat/mremap_flags.in
new file mode 100644 (file)
index 0000000..be13a6f
--- /dev/null
@@ -0,0 +1,2 @@
+MREMAP_MAYMOVE
+MREMAP_FIXED
diff --git a/xlat/msg_flags.h b/xlat/msg_flags.h
new file mode 100644 (file)
index 0000000..e842d2d
--- /dev/null
@@ -0,0 +1,65 @@
+/* Generated by ./xlat/gen.sh from ./xlat/msg_flags.in; do not edit. */
+
+static const struct xlat msg_flags[] = {
+#if defined(MSG_OOB) || (defined(HAVE_DECL_MSG_OOB) && HAVE_DECL_MSG_OOB)
+       XLAT(MSG_OOB),
+#endif
+#if defined(MSG_PEEK) || (defined(HAVE_DECL_MSG_PEEK) && HAVE_DECL_MSG_PEEK)
+       XLAT(MSG_PEEK),
+#endif
+#if defined(MSG_DONTROUTE) || (defined(HAVE_DECL_MSG_DONTROUTE) && HAVE_DECL_MSG_DONTROUTE)
+       XLAT(MSG_DONTROUTE),
+#endif
+#if defined(MSG_CTRUNC) || (defined(HAVE_DECL_MSG_CTRUNC) && HAVE_DECL_MSG_CTRUNC)
+       XLAT(MSG_CTRUNC),
+#endif
+#if defined(MSG_PROBE) || (defined(HAVE_DECL_MSG_PROBE) && HAVE_DECL_MSG_PROBE)
+       XLAT(MSG_PROBE),
+#endif
+#if defined(MSG_TRUNC) || (defined(HAVE_DECL_MSG_TRUNC) && HAVE_DECL_MSG_TRUNC)
+       XLAT(MSG_TRUNC),
+#endif
+#if defined(MSG_DONTWAIT) || (defined(HAVE_DECL_MSG_DONTWAIT) && HAVE_DECL_MSG_DONTWAIT)
+       XLAT(MSG_DONTWAIT),
+#endif
+#if defined(MSG_EOR) || (defined(HAVE_DECL_MSG_EOR) && HAVE_DECL_MSG_EOR)
+       XLAT(MSG_EOR),
+#endif
+#if defined(MSG_WAITALL) || (defined(HAVE_DECL_MSG_WAITALL) && HAVE_DECL_MSG_WAITALL)
+       XLAT(MSG_WAITALL),
+#endif
+#if defined(MSG_FIN) || (defined(HAVE_DECL_MSG_FIN) && HAVE_DECL_MSG_FIN)
+       XLAT(MSG_FIN),
+#endif
+#if defined(MSG_SYN) || (defined(HAVE_DECL_MSG_SYN) && HAVE_DECL_MSG_SYN)
+       XLAT(MSG_SYN),
+#endif
+#if defined(MSG_CONFIRM) || (defined(HAVE_DECL_MSG_CONFIRM) && HAVE_DECL_MSG_CONFIRM)
+       XLAT(MSG_CONFIRM),
+#endif
+#if defined(MSG_RST) || (defined(HAVE_DECL_MSG_RST) && HAVE_DECL_MSG_RST)
+       XLAT(MSG_RST),
+#endif
+#if defined(MSG_ERRQUEUE) || (defined(HAVE_DECL_MSG_ERRQUEUE) && HAVE_DECL_MSG_ERRQUEUE)
+       XLAT(MSG_ERRQUEUE),
+#endif
+#if defined(MSG_NOSIGNAL) || (defined(HAVE_DECL_MSG_NOSIGNAL) && HAVE_DECL_MSG_NOSIGNAL)
+       XLAT(MSG_NOSIGNAL),
+#endif
+#if defined(MSG_MORE) || (defined(HAVE_DECL_MSG_MORE) && HAVE_DECL_MSG_MORE)
+       XLAT(MSG_MORE),
+#endif
+#if defined(MSG_WAITFORONE) || (defined(HAVE_DECL_MSG_WAITFORONE) && HAVE_DECL_MSG_WAITFORONE)
+       XLAT(MSG_WAITFORONE),
+#endif
+#if defined(MSG_EOF) || (defined(HAVE_DECL_MSG_EOF) && HAVE_DECL_MSG_EOF)
+       XLAT(MSG_EOF),
+#endif
+#if defined(MSG_FASTOPEN) || (defined(HAVE_DECL_MSG_FASTOPEN) && HAVE_DECL_MSG_FASTOPEN)
+       XLAT(MSG_FASTOPEN),
+#endif
+#if defined(MSG_CMSG_CLOEXEC) || (defined(HAVE_DECL_MSG_CMSG_CLOEXEC) && HAVE_DECL_MSG_CMSG_CLOEXEC)
+       XLAT(MSG_CMSG_CLOEXEC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/msg_flags.in b/xlat/msg_flags.in
new file mode 100644 (file)
index 0000000..9369040
--- /dev/null
@@ -0,0 +1,20 @@
+MSG_OOB
+MSG_PEEK
+MSG_DONTROUTE
+MSG_CTRUNC
+MSG_PROBE
+MSG_TRUNC
+MSG_DONTWAIT
+MSG_EOR
+MSG_WAITALL
+MSG_FIN
+MSG_SYN
+MSG_CONFIRM
+MSG_RST
+MSG_ERRQUEUE
+MSG_NOSIGNAL
+MSG_MORE
+MSG_WAITFORONE
+MSG_EOF
+MSG_FASTOPEN
+MSG_CMSG_CLOEXEC
diff --git a/xlat/msgctl_flags.h b/xlat/msgctl_flags.h
new file mode 100644 (file)
index 0000000..72c8f7b
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/msgctl_flags.in; do not edit. */
+
+static const struct xlat msgctl_flags[] = {
+#if defined(IPC_RMID) || (defined(HAVE_DECL_IPC_RMID) && HAVE_DECL_IPC_RMID)
+       XLAT(IPC_RMID),
+#endif
+#if defined(IPC_SET) || (defined(HAVE_DECL_IPC_SET) && HAVE_DECL_IPC_SET)
+       XLAT(IPC_SET),
+#endif
+#if defined(IPC_STAT) || (defined(HAVE_DECL_IPC_STAT) && HAVE_DECL_IPC_STAT)
+       XLAT(IPC_STAT),
+#endif
+#if defined(IPC_INFO) || (defined(HAVE_DECL_IPC_INFO) && HAVE_DECL_IPC_INFO)
+       XLAT(IPC_INFO),
+#endif
+#if defined(MSG_STAT) || (defined(HAVE_DECL_MSG_STAT) && HAVE_DECL_MSG_STAT)
+       XLAT(MSG_STAT),
+#endif
+#if defined(MSG_INFO) || (defined(HAVE_DECL_MSG_INFO) && HAVE_DECL_MSG_INFO)
+       XLAT(MSG_INFO),
+#endif
+       XLAT_END
+};
diff --git a/xlat/msgctl_flags.in b/xlat/msgctl_flags.in
new file mode 100644 (file)
index 0000000..0d39e9e
--- /dev/null
@@ -0,0 +1,6 @@
+IPC_RMID
+IPC_SET
+IPC_STAT
+IPC_INFO
+MSG_STAT
+MSG_INFO
diff --git a/xlat/msgflags.h b/xlat/msgflags.h
new file mode 100644 (file)
index 0000000..c96a35d
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/msgflags.in; do not edit. */
+
+static const struct xlat msgflags[] = {
+#if defined(RS_HIPRI) || (defined(HAVE_DECL_RS_HIPRI) && HAVE_DECL_RS_HIPRI)
+       XLAT(RS_HIPRI),
+#endif
+       XLAT_END
+};
diff --git a/xlat/msgflags.in b/xlat/msgflags.in
new file mode 100644 (file)
index 0000000..62e6bb7
--- /dev/null
@@ -0,0 +1 @@
+RS_HIPRI
diff --git a/xlat/mtd_flags_options.h b/xlat/mtd_flags_options.h
new file mode 100644 (file)
index 0000000..da4c6a7
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mtd_flags_options.in; do not edit. */
+
+static const struct xlat mtd_flags_options[] = {
+#if defined(MTD_WRITEABLE) || (defined(HAVE_DECL_MTD_WRITEABLE) && HAVE_DECL_MTD_WRITEABLE)
+       XLAT(MTD_WRITEABLE),
+#endif
+#if defined(MTD_BIT_WRITEABLE) || (defined(HAVE_DECL_MTD_BIT_WRITEABLE) && HAVE_DECL_MTD_BIT_WRITEABLE)
+       XLAT(MTD_BIT_WRITEABLE),
+#endif
+#if defined(MTD_NO_ERASE) || (defined(HAVE_DECL_MTD_NO_ERASE) && HAVE_DECL_MTD_NO_ERASE)
+       XLAT(MTD_NO_ERASE),
+#endif
+#if defined(MTD_POWERUP_LOCK) || (defined(HAVE_DECL_MTD_POWERUP_LOCK) && HAVE_DECL_MTD_POWERUP_LOCK)
+       XLAT(MTD_POWERUP_LOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mtd_flags_options.in b/xlat/mtd_flags_options.in
new file mode 100644 (file)
index 0000000..8b5a0a5
--- /dev/null
@@ -0,0 +1,4 @@
+MTD_WRITEABLE
+MTD_BIT_WRITEABLE
+MTD_NO_ERASE
+MTD_POWERUP_LOCK
diff --git a/xlat/mtd_mode_options.h b/xlat/mtd_mode_options.h
new file mode 100644 (file)
index 0000000..c80f035
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mtd_mode_options.in; do not edit. */
+
+static const struct xlat mtd_mode_options[] = {
+       XLAT(MTD_OPS_PLACE_OOB),
+       XLAT(MTD_OPS_AUTO_OOB),
+       XLAT(MTD_OPS_RAW),
+       XLAT_END
+};
diff --git a/xlat/mtd_mode_options.in b/xlat/mtd_mode_options.in
new file mode 100644 (file)
index 0000000..f0dcc8b
--- /dev/null
@@ -0,0 +1,4 @@
+#unconditional
+MTD_OPS_PLACE_OOB
+MTD_OPS_AUTO_OOB
+MTD_OPS_RAW
diff --git a/xlat/mtd_nandecc_options.h b/xlat/mtd_nandecc_options.h
new file mode 100644 (file)
index 0000000..3464701
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mtd_nandecc_options.in; do not edit. */
+
+static const struct xlat mtd_nandecc_options[] = {
+#if defined(MTD_NANDECC_OFF) || (defined(HAVE_DECL_MTD_NANDECC_OFF) && HAVE_DECL_MTD_NANDECC_OFF)
+       XLAT(MTD_NANDECC_OFF),
+#endif
+#if defined(MTD_NANDECC_PLACE) || (defined(HAVE_DECL_MTD_NANDECC_PLACE) && HAVE_DECL_MTD_NANDECC_PLACE)
+       XLAT(MTD_NANDECC_PLACE),
+#endif
+#if defined(MTD_NANDECC_AUTOPLACE) || (defined(HAVE_DECL_MTD_NANDECC_AUTOPLACE) && HAVE_DECL_MTD_NANDECC_AUTOPLACE)
+       XLAT(MTD_NANDECC_AUTOPLACE),
+#endif
+#if defined(MTD_NANDECC_PLACEONLY) || (defined(HAVE_DECL_MTD_NANDECC_PLACEONLY) && HAVE_DECL_MTD_NANDECC_PLACEONLY)
+       XLAT(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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mtd_nandecc_options.in b/xlat/mtd_nandecc_options.in
new file mode 100644 (file)
index 0000000..cd96f3d
--- /dev/null
@@ -0,0 +1,5 @@
+MTD_NANDECC_OFF
+MTD_NANDECC_PLACE
+MTD_NANDECC_AUTOPLACE
+MTD_NANDECC_PLACEONLY
+MTD_NANDECC_AUTOPL_USR
diff --git a/xlat/mtd_otp_options.h b/xlat/mtd_otp_options.h
new file mode 100644 (file)
index 0000000..6cbf743
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mtd_otp_options.in; do not edit. */
+
+static const struct xlat mtd_otp_options[] = {
+#if defined(MTD_OTP_OFF) || (defined(HAVE_DECL_MTD_OTP_OFF) && HAVE_DECL_MTD_OTP_OFF)
+       XLAT(MTD_OTP_OFF),
+#endif
+#if defined(MTD_OTP_FACTORY) || (defined(HAVE_DECL_MTD_OTP_FACTORY) && HAVE_DECL_MTD_OTP_FACTORY)
+       XLAT(MTD_OTP_FACTORY),
+#endif
+#if defined(MTD_OTP_USER) || (defined(HAVE_DECL_MTD_OTP_USER) && HAVE_DECL_MTD_OTP_USER)
+       XLAT(MTD_OTP_USER),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mtd_otp_options.in b/xlat/mtd_otp_options.in
new file mode 100644 (file)
index 0000000..a00248f
--- /dev/null
@@ -0,0 +1,3 @@
+MTD_OTP_OFF
+MTD_OTP_FACTORY
+MTD_OTP_USER
diff --git a/xlat/mtd_type_options.h b/xlat/mtd_type_options.h
new file mode 100644 (file)
index 0000000..404aca8
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mtd_type_options.in; do not edit. */
+
+static const struct xlat mtd_type_options[] = {
+#if defined(MTD_ABSENT) || (defined(HAVE_DECL_MTD_ABSENT) && HAVE_DECL_MTD_ABSENT)
+       XLAT(MTD_ABSENT),
+#endif
+#if defined(MTD_RAM) || (defined(HAVE_DECL_MTD_RAM) && HAVE_DECL_MTD_RAM)
+       XLAT(MTD_RAM),
+#endif
+#if defined(MTD_ROM) || (defined(HAVE_DECL_MTD_ROM) && HAVE_DECL_MTD_ROM)
+       XLAT(MTD_ROM),
+#endif
+#if defined(MTD_NORFLASH) || (defined(HAVE_DECL_MTD_NORFLASH) && HAVE_DECL_MTD_NORFLASH)
+       XLAT(MTD_NORFLASH),
+#endif
+#if defined(MTD_NANDFLASH) || (defined(HAVE_DECL_MTD_NANDFLASH) && HAVE_DECL_MTD_NANDFLASH)
+       XLAT(MTD_NANDFLASH),
+#endif
+#if defined(MTD_DATAFLASH) || (defined(HAVE_DECL_MTD_DATAFLASH) && HAVE_DECL_MTD_DATAFLASH)
+       XLAT(MTD_DATAFLASH),
+#endif
+#if defined(MTD_UBIVOLUME) || (defined(HAVE_DECL_MTD_UBIVOLUME) && HAVE_DECL_MTD_UBIVOLUME)
+       XLAT(MTD_UBIVOLUME),
+#endif
+#if defined(MTD_MLCNANDFLASH) || (defined(HAVE_DECL_MTD_MLCNANDFLASH) && HAVE_DECL_MTD_MLCNANDFLASH)
+       XLAT(MTD_MLCNANDFLASH),
+#endif
+       XLAT_END
+};
diff --git a/xlat/mtd_type_options.in b/xlat/mtd_type_options.in
new file mode 100644 (file)
index 0000000..42643f9
--- /dev/null
@@ -0,0 +1,8 @@
+MTD_ABSENT
+MTD_RAM
+MTD_ROM
+MTD_NORFLASH
+MTD_NANDFLASH
+MTD_DATAFLASH
+MTD_UBIVOLUME
+MTD_MLCNANDFLASH
diff --git a/xlat/netlink_protocols.h b/xlat/netlink_protocols.h
new file mode 100644 (file)
index 0000000..d5614f9
--- /dev/null
@@ -0,0 +1,68 @@
+/* Generated by ./xlat/gen.sh from ./xlat/netlink_protocols.in; do not edit. */
+
+static const struct xlat netlink_protocols[] = {
+#if defined(NETLINK_ROUTE) || (defined(HAVE_DECL_NETLINK_ROUTE) && HAVE_DECL_NETLINK_ROUTE)
+       XLAT(NETLINK_ROUTE),
+#endif
+#if defined(NETLINK_UNUSED) || (defined(HAVE_DECL_NETLINK_UNUSED) && HAVE_DECL_NETLINK_UNUSED)
+       XLAT(NETLINK_UNUSED),
+#endif
+#if defined(NETLINK_USERSOCK) || (defined(HAVE_DECL_NETLINK_USERSOCK) && HAVE_DECL_NETLINK_USERSOCK)
+       XLAT(NETLINK_USERSOCK),
+#endif
+#if defined(NETLINK_FIREWALL) || (defined(HAVE_DECL_NETLINK_FIREWALL) && HAVE_DECL_NETLINK_FIREWALL)
+       XLAT(NETLINK_FIREWALL),
+#endif
+#if defined(NETLINK_SOCK_DIAG) || (defined(HAVE_DECL_NETLINK_SOCK_DIAG) && HAVE_DECL_NETLINK_SOCK_DIAG)
+       XLAT(NETLINK_SOCK_DIAG),
+#endif
+#if defined(NETLINK_NFLOG) || (defined(HAVE_DECL_NETLINK_NFLOG) && HAVE_DECL_NETLINK_NFLOG)
+       XLAT(NETLINK_NFLOG),
+#endif
+#if defined(NETLINK_XFRM) || (defined(HAVE_DECL_NETLINK_XFRM) && HAVE_DECL_NETLINK_XFRM)
+       XLAT(NETLINK_XFRM),
+#endif
+#if defined(NETLINK_SELINUX) || (defined(HAVE_DECL_NETLINK_SELINUX) && HAVE_DECL_NETLINK_SELINUX)
+       XLAT(NETLINK_SELINUX),
+#endif
+#if defined(NETLINK_ISCSI) || (defined(HAVE_DECL_NETLINK_ISCSI) && HAVE_DECL_NETLINK_ISCSI)
+       XLAT(NETLINK_ISCSI),
+#endif
+#if defined(NETLINK_AUDIT) || (defined(HAVE_DECL_NETLINK_AUDIT) && HAVE_DECL_NETLINK_AUDIT)
+       XLAT(NETLINK_AUDIT),
+#endif
+#if defined(NETLINK_FIB_LOOKUP) || (defined(HAVE_DECL_NETLINK_FIB_LOOKUP) && HAVE_DECL_NETLINK_FIB_LOOKUP)
+       XLAT(NETLINK_FIB_LOOKUP),
+#endif
+#if defined(NETLINK_CONNECTOR) || (defined(HAVE_DECL_NETLINK_CONNECTOR) && HAVE_DECL_NETLINK_CONNECTOR)
+       XLAT(NETLINK_CONNECTOR),
+#endif
+#if defined(NETLINK_NETFILTER) || (defined(HAVE_DECL_NETLINK_NETFILTER) && HAVE_DECL_NETLINK_NETFILTER)
+       XLAT(NETLINK_NETFILTER),
+#endif
+#if defined(NETLINK_IP6_FW) || (defined(HAVE_DECL_NETLINK_IP6_FW) && HAVE_DECL_NETLINK_IP6_FW)
+       XLAT(NETLINK_IP6_FW),
+#endif
+#if defined(NETLINK_DNRTMSG) || (defined(HAVE_DECL_NETLINK_DNRTMSG) && HAVE_DECL_NETLINK_DNRTMSG)
+       XLAT(NETLINK_DNRTMSG),
+#endif
+#if defined(NETLINK_KOBJECT_UEVENT) || (defined(HAVE_DECL_NETLINK_KOBJECT_UEVENT) && HAVE_DECL_NETLINK_KOBJECT_UEVENT)
+       XLAT(NETLINK_KOBJECT_UEVENT),
+#endif
+#if defined(NETLINK_GENERIC) || (defined(HAVE_DECL_NETLINK_GENERIC) && HAVE_DECL_NETLINK_GENERIC)
+       XLAT(NETLINK_GENERIC),
+#endif
+#if defined(NETLINK_SCSITRANSPORT) || (defined(HAVE_DECL_NETLINK_SCSITRANSPORT) && HAVE_DECL_NETLINK_SCSITRANSPORT)
+       XLAT(NETLINK_SCSITRANSPORT),
+#endif
+#if defined(NETLINK_ECRYPTFS) || (defined(HAVE_DECL_NETLINK_ECRYPTFS) && HAVE_DECL_NETLINK_ECRYPTFS)
+       XLAT(NETLINK_ECRYPTFS),
+#endif
+#if defined(NETLINK_RDMA) || (defined(HAVE_DECL_NETLINK_RDMA) && HAVE_DECL_NETLINK_RDMA)
+       XLAT(NETLINK_RDMA),
+#endif
+#if defined(NETLINK_CRYPTO) || (defined(HAVE_DECL_NETLINK_CRYPTO) && HAVE_DECL_NETLINK_CRYPTO)
+       XLAT(NETLINK_CRYPTO),
+#endif
+       XLAT_END
+};
diff --git a/xlat/netlink_protocols.in b/xlat/netlink_protocols.in
new file mode 100644 (file)
index 0000000..76383f3
--- /dev/null
@@ -0,0 +1,21 @@
+NETLINK_ROUTE
+NETLINK_UNUSED
+NETLINK_USERSOCK
+NETLINK_FIREWALL
+NETLINK_SOCK_DIAG
+NETLINK_NFLOG
+NETLINK_XFRM
+NETLINK_SELINUX
+NETLINK_ISCSI
+NETLINK_AUDIT
+NETLINK_FIB_LOOKUP
+NETLINK_CONNECTOR
+NETLINK_NETFILTER
+NETLINK_IP6_FW
+NETLINK_DNRTMSG
+NETLINK_KOBJECT_UEVENT
+NETLINK_GENERIC
+NETLINK_SCSITRANSPORT
+NETLINK_ECRYPTFS
+NETLINK_RDMA
+NETLINK_CRYPTO
diff --git a/xlat/notifyflags.h b/xlat/notifyflags.h
new file mode 100644 (file)
index 0000000..fe02728
--- /dev/null
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/notifyflags.in; do not edit. */
+
+static const struct xlat notifyflags[] = {
+#if defined(DN_ACCESS) || (defined(HAVE_DECL_DN_ACCESS) && HAVE_DECL_DN_ACCESS)
+       XLAT(DN_ACCESS),
+#endif
+#if defined(DN_MODIFY) || (defined(HAVE_DECL_DN_MODIFY) && HAVE_DECL_DN_MODIFY)
+       XLAT(DN_MODIFY),
+#endif
+#if defined(DN_CREATE) || (defined(HAVE_DECL_DN_CREATE) && HAVE_DECL_DN_CREATE)
+       XLAT(DN_CREATE),
+#endif
+#if defined(DN_DELETE) || (defined(HAVE_DECL_DN_DELETE) && HAVE_DECL_DN_DELETE)
+       XLAT(DN_DELETE),
+#endif
+#if defined(DN_RENAME) || (defined(HAVE_DECL_DN_RENAME) && HAVE_DECL_DN_RENAME)
+       XLAT(DN_RENAME),
+#endif
+#if defined(DN_ATTRIB) || (defined(HAVE_DECL_DN_ATTRIB) && HAVE_DECL_DN_ATTRIB)
+       XLAT(DN_ATTRIB),
+#endif
+#if defined(DN_MULTISHOT) || (defined(HAVE_DECL_DN_MULTISHOT) && HAVE_DECL_DN_MULTISHOT)
+       XLAT(DN_MULTISHOT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/notifyflags.in b/xlat/notifyflags.in
new file mode 100644 (file)
index 0000000..e9f1492
--- /dev/null
@@ -0,0 +1,7 @@
+DN_ACCESS
+DN_MODIFY
+DN_CREATE
+DN_DELETE
+DN_RENAME
+DN_ATTRIB
+DN_MULTISHOT
diff --git a/xlat/nt_descriptor_types.h b/xlat/nt_descriptor_types.h
new file mode 100644 (file)
index 0000000..a928b84
--- /dev/null
@@ -0,0 +1,74 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nt_descriptor_types.in; do not edit. */
+
+static const struct xlat nt_descriptor_types[] = {
+#if defined(NT_PRSTATUS) || (defined(HAVE_DECL_NT_PRSTATUS) && HAVE_DECL_NT_PRSTATUS)
+       XLAT(NT_PRSTATUS),
+#endif
+#if defined(NT_FPREGSET) || (defined(HAVE_DECL_NT_FPREGSET) && HAVE_DECL_NT_FPREGSET)
+       XLAT(NT_FPREGSET),
+#endif
+#if defined(NT_PRPSINFO) || (defined(HAVE_DECL_NT_PRPSINFO) && HAVE_DECL_NT_PRPSINFO)
+       XLAT(NT_PRPSINFO),
+#endif
+#if defined(NT_PRXREG) || (defined(HAVE_DECL_NT_PRXREG) && HAVE_DECL_NT_PRXREG)
+       XLAT(NT_PRXREG),
+#endif
+#if defined(NT_TASKSTRUCT) || (defined(HAVE_DECL_NT_TASKSTRUCT) && HAVE_DECL_NT_TASKSTRUCT)
+       XLAT(NT_TASKSTRUCT),
+#endif
+#if defined(NT_PLATFORM) || (defined(HAVE_DECL_NT_PLATFORM) && HAVE_DECL_NT_PLATFORM)
+       XLAT(NT_PLATFORM),
+#endif
+#if defined(NT_AUXV) || (defined(HAVE_DECL_NT_AUXV) && HAVE_DECL_NT_AUXV)
+       XLAT(NT_AUXV),
+#endif
+#if defined(NT_GWINDOWS) || (defined(HAVE_DECL_NT_GWINDOWS) && HAVE_DECL_NT_GWINDOWS)
+       XLAT(NT_GWINDOWS),
+#endif
+#if defined(NT_ASRS) || (defined(HAVE_DECL_NT_ASRS) && HAVE_DECL_NT_ASRS)
+       XLAT(NT_ASRS),
+#endif
+#if defined(NT_PSTATUS) || (defined(HAVE_DECL_NT_PSTATUS) && HAVE_DECL_NT_PSTATUS)
+       XLAT(NT_PSTATUS),
+#endif
+#if defined(NT_PSINFO) || (defined(HAVE_DECL_NT_PSINFO) && HAVE_DECL_NT_PSINFO)
+       XLAT(NT_PSINFO),
+#endif
+#if defined(NT_PRCRED) || (defined(HAVE_DECL_NT_PRCRED) && HAVE_DECL_NT_PRCRED)
+       XLAT(NT_PRCRED),
+#endif
+#if defined(NT_UTSNAME) || (defined(HAVE_DECL_NT_UTSNAME) && HAVE_DECL_NT_UTSNAME)
+       XLAT(NT_UTSNAME),
+#endif
+#if defined(NT_LWPSTATUS) || (defined(HAVE_DECL_NT_LWPSTATUS) && HAVE_DECL_NT_LWPSTATUS)
+       XLAT(NT_LWPSTATUS),
+#endif
+#if defined(NT_LWPSINFO) || (defined(HAVE_DECL_NT_LWPSINFO) && HAVE_DECL_NT_LWPSINFO)
+       XLAT(NT_LWPSINFO),
+#endif
+#if defined(NT_PRFPXREG) || (defined(HAVE_DECL_NT_PRFPXREG) && HAVE_DECL_NT_PRFPXREG)
+       XLAT(NT_PRFPXREG),
+#endif
+#if defined(NT_PRXFPREG) || (defined(HAVE_DECL_NT_PRXFPREG) && HAVE_DECL_NT_PRXFPREG)
+       XLAT(NT_PRXFPREG),
+#endif
+#if defined(NT_PPC_VMX) || (defined(HAVE_DECL_NT_PPC_VMX) && HAVE_DECL_NT_PPC_VMX)
+       XLAT(NT_PPC_VMX),
+#endif
+#if defined(NT_PPC_SPE) || (defined(HAVE_DECL_NT_PPC_SPE) && HAVE_DECL_NT_PPC_SPE)
+       XLAT(NT_PPC_SPE),
+#endif
+#if defined(NT_PPC_VSX) || (defined(HAVE_DECL_NT_PPC_VSX) && HAVE_DECL_NT_PPC_VSX)
+       XLAT(NT_PPC_VSX),
+#endif
+#if defined(NT_386_TLS) || (defined(HAVE_DECL_NT_386_TLS) && HAVE_DECL_NT_386_TLS)
+       XLAT(NT_386_TLS),
+#endif
+#if defined(NT_386_IOPERM) || (defined(HAVE_DECL_NT_386_IOPERM) && HAVE_DECL_NT_386_IOPERM)
+       XLAT(NT_386_IOPERM),
+#endif
+#if defined(NT_X86_XSTATE) || (defined(HAVE_DECL_NT_X86_XSTATE) && HAVE_DECL_NT_X86_XSTATE)
+       XLAT(NT_X86_XSTATE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/nt_descriptor_types.in b/xlat/nt_descriptor_types.in
new file mode 100644 (file)
index 0000000..5e47d66
--- /dev/null
@@ -0,0 +1,23 @@
+NT_PRSTATUS
+NT_FPREGSET
+NT_PRPSINFO
+NT_PRXREG
+NT_TASKSTRUCT
+NT_PLATFORM
+NT_AUXV
+NT_GWINDOWS
+NT_ASRS
+NT_PSTATUS
+NT_PSINFO
+NT_PRCRED
+NT_UTSNAME
+NT_LWPSTATUS
+NT_LWPSINFO
+NT_PRFPXREG
+NT_PRXFPREG
+NT_PPC_VMX
+NT_PPC_SPE
+NT_PPC_VSX
+NT_386_TLS
+NT_386_IOPERM
+NT_X86_XSTATE
diff --git a/xlat/open_access_modes.h b/xlat/open_access_modes.h
new file mode 100644 (file)
index 0000000..02deb2e
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/open_access_modes.in; do not edit. */
+
+const struct xlat open_access_modes[] = {
+#if defined(O_RDONLY) || (defined(HAVE_DECL_O_RDONLY) && HAVE_DECL_O_RDONLY)
+       XLAT(O_RDONLY),
+#endif
+#if defined(O_WRONLY) || (defined(HAVE_DECL_O_WRONLY) && HAVE_DECL_O_WRONLY)
+       XLAT(O_WRONLY),
+#endif
+#if defined(O_RDWR) || (defined(HAVE_DECL_O_RDWR) && HAVE_DECL_O_RDWR)
+       XLAT(O_RDWR),
+#endif
+#if defined(O_ACCMODE) || (defined(HAVE_DECL_O_ACCMODE) && HAVE_DECL_O_ACCMODE)
+       XLAT(O_ACCMODE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/open_access_modes.in b/xlat/open_access_modes.in
new file mode 100644 (file)
index 0000000..423a29b
--- /dev/null
@@ -0,0 +1,4 @@
+O_RDONLY
+O_WRONLY
+O_RDWR
+O_ACCMODE
diff --git a/xlat/open_mode_flags.h b/xlat/open_mode_flags.h
new file mode 100644 (file)
index 0000000..8d82a61
--- /dev/null
@@ -0,0 +1,109 @@
+/* Generated by ./xlat/gen.sh from ./xlat/open_mode_flags.in; do not edit. */
+
+const struct xlat open_mode_flags[] = {
+#if defined(O_CREAT) || (defined(HAVE_DECL_O_CREAT) && HAVE_DECL_O_CREAT)
+       XLAT(O_CREAT),
+#endif
+#if defined(O_EXCL) || (defined(HAVE_DECL_O_EXCL) && HAVE_DECL_O_EXCL)
+       XLAT(O_EXCL),
+#endif
+#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
+       XLAT(O_NOCTTY),
+#endif
+#if defined(O_TRUNC) || (defined(HAVE_DECL_O_TRUNC) && HAVE_DECL_O_TRUNC)
+       XLAT(O_TRUNC),
+#endif
+#if defined(O_APPEND) || (defined(HAVE_DECL_O_APPEND) && HAVE_DECL_O_APPEND)
+       XLAT(O_APPEND),
+#endif
+#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
+       XLAT(O_NONBLOCK),
+#endif
+#if defined(O_SYNC) || (defined(HAVE_DECL_O_SYNC) && HAVE_DECL_O_SYNC)
+       XLAT(O_SYNC),
+#endif
+#if defined(O_ASYNC) || (defined(HAVE_DECL_O_ASYNC) && HAVE_DECL_O_ASYNC)
+       XLAT(O_ASYNC),
+#endif
+#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
+       XLAT(O_DSYNC),
+#endif
+#if defined(O_RSYNC) || (defined(HAVE_DECL_O_RSYNC) && HAVE_DECL_O_RSYNC)
+       XLAT(O_RSYNC),
+#endif
+#if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
+#if defined(O_NDELAY) || (defined(HAVE_DECL_O_NDELAY) && HAVE_DECL_O_NDELAY)
+       XLAT(O_NDELAY),
+#endif
+#endif
+#if defined(O_PRIV) || (defined(HAVE_DECL_O_PRIV) && HAVE_DECL_O_PRIV)
+       XLAT(O_PRIV),
+#endif
+#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
+       XLAT(O_DIRECT),
+#endif
+#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
+       XLAT(O_LARGEFILE),
+#endif
+#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
+       XLAT(O_DIRECTORY),
+#endif
+#if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
+       XLAT(O_NOFOLLOW),
+#endif
+#if defined(O_NOATIME) || (defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME)
+       XLAT(O_NOATIME),
+#endif
+#if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
+       XLAT(O_CLOEXEC),
+#endif
+#if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
+       XLAT(O_PATH),
+#endif
+#if defined(FNDELAY) || (defined(HAVE_DECL_FNDELAY) && HAVE_DECL_FNDELAY)
+       XLAT(FNDELAY),
+#endif
+#if defined(FAPPEND) || (defined(HAVE_DECL_FAPPEND) && HAVE_DECL_FAPPEND)
+       XLAT(FAPPEND),
+#endif
+#if defined(FMARK) || (defined(HAVE_DECL_FMARK) && HAVE_DECL_FMARK)
+       XLAT(FMARK),
+#endif
+#if defined(FDEFER) || (defined(HAVE_DECL_FDEFER) && HAVE_DECL_FDEFER)
+       XLAT(FDEFER),
+#endif
+#if defined(FASYNC) || (defined(HAVE_DECL_FASYNC) && HAVE_DECL_FASYNC)
+       XLAT(FASYNC),
+#endif
+#if defined(FSHLOCK) || (defined(HAVE_DECL_FSHLOCK) && HAVE_DECL_FSHLOCK)
+       XLAT(FSHLOCK),
+#endif
+#if defined(FEXLOCK) || (defined(HAVE_DECL_FEXLOCK) && HAVE_DECL_FEXLOCK)
+       XLAT(FEXLOCK),
+#endif
+#if defined(FCREAT) || (defined(HAVE_DECL_FCREAT) && HAVE_DECL_FCREAT)
+       XLAT(FCREAT),
+#endif
+#if defined(FTRUNC) || (defined(HAVE_DECL_FTRUNC) && HAVE_DECL_FTRUNC)
+       XLAT(FTRUNC),
+#endif
+#if defined(FEXCL) || (defined(HAVE_DECL_FEXCL) && HAVE_DECL_FEXCL)
+       XLAT(FEXCL),
+#endif
+#if defined(FNBIO) || (defined(HAVE_DECL_FNBIO) && HAVE_DECL_FNBIO)
+       XLAT(FNBIO),
+#endif
+#if defined(FSYNC) || (defined(HAVE_DECL_FSYNC) && HAVE_DECL_FSYNC)
+       XLAT(FSYNC),
+#endif
+#if defined(FNOCTTY) || (defined(HAVE_DECL_FNOCTTY) && HAVE_DECL_FNOCTTY)
+       XLAT(FNOCTTY),
+#endif
+#if defined(O_SHLOCK) || (defined(HAVE_DECL_O_SHLOCK) && HAVE_DECL_O_SHLOCK)
+       XLAT(O_SHLOCK),
+#endif
+#if defined(O_EXLOCK) || (defined(HAVE_DECL_O_EXLOCK) && HAVE_DECL_O_EXLOCK)
+       XLAT(O_EXLOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/open_mode_flags.in b/xlat/open_mode_flags.in
new file mode 100644 (file)
index 0000000..b323f8b
--- /dev/null
@@ -0,0 +1,36 @@
+O_CREAT
+O_EXCL
+O_NOCTTY
+O_TRUNC
+O_APPEND
+O_NONBLOCK
+O_SYNC
+O_ASYNC
+O_DSYNC
+O_RSYNC
+#if defined(O_NDELAY) && (O_NDELAY != O_NONBLOCK)
+O_NDELAY
+#endif
+O_PRIV
+O_DIRECT
+O_LARGEFILE
+O_DIRECTORY
+O_NOFOLLOW
+O_NOATIME
+O_CLOEXEC
+O_PATH
+FNDELAY
+FAPPEND
+FMARK
+FDEFER
+FASYNC
+FSHLOCK
+FEXLOCK
+FCREAT
+FTRUNC
+FEXCL
+FNBIO
+FSYNC
+FNOCTTY
+O_SHLOCK
+O_EXLOCK
diff --git a/xlat/openmodessol.h b/xlat/openmodessol.h
new file mode 100644 (file)
index 0000000..929c6e1
--- /dev/null
@@ -0,0 +1,19 @@
+/* Generated by ./xlat/gen.sh from ./xlat/openmodessol.in; do not edit. */
+
+static const struct xlat openmodessol[] = {
+{ 0,           "O_RDWR"        },
+{ 1,           "O_RDONLY"      },
+{ 2,           "O_WRONLY"      },
+{ 0x80,                "O_NONBLOCK"    },
+{ 8,           "O_APPEND"      },
+{ 0x100,       "O_CREAT"       },
+{ 0x200,       "O_TRUNC"       },
+{ 0x400,       "O_EXCL"        },
+{ 0x800,       "O_NOCTTY"      },
+{ 0x10,                "O_SYNC"        },
+{ 0x40,                "O_DSYNC"       },
+{ 0x8000,      "O_RSYNC"       },
+{ 4,           "O_NDELAY"      },
+{ 0x1000,      "O_PRIV"        },
+       XLAT_END
+};
diff --git a/xlat/openmodessol.in b/xlat/openmodessol.in
new file mode 100644 (file)
index 0000000..e42af6f
--- /dev/null
@@ -0,0 +1,14 @@
+       { 0,            "O_RDWR"        },
+       { 1,            "O_RDONLY"      },
+       { 2,            "O_WRONLY"      },
+       { 0x80,         "O_NONBLOCK"    },
+       { 8,            "O_APPEND"      },
+       { 0x100,        "O_CREAT"       },
+       { 0x200,        "O_TRUNC"       },
+       { 0x400,        "O_EXCL"        },
+       { 0x800,        "O_NOCTTY"      },
+       { 0x10,         "O_SYNC"        },
+       { 0x40,         "O_DSYNC"       },
+       { 0x8000,       "O_RSYNC"       },
+       { 4,            "O_NDELAY"      },
+       { 0x1000,       "O_PRIV"        },
diff --git a/xlat/perf_event_open_flags.h b/xlat/perf_event_open_flags.h
new file mode 100644 (file)
index 0000000..ee4114c
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/perf_event_open_flags.in; do not edit. */
+
+static const struct xlat perf_event_open_flags[] = {
+#if defined(PERF_FLAG_FD_NO_GROUP) || (defined(HAVE_DECL_PERF_FLAG_FD_NO_GROUP) && HAVE_DECL_PERF_FLAG_FD_NO_GROUP)
+       XLAT(PERF_FLAG_FD_NO_GROUP),
+#endif
+#if defined(PERF_FLAG_FD_OUTPUT) || (defined(HAVE_DECL_PERF_FLAG_FD_OUTPUT) && HAVE_DECL_PERF_FLAG_FD_OUTPUT)
+       XLAT(PERF_FLAG_FD_OUTPUT),
+#endif
+#if defined(PERF_FLAG_PID_CGROUP) || (defined(HAVE_DECL_PERF_FLAG_PID_CGROUP) && HAVE_DECL_PERF_FLAG_PID_CGROUP)
+       XLAT(PERF_FLAG_PID_CGROUP),
+#endif
+       XLAT_END
+};
diff --git a/xlat/perf_event_open_flags.in b/xlat/perf_event_open_flags.in
new file mode 100644 (file)
index 0000000..66aefba
--- /dev/null
@@ -0,0 +1,3 @@
+PERF_FLAG_FD_NO_GROUP
+PERF_FLAG_FD_OUTPUT
+PERF_FLAG_PID_CGROUP
diff --git a/xlat/personality_options.h b/xlat/personality_options.h
new file mode 100644 (file)
index 0000000..cd5379b
--- /dev/null
@@ -0,0 +1,27 @@
+/* Generated by ./xlat/gen.sh from ./xlat/personality_options.in; do not edit. */
+
+static const struct xlat personality_options[] = {
+       XLAT(PER_LINUX),
+       XLAT(PER_LINUX_32BIT),
+       XLAT(PER_LINUX_FDPIC),
+       XLAT(PER_SVR4),
+       XLAT(PER_SVR3),
+       XLAT(PER_SCOSVR3),
+       XLAT(PER_OSR5),
+       XLAT(PER_WYSEV386),
+       XLAT(PER_ISCR4),
+       XLAT(PER_BSD),
+       XLAT(PER_SUNOS),
+       XLAT(PER_XENIX),
+       XLAT(PER_LINUX32),
+       XLAT(PER_LINUX32_3GB),
+       XLAT(PER_IRIX32),
+       XLAT(PER_IRIXN32),
+       XLAT(PER_IRIX64),
+       XLAT(PER_RISCOS),
+       XLAT(PER_SOLARIS),
+       XLAT(PER_UW7),
+       XLAT(PER_OSF4),
+       XLAT(PER_HPUX),
+       XLAT_END
+};
diff --git a/xlat/personality_options.in b/xlat/personality_options.in
new file mode 100644 (file)
index 0000000..6832c65
--- /dev/null
@@ -0,0 +1,23 @@
+#unconditional
+PER_LINUX
+PER_LINUX_32BIT
+PER_LINUX_FDPIC
+PER_SVR4
+PER_SVR3
+PER_SCOSVR3
+PER_OSR5
+PER_WYSEV386
+PER_ISCR4
+PER_BSD
+PER_SUNOS
+PER_XENIX
+PER_LINUX32
+PER_LINUX32_3GB
+PER_IRIX32
+PER_IRIXN32
+PER_IRIX64
+PER_RISCOS
+PER_SOLARIS
+PER_UW7
+PER_OSF4
+PER_HPUX
diff --git a/xlat/pmsgflags.h b/xlat/pmsgflags.h
new file mode 100644 (file)
index 0000000..a10254e
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/pmsgflags.in; do not edit. */
+
+static const struct xlat pmsgflags[] = {
+#if defined(MSG_HIPRI) || (defined(HAVE_DECL_MSG_HIPRI) && HAVE_DECL_MSG_HIPRI)
+       XLAT(MSG_HIPRI),
+#endif
+#if defined(MSG_ANY) || (defined(HAVE_DECL_MSG_ANY) && HAVE_DECL_MSG_ANY)
+       XLAT(MSG_ANY),
+#endif
+#if defined(MSG_BAND) || (defined(HAVE_DECL_MSG_BAND) && HAVE_DECL_MSG_BAND)
+       XLAT(MSG_BAND),
+#endif
+       XLAT_END
+};
diff --git a/xlat/pmsgflags.in b/xlat/pmsgflags.in
new file mode 100644 (file)
index 0000000..cae7c52
--- /dev/null
@@ -0,0 +1,3 @@
+MSG_HIPRI
+MSG_ANY
+MSG_BAND
diff --git a/xlat/policies.h b/xlat/policies.h
new file mode 100644 (file)
index 0000000..d46eafd
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/policies.in; do not edit. */
+
+static const struct xlat policies[] = {
+#if defined(MPOL_DEFAULT) || (defined(HAVE_DECL_MPOL_DEFAULT) && HAVE_DECL_MPOL_DEFAULT)
+       XLAT(MPOL_DEFAULT),
+#endif
+#if defined(MPOL_PREFERRED) || (defined(HAVE_DECL_MPOL_PREFERRED) && HAVE_DECL_MPOL_PREFERRED)
+       XLAT(MPOL_PREFERRED),
+#endif
+#if defined(MPOL_BIND) || (defined(HAVE_DECL_MPOL_BIND) && HAVE_DECL_MPOL_BIND)
+       XLAT(MPOL_BIND),
+#endif
+#if defined(MPOL_INTERLEAVE) || (defined(HAVE_DECL_MPOL_INTERLEAVE) && HAVE_DECL_MPOL_INTERLEAVE)
+       XLAT(MPOL_INTERLEAVE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/policies.in b/xlat/policies.in
new file mode 100644 (file)
index 0000000..22599fd
--- /dev/null
@@ -0,0 +1,4 @@
+MPOL_DEFAULT
+MPOL_PREFERRED
+MPOL_BIND
+MPOL_INTERLEAVE
diff --git a/xlat/pollflags.h b/xlat/pollflags.h
new file mode 100644 (file)
index 0000000..cd1c128
--- /dev/null
@@ -0,0 +1,35 @@
+/* Generated by ./xlat/gen.sh from ./xlat/pollflags.in; do not edit. */
+
+static const struct xlat pollflags[] = {
+#if defined(POLLIN) || (defined(HAVE_DECL_POLLIN) && HAVE_DECL_POLLIN)
+       XLAT(POLLIN),
+#endif
+#if defined(POLLPRI) || (defined(HAVE_DECL_POLLPRI) && HAVE_DECL_POLLPRI)
+       XLAT(POLLPRI),
+#endif
+#if defined(POLLOUT) || (defined(HAVE_DECL_POLLOUT) && HAVE_DECL_POLLOUT)
+       XLAT(POLLOUT),
+#endif
+#if defined(POLLRDNORM) || (defined(HAVE_DECL_POLLRDNORM) && HAVE_DECL_POLLRDNORM)
+       XLAT(POLLRDNORM),
+#endif
+#if defined(POLLWRNORM) || (defined(HAVE_DECL_POLLWRNORM) && HAVE_DECL_POLLWRNORM)
+       XLAT(POLLWRNORM),
+#endif
+#if defined(POLLRDBAND) || (defined(HAVE_DECL_POLLRDBAND) && HAVE_DECL_POLLRDBAND)
+       XLAT(POLLRDBAND),
+#endif
+#if defined(POLLWRBAND) || (defined(HAVE_DECL_POLLWRBAND) && HAVE_DECL_POLLWRBAND)
+       XLAT(POLLWRBAND),
+#endif
+#if defined(POLLERR) || (defined(HAVE_DECL_POLLERR) && HAVE_DECL_POLLERR)
+       XLAT(POLLERR),
+#endif
+#if defined(POLLHUP) || (defined(HAVE_DECL_POLLHUP) && HAVE_DECL_POLLHUP)
+       XLAT(POLLHUP),
+#endif
+#if defined(POLLNVAL) || (defined(HAVE_DECL_POLLNVAL) && HAVE_DECL_POLLNVAL)
+       XLAT(POLLNVAL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/pollflags.in b/xlat/pollflags.in
new file mode 100644 (file)
index 0000000..db41909
--- /dev/null
@@ -0,0 +1,10 @@
+POLLIN
+POLLPRI
+POLLOUT
+POLLRDNORM
+POLLWRNORM
+POLLRDBAND
+POLLWRBAND
+POLLERR
+POLLHUP
+POLLNVAL
diff --git a/xlat/prctl_options.h b/xlat/prctl_options.h
new file mode 100644 (file)
index 0000000..ce5f2d5
--- /dev/null
@@ -0,0 +1,173 @@
+/* Generated by ./xlat/gen.sh from ./xlat/prctl_options.in; do not edit. */
+
+static const struct xlat prctl_options[] = {
+#if defined(PR_MAXPROCS) || (defined(HAVE_DECL_PR_MAXPROCS) && HAVE_DECL_PR_MAXPROCS)
+       XLAT(PR_MAXPROCS),
+#endif
+#if defined(PR_ISBLOCKED) || (defined(HAVE_DECL_PR_ISBLOCKED) && HAVE_DECL_PR_ISBLOCKED)
+       XLAT(PR_ISBLOCKED),
+#endif
+#if defined(PR_SETSTACKSIZE) || (defined(HAVE_DECL_PR_SETSTACKSIZE) && HAVE_DECL_PR_SETSTACKSIZE)
+       XLAT(PR_SETSTACKSIZE),
+#endif
+#if defined(PR_GETSTACKSIZE) || (defined(HAVE_DECL_PR_GETSTACKSIZE) && HAVE_DECL_PR_GETSTACKSIZE)
+       XLAT(PR_GETSTACKSIZE),
+#endif
+#if defined(PR_MAXPPROCS) || (defined(HAVE_DECL_PR_MAXPPROCS) && HAVE_DECL_PR_MAXPPROCS)
+       XLAT(PR_MAXPPROCS),
+#endif
+#if defined(PR_UNBLKONEXEC) || (defined(HAVE_DECL_PR_UNBLKONEXEC) && HAVE_DECL_PR_UNBLKONEXEC)
+       XLAT(PR_UNBLKONEXEC),
+#endif
+#if defined(PR_ATOMICSIM) || (defined(HAVE_DECL_PR_ATOMICSIM) && HAVE_DECL_PR_ATOMICSIM)
+       XLAT(PR_ATOMICSIM),
+#endif
+#if defined(PR_SETEXITSIG) || (defined(HAVE_DECL_PR_SETEXITSIG) && HAVE_DECL_PR_SETEXITSIG)
+       XLAT(PR_SETEXITSIG),
+#endif
+#if defined(PR_RESIDENT) || (defined(HAVE_DECL_PR_RESIDENT) && HAVE_DECL_PR_RESIDENT)
+       XLAT(PR_RESIDENT),
+#endif
+#if defined(PR_ATTACHADDR) || (defined(HAVE_DECL_PR_ATTACHADDR) && HAVE_DECL_PR_ATTACHADDR)
+       XLAT(PR_ATTACHADDR),
+#endif
+#if defined(PR_DETACHADDR) || (defined(HAVE_DECL_PR_DETACHADDR) && HAVE_DECL_PR_DETACHADDR)
+       XLAT(PR_DETACHADDR),
+#endif
+#if defined(PR_TERMCHILD) || (defined(HAVE_DECL_PR_TERMCHILD) && HAVE_DECL_PR_TERMCHILD)
+       XLAT(PR_TERMCHILD),
+#endif
+#if defined(PR_GETSHMASK) || (defined(HAVE_DECL_PR_GETSHMASK) && HAVE_DECL_PR_GETSHMASK)
+       XLAT(PR_GETSHMASK),
+#endif
+#if defined(PR_GETNSHARE) || (defined(HAVE_DECL_PR_GETNSHARE) && HAVE_DECL_PR_GETNSHARE)
+       XLAT(PR_GETNSHARE),
+#endif
+#if defined(PR_COREPID) || (defined(HAVE_DECL_PR_COREPID) && HAVE_DECL_PR_COREPID)
+       XLAT(PR_COREPID),
+#endif
+#if defined(PR_ATTACHADDRPERM) || (defined(HAVE_DECL_PR_ATTACHADDRPERM) && HAVE_DECL_PR_ATTACHADDRPERM)
+       XLAT(PR_ATTACHADDRPERM),
+#endif
+#if defined(PR_PTHREADEXIT) || (defined(HAVE_DECL_PR_PTHREADEXIT) && HAVE_DECL_PR_PTHREADEXIT)
+       XLAT(PR_PTHREADEXIT),
+#endif
+#if defined(PR_SET_PDEATHSIG) || (defined(HAVE_DECL_PR_SET_PDEATHSIG) && HAVE_DECL_PR_SET_PDEATHSIG)
+       XLAT(PR_SET_PDEATHSIG),
+#endif
+#if defined(PR_GET_PDEATHSIG) || (defined(HAVE_DECL_PR_GET_PDEATHSIG) && HAVE_DECL_PR_GET_PDEATHSIG)
+       XLAT(PR_GET_PDEATHSIG),
+#endif
+#if defined(PR_GET_DUMPABLE) || (defined(HAVE_DECL_PR_GET_DUMPABLE) && HAVE_DECL_PR_GET_DUMPABLE)
+       XLAT(PR_GET_DUMPABLE),
+#endif
+#if defined(PR_SET_DUMPABLE) || (defined(HAVE_DECL_PR_SET_DUMPABLE) && HAVE_DECL_PR_SET_DUMPABLE)
+       XLAT(PR_SET_DUMPABLE),
+#endif
+#if defined(PR_GET_UNALIGN) || (defined(HAVE_DECL_PR_GET_UNALIGN) && HAVE_DECL_PR_GET_UNALIGN)
+       XLAT(PR_GET_UNALIGN),
+#endif
+#if defined(PR_SET_UNALIGN) || (defined(HAVE_DECL_PR_SET_UNALIGN) && HAVE_DECL_PR_SET_UNALIGN)
+       XLAT(PR_SET_UNALIGN),
+#endif
+#if defined(PR_GET_KEEPCAPS) || (defined(HAVE_DECL_PR_GET_KEEPCAPS) && HAVE_DECL_PR_GET_KEEPCAPS)
+       XLAT(PR_GET_KEEPCAPS),
+#endif
+#if defined(PR_SET_KEEPCAPS) || (defined(HAVE_DECL_PR_SET_KEEPCAPS) && HAVE_DECL_PR_SET_KEEPCAPS)
+       XLAT(PR_SET_KEEPCAPS),
+#endif
+#if defined(PR_GET_FPEMU) || (defined(HAVE_DECL_PR_GET_FPEMU) && HAVE_DECL_PR_GET_FPEMU)
+       XLAT(PR_GET_FPEMU),
+#endif
+#if defined(PR_SET_FPEMU) || (defined(HAVE_DECL_PR_SET_FPEMU) && HAVE_DECL_PR_SET_FPEMU)
+       XLAT(PR_SET_FPEMU),
+#endif
+#if defined(PR_GET_FPEXC) || (defined(HAVE_DECL_PR_GET_FPEXC) && HAVE_DECL_PR_GET_FPEXC)
+       XLAT(PR_GET_FPEXC),
+#endif
+#if defined(PR_SET_FPEXC) || (defined(HAVE_DECL_PR_SET_FPEXC) && HAVE_DECL_PR_SET_FPEXC)
+       XLAT(PR_SET_FPEXC),
+#endif
+#if defined(PR_GET_TIMING) || (defined(HAVE_DECL_PR_GET_TIMING) && HAVE_DECL_PR_GET_TIMING)
+       XLAT(PR_GET_TIMING),
+#endif
+#if defined(PR_SET_TIMING) || (defined(HAVE_DECL_PR_SET_TIMING) && HAVE_DECL_PR_SET_TIMING)
+       XLAT(PR_SET_TIMING),
+#endif
+#if defined(PR_SET_NAME) || (defined(HAVE_DECL_PR_SET_NAME) && HAVE_DECL_PR_SET_NAME)
+       XLAT(PR_SET_NAME),
+#endif
+#if defined(PR_GET_NAME) || (defined(HAVE_DECL_PR_GET_NAME) && HAVE_DECL_PR_GET_NAME)
+       XLAT(PR_GET_NAME),
+#endif
+#if defined(PR_GET_ENDIAN) || (defined(HAVE_DECL_PR_GET_ENDIAN) && HAVE_DECL_PR_GET_ENDIAN)
+       XLAT(PR_GET_ENDIAN),
+#endif
+#if defined(PR_SET_ENDIAN) || (defined(HAVE_DECL_PR_SET_ENDIAN) && HAVE_DECL_PR_SET_ENDIAN)
+       XLAT(PR_SET_ENDIAN),
+#endif
+#if defined(PR_GET_SECCOMP) || (defined(HAVE_DECL_PR_GET_SECCOMP) && HAVE_DECL_PR_GET_SECCOMP)
+       XLAT(PR_GET_SECCOMP),
+#endif
+#if defined(PR_SET_SECCOMP) || (defined(HAVE_DECL_PR_SET_SECCOMP) && HAVE_DECL_PR_SET_SECCOMP)
+       XLAT(PR_SET_SECCOMP),
+#endif
+#if defined(PR_CAPBSET_READ) || (defined(HAVE_DECL_PR_CAPBSET_READ) && HAVE_DECL_PR_CAPBSET_READ)
+       XLAT(PR_CAPBSET_READ),
+#endif
+#if defined(PR_CAPBSET_DROP) || (defined(HAVE_DECL_PR_CAPBSET_DROP) && HAVE_DECL_PR_CAPBSET_DROP)
+       XLAT(PR_CAPBSET_DROP),
+#endif
+#if defined(PR_GET_TSC) || (defined(HAVE_DECL_PR_GET_TSC) && HAVE_DECL_PR_GET_TSC)
+       XLAT(PR_GET_TSC),
+#endif
+#if defined(PR_SET_TSC) || (defined(HAVE_DECL_PR_SET_TSC) && HAVE_DECL_PR_SET_TSC)
+       XLAT(PR_SET_TSC),
+#endif
+#if defined(PR_GET_SECUREBITS) || (defined(HAVE_DECL_PR_GET_SECUREBITS) && HAVE_DECL_PR_GET_SECUREBITS)
+       XLAT(PR_GET_SECUREBITS),
+#endif
+#if defined(PR_SET_SECUREBITS) || (defined(HAVE_DECL_PR_SET_SECUREBITS) && HAVE_DECL_PR_SET_SECUREBITS)
+       XLAT(PR_SET_SECUREBITS),
+#endif
+#if defined(PR_SET_TIMERSLACK) || (defined(HAVE_DECL_PR_SET_TIMERSLACK) && HAVE_DECL_PR_SET_TIMERSLACK)
+       XLAT(PR_SET_TIMERSLACK),
+#endif
+#if defined(PR_GET_TIMERSLACK) || (defined(HAVE_DECL_PR_GET_TIMERSLACK) && HAVE_DECL_PR_GET_TIMERSLACK)
+       XLAT(PR_GET_TIMERSLACK),
+#endif
+#if defined(PR_TASK_PERF_EVENTS_DISABLE) || (defined(HAVE_DECL_PR_TASK_PERF_EVENTS_DISABLE) && HAVE_DECL_PR_TASK_PERF_EVENTS_DISABLE)
+       XLAT(PR_TASK_PERF_EVENTS_DISABLE),
+#endif
+#if defined(PR_TASK_PERF_EVENTS_ENABLE) || (defined(HAVE_DECL_PR_TASK_PERF_EVENTS_ENABLE) && HAVE_DECL_PR_TASK_PERF_EVENTS_ENABLE)
+       XLAT(PR_TASK_PERF_EVENTS_ENABLE),
+#endif
+#if defined(PR_MCE_KILL) || (defined(HAVE_DECL_PR_MCE_KILL) && HAVE_DECL_PR_MCE_KILL)
+       XLAT(PR_MCE_KILL),
+#endif
+#if defined(PR_MCE_KILL_GET) || (defined(HAVE_DECL_PR_MCE_KILL_GET) && HAVE_DECL_PR_MCE_KILL_GET)
+       XLAT(PR_MCE_KILL_GET),
+#endif
+#if defined(PR_SET_MM) || (defined(HAVE_DECL_PR_SET_MM) && HAVE_DECL_PR_SET_MM)
+       XLAT(PR_SET_MM),
+#endif
+#if defined(PR_SET_PTRACER) || (defined(HAVE_DECL_PR_SET_PTRACER) && HAVE_DECL_PR_SET_PTRACER)
+       XLAT(PR_SET_PTRACER),
+#endif
+#if defined(PR_SET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_SET_CHILD_SUBREAPER) && HAVE_DECL_PR_SET_CHILD_SUBREAPER)
+       XLAT(PR_SET_CHILD_SUBREAPER),
+#endif
+#if defined(PR_GET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_GET_CHILD_SUBREAPER) && HAVE_DECL_PR_GET_CHILD_SUBREAPER)
+       XLAT(PR_GET_CHILD_SUBREAPER),
+#endif
+#if defined(PR_SET_NO_NEW_PRIVS) || (defined(HAVE_DECL_PR_SET_NO_NEW_PRIVS) && HAVE_DECL_PR_SET_NO_NEW_PRIVS)
+       XLAT(PR_SET_NO_NEW_PRIVS),
+#endif
+#if defined(PR_GET_NO_NEW_PRIVS) || (defined(HAVE_DECL_PR_GET_NO_NEW_PRIVS) && HAVE_DECL_PR_GET_NO_NEW_PRIVS)
+       XLAT(PR_GET_NO_NEW_PRIVS),
+#endif
+#if defined(PR_GET_TID_ADDRESS) || (defined(HAVE_DECL_PR_GET_TID_ADDRESS) && HAVE_DECL_PR_GET_TID_ADDRESS)
+       XLAT(PR_GET_TID_ADDRESS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/prctl_options.in b/xlat/prctl_options.in
new file mode 100644 (file)
index 0000000..9eabddd
--- /dev/null
@@ -0,0 +1,56 @@
+PR_MAXPROCS
+PR_ISBLOCKED
+PR_SETSTACKSIZE
+PR_GETSTACKSIZE
+PR_MAXPPROCS
+PR_UNBLKONEXEC
+PR_ATOMICSIM
+PR_SETEXITSIG
+PR_RESIDENT
+PR_ATTACHADDR
+PR_DETACHADDR
+PR_TERMCHILD
+PR_GETSHMASK
+PR_GETNSHARE
+PR_COREPID
+PR_ATTACHADDRPERM
+PR_PTHREADEXIT
+PR_SET_PDEATHSIG
+PR_GET_PDEATHSIG
+PR_GET_DUMPABLE
+PR_SET_DUMPABLE
+PR_GET_UNALIGN
+PR_SET_UNALIGN
+PR_GET_KEEPCAPS
+PR_SET_KEEPCAPS
+PR_GET_FPEMU
+PR_SET_FPEMU
+PR_GET_FPEXC
+PR_SET_FPEXC
+PR_GET_TIMING
+PR_SET_TIMING
+PR_SET_NAME
+PR_GET_NAME
+PR_GET_ENDIAN
+PR_SET_ENDIAN
+PR_GET_SECCOMP
+PR_SET_SECCOMP
+PR_CAPBSET_READ
+PR_CAPBSET_DROP
+PR_GET_TSC
+PR_SET_TSC
+PR_GET_SECUREBITS
+PR_SET_SECUREBITS
+PR_SET_TIMERSLACK
+PR_GET_TIMERSLACK
+PR_TASK_PERF_EVENTS_DISABLE
+PR_TASK_PERF_EVENTS_ENABLE
+PR_MCE_KILL
+PR_MCE_KILL_GET
+PR_SET_MM
+PR_SET_PTRACER
+PR_SET_CHILD_SUBREAPER
+PR_GET_CHILD_SUBREAPER
+PR_SET_NO_NEW_PRIVS
+PR_GET_NO_NEW_PRIVS
+PR_GET_TID_ADDRESS
diff --git a/xlat/priorities.h b/xlat/priorities.h
new file mode 100644 (file)
index 0000000..6d54326
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/priorities.in; do not edit. */
+
+static const struct xlat priorities[] = {
+#if defined(PRIO_PROCESS) || (defined(HAVE_DECL_PRIO_PROCESS) && HAVE_DECL_PRIO_PROCESS)
+       XLAT(PRIO_PROCESS),
+#endif
+#if defined(PRIO_PGRP) || (defined(HAVE_DECL_PRIO_PGRP) && HAVE_DECL_PRIO_PGRP)
+       XLAT(PRIO_PGRP),
+#endif
+#if defined(PRIO_USER) || (defined(HAVE_DECL_PRIO_USER) && HAVE_DECL_PRIO_USER)
+       XLAT(PRIO_USER),
+#endif
+       XLAT_END
+};
diff --git a/xlat/priorities.in b/xlat/priorities.in
new file mode 100644 (file)
index 0000000..d1eaaee
--- /dev/null
@@ -0,0 +1,3 @@
+PRIO_PROCESS
+PRIO_PGRP
+PRIO_USER
diff --git a/xlat/ptp_flags_options.h b/xlat/ptp_flags_options.h
new file mode 100644 (file)
index 0000000..87b3403
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ptp_flags_options.in; do not edit. */
+
+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
+};
diff --git a/xlat/ptp_flags_options.in b/xlat/ptp_flags_options.in
new file mode 100644 (file)
index 0000000..9e65c7d
--- /dev/null
@@ -0,0 +1,3 @@
+PTP_ENABLE_FEATURE
+PTP_RISING_EDGE
+PTP_FALLING_EDGE
diff --git a/xlat/ptrace_cmds.h b/xlat/ptrace_cmds.h
new file mode 100644 (file)
index 0000000..02d6642
--- /dev/null
@@ -0,0 +1,98 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ptrace_cmds.in; do not edit. */
+
+static const struct xlat ptrace_cmds[] = {
+#if defined(PTRACE_TRACEME) || (defined(HAVE_DECL_PTRACE_TRACEME) && HAVE_DECL_PTRACE_TRACEME)
+       XLAT(PTRACE_TRACEME),
+#endif
+#if defined(PTRACE_PEEKTEXT) || (defined(HAVE_DECL_PTRACE_PEEKTEXT) && HAVE_DECL_PTRACE_PEEKTEXT)
+       XLAT(PTRACE_PEEKTEXT),
+#endif
+#if defined(PTRACE_PEEKDATA) || (defined(HAVE_DECL_PTRACE_PEEKDATA) && HAVE_DECL_PTRACE_PEEKDATA)
+       XLAT(PTRACE_PEEKDATA),
+#endif
+#if defined(PTRACE_PEEKUSER) || (defined(HAVE_DECL_PTRACE_PEEKUSER) && HAVE_DECL_PTRACE_PEEKUSER)
+       XLAT(PTRACE_PEEKUSER),
+#endif
+#if defined(PTRACE_POKETEXT) || (defined(HAVE_DECL_PTRACE_POKETEXT) && HAVE_DECL_PTRACE_POKETEXT)
+       XLAT(PTRACE_POKETEXT),
+#endif
+#if defined(PTRACE_POKEDATA) || (defined(HAVE_DECL_PTRACE_POKEDATA) && HAVE_DECL_PTRACE_POKEDATA)
+       XLAT(PTRACE_POKEDATA),
+#endif
+#if defined(PTRACE_POKEUSER) || (defined(HAVE_DECL_PTRACE_POKEUSER) && HAVE_DECL_PTRACE_POKEUSER)
+       XLAT(PTRACE_POKEUSER),
+#endif
+#if defined(PTRACE_CONT) || (defined(HAVE_DECL_PTRACE_CONT) && HAVE_DECL_PTRACE_CONT)
+       XLAT(PTRACE_CONT),
+#endif
+#if defined(PTRACE_KILL) || (defined(HAVE_DECL_PTRACE_KILL) && HAVE_DECL_PTRACE_KILL)
+       XLAT(PTRACE_KILL),
+#endif
+#if defined(PTRACE_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SINGLESTEP) && HAVE_DECL_PTRACE_SINGLESTEP)
+       XLAT(PTRACE_SINGLESTEP),
+#endif
+#if defined(PTRACE_ATTACH) || (defined(HAVE_DECL_PTRACE_ATTACH) && HAVE_DECL_PTRACE_ATTACH)
+       XLAT(PTRACE_ATTACH),
+#endif
+#if defined(PTRACE_DETACH) || (defined(HAVE_DECL_PTRACE_DETACH) && HAVE_DECL_PTRACE_DETACH)
+       XLAT(PTRACE_DETACH),
+#endif
+#if defined(PTRACE_GETREGS) || (defined(HAVE_DECL_PTRACE_GETREGS) && HAVE_DECL_PTRACE_GETREGS)
+       XLAT(PTRACE_GETREGS),
+#endif
+#if defined(PTRACE_SETREGS) || (defined(HAVE_DECL_PTRACE_SETREGS) && HAVE_DECL_PTRACE_SETREGS)
+       XLAT(PTRACE_SETREGS),
+#endif
+#if defined(PTRACE_GETFPREGS) || (defined(HAVE_DECL_PTRACE_GETFPREGS) && HAVE_DECL_PTRACE_GETFPREGS)
+       XLAT(PTRACE_GETFPREGS),
+#endif
+#if defined(PTRACE_SETFPREGS) || (defined(HAVE_DECL_PTRACE_SETFPREGS) && HAVE_DECL_PTRACE_SETFPREGS)
+       XLAT(PTRACE_SETFPREGS),
+#endif
+#if defined(PTRACE_GETFPXREGS) || (defined(HAVE_DECL_PTRACE_GETFPXREGS) && HAVE_DECL_PTRACE_GETFPXREGS)
+       XLAT(PTRACE_GETFPXREGS),
+#endif
+#if defined(PTRACE_SETFPXREGS) || (defined(HAVE_DECL_PTRACE_SETFPXREGS) && HAVE_DECL_PTRACE_SETFPXREGS)
+       XLAT(PTRACE_SETFPXREGS),
+#endif
+#if defined(PTRACE_GETVRREGS) || (defined(HAVE_DECL_PTRACE_GETVRREGS) && HAVE_DECL_PTRACE_GETVRREGS)
+       XLAT(PTRACE_GETVRREGS),
+#endif
+#if defined(PTRACE_SETVRREGS) || (defined(HAVE_DECL_PTRACE_SETVRREGS) && HAVE_DECL_PTRACE_SETVRREGS)
+       XLAT(PTRACE_SETVRREGS),
+#endif
+#if defined(PTRACE_SETOPTIONS) || (defined(HAVE_DECL_PTRACE_SETOPTIONS) && HAVE_DECL_PTRACE_SETOPTIONS)
+       XLAT(PTRACE_SETOPTIONS),
+#endif
+#if defined(PTRACE_GETEVENTMSG) || (defined(HAVE_DECL_PTRACE_GETEVENTMSG) && HAVE_DECL_PTRACE_GETEVENTMSG)
+       XLAT(PTRACE_GETEVENTMSG),
+#endif
+#if defined(PTRACE_GETSIGINFO) || (defined(HAVE_DECL_PTRACE_GETSIGINFO) && HAVE_DECL_PTRACE_GETSIGINFO)
+       XLAT(PTRACE_GETSIGINFO),
+#endif
+#if defined(PTRACE_SETSIGINFO) || (defined(HAVE_DECL_PTRACE_SETSIGINFO) && HAVE_DECL_PTRACE_SETSIGINFO)
+       XLAT(PTRACE_SETSIGINFO),
+#endif
+#if defined(PTRACE_GETREGSET) || (defined(HAVE_DECL_PTRACE_GETREGSET) && HAVE_DECL_PTRACE_GETREGSET)
+       XLAT(PTRACE_GETREGSET),
+#endif
+#if defined(PTRACE_SETREGSET) || (defined(HAVE_DECL_PTRACE_SETREGSET) && HAVE_DECL_PTRACE_SETREGSET)
+       XLAT(PTRACE_SETREGSET),
+#endif
+#if defined(PTRACE_SET_SYSCALL) || (defined(HAVE_DECL_PTRACE_SET_SYSCALL) && HAVE_DECL_PTRACE_SET_SYSCALL)
+       XLAT(PTRACE_SET_SYSCALL),
+#endif
+#if defined(PTRACE_SEIZE) || (defined(HAVE_DECL_PTRACE_SEIZE) && HAVE_DECL_PTRACE_SEIZE)
+       XLAT(PTRACE_SEIZE),
+#endif
+#if defined(PTRACE_INTERRUPT) || (defined(HAVE_DECL_PTRACE_INTERRUPT) && HAVE_DECL_PTRACE_INTERRUPT)
+       XLAT(PTRACE_INTERRUPT),
+#endif
+#if defined(PTRACE_LISTEN) || (defined(HAVE_DECL_PTRACE_LISTEN) && HAVE_DECL_PTRACE_LISTEN)
+       XLAT(PTRACE_LISTEN),
+#endif
+#if defined(PTRACE_SYSCALL) || (defined(HAVE_DECL_PTRACE_SYSCALL) && HAVE_DECL_PTRACE_SYSCALL)
+       XLAT(PTRACE_SYSCALL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/ptrace_cmds.in b/xlat/ptrace_cmds.in
new file mode 100644 (file)
index 0000000..bf11ea4
--- /dev/null
@@ -0,0 +1,31 @@
+PTRACE_TRACEME
+PTRACE_PEEKTEXT
+PTRACE_PEEKDATA
+PTRACE_PEEKUSER
+PTRACE_POKETEXT
+PTRACE_POKEDATA
+PTRACE_POKEUSER
+PTRACE_CONT
+PTRACE_KILL
+PTRACE_SINGLESTEP
+PTRACE_ATTACH
+PTRACE_DETACH
+PTRACE_GETREGS
+PTRACE_SETREGS
+PTRACE_GETFPREGS
+PTRACE_SETFPREGS
+PTRACE_GETFPXREGS
+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_SYSCALL
diff --git a/xlat/ptrace_setoptions_flags.h b/xlat/ptrace_setoptions_flags.h
new file mode 100644 (file)
index 0000000..9ea554e
--- /dev/null
@@ -0,0 +1,32 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ptrace_setoptions_flags.in; do not edit. */
+
+static const struct xlat ptrace_setoptions_flags[] = {
+#if defined(PTRACE_O_TRACESYSGOOD) || (defined(HAVE_DECL_PTRACE_O_TRACESYSGOOD) && HAVE_DECL_PTRACE_O_TRACESYSGOOD)
+       XLAT(PTRACE_O_TRACESYSGOOD),
+#endif
+#if defined(PTRACE_O_TRACEFORK) || (defined(HAVE_DECL_PTRACE_O_TRACEFORK) && HAVE_DECL_PTRACE_O_TRACEFORK)
+       XLAT(PTRACE_O_TRACEFORK),
+#endif
+#if defined(PTRACE_O_TRACEVFORK) || (defined(HAVE_DECL_PTRACE_O_TRACEVFORK) && HAVE_DECL_PTRACE_O_TRACEVFORK)
+       XLAT(PTRACE_O_TRACEVFORK),
+#endif
+#if defined(PTRACE_O_TRACECLONE) || (defined(HAVE_DECL_PTRACE_O_TRACECLONE) && HAVE_DECL_PTRACE_O_TRACECLONE)
+       XLAT(PTRACE_O_TRACECLONE),
+#endif
+#if defined(PTRACE_O_TRACEEXEC) || (defined(HAVE_DECL_PTRACE_O_TRACEEXEC) && HAVE_DECL_PTRACE_O_TRACEEXEC)
+       XLAT(PTRACE_O_TRACEEXEC),
+#endif
+#if defined(PTRACE_O_TRACEVFORKDONE) || (defined(HAVE_DECL_PTRACE_O_TRACEVFORKDONE) && HAVE_DECL_PTRACE_O_TRACEVFORKDONE)
+       XLAT(PTRACE_O_TRACEVFORKDONE),
+#endif
+#if defined(PTRACE_O_TRACEEXIT) || (defined(HAVE_DECL_PTRACE_O_TRACEEXIT) && HAVE_DECL_PTRACE_O_TRACEEXIT)
+       XLAT(PTRACE_O_TRACEEXIT),
+#endif
+#if defined(PTRACE_O_TRACESECCOMP) || (defined(HAVE_DECL_PTRACE_O_TRACESECCOMP) && HAVE_DECL_PTRACE_O_TRACESECCOMP)
+       XLAT(PTRACE_O_TRACESECCOMP),
+#endif
+#if defined(PTRACE_O_EXITKILL) || (defined(HAVE_DECL_PTRACE_O_EXITKILL) && HAVE_DECL_PTRACE_O_EXITKILL)
+       XLAT(PTRACE_O_EXITKILL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/ptrace_setoptions_flags.in b/xlat/ptrace_setoptions_flags.in
new file mode 100644 (file)
index 0000000..d8cfa2f
--- /dev/null
@@ -0,0 +1,9 @@
+PTRACE_O_TRACESYSGOOD
+PTRACE_O_TRACEFORK
+PTRACE_O_TRACEVFORK
+PTRACE_O_TRACECLONE
+PTRACE_O_TRACEEXEC
+PTRACE_O_TRACEVFORKDONE
+PTRACE_O_TRACEEXIT
+PTRACE_O_TRACESECCOMP
+PTRACE_O_EXITKILL
diff --git a/xlat/qm_which.h b/xlat/qm_which.h
new file mode 100644 (file)
index 0000000..8de83b9
--- /dev/null
@@ -0,0 +1,21 @@
+/* Generated by ./xlat/gen.sh from ./xlat/qm_which.in; do not edit. */
+
+static const struct xlat qm_which[] = {
+       XLAT(0),
+#if defined(QM_MODULES) || (defined(HAVE_DECL_QM_MODULES) && HAVE_DECL_QM_MODULES)
+       XLAT(QM_MODULES),
+#endif
+#if defined(QM_DEPS) || (defined(HAVE_DECL_QM_DEPS) && HAVE_DECL_QM_DEPS)
+       XLAT(QM_DEPS),
+#endif
+#if defined(QM_REFS) || (defined(HAVE_DECL_QM_REFS) && HAVE_DECL_QM_REFS)
+       XLAT(QM_REFS),
+#endif
+#if defined(QM_SYMBOLS) || (defined(HAVE_DECL_QM_SYMBOLS) && HAVE_DECL_QM_SYMBOLS)
+       XLAT(QM_SYMBOLS),
+#endif
+#if defined(QM_INFO) || (defined(HAVE_DECL_QM_INFO) && HAVE_DECL_QM_INFO)
+       XLAT(QM_INFO),
+#endif
+       XLAT_END
+};
diff --git a/xlat/qm_which.in b/xlat/qm_which.in
new file mode 100644 (file)
index 0000000..b032554
--- /dev/null
@@ -0,0 +1,6 @@
+0
+QM_MODULES
+QM_DEPS
+QM_REFS
+QM_SYMBOLS
+QM_INFO
diff --git a/xlat/quota_formats.h b/xlat/quota_formats.h
new file mode 100644 (file)
index 0000000..998dffc
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/quota_formats.in; do not edit. */
+
+static const struct xlat quota_formats[] = {
+#if defined(QFMT_VFS_OLD) || (defined(HAVE_DECL_QFMT_VFS_OLD) && HAVE_DECL_QFMT_VFS_OLD)
+       XLAT(QFMT_VFS_OLD),
+#endif
+#if defined(QFMT_VFS_V0) || (defined(HAVE_DECL_QFMT_VFS_V0) && HAVE_DECL_QFMT_VFS_V0)
+       XLAT(QFMT_VFS_V0),
+#endif
+       XLAT_END
+};
diff --git a/xlat/quota_formats.in b/xlat/quota_formats.in
new file mode 100644 (file)
index 0000000..c02687d
--- /dev/null
@@ -0,0 +1,2 @@
+QFMT_VFS_OLD
+QFMT_VFS_V0
diff --git a/xlat/quotacmds.h b/xlat/quotacmds.h
new file mode 100644 (file)
index 0000000..7511402
--- /dev/null
@@ -0,0 +1,101 @@
+/* Generated by ./xlat/gen.sh from ./xlat/quotacmds.in; do not edit. */
+
+static const struct xlat quotacmds[] = {
+#if defined(Q_V1_QUOTAON) || (defined(HAVE_DECL_Q_V1_QUOTAON) && HAVE_DECL_Q_V1_QUOTAON)
+       XLAT(Q_V1_QUOTAON),
+#endif
+#if defined(Q_V1_QUOTAOFF) || (defined(HAVE_DECL_Q_V1_QUOTAOFF) && HAVE_DECL_Q_V1_QUOTAOFF)
+       XLAT(Q_V1_QUOTAOFF),
+#endif
+#if defined(Q_V1_GETQUOTA) || (defined(HAVE_DECL_Q_V1_GETQUOTA) && HAVE_DECL_Q_V1_GETQUOTA)
+       XLAT(Q_V1_GETQUOTA),
+#endif
+#if defined(Q_V1_SETQUOTA) || (defined(HAVE_DECL_Q_V1_SETQUOTA) && HAVE_DECL_Q_V1_SETQUOTA)
+       XLAT(Q_V1_SETQUOTA),
+#endif
+#if defined(Q_V1_SETUSE) || (defined(HAVE_DECL_Q_V1_SETUSE) && HAVE_DECL_Q_V1_SETUSE)
+       XLAT(Q_V1_SETUSE),
+#endif
+#if defined(Q_V1_SYNC) || (defined(HAVE_DECL_Q_V1_SYNC) && HAVE_DECL_Q_V1_SYNC)
+       XLAT(Q_V1_SYNC),
+#endif
+#if defined(Q_SETQLIM) || (defined(HAVE_DECL_Q_SETQLIM) && HAVE_DECL_Q_SETQLIM)
+       XLAT(Q_SETQLIM),
+#endif
+#if defined(Q_V1_GETSTATS) || (defined(HAVE_DECL_Q_V1_GETSTATS) && HAVE_DECL_Q_V1_GETSTATS)
+       XLAT(Q_V1_GETSTATS),
+#endif
+#if defined(Q_V1_RSQUASH) || (defined(HAVE_DECL_Q_V1_RSQUASH) && HAVE_DECL_Q_V1_RSQUASH)
+       XLAT(Q_V1_RSQUASH),
+#endif
+#if defined(Q_V2_GETQUOTA) || (defined(HAVE_DECL_Q_V2_GETQUOTA) && HAVE_DECL_Q_V2_GETQUOTA)
+       XLAT(Q_V2_GETQUOTA),
+#endif
+#if defined(Q_V2_SETQUOTA) || (defined(HAVE_DECL_Q_V2_SETQUOTA) && HAVE_DECL_Q_V2_SETQUOTA)
+       XLAT(Q_V2_SETQUOTA),
+#endif
+#if defined(Q_V2_SETUSE) || (defined(HAVE_DECL_Q_V2_SETUSE) && HAVE_DECL_Q_V2_SETUSE)
+       XLAT(Q_V2_SETUSE),
+#endif
+#if defined(Q_V2_GETINFO) || (defined(HAVE_DECL_Q_V2_GETINFO) && HAVE_DECL_Q_V2_GETINFO)
+       XLAT(Q_V2_GETINFO),
+#endif
+#if defined(Q_V2_SETINFO) || (defined(HAVE_DECL_Q_V2_SETINFO) && HAVE_DECL_Q_V2_SETINFO)
+       XLAT(Q_V2_SETINFO),
+#endif
+#if defined(Q_V2_SETGRACE) || (defined(HAVE_DECL_Q_V2_SETGRACE) && HAVE_DECL_Q_V2_SETGRACE)
+       XLAT(Q_V2_SETGRACE),
+#endif
+#if defined(Q_V2_SETFLAGS) || (defined(HAVE_DECL_Q_V2_SETFLAGS) && HAVE_DECL_Q_V2_SETFLAGS)
+       XLAT(Q_V2_SETFLAGS),
+#endif
+#if defined(Q_V2_GETSTATS) || (defined(HAVE_DECL_Q_V2_GETSTATS) && HAVE_DECL_Q_V2_GETSTATS)
+       XLAT(Q_V2_GETSTATS),
+#endif
+#if defined(Q_SYNC) || (defined(HAVE_DECL_Q_SYNC) && HAVE_DECL_Q_SYNC)
+       XLAT(Q_SYNC),
+#endif
+#if defined(Q_QUOTAON) || (defined(HAVE_DECL_Q_QUOTAON) && HAVE_DECL_Q_QUOTAON)
+       XLAT(Q_QUOTAON),
+#endif
+#if defined(Q_QUOTAOFF) || (defined(HAVE_DECL_Q_QUOTAOFF) && HAVE_DECL_Q_QUOTAOFF)
+       XLAT(Q_QUOTAOFF),
+#endif
+#if defined(Q_GETFMT) || (defined(HAVE_DECL_Q_GETFMT) && HAVE_DECL_Q_GETFMT)
+       XLAT(Q_GETFMT),
+#endif
+#if defined(Q_GETINFO) || (defined(HAVE_DECL_Q_GETINFO) && HAVE_DECL_Q_GETINFO)
+       XLAT(Q_GETINFO),
+#endif
+#if defined(Q_SETINFO) || (defined(HAVE_DECL_Q_SETINFO) && HAVE_DECL_Q_SETINFO)
+       XLAT(Q_SETINFO),
+#endif
+#if defined(Q_GETQUOTA) || (defined(HAVE_DECL_Q_GETQUOTA) && HAVE_DECL_Q_GETQUOTA)
+       XLAT(Q_GETQUOTA),
+#endif
+#if defined(Q_SETQUOTA) || (defined(HAVE_DECL_Q_SETQUOTA) && HAVE_DECL_Q_SETQUOTA)
+       XLAT(Q_SETQUOTA),
+#endif
+#if defined(Q_XQUOTAON) || (defined(HAVE_DECL_Q_XQUOTAON) && HAVE_DECL_Q_XQUOTAON)
+       XLAT(Q_XQUOTAON),
+#endif
+#if defined(Q_XQUOTAOFF) || (defined(HAVE_DECL_Q_XQUOTAOFF) && HAVE_DECL_Q_XQUOTAOFF)
+       XLAT(Q_XQUOTAOFF),
+#endif
+#if defined(Q_XGETQUOTA) || (defined(HAVE_DECL_Q_XGETQUOTA) && HAVE_DECL_Q_XGETQUOTA)
+       XLAT(Q_XGETQUOTA),
+#endif
+#if defined(Q_XSETQLIM) || (defined(HAVE_DECL_Q_XSETQLIM) && HAVE_DECL_Q_XSETQLIM)
+       XLAT(Q_XSETQLIM),
+#endif
+#if defined(Q_XGETQSTAT) || (defined(HAVE_DECL_Q_XGETQSTAT) && HAVE_DECL_Q_XGETQSTAT)
+       XLAT(Q_XGETQSTAT),
+#endif
+#if defined(Q_XQUOTARM) || (defined(HAVE_DECL_Q_XQUOTARM) && HAVE_DECL_Q_XQUOTARM)
+       XLAT(Q_XQUOTARM),
+#endif
+#if defined(Q_XQUOTASYNC) || (defined(HAVE_DECL_Q_XQUOTASYNC) && HAVE_DECL_Q_XQUOTASYNC)
+       XLAT(Q_XQUOTASYNC),
+#endif
+       XLAT_END
+};
diff --git a/xlat/quotacmds.in b/xlat/quotacmds.in
new file mode 100644 (file)
index 0000000..bb5de01
--- /dev/null
@@ -0,0 +1,32 @@
+Q_V1_QUOTAON
+Q_V1_QUOTAOFF
+Q_V1_GETQUOTA
+Q_V1_SETQUOTA
+Q_V1_SETUSE
+Q_V1_SYNC
+Q_SETQLIM
+Q_V1_GETSTATS
+Q_V1_RSQUASH
+Q_V2_GETQUOTA
+Q_V2_SETQUOTA
+Q_V2_SETUSE
+Q_V2_GETINFO
+Q_V2_SETINFO
+Q_V2_SETGRACE
+Q_V2_SETFLAGS
+Q_V2_GETSTATS
+Q_SYNC
+Q_QUOTAON
+Q_QUOTAOFF
+Q_GETFMT
+Q_GETINFO
+Q_SETINFO
+Q_GETQUOTA
+Q_SETQUOTA
+Q_XQUOTAON
+Q_XQUOTAOFF
+Q_XGETQUOTA
+Q_XSETQLIM
+Q_XGETQSTAT
+Q_XQUOTARM
+Q_XQUOTASYNC
diff --git a/xlat/quotatypes.h b/xlat/quotatypes.h
new file mode 100644 (file)
index 0000000..be93ed6
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/quotatypes.in; do not edit. */
+
+static const struct xlat quotatypes[] = {
+#if defined(USRQUOTA) || (defined(HAVE_DECL_USRQUOTA) && HAVE_DECL_USRQUOTA)
+       XLAT(USRQUOTA),
+#endif
+#if defined(GRPQUOTA) || (defined(HAVE_DECL_GRPQUOTA) && HAVE_DECL_GRPQUOTA)
+       XLAT(GRPQUOTA),
+#endif
+       XLAT_END
+};
diff --git a/xlat/quotatypes.in b/xlat/quotatypes.in
new file mode 100644 (file)
index 0000000..26e77bd
--- /dev/null
@@ -0,0 +1,2 @@
+USRQUOTA
+GRPQUOTA
diff --git a/xlat/rename_flags.h b/xlat/rename_flags.h
new file mode 100644 (file)
index 0000000..cc23575
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rename_flags.in; do not edit. */
+
+static const struct xlat rename_flags[] = {
+#if defined(RENAME_NOREPLACE) || (defined(HAVE_DECL_RENAME_NOREPLACE) && HAVE_DECL_RENAME_NOREPLACE)
+       XLAT(RENAME_NOREPLACE),
+#endif
+#if defined(RENAME_EXCHANGE) || (defined(HAVE_DECL_RENAME_EXCHANGE) && HAVE_DECL_RENAME_EXCHANGE)
+       XLAT(RENAME_EXCHANGE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/rename_flags.in b/xlat/rename_flags.in
new file mode 100644 (file)
index 0000000..324bded
--- /dev/null
@@ -0,0 +1,2 @@
+RENAME_NOREPLACE
+RENAME_EXCHANGE
diff --git a/xlat/resource_flags.h b/xlat/resource_flags.h
new file mode 100644 (file)
index 0000000..1df440d
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/resource_flags.in; do not edit. */
+
+static const struct xlat 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(IPC_NOWAIT) || (defined(HAVE_DECL_IPC_NOWAIT) && HAVE_DECL_IPC_NOWAIT)
+       XLAT(IPC_NOWAIT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/resource_flags.in b/xlat/resource_flags.in
new file mode 100644 (file)
index 0000000..e7ce9c6
--- /dev/null
@@ -0,0 +1,3 @@
+IPC_CREAT
+IPC_EXCL
+IPC_NOWAIT
diff --git a/xlat/resources.h b/xlat/resources.h
new file mode 100644 (file)
index 0000000..95a5fdb
--- /dev/null
@@ -0,0 +1,56 @@
+/* Generated by ./xlat/gen.sh from ./xlat/resources.in; do not edit. */
+
+static const struct xlat resources[] = {
+#if defined(RLIMIT_AS) || (defined(HAVE_DECL_RLIMIT_AS) && HAVE_DECL_RLIMIT_AS)
+       XLAT(RLIMIT_AS),
+#endif
+#if defined(RLIMIT_CORE) || (defined(HAVE_DECL_RLIMIT_CORE) && HAVE_DECL_RLIMIT_CORE)
+       XLAT(RLIMIT_CORE),
+#endif
+#if defined(RLIMIT_CPU) || (defined(HAVE_DECL_RLIMIT_CPU) && HAVE_DECL_RLIMIT_CPU)
+       XLAT(RLIMIT_CPU),
+#endif
+#if defined(RLIMIT_DATA) || (defined(HAVE_DECL_RLIMIT_DATA) && HAVE_DECL_RLIMIT_DATA)
+       XLAT(RLIMIT_DATA),
+#endif
+#if defined(RLIMIT_FSIZE) || (defined(HAVE_DECL_RLIMIT_FSIZE) && HAVE_DECL_RLIMIT_FSIZE)
+       XLAT(RLIMIT_FSIZE),
+#endif
+#if defined(RLIMIT_LOCKS) || (defined(HAVE_DECL_RLIMIT_LOCKS) && HAVE_DECL_RLIMIT_LOCKS)
+       XLAT(RLIMIT_LOCKS),
+#endif
+#if defined(RLIMIT_MEMLOCK) || (defined(HAVE_DECL_RLIMIT_MEMLOCK) && HAVE_DECL_RLIMIT_MEMLOCK)
+       XLAT(RLIMIT_MEMLOCK),
+#endif
+#if defined(RLIMIT_MSGQUEUE) || (defined(HAVE_DECL_RLIMIT_MSGQUEUE) && HAVE_DECL_RLIMIT_MSGQUEUE)
+       XLAT(RLIMIT_MSGQUEUE),
+#endif
+#if defined(RLIMIT_NICE) || (defined(HAVE_DECL_RLIMIT_NICE) && HAVE_DECL_RLIMIT_NICE)
+       XLAT(RLIMIT_NICE),
+#endif
+#if defined(RLIMIT_NOFILE) || (defined(HAVE_DECL_RLIMIT_NOFILE) && HAVE_DECL_RLIMIT_NOFILE)
+       XLAT(RLIMIT_NOFILE),
+#endif
+#if defined(RLIMIT_NPROC) || (defined(HAVE_DECL_RLIMIT_NPROC) && HAVE_DECL_RLIMIT_NPROC)
+       XLAT(RLIMIT_NPROC),
+#endif
+#if defined(RLIMIT_RSS) || (defined(HAVE_DECL_RLIMIT_RSS) && HAVE_DECL_RLIMIT_RSS)
+       XLAT(RLIMIT_RSS),
+#endif
+#if defined(RLIMIT_RTPRIO) || (defined(HAVE_DECL_RLIMIT_RTPRIO) && HAVE_DECL_RLIMIT_RTPRIO)
+       XLAT(RLIMIT_RTPRIO),
+#endif
+#if defined(RLIMIT_RTTIME) || (defined(HAVE_DECL_RLIMIT_RTTIME) && HAVE_DECL_RLIMIT_RTTIME)
+       XLAT(RLIMIT_RTTIME),
+#endif
+#if defined(RLIMIT_SIGPENDING) || (defined(HAVE_DECL_RLIMIT_SIGPENDING) && HAVE_DECL_RLIMIT_SIGPENDING)
+       XLAT(RLIMIT_SIGPENDING),
+#endif
+#if defined(RLIMIT_STACK) || (defined(HAVE_DECL_RLIMIT_STACK) && HAVE_DECL_RLIMIT_STACK)
+       XLAT(RLIMIT_STACK),
+#endif
+#if defined(RLIMIT_VMEM) || (defined(HAVE_DECL_RLIMIT_VMEM) && HAVE_DECL_RLIMIT_VMEM)
+       XLAT(RLIMIT_VMEM),
+#endif
+       XLAT_END
+};
diff --git a/xlat/resources.in b/xlat/resources.in
new file mode 100644 (file)
index 0000000..8c45b7f
--- /dev/null
@@ -0,0 +1,17 @@
+RLIMIT_AS
+RLIMIT_CORE
+RLIMIT_CPU
+RLIMIT_DATA
+RLIMIT_FSIZE
+RLIMIT_LOCKS
+RLIMIT_MEMLOCK
+RLIMIT_MSGQUEUE
+RLIMIT_NICE
+RLIMIT_NOFILE
+RLIMIT_NPROC
+RLIMIT_RSS
+RLIMIT_RTPRIO
+RLIMIT_RTTIME
+RLIMIT_SIGPENDING
+RLIMIT_STACK
+RLIMIT_VMEM
diff --git a/xlat/schedulers.h b/xlat/schedulers.h
new file mode 100644 (file)
index 0000000..20871a4
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/schedulers.in; do not edit. */
+
+static const struct xlat schedulers[] = {
+#if defined(SCHED_OTHER) || (defined(HAVE_DECL_SCHED_OTHER) && HAVE_DECL_SCHED_OTHER)
+       XLAT(SCHED_OTHER),
+#endif
+#if defined(SCHED_RR) || (defined(HAVE_DECL_SCHED_RR) && HAVE_DECL_SCHED_RR)
+       XLAT(SCHED_RR),
+#endif
+#if defined(SCHED_FIFO) || (defined(HAVE_DECL_SCHED_FIFO) && HAVE_DECL_SCHED_FIFO)
+       XLAT(SCHED_FIFO),
+#endif
+       XLAT_END
+};
diff --git a/xlat/schedulers.in b/xlat/schedulers.in
new file mode 100644 (file)
index 0000000..f8718f4
--- /dev/null
@@ -0,0 +1,3 @@
+SCHED_OTHER
+SCHED_RR
+SCHED_FIFO
diff --git a/xlat/scmvals.h b/xlat/scmvals.h
new file mode 100644 (file)
index 0000000..ba4629a
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/scmvals.in; do not edit. */
+
+static const struct xlat scmvals[] = {
+#if defined(SCM_RIGHTS) || (defined(HAVE_DECL_SCM_RIGHTS) && HAVE_DECL_SCM_RIGHTS)
+       XLAT(SCM_RIGHTS),
+#endif
+#if defined(SCM_CREDENTIALS) || (defined(HAVE_DECL_SCM_CREDENTIALS) && HAVE_DECL_SCM_CREDENTIALS)
+       XLAT(SCM_CREDENTIALS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/scmvals.in b/xlat/scmvals.in
new file mode 100644 (file)
index 0000000..04322e8
--- /dev/null
@@ -0,0 +1,2 @@
+SCM_RIGHTS
+SCM_CREDENTIALS
diff --git a/xlat/semctl_flags.h b/xlat/semctl_flags.h
new file mode 100644 (file)
index 0000000..e902008
--- /dev/null
@@ -0,0 +1,44 @@
+/* Generated by ./xlat/gen.sh from ./xlat/semctl_flags.in; do not edit. */
+
+static const struct xlat semctl_flags[] = {
+#if defined(IPC_RMID) || (defined(HAVE_DECL_IPC_RMID) && HAVE_DECL_IPC_RMID)
+       XLAT(IPC_RMID),
+#endif
+#if defined(IPC_SET) || (defined(HAVE_DECL_IPC_SET) && HAVE_DECL_IPC_SET)
+       XLAT(IPC_SET),
+#endif
+#if defined(IPC_STAT) || (defined(HAVE_DECL_IPC_STAT) && HAVE_DECL_IPC_STAT)
+       XLAT(IPC_STAT),
+#endif
+#if defined(IPC_INFO) || (defined(HAVE_DECL_IPC_INFO) && HAVE_DECL_IPC_INFO)
+       XLAT(IPC_INFO),
+#endif
+#if defined(SEM_STAT) || (defined(HAVE_DECL_SEM_STAT) && HAVE_DECL_SEM_STAT)
+       XLAT(SEM_STAT),
+#endif
+#if defined(SEM_INFO) || (defined(HAVE_DECL_SEM_INFO) && HAVE_DECL_SEM_INFO)
+       XLAT(SEM_INFO),
+#endif
+#if defined(GETPID) || (defined(HAVE_DECL_GETPID) && HAVE_DECL_GETPID)
+       XLAT(GETPID),
+#endif
+#if defined(GETVAL) || (defined(HAVE_DECL_GETVAL) && HAVE_DECL_GETVAL)
+       XLAT(GETVAL),
+#endif
+#if defined(GETALL) || (defined(HAVE_DECL_GETALL) && HAVE_DECL_GETALL)
+       XLAT(GETALL),
+#endif
+#if defined(GETNCNT) || (defined(HAVE_DECL_GETNCNT) && HAVE_DECL_GETNCNT)
+       XLAT(GETNCNT),
+#endif
+#if defined(GETZCNT) || (defined(HAVE_DECL_GETZCNT) && HAVE_DECL_GETZCNT)
+       XLAT(GETZCNT),
+#endif
+#if defined(SETVAL) || (defined(HAVE_DECL_SETVAL) && HAVE_DECL_SETVAL)
+       XLAT(SETVAL),
+#endif
+#if defined(SETALL) || (defined(HAVE_DECL_SETALL) && HAVE_DECL_SETALL)
+       XLAT(SETALL),
+#endif
+       XLAT_END
+};
diff --git a/xlat/semctl_flags.in b/xlat/semctl_flags.in
new file mode 100644 (file)
index 0000000..e50d6d4
--- /dev/null
@@ -0,0 +1,13 @@
+IPC_RMID
+IPC_SET
+IPC_STAT
+IPC_INFO
+SEM_STAT
+SEM_INFO
+GETPID
+GETVAL
+GETALL
+GETNCNT
+GETZCNT
+SETVAL
+SETALL
diff --git a/xlat/semop_flags.h b/xlat/semop_flags.h
new file mode 100644 (file)
index 0000000..d861340
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/semop_flags.in; do not edit. */
+
+static const struct xlat semop_flags[] = {
+#if defined(SEM_UNDO) || (defined(HAVE_DECL_SEM_UNDO) && HAVE_DECL_SEM_UNDO)
+       XLAT(SEM_UNDO),
+#endif
+#if defined(IPC_NOWAIT) || (defined(HAVE_DECL_IPC_NOWAIT) && HAVE_DECL_IPC_NOWAIT)
+       XLAT(IPC_NOWAIT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/semop_flags.in b/xlat/semop_flags.in
new file mode 100644 (file)
index 0000000..110eca6
--- /dev/null
@@ -0,0 +1,2 @@
+SEM_UNDO
+IPC_NOWAIT
diff --git a/xlat/sg_io_dxfer_direction.h b/xlat/sg_io_dxfer_direction.h
new file mode 100644 (file)
index 0000000..eae2eac
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sg_io_dxfer_direction.in; do not edit. */
+
+static const struct xlat sg_io_dxfer_direction[] = {
+#if defined(SG_DXFER_NONE) || (defined(HAVE_DECL_SG_DXFER_NONE) && HAVE_DECL_SG_DXFER_NONE)
+       XLAT(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),
+#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),
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sg_io_dxfer_direction.in b/xlat/sg_io_dxfer_direction.in
new file mode 100644 (file)
index 0000000..ef2ebd3
--- /dev/null
@@ -0,0 +1,4 @@
+SG_DXFER_NONE
+SG_DXFER_TO_DEV
+SG_DXFER_FROM_DEV
+SG_DXFER_TO_FROM_DEV
diff --git a/xlat/shm_flags.h b/xlat/shm_flags.h
new file mode 100644 (file)
index 0000000..e484576
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/shm_flags.in; do not edit. */
+
+static const struct xlat shm_flags[] = {
+#if defined(SHM_REMAP) || (defined(HAVE_DECL_SHM_REMAP) && HAVE_DECL_SHM_REMAP)
+       XLAT(SHM_REMAP),
+#endif
+#if defined(SHM_RDONLY) || (defined(HAVE_DECL_SHM_RDONLY) && HAVE_DECL_SHM_RDONLY)
+       XLAT(SHM_RDONLY),
+#endif
+#if defined(SHM_RND) || (defined(HAVE_DECL_SHM_RND) && HAVE_DECL_SHM_RND)
+       XLAT(SHM_RND),
+#endif
+       XLAT_END
+};
diff --git a/xlat/shm_flags.in b/xlat/shm_flags.in
new file mode 100644 (file)
index 0000000..a620634
--- /dev/null
@@ -0,0 +1,3 @@
+SHM_REMAP
+SHM_RDONLY
+SHM_RND
diff --git a/xlat/shm_resource_flags.h b/xlat/shm_resource_flags.h
new file mode 100644 (file)
index 0000000..6229774
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/shm_resource_flags.in; do not edit. */
+
+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
+       XLAT_END
+};
diff --git a/xlat/shm_resource_flags.in b/xlat/shm_resource_flags.in
new file mode 100644 (file)
index 0000000..f3fc0dc
--- /dev/null
@@ -0,0 +1,3 @@
+IPC_CREAT
+IPC_EXCL
+SHM_HUGETLB
diff --git a/xlat/shmctl_flags.h b/xlat/shmctl_flags.h
new file mode 100644 (file)
index 0000000..a67c015
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/shmctl_flags.in; do not edit. */
+
+static const struct xlat shmctl_flags[] = {
+#if defined(IPC_RMID) || (defined(HAVE_DECL_IPC_RMID) && HAVE_DECL_IPC_RMID)
+       XLAT(IPC_RMID),
+#endif
+#if defined(IPC_SET) || (defined(HAVE_DECL_IPC_SET) && HAVE_DECL_IPC_SET)
+       XLAT(IPC_SET),
+#endif
+#if defined(IPC_STAT) || (defined(HAVE_DECL_IPC_STAT) && HAVE_DECL_IPC_STAT)
+       XLAT(IPC_STAT),
+#endif
+#if defined(IPC_INFO) || (defined(HAVE_DECL_IPC_INFO) && HAVE_DECL_IPC_INFO)
+       XLAT(IPC_INFO),
+#endif
+#if defined(SHM_STAT) || (defined(HAVE_DECL_SHM_STAT) && HAVE_DECL_SHM_STAT)
+       XLAT(SHM_STAT),
+#endif
+#if defined(SHM_INFO) || (defined(HAVE_DECL_SHM_INFO) && HAVE_DECL_SHM_INFO)
+       XLAT(SHM_INFO),
+#endif
+#if defined(SHM_LOCK) || (defined(HAVE_DECL_SHM_LOCK) && HAVE_DECL_SHM_LOCK)
+       XLAT(SHM_LOCK),
+#endif
+#if defined(SHM_UNLOCK) || (defined(HAVE_DECL_SHM_UNLOCK) && HAVE_DECL_SHM_UNLOCK)
+       XLAT(SHM_UNLOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/shmctl_flags.in b/xlat/shmctl_flags.in
new file mode 100644 (file)
index 0000000..4a6ff78
--- /dev/null
@@ -0,0 +1,8 @@
+IPC_RMID
+IPC_SET
+IPC_STAT
+IPC_INFO
+SHM_STAT
+SHM_INFO
+SHM_LOCK
+SHM_UNLOCK
diff --git a/xlat/shutdown_modes.h b/xlat/shutdown_modes.h
new file mode 100644 (file)
index 0000000..6e3ab81
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/shutdown_modes.in; do not edit. */
+
+static const struct xlat shutdown_modes[] = {
+{ 0,   "SHUT_RD"       },
+{ 1,   "SHUT_WR"       },
+{ 2,   "SHUT_RDWR"     },
+       XLAT_END
+};
diff --git a/xlat/shutdown_modes.in b/xlat/shutdown_modes.in
new file mode 100644 (file)
index 0000000..8ee550a
--- /dev/null
@@ -0,0 +1,3 @@
+       { 0,    "SHUT_RD"       },
+       { 1,    "SHUT_WR"       },
+       { 2,    "SHUT_RDWR"     },
diff --git a/xlat/sigact_flags.h b/xlat/sigact_flags.h
new file mode 100644 (file)
index 0000000..0ee2f2b
--- /dev/null
@@ -0,0 +1,57 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigact_flags.in; do not edit. */
+
+static const struct xlat sigact_flags[] = {
+#if defined(SA_RESTORER) || (defined(HAVE_DECL_SA_RESTORER) && HAVE_DECL_SA_RESTORER)
+       XLAT(SA_RESTORER),
+#endif
+#if defined(SA_STACK) || (defined(HAVE_DECL_SA_STACK) && HAVE_DECL_SA_STACK)
+       XLAT(SA_STACK),
+#endif
+#if defined(SA_RESTART) || (defined(HAVE_DECL_SA_RESTART) && HAVE_DECL_SA_RESTART)
+       XLAT(SA_RESTART),
+#endif
+#if defined(SA_INTERRUPT) || (defined(HAVE_DECL_SA_INTERRUPT) && HAVE_DECL_SA_INTERRUPT)
+       XLAT(SA_INTERRUPT),
+#endif
+#if defined(SA_NODEFER) || (defined(HAVE_DECL_SA_NODEFER) && HAVE_DECL_SA_NODEFER)
+       XLAT(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),
+#endif
+#endif
+#if defined(SA_RESETHAND) || (defined(HAVE_DECL_SA_RESETHAND) && HAVE_DECL_SA_RESETHAND)
+       XLAT(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),
+#endif
+#endif
+#if defined(SA_SIGINFO) || (defined(HAVE_DECL_SA_SIGINFO) && HAVE_DECL_SA_SIGINFO)
+       XLAT(SA_SIGINFO),
+#endif
+#if defined(SA_RESETHAND) || (defined(HAVE_DECL_SA_RESETHAND) && HAVE_DECL_SA_RESETHAND)
+       XLAT(SA_RESETHAND),
+#endif
+#if defined(SA_ONSTACK) || (defined(HAVE_DECL_SA_ONSTACK) && HAVE_DECL_SA_ONSTACK)
+       XLAT(SA_ONSTACK),
+#endif
+#if defined(SA_NODEFER) || (defined(HAVE_DECL_SA_NODEFER) && HAVE_DECL_SA_NODEFER)
+       XLAT(SA_NODEFER),
+#endif
+#if defined(SA_NOCLDSTOP) || (defined(HAVE_DECL_SA_NOCLDSTOP) && HAVE_DECL_SA_NOCLDSTOP)
+       XLAT(SA_NOCLDSTOP),
+#endif
+#if defined(SA_NOCLDWAIT) || (defined(HAVE_DECL_SA_NOCLDWAIT) && HAVE_DECL_SA_NOCLDWAIT)
+       XLAT(SA_NOCLDWAIT),
+#endif
+#if defined(_SA_BSDCALL) || (defined(HAVE_DECL__SA_BSDCALL) && HAVE_DECL__SA_BSDCALL)
+       XLAT(_SA_BSDCALL),
+#endif
+#if defined(SA_NOPTRACE) || (defined(HAVE_DECL_SA_NOPTRACE) && HAVE_DECL_SA_NOPTRACE)
+       XLAT(SA_NOPTRACE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigact_flags.in b/xlat/sigact_flags.in
new file mode 100644 (file)
index 0000000..27bcff8
--- /dev/null
@@ -0,0 +1,20 @@
+SA_RESTORER
+SA_STACK
+SA_RESTART
+SA_INTERRUPT
+SA_NODEFER
+#if defined SA_NOMASK && SA_NODEFER != SA_NOMASK
+SA_NOMASK
+#endif
+SA_RESETHAND
+#if defined SA_ONESHOT && SA_ONESHOT != SA_RESETHAND
+SA_ONESHOT
+#endif
+SA_SIGINFO
+SA_RESETHAND
+SA_ONSTACK
+SA_NODEFER
+SA_NOCLDSTOP
+SA_NOCLDWAIT
+_SA_BSDCALL
+SA_NOPTRACE
diff --git a/xlat/sigaltstack_flags.h b/xlat/sigaltstack_flags.h
new file mode 100644 (file)
index 0000000..8d719ed
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigaltstack_flags.in; do not edit. */
+
+static const struct xlat sigaltstack_flags[] = {
+#if defined(SS_ONSTACK) || (defined(HAVE_DECL_SS_ONSTACK) && HAVE_DECL_SS_ONSTACK)
+       XLAT(SS_ONSTACK),
+#endif
+#if defined(SS_DISABLE) || (defined(HAVE_DECL_SS_DISABLE) && HAVE_DECL_SS_DISABLE)
+       XLAT(SS_DISABLE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigaltstack_flags.in b/xlat/sigaltstack_flags.in
new file mode 100644 (file)
index 0000000..c27a931
--- /dev/null
@@ -0,0 +1,2 @@
+SS_ONSTACK
+SS_DISABLE
diff --git a/xlat/sigbus_codes.h b/xlat/sigbus_codes.h
new file mode 100644 (file)
index 0000000..8ec67c0
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigbus_codes.in; do not edit. */
+
+static const struct xlat sigbus_codes[] = {
+#if defined(BUS_ADRALN) || (defined(HAVE_DECL_BUS_ADRALN) && HAVE_DECL_BUS_ADRALN)
+       XLAT(BUS_ADRALN),
+#endif
+#if defined(BUS_ADRERR) || (defined(HAVE_DECL_BUS_ADRERR) && HAVE_DECL_BUS_ADRERR)
+       XLAT(BUS_ADRERR),
+#endif
+#if defined(BUS_OBJERR) || (defined(HAVE_DECL_BUS_OBJERR) && HAVE_DECL_BUS_OBJERR)
+       XLAT(BUS_OBJERR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigbus_codes.in b/xlat/sigbus_codes.in
new file mode 100644 (file)
index 0000000..8d8a048
--- /dev/null
@@ -0,0 +1,3 @@
+BUS_ADRALN
+BUS_ADRERR
+BUS_OBJERR
diff --git a/xlat/sigchld_codes.h b/xlat/sigchld_codes.h
new file mode 100644 (file)
index 0000000..6604db3
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigchld_codes.in; do not edit. */
+
+static const struct xlat sigchld_codes[] = {
+#if defined(CLD_EXITED) || (defined(HAVE_DECL_CLD_EXITED) && HAVE_DECL_CLD_EXITED)
+       XLAT(CLD_EXITED),
+#endif
+#if defined(CLD_KILLED) || (defined(HAVE_DECL_CLD_KILLED) && HAVE_DECL_CLD_KILLED)
+       XLAT(CLD_KILLED),
+#endif
+#if defined(CLD_DUMPED) || (defined(HAVE_DECL_CLD_DUMPED) && HAVE_DECL_CLD_DUMPED)
+       XLAT(CLD_DUMPED),
+#endif
+#if defined(CLD_TRAPPED) || (defined(HAVE_DECL_CLD_TRAPPED) && HAVE_DECL_CLD_TRAPPED)
+       XLAT(CLD_TRAPPED),
+#endif
+#if defined(CLD_STOPPED) || (defined(HAVE_DECL_CLD_STOPPED) && HAVE_DECL_CLD_STOPPED)
+       XLAT(CLD_STOPPED),
+#endif
+#if defined(CLD_CONTINUED) || (defined(HAVE_DECL_CLD_CONTINUED) && HAVE_DECL_CLD_CONTINUED)
+       XLAT(CLD_CONTINUED),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigchld_codes.in b/xlat/sigchld_codes.in
new file mode 100644 (file)
index 0000000..40c93ce
--- /dev/null
@@ -0,0 +1,6 @@
+CLD_EXITED
+CLD_KILLED
+CLD_DUMPED
+CLD_TRAPPED
+CLD_STOPPED
+CLD_CONTINUED
diff --git a/xlat/sigemt_codes.h b/xlat/sigemt_codes.h
new file mode 100644 (file)
index 0000000..ab87c40
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigemt_codes.in; do not edit. */
+
+static const struct xlat sigemt_codes[] = {
+#if defined(EMT_TAGOVF) || (defined(HAVE_DECL_EMT_TAGOVF) && HAVE_DECL_EMT_TAGOVF)
+       XLAT(EMT_TAGOVF),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigemt_codes.in b/xlat/sigemt_codes.in
new file mode 100644 (file)
index 0000000..63fe3a3
--- /dev/null
@@ -0,0 +1 @@
+EMT_TAGOVF
diff --git a/xlat/sigev_value.h b/xlat/sigev_value.h
new file mode 100644 (file)
index 0000000..da73c05
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigev_value.in; do not edit. */
+
+static const struct xlat sigev_value[] = {
+#if defined(SIGEV_SIGNAL) || (defined(HAVE_DECL_SIGEV_SIGNAL) && HAVE_DECL_SIGEV_SIGNAL)
+       XLAT(SIGEV_SIGNAL),
+#endif
+#if defined(SIGEV_NONE) || (defined(HAVE_DECL_SIGEV_NONE) && HAVE_DECL_SIGEV_NONE)
+       XLAT(SIGEV_NONE),
+#endif
+#if defined(SIGEV_THREAD) || (defined(HAVE_DECL_SIGEV_THREAD) && HAVE_DECL_SIGEV_THREAD)
+       XLAT(SIGEV_THREAD),
+#endif
+#if defined(SIGEV_THREAD_ID) || (defined(HAVE_DECL_SIGEV_THREAD_ID) && HAVE_DECL_SIGEV_THREAD_ID)
+       XLAT(SIGEV_THREAD_ID),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigev_value.in b/xlat/sigev_value.in
new file mode 100644 (file)
index 0000000..8b4c95e
--- /dev/null
@@ -0,0 +1,4 @@
+SIGEV_SIGNAL
+SIGEV_NONE
+SIGEV_THREAD
+SIGEV_THREAD_ID
diff --git a/xlat/sigfpe_codes.h b/xlat/sigfpe_codes.h
new file mode 100644 (file)
index 0000000..d69a26c
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigfpe_codes.in; do not edit. */
+
+static const struct xlat sigfpe_codes[] = {
+#if defined(FPE_INTDIV) || (defined(HAVE_DECL_FPE_INTDIV) && HAVE_DECL_FPE_INTDIV)
+       XLAT(FPE_INTDIV),
+#endif
+#if defined(FPE_INTOVF) || (defined(HAVE_DECL_FPE_INTOVF) && HAVE_DECL_FPE_INTOVF)
+       XLAT(FPE_INTOVF),
+#endif
+#if defined(FPE_FLTDIV) || (defined(HAVE_DECL_FPE_FLTDIV) && HAVE_DECL_FPE_FLTDIV)
+       XLAT(FPE_FLTDIV),
+#endif
+#if defined(FPE_FLTOVF) || (defined(HAVE_DECL_FPE_FLTOVF) && HAVE_DECL_FPE_FLTOVF)
+       XLAT(FPE_FLTOVF),
+#endif
+#if defined(FPE_FLTUND) || (defined(HAVE_DECL_FPE_FLTUND) && HAVE_DECL_FPE_FLTUND)
+       XLAT(FPE_FLTUND),
+#endif
+#if defined(FPE_FLTRES) || (defined(HAVE_DECL_FPE_FLTRES) && HAVE_DECL_FPE_FLTRES)
+       XLAT(FPE_FLTRES),
+#endif
+#if defined(FPE_FLTINV) || (defined(HAVE_DECL_FPE_FLTINV) && HAVE_DECL_FPE_FLTINV)
+       XLAT(FPE_FLTINV),
+#endif
+#if defined(FPE_FLTSUB) || (defined(HAVE_DECL_FPE_FLTSUB) && HAVE_DECL_FPE_FLTSUB)
+       XLAT(FPE_FLTSUB),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigfpe_codes.in b/xlat/sigfpe_codes.in
new file mode 100644 (file)
index 0000000..ab86b26
--- /dev/null
@@ -0,0 +1,8 @@
+FPE_INTDIV
+FPE_INTOVF
+FPE_FLTDIV
+FPE_FLTOVF
+FPE_FLTUND
+FPE_FLTRES
+FPE_FLTINV
+FPE_FLTSUB
diff --git a/xlat/sigill_codes.h b/xlat/sigill_codes.h
new file mode 100644 (file)
index 0000000..ac6445a
--- /dev/null
@@ -0,0 +1,29 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigill_codes.in; do not edit. */
+
+static const struct xlat sigill_codes[] = {
+#if defined(ILL_ILLOPC) || (defined(HAVE_DECL_ILL_ILLOPC) && HAVE_DECL_ILL_ILLOPC)
+       XLAT(ILL_ILLOPC),
+#endif
+#if defined(ILL_ILLOPN) || (defined(HAVE_DECL_ILL_ILLOPN) && HAVE_DECL_ILL_ILLOPN)
+       XLAT(ILL_ILLOPN),
+#endif
+#if defined(ILL_ILLADR) || (defined(HAVE_DECL_ILL_ILLADR) && HAVE_DECL_ILL_ILLADR)
+       XLAT(ILL_ILLADR),
+#endif
+#if defined(ILL_ILLTRP) || (defined(HAVE_DECL_ILL_ILLTRP) && HAVE_DECL_ILL_ILLTRP)
+       XLAT(ILL_ILLTRP),
+#endif
+#if defined(ILL_PRVOPC) || (defined(HAVE_DECL_ILL_PRVOPC) && HAVE_DECL_ILL_PRVOPC)
+       XLAT(ILL_PRVOPC),
+#endif
+#if defined(ILL_PRVREG) || (defined(HAVE_DECL_ILL_PRVREG) && HAVE_DECL_ILL_PRVREG)
+       XLAT(ILL_PRVREG),
+#endif
+#if defined(ILL_COPROC) || (defined(HAVE_DECL_ILL_COPROC) && HAVE_DECL_ILL_COPROC)
+       XLAT(ILL_COPROC),
+#endif
+#if defined(ILL_BADSTK) || (defined(HAVE_DECL_ILL_BADSTK) && HAVE_DECL_ILL_BADSTK)
+       XLAT(ILL_BADSTK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigill_codes.in b/xlat/sigill_codes.in
new file mode 100644 (file)
index 0000000..6fb994e
--- /dev/null
@@ -0,0 +1,8 @@
+ILL_ILLOPC
+ILL_ILLOPN
+ILL_ILLADR
+ILL_ILLTRP
+ILL_PRVOPC
+ILL_PRVREG
+ILL_COPROC
+ILL_BADSTK
diff --git a/xlat/siginfo_codes.h b/xlat/siginfo_codes.h
new file mode 100644 (file)
index 0000000..e9b4174
--- /dev/null
@@ -0,0 +1,41 @@
+/* Generated by ./xlat/gen.sh from ./xlat/siginfo_codes.in; do not edit. */
+
+static const struct xlat siginfo_codes[] = {
+#if defined(SI_KERNEL) || (defined(HAVE_DECL_SI_KERNEL) && HAVE_DECL_SI_KERNEL)
+       XLAT(SI_KERNEL),
+#endif
+#if defined(SI_USER) || (defined(HAVE_DECL_SI_USER) && HAVE_DECL_SI_USER)
+       XLAT(SI_USER),
+#endif
+#if defined(SI_QUEUE) || (defined(HAVE_DECL_SI_QUEUE) && HAVE_DECL_SI_QUEUE)
+       XLAT(SI_QUEUE),
+#endif
+#if defined(SI_TIMER) || (defined(HAVE_DECL_SI_TIMER) && HAVE_DECL_SI_TIMER)
+       XLAT(SI_TIMER),
+#endif
+#if defined(SI_MESGQ) || (defined(HAVE_DECL_SI_MESGQ) && HAVE_DECL_SI_MESGQ)
+       XLAT(SI_MESGQ),
+#endif
+#if defined(SI_ASYNCIO) || (defined(HAVE_DECL_SI_ASYNCIO) && HAVE_DECL_SI_ASYNCIO)
+       XLAT(SI_ASYNCIO),
+#endif
+#if defined(SI_SIGIO) || (defined(HAVE_DECL_SI_SIGIO) && HAVE_DECL_SI_SIGIO)
+       XLAT(SI_SIGIO),
+#endif
+#if defined(SI_TKILL) || (defined(HAVE_DECL_SI_TKILL) && HAVE_DECL_SI_TKILL)
+       XLAT(SI_TKILL),
+#endif
+#if defined(SI_DETHREAD) || (defined(HAVE_DECL_SI_DETHREAD) && HAVE_DECL_SI_DETHREAD)
+       XLAT(SI_DETHREAD),
+#endif
+#if defined(SI_ASYNCNL) || (defined(HAVE_DECL_SI_ASYNCNL) && HAVE_DECL_SI_ASYNCNL)
+       XLAT(SI_ASYNCNL),
+#endif
+#if defined(SI_NOINFO) || (defined(HAVE_DECL_SI_NOINFO) && HAVE_DECL_SI_NOINFO)
+       XLAT(SI_NOINFO),
+#endif
+#if defined(SI_LWP) || (defined(HAVE_DECL_SI_LWP) && HAVE_DECL_SI_LWP)
+       XLAT(SI_LWP),
+#endif
+       XLAT_END
+};
diff --git a/xlat/siginfo_codes.in b/xlat/siginfo_codes.in
new file mode 100644 (file)
index 0000000..115d3ab
--- /dev/null
@@ -0,0 +1,12 @@
+SI_KERNEL
+SI_USER
+SI_QUEUE
+SI_TIMER
+SI_MESGQ
+SI_ASYNCIO
+SI_SIGIO
+SI_TKILL
+SI_DETHREAD
+SI_ASYNCNL
+SI_NOINFO
+SI_LWP
diff --git a/xlat/sigpoll_codes.h b/xlat/sigpoll_codes.h
new file mode 100644 (file)
index 0000000..c50a515
--- /dev/null
@@ -0,0 +1,23 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigpoll_codes.in; do not edit. */
+
+static const struct xlat sigpoll_codes[] = {
+#if defined(POLL_IN) || (defined(HAVE_DECL_POLL_IN) && HAVE_DECL_POLL_IN)
+       XLAT(POLL_IN),
+#endif
+#if defined(POLL_OUT) || (defined(HAVE_DECL_POLL_OUT) && HAVE_DECL_POLL_OUT)
+       XLAT(POLL_OUT),
+#endif
+#if defined(POLL_MSG) || (defined(HAVE_DECL_POLL_MSG) && HAVE_DECL_POLL_MSG)
+       XLAT(POLL_MSG),
+#endif
+#if defined(POLL_ERR) || (defined(HAVE_DECL_POLL_ERR) && HAVE_DECL_POLL_ERR)
+       XLAT(POLL_ERR),
+#endif
+#if defined(POLL_PRI) || (defined(HAVE_DECL_POLL_PRI) && HAVE_DECL_POLL_PRI)
+       XLAT(POLL_PRI),
+#endif
+#if defined(POLL_HUP) || (defined(HAVE_DECL_POLL_HUP) && HAVE_DECL_POLL_HUP)
+       XLAT(POLL_HUP),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigpoll_codes.in b/xlat/sigpoll_codes.in
new file mode 100644 (file)
index 0000000..f778fc6
--- /dev/null
@@ -0,0 +1,6 @@
+POLL_IN
+POLL_OUT
+POLL_MSG
+POLL_ERR
+POLL_PRI
+POLL_HUP
diff --git a/xlat/sigprocmaskcmds.h b/xlat/sigprocmaskcmds.h
new file mode 100644 (file)
index 0000000..18fc2f6
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigprocmaskcmds.in; do not edit. */
+
+static const struct xlat sigprocmaskcmds[] = {
+#if defined(SIG_BLOCK) || (defined(HAVE_DECL_SIG_BLOCK) && HAVE_DECL_SIG_BLOCK)
+       XLAT(SIG_BLOCK),
+#endif
+#if defined(SIG_UNBLOCK) || (defined(HAVE_DECL_SIG_UNBLOCK) && HAVE_DECL_SIG_UNBLOCK)
+       XLAT(SIG_UNBLOCK),
+#endif
+#if defined(SIG_SETMASK) || (defined(HAVE_DECL_SIG_SETMASK) && HAVE_DECL_SIG_SETMASK)
+       XLAT(SIG_SETMASK),
+#endif
+#if defined(SIG_SETMASK32) || (defined(HAVE_DECL_SIG_SETMASK32) && HAVE_DECL_SIG_SETMASK32)
+       XLAT(SIG_SETMASK32),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigprocmaskcmds.in b/xlat/sigprocmaskcmds.in
new file mode 100644 (file)
index 0000000..d88a02d
--- /dev/null
@@ -0,0 +1,4 @@
+SIG_BLOCK
+SIG_UNBLOCK
+SIG_SETMASK
+SIG_SETMASK32
diff --git a/xlat/sigprof_codes.h b/xlat/sigprof_codes.h
new file mode 100644 (file)
index 0000000..02e98e7
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigprof_codes.in; do not edit. */
+
+static const struct xlat sigprof_codes[] = {
+#if defined(PROF_SIG) || (defined(HAVE_DECL_PROF_SIG) && HAVE_DECL_PROF_SIG)
+       XLAT(PROF_SIG),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigprof_codes.in b/xlat/sigprof_codes.in
new file mode 100644 (file)
index 0000000..64dac11
--- /dev/null
@@ -0,0 +1 @@
+PROF_SIG
diff --git a/xlat/sigsegv_codes.h b/xlat/sigsegv_codes.h
new file mode 100644 (file)
index 0000000..3de5370
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigsegv_codes.in; do not edit. */
+
+static const struct xlat sigsegv_codes[] = {
+#if defined(SEGV_MAPERR) || (defined(HAVE_DECL_SEGV_MAPERR) && HAVE_DECL_SEGV_MAPERR)
+       XLAT(SEGV_MAPERR),
+#endif
+#if defined(SEGV_ACCERR) || (defined(HAVE_DECL_SEGV_ACCERR) && HAVE_DECL_SEGV_ACCERR)
+       XLAT(SEGV_ACCERR),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigsegv_codes.in b/xlat/sigsegv_codes.in
new file mode 100644 (file)
index 0000000..bdf3d7e
--- /dev/null
@@ -0,0 +1,2 @@
+SEGV_MAPERR
+SEGV_ACCERR
diff --git a/xlat/sigsys_codes.h b/xlat/sigsys_codes.h
new file mode 100644 (file)
index 0000000..a7ef5e2
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigsys_codes.in; do not edit. */
+
+static const struct xlat sigsys_codes[] = {
+#if defined(SYS_SECCOMP) || (defined(HAVE_DECL_SYS_SECCOMP) && HAVE_DECL_SYS_SECCOMP)
+       XLAT(SYS_SECCOMP),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigsys_codes.in b/xlat/sigsys_codes.in
new file mode 100644 (file)
index 0000000..7eaa40a
--- /dev/null
@@ -0,0 +1 @@
+SYS_SECCOMP
diff --git a/xlat/sigtrap_codes.h b/xlat/sigtrap_codes.h
new file mode 100644 (file)
index 0000000..c9101a2
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sigtrap_codes.in; do not edit. */
+
+static const struct xlat sigtrap_codes[] = {
+#if defined(TRAP_BRKPT) || (defined(HAVE_DECL_TRAP_BRKPT) && HAVE_DECL_TRAP_BRKPT)
+       XLAT(TRAP_BRKPT),
+#endif
+#if defined(TRAP_TRACE) || (defined(HAVE_DECL_TRAP_TRACE) && HAVE_DECL_TRAP_TRACE)
+       XLAT(TRAP_TRACE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sigtrap_codes.in b/xlat/sigtrap_codes.in
new file mode 100644 (file)
index 0000000..41474fe
--- /dev/null
@@ -0,0 +1,2 @@
+TRAP_BRKPT
+TRAP_TRACE
diff --git a/xlat/sock_type_flags.h b/xlat/sock_type_flags.h
new file mode 100644 (file)
index 0000000..45f193a
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sock_type_flags.in; do not edit. */
+
+static const struct xlat sock_type_flags[] = {
+#if defined(SOCK_CLOEXEC) || (defined(HAVE_DECL_SOCK_CLOEXEC) && HAVE_DECL_SOCK_CLOEXEC)
+       XLAT(SOCK_CLOEXEC),
+#endif
+#if defined(SOCK_NONBLOCK) || (defined(HAVE_DECL_SOCK_NONBLOCK) && HAVE_DECL_SOCK_NONBLOCK)
+       XLAT(SOCK_NONBLOCK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sock_type_flags.in b/xlat/sock_type_flags.in
new file mode 100644 (file)
index 0000000..b99786b
--- /dev/null
@@ -0,0 +1,2 @@
+SOCK_CLOEXEC
+SOCK_NONBLOCK
diff --git a/xlat/socketlayers.h b/xlat/socketlayers.h
new file mode 100644 (file)
index 0000000..6abbb92
--- /dev/null
@@ -0,0 +1,104 @@
+/* Generated by ./xlat/gen.sh from ./xlat/socketlayers.in; do not edit. */
+
+static const struct xlat socketlayers[] = {
+#if defined(SOL_IP) || (defined(HAVE_DECL_SOL_IP) && HAVE_DECL_SOL_IP)
+       XLAT(SOL_IP),
+#endif
+#if defined(SOL_ICMP) || (defined(HAVE_DECL_SOL_ICMP) && HAVE_DECL_SOL_ICMP)
+       XLAT(SOL_ICMP),
+#endif
+#if defined(SOL_TCP) || (defined(HAVE_DECL_SOL_TCP) && HAVE_DECL_SOL_TCP)
+       XLAT(SOL_TCP),
+#endif
+#if defined(SOL_UDP) || (defined(HAVE_DECL_SOL_UDP) && HAVE_DECL_SOL_UDP)
+       XLAT(SOL_UDP),
+#endif
+#if defined(SOL_IPV6) || (defined(HAVE_DECL_SOL_IPV6) && HAVE_DECL_SOL_IPV6)
+       XLAT(SOL_IPV6),
+#endif
+#if defined(SOL_ICMPV6) || (defined(HAVE_DECL_SOL_ICMPV6) && HAVE_DECL_SOL_ICMPV6)
+       XLAT(SOL_ICMPV6),
+#endif
+#if defined(SOL_SCTP) || (defined(HAVE_DECL_SOL_SCTP) && HAVE_DECL_SOL_SCTP)
+       XLAT(SOL_SCTP),
+#endif
+#if defined(SOL_UDPLITE) || (defined(HAVE_DECL_SOL_UDPLITE) && HAVE_DECL_SOL_UDPLITE)
+       XLAT(SOL_UDPLITE),
+#endif
+#if defined(SOL_RAW) || (defined(HAVE_DECL_SOL_RAW) && HAVE_DECL_SOL_RAW)
+       XLAT(SOL_RAW),
+#endif
+#if defined(SOL_IPX) || (defined(HAVE_DECL_SOL_IPX) && HAVE_DECL_SOL_IPX)
+       XLAT(SOL_IPX),
+#endif
+#if defined(SOL_AX25) || (defined(HAVE_DECL_SOL_AX25) && HAVE_DECL_SOL_AX25)
+       XLAT(SOL_AX25),
+#endif
+#if defined(SOL_ATALK) || (defined(HAVE_DECL_SOL_ATALK) && HAVE_DECL_SOL_ATALK)
+       XLAT(SOL_ATALK),
+#endif
+#if defined(SOL_NETROM) || (defined(HAVE_DECL_SOL_NETROM) && HAVE_DECL_SOL_NETROM)
+       XLAT(SOL_NETROM),
+#endif
+#if defined(SOL_ROSE) || (defined(HAVE_DECL_SOL_ROSE) && HAVE_DECL_SOL_ROSE)
+       XLAT(SOL_ROSE),
+#endif
+#if defined(SOL_DECNET) || (defined(HAVE_DECL_SOL_DECNET) && HAVE_DECL_SOL_DECNET)
+       XLAT(SOL_DECNET),
+#endif
+#if defined(SOL_X25) || (defined(HAVE_DECL_SOL_X25) && HAVE_DECL_SOL_X25)
+       XLAT(SOL_X25),
+#endif
+#if defined(SOL_PACKET) || (defined(HAVE_DECL_SOL_PACKET) && HAVE_DECL_SOL_PACKET)
+       XLAT(SOL_PACKET),
+#endif
+#if defined(SOL_ATM) || (defined(HAVE_DECL_SOL_ATM) && HAVE_DECL_SOL_ATM)
+       XLAT(SOL_ATM),
+#endif
+#if defined(SOL_AAL) || (defined(HAVE_DECL_SOL_AAL) && HAVE_DECL_SOL_AAL)
+       XLAT(SOL_AAL),
+#endif
+#if defined(SOL_IRDA) || (defined(HAVE_DECL_SOL_IRDA) && HAVE_DECL_SOL_IRDA)
+       XLAT(SOL_IRDA),
+#endif
+#if defined(SOL_NETBEUI) || (defined(HAVE_DECL_SOL_NETBEUI) && HAVE_DECL_SOL_NETBEUI)
+       XLAT(SOL_NETBEUI),
+#endif
+#if defined(SOL_LLC) || (defined(HAVE_DECL_SOL_LLC) && HAVE_DECL_SOL_LLC)
+       XLAT(SOL_LLC),
+#endif
+#if defined(SOL_DCCP) || (defined(HAVE_DECL_SOL_DCCP) && HAVE_DECL_SOL_DCCP)
+       XLAT(SOL_DCCP),
+#endif
+#if defined(SOL_NETLINK) || (defined(HAVE_DECL_SOL_NETLINK) && HAVE_DECL_SOL_NETLINK)
+       XLAT(SOL_NETLINK),
+#endif
+#if defined(SOL_TIPC) || (defined(HAVE_DECL_SOL_TIPC) && HAVE_DECL_SOL_TIPC)
+       XLAT(SOL_TIPC),
+#endif
+#if defined(SOL_RXRPC) || (defined(HAVE_DECL_SOL_RXRPC) && HAVE_DECL_SOL_RXRPC)
+       XLAT(SOL_RXRPC),
+#endif
+#if defined(SOL_PPPOL2TP) || (defined(HAVE_DECL_SOL_PPPOL2TP) && HAVE_DECL_SOL_PPPOL2TP)
+       XLAT(SOL_PPPOL2TP),
+#endif
+#if defined(SOL_BLUETOOTH) || (defined(HAVE_DECL_SOL_BLUETOOTH) && HAVE_DECL_SOL_BLUETOOTH)
+       XLAT(SOL_BLUETOOTH),
+#endif
+#if defined(SOL_PNPIPE) || (defined(HAVE_DECL_SOL_PNPIPE) && HAVE_DECL_SOL_PNPIPE)
+       XLAT(SOL_PNPIPE),
+#endif
+#if defined(SOL_RDS) || (defined(HAVE_DECL_SOL_RDS) && HAVE_DECL_SOL_RDS)
+       XLAT(SOL_RDS),
+#endif
+#if defined(SOL_IUCV) || (defined(HAVE_DECL_SOL_IUCV) && HAVE_DECL_SOL_IUCV)
+       XLAT(SOL_IUCV),
+#endif
+#if defined(SOL_CAIF) || (defined(HAVE_DECL_SOL_CAIF) && HAVE_DECL_SOL_CAIF)
+       XLAT(SOL_CAIF),
+#endif
+#if defined(SOL_SOCKET) || (defined(HAVE_DECL_SOL_SOCKET) && HAVE_DECL_SOL_SOCKET)
+       XLAT(SOL_SOCKET),
+#endif
+  /* this array should remain not NULL-terminated */
+};
diff --git a/xlat/socketlayers.in b/xlat/socketlayers.in
new file mode 100644 (file)
index 0000000..419c305
--- /dev/null
@@ -0,0 +1,34 @@
+SOL_IP
+SOL_ICMP
+SOL_TCP
+SOL_UDP
+SOL_IPV6
+SOL_ICMPV6
+SOL_SCTP
+SOL_UDPLITE
+SOL_RAW
+SOL_IPX
+SOL_AX25
+SOL_ATALK
+SOL_NETROM
+SOL_ROSE
+SOL_DECNET
+SOL_X25
+SOL_PACKET
+SOL_ATM
+SOL_AAL
+SOL_IRDA
+SOL_NETBEUI
+SOL_LLC
+SOL_DCCP
+SOL_NETLINK
+SOL_TIPC
+SOL_RXRPC
+SOL_PPPOL2TP
+SOL_BLUETOOTH
+SOL_PNPIPE
+SOL_RDS
+SOL_IUCV
+SOL_CAIF
+SOL_SOCKET
+#unterminated
diff --git a/xlat/sockipoptions.h b/xlat/sockipoptions.h
new file mode 100644 (file)
index 0000000..ca044e0
--- /dev/null
@@ -0,0 +1,146 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sockipoptions.in; do not edit. */
+
+static const struct xlat sockipoptions[] = {
+#if defined(IP_TOS) || (defined(HAVE_DECL_IP_TOS) && HAVE_DECL_IP_TOS)
+       XLAT(IP_TOS),
+#endif
+#if defined(IP_TTL) || (defined(HAVE_DECL_IP_TTL) && HAVE_DECL_IP_TTL)
+       XLAT(IP_TTL),
+#endif
+#if defined(IP_HDRINCL) || (defined(HAVE_DECL_IP_HDRINCL) && HAVE_DECL_IP_HDRINCL)
+       XLAT(IP_HDRINCL),
+#endif
+#if defined(IP_OPTIONS) || (defined(HAVE_DECL_IP_OPTIONS) && HAVE_DECL_IP_OPTIONS)
+       XLAT(IP_OPTIONS),
+#endif
+#if defined(IP_ROUTER_ALERT) || (defined(HAVE_DECL_IP_ROUTER_ALERT) && HAVE_DECL_IP_ROUTER_ALERT)
+       XLAT(IP_ROUTER_ALERT),
+#endif
+#if defined(IP_RECVOPTIONS) || (defined(HAVE_DECL_IP_RECVOPTIONS) && HAVE_DECL_IP_RECVOPTIONS)
+       XLAT(IP_RECVOPTIONS),
+#endif
+#if defined(IP_RECVOPTS) || (defined(HAVE_DECL_IP_RECVOPTS) && HAVE_DECL_IP_RECVOPTS)
+       XLAT(IP_RECVOPTS),
+#endif
+#if defined(IP_RECVRETOPTS) || (defined(HAVE_DECL_IP_RECVRETOPTS) && HAVE_DECL_IP_RECVRETOPTS)
+       XLAT(IP_RECVRETOPTS),
+#endif
+#if defined(IP_RECVDSTADDR) || (defined(HAVE_DECL_IP_RECVDSTADDR) && HAVE_DECL_IP_RECVDSTADDR)
+       XLAT(IP_RECVDSTADDR),
+#endif
+#if defined(IP_RETOPTS) || (defined(HAVE_DECL_IP_RETOPTS) && HAVE_DECL_IP_RETOPTS)
+       XLAT(IP_RETOPTS),
+#endif
+#if defined(IP_PKTINFO) || (defined(HAVE_DECL_IP_PKTINFO) && HAVE_DECL_IP_PKTINFO)
+       XLAT(IP_PKTINFO),
+#endif
+#if defined(IP_PKTOPTIONS) || (defined(HAVE_DECL_IP_PKTOPTIONS) && HAVE_DECL_IP_PKTOPTIONS)
+       XLAT(IP_PKTOPTIONS),
+#endif
+#if defined(IP_MTU_DISCOVER) || (defined(HAVE_DECL_IP_MTU_DISCOVER) && HAVE_DECL_IP_MTU_DISCOVER)
+       XLAT(IP_MTU_DISCOVER),
+#endif
+#if defined(IP_RECVERR) || (defined(HAVE_DECL_IP_RECVERR) && HAVE_DECL_IP_RECVERR)
+       XLAT(IP_RECVERR),
+#endif
+#if defined(IP_RECVTTL) || (defined(HAVE_DECL_IP_RECVTTL) && HAVE_DECL_IP_RECVTTL)
+       XLAT(IP_RECVTTL),
+#endif
+#if defined(IP_RECVTOS) || (defined(HAVE_DECL_IP_RECVTOS) && HAVE_DECL_IP_RECVTOS)
+       XLAT(IP_RECVTOS),
+#endif
+#if defined(IP_MTU) || (defined(HAVE_DECL_IP_MTU) && HAVE_DECL_IP_MTU)
+       XLAT(IP_MTU),
+#endif
+#if defined(IP_MULTICAST_IF) || (defined(HAVE_DECL_IP_MULTICAST_IF) && HAVE_DECL_IP_MULTICAST_IF)
+       XLAT(IP_MULTICAST_IF),
+#endif
+#if defined(IP_MULTICAST_TTL) || (defined(HAVE_DECL_IP_MULTICAST_TTL) && HAVE_DECL_IP_MULTICAST_TTL)
+       XLAT(IP_MULTICAST_TTL),
+#endif
+#if defined(IP_MULTICAST_LOOP) || (defined(HAVE_DECL_IP_MULTICAST_LOOP) && HAVE_DECL_IP_MULTICAST_LOOP)
+       XLAT(IP_MULTICAST_LOOP),
+#endif
+#if defined(IP_ADD_MEMBERSHIP) || (defined(HAVE_DECL_IP_ADD_MEMBERSHIP) && HAVE_DECL_IP_ADD_MEMBERSHIP)
+       XLAT(IP_ADD_MEMBERSHIP),
+#endif
+#if defined(IP_DROP_MEMBERSHIP) || (defined(HAVE_DECL_IP_DROP_MEMBERSHIP) && HAVE_DECL_IP_DROP_MEMBERSHIP)
+       XLAT(IP_DROP_MEMBERSHIP),
+#endif
+#if defined(IP_BROADCAST_IF) || (defined(HAVE_DECL_IP_BROADCAST_IF) && HAVE_DECL_IP_BROADCAST_IF)
+       XLAT(IP_BROADCAST_IF),
+#endif
+#if defined(IP_RECVIFINDEX) || (defined(HAVE_DECL_IP_RECVIFINDEX) && HAVE_DECL_IP_RECVIFINDEX)
+       XLAT(IP_RECVIFINDEX),
+#endif
+#if defined(IP_MSFILTER) || (defined(HAVE_DECL_IP_MSFILTER) && HAVE_DECL_IP_MSFILTER)
+       XLAT(IP_MSFILTER),
+#endif
+#if defined(MCAST_MSFILTER) || (defined(HAVE_DECL_MCAST_MSFILTER) && HAVE_DECL_MCAST_MSFILTER)
+       XLAT(MCAST_MSFILTER),
+#endif
+#if defined(IP_FREEBIND) || (defined(HAVE_DECL_IP_FREEBIND) && HAVE_DECL_IP_FREEBIND)
+       XLAT(IP_FREEBIND),
+#endif
+#if defined(IP_IPSEC_POLICY) || (defined(HAVE_DECL_IP_IPSEC_POLICY) && HAVE_DECL_IP_IPSEC_POLICY)
+       XLAT(IP_IPSEC_POLICY),
+#endif
+#if defined(IP_XFRM_POLICY) || (defined(HAVE_DECL_IP_XFRM_POLICY) && HAVE_DECL_IP_XFRM_POLICY)
+       XLAT(IP_XFRM_POLICY),
+#endif
+#if defined(IP_PASSSEC) || (defined(HAVE_DECL_IP_PASSSEC) && HAVE_DECL_IP_PASSSEC)
+       XLAT(IP_PASSSEC),
+#endif
+#if defined(IP_TRANSPARENT) || (defined(HAVE_DECL_IP_TRANSPARENT) && HAVE_DECL_IP_TRANSPARENT)
+       XLAT(IP_TRANSPARENT),
+#endif
+#if defined(IP_ORIGDSTADDR) || (defined(HAVE_DECL_IP_ORIGDSTADDR) && HAVE_DECL_IP_ORIGDSTADDR)
+       XLAT(IP_ORIGDSTADDR),
+#endif
+#if defined(IP_RECVORIGDSTADDR) || (defined(HAVE_DECL_IP_RECVORIGDSTADDR) && HAVE_DECL_IP_RECVORIGDSTADDR)
+       XLAT(IP_RECVORIGDSTADDR),
+#endif
+#if defined(IP_MINTTL) || (defined(HAVE_DECL_IP_MINTTL) && HAVE_DECL_IP_MINTTL)
+       XLAT(IP_MINTTL),
+#endif
+#if defined(IP_NODEFRAG) || (defined(HAVE_DECL_IP_NODEFRAG) && HAVE_DECL_IP_NODEFRAG)
+       XLAT(IP_NODEFRAG),
+#endif
+#if defined(IP_UNBLOCK_SOURCE) || (defined(HAVE_DECL_IP_UNBLOCK_SOURCE) && HAVE_DECL_IP_UNBLOCK_SOURCE)
+       XLAT(IP_UNBLOCK_SOURCE),
+#endif
+#if defined(IP_BLOCK_SOURCE) || (defined(HAVE_DECL_IP_BLOCK_SOURCE) && HAVE_DECL_IP_BLOCK_SOURCE)
+       XLAT(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),
+#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),
+#endif
+#if defined(MCAST_JOIN_GROUP) || (defined(HAVE_DECL_MCAST_JOIN_GROUP) && HAVE_DECL_MCAST_JOIN_GROUP)
+       XLAT(MCAST_JOIN_GROUP),
+#endif
+#if defined(MCAST_BLOCK_SOURCE) || (defined(HAVE_DECL_MCAST_BLOCK_SOURCE) && HAVE_DECL_MCAST_BLOCK_SOURCE)
+       XLAT(MCAST_BLOCK_SOURCE),
+#endif
+#if defined(MCAST_UNBLOCK_SOURCE) || (defined(HAVE_DECL_MCAST_UNBLOCK_SOURCE) && HAVE_DECL_MCAST_UNBLOCK_SOURCE)
+       XLAT(MCAST_UNBLOCK_SOURCE),
+#endif
+#if defined(MCAST_LEAVE_GROUP) || (defined(HAVE_DECL_MCAST_LEAVE_GROUP) && HAVE_DECL_MCAST_LEAVE_GROUP)
+       XLAT(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),
+#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),
+#endif
+#if defined(IP_MULTICAST_ALL) || (defined(HAVE_DECL_IP_MULTICAST_ALL) && HAVE_DECL_IP_MULTICAST_ALL)
+       XLAT(IP_MULTICAST_ALL),
+#endif
+#if defined(IP_UNICAST_IF) || (defined(HAVE_DECL_IP_UNICAST_IF) && HAVE_DECL_IP_UNICAST_IF)
+       XLAT(IP_UNICAST_IF),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sockipoptions.in b/xlat/sockipoptions.in
new file mode 100644 (file)
index 0000000..527d867
--- /dev/null
@@ -0,0 +1,47 @@
+IP_TOS
+IP_TTL
+IP_HDRINCL
+IP_OPTIONS
+IP_ROUTER_ALERT
+IP_RECVOPTIONS
+IP_RECVOPTS
+IP_RECVRETOPTS
+IP_RECVDSTADDR
+IP_RETOPTS
+IP_PKTINFO
+IP_PKTOPTIONS
+IP_MTU_DISCOVER
+IP_RECVERR
+IP_RECVTTL
+IP_RECVTOS
+IP_MTU
+IP_MULTICAST_IF
+IP_MULTICAST_TTL
+IP_MULTICAST_LOOP
+IP_ADD_MEMBERSHIP
+IP_DROP_MEMBERSHIP
+IP_BROADCAST_IF
+IP_RECVIFINDEX
+IP_MSFILTER
+MCAST_MSFILTER
+IP_FREEBIND
+IP_IPSEC_POLICY
+IP_XFRM_POLICY
+IP_PASSSEC
+IP_TRANSPARENT
+IP_ORIGDSTADDR
+IP_RECVORIGDSTADDR
+IP_MINTTL
+IP_NODEFRAG
+IP_UNBLOCK_SOURCE
+IP_BLOCK_SOURCE
+IP_ADD_SOURCE_MEMBERSHIP
+IP_DROP_SOURCE_MEMBERSHIP
+MCAST_JOIN_GROUP
+MCAST_BLOCK_SOURCE
+MCAST_UNBLOCK_SOURCE
+MCAST_LEAVE_GROUP
+MCAST_JOIN_SOURCE_GROUP
+MCAST_LEAVE_SOURCE_GROUP
+IP_MULTICAST_ALL
+IP_UNICAST_IF
diff --git a/xlat/sockipv6options.h b/xlat/sockipv6options.h
new file mode 100644 (file)
index 0000000..40af8a9
--- /dev/null
@@ -0,0 +1,68 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sockipv6options.in; do not edit. */
+
+static const struct xlat sockipv6options[] = {
+#if defined(IPV6_ADDRFORM) || (defined(HAVE_DECL_IPV6_ADDRFORM) && HAVE_DECL_IPV6_ADDRFORM)
+       XLAT(IPV6_ADDRFORM),
+#endif
+#if defined(MCAST_FILTER) || (defined(HAVE_DECL_MCAST_FILTER) && HAVE_DECL_MCAST_FILTER)
+       XLAT(MCAST_FILTER),
+#endif
+#if defined(IPV6_PKTOPTIONS) || (defined(HAVE_DECL_IPV6_PKTOPTIONS) && HAVE_DECL_IPV6_PKTOPTIONS)
+       XLAT(IPV6_PKTOPTIONS),
+#endif
+#if defined(IPV6_MTU) || (defined(HAVE_DECL_IPV6_MTU) && HAVE_DECL_IPV6_MTU)
+       XLAT(IPV6_MTU),
+#endif
+#if defined(IPV6_V6ONLY) || (defined(HAVE_DECL_IPV6_V6ONLY) && HAVE_DECL_IPV6_V6ONLY)
+       XLAT(IPV6_V6ONLY),
+#endif
+#if defined(IPV6_PKTINFO) || (defined(HAVE_DECL_IPV6_PKTINFO) && HAVE_DECL_IPV6_PKTINFO)
+       XLAT(IPV6_PKTINFO),
+#endif
+#if defined(IPV6_HOPLIMIT) || (defined(HAVE_DECL_IPV6_HOPLIMIT) && HAVE_DECL_IPV6_HOPLIMIT)
+       XLAT(IPV6_HOPLIMIT),
+#endif
+#if defined(IPV6_RTHDR) || (defined(HAVE_DECL_IPV6_RTHDR) && HAVE_DECL_IPV6_RTHDR)
+       XLAT(IPV6_RTHDR),
+#endif
+#if defined(IPV6_HOPOPTS) || (defined(HAVE_DECL_IPV6_HOPOPTS) && HAVE_DECL_IPV6_HOPOPTS)
+       XLAT(IPV6_HOPOPTS),
+#endif
+#if defined(IPV6_DSTOPTS) || (defined(HAVE_DECL_IPV6_DSTOPTS) && HAVE_DECL_IPV6_DSTOPTS)
+       XLAT(IPV6_DSTOPTS),
+#endif
+#if defined(IPV6_FLOWINFO) || (defined(HAVE_DECL_IPV6_FLOWINFO) && HAVE_DECL_IPV6_FLOWINFO)
+       XLAT(IPV6_FLOWINFO),
+#endif
+#if defined(IPV6_UNICAST_HOPS) || (defined(HAVE_DECL_IPV6_UNICAST_HOPS) && HAVE_DECL_IPV6_UNICAST_HOPS)
+       XLAT(IPV6_UNICAST_HOPS),
+#endif
+#if defined(IPV6_MULTICAST_HOPS) || (defined(HAVE_DECL_IPV6_MULTICAST_HOPS) && HAVE_DECL_IPV6_MULTICAST_HOPS)
+       XLAT(IPV6_MULTICAST_HOPS),
+#endif
+#if defined(IPV6_MULTICAST_LOOP) || (defined(HAVE_DECL_IPV6_MULTICAST_LOOP) && HAVE_DECL_IPV6_MULTICAST_LOOP)
+       XLAT(IPV6_MULTICAST_LOOP),
+#endif
+#if defined(IPV6_MULTICAST_IF) || (defined(HAVE_DECL_IPV6_MULTICAST_IF) && HAVE_DECL_IPV6_MULTICAST_IF)
+       XLAT(IPV6_MULTICAST_IF),
+#endif
+#if defined(IPV6_MTU_DISCOVER) || (defined(HAVE_DECL_IPV6_MTU_DISCOVER) && HAVE_DECL_IPV6_MTU_DISCOVER)
+       XLAT(IPV6_MTU_DISCOVER),
+#endif
+#if defined(IPV6_RECVERR) || (defined(HAVE_DECL_IPV6_RECVERR) && HAVE_DECL_IPV6_RECVERR)
+       XLAT(IPV6_RECVERR),
+#endif
+#if defined(IPV6_FLOWINFO_SEND) || (defined(HAVE_DECL_IPV6_FLOWINFO_SEND) && HAVE_DECL_IPV6_FLOWINFO_SEND)
+       XLAT(IPV6_FLOWINFO_SEND),
+#endif
+#if defined(IPV6_ADD_MEMBERSHIP) || (defined(HAVE_DECL_IPV6_ADD_MEMBERSHIP) && HAVE_DECL_IPV6_ADD_MEMBERSHIP)
+       XLAT(IPV6_ADD_MEMBERSHIP),
+#endif
+#if defined(IPV6_DROP_MEMBERSHIP) || (defined(HAVE_DECL_IPV6_DROP_MEMBERSHIP) && HAVE_DECL_IPV6_DROP_MEMBERSHIP)
+       XLAT(IPV6_DROP_MEMBERSHIP),
+#endif
+#if defined(IPV6_ROUTER_ALERT) || (defined(HAVE_DECL_IPV6_ROUTER_ALERT) && HAVE_DECL_IPV6_ROUTER_ALERT)
+       XLAT(IPV6_ROUTER_ALERT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sockipv6options.in b/xlat/sockipv6options.in
new file mode 100644 (file)
index 0000000..7808ae0
--- /dev/null
@@ -0,0 +1,21 @@
+IPV6_ADDRFORM
+MCAST_FILTER
+IPV6_PKTOPTIONS
+IPV6_MTU
+IPV6_V6ONLY
+IPV6_PKTINFO
+IPV6_HOPLIMIT
+IPV6_RTHDR
+IPV6_HOPOPTS
+IPV6_DSTOPTS
+IPV6_FLOWINFO
+IPV6_UNICAST_HOPS
+IPV6_MULTICAST_HOPS
+IPV6_MULTICAST_LOOP
+IPV6_MULTICAST_IF
+IPV6_MTU_DISCOVER
+IPV6_RECVERR
+IPV6_FLOWINFO_SEND
+IPV6_ADD_MEMBERSHIP
+IPV6_DROP_MEMBERSHIP
+IPV6_ROUTER_ALERT
diff --git a/xlat/sockipxoptions.h b/xlat/sockipxoptions.h
new file mode 100644 (file)
index 0000000..6c47170
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sockipxoptions.in; do not edit. */
+
+static const struct xlat sockipxoptions[] = {
+#if defined(IPX_TYPE) || (defined(HAVE_DECL_IPX_TYPE) && HAVE_DECL_IPX_TYPE)
+       XLAT(IPX_TYPE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sockipxoptions.in b/xlat/sockipxoptions.in
new file mode 100644 (file)
index 0000000..eba97fd
--- /dev/null
@@ -0,0 +1 @@
+IPX_TYPE
diff --git a/xlat/sockoptions.h b/xlat/sockoptions.h
new file mode 100644 (file)
index 0000000..2ac9d71
--- /dev/null
@@ -0,0 +1,131 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sockoptions.in; do not edit. */
+
+static const struct xlat sockoptions[] = {
+#if defined(SO_ACCEPTCONN) || (defined(HAVE_DECL_SO_ACCEPTCONN) && HAVE_DECL_SO_ACCEPTCONN)
+       XLAT(SO_ACCEPTCONN),
+#endif
+#if defined(SO_ALLRAW) || (defined(HAVE_DECL_SO_ALLRAW) && HAVE_DECL_SO_ALLRAW)
+       XLAT(SO_ALLRAW),
+#endif
+#if defined(SO_ATTACH_FILTER) || (defined(HAVE_DECL_SO_ATTACH_FILTER) && HAVE_DECL_SO_ATTACH_FILTER)
+       XLAT(SO_ATTACH_FILTER),
+#endif
+#if defined(SO_BINDTODEVICE) || (defined(HAVE_DECL_SO_BINDTODEVICE) && HAVE_DECL_SO_BINDTODEVICE)
+       XLAT(SO_BINDTODEVICE),
+#endif
+#if defined(SO_BROADCAST) || (defined(HAVE_DECL_SO_BROADCAST) && HAVE_DECL_SO_BROADCAST)
+       XLAT(SO_BROADCAST),
+#endif
+#if defined(SO_BSDCOMPAT) || (defined(HAVE_DECL_SO_BSDCOMPAT) && HAVE_DECL_SO_BSDCOMPAT)
+       XLAT(SO_BSDCOMPAT),
+#endif
+#if defined(SO_DEBUG) || (defined(HAVE_DECL_SO_DEBUG) && HAVE_DECL_SO_DEBUG)
+       XLAT(SO_DEBUG),
+#endif
+#if defined(SO_DETACH_FILTER) || (defined(HAVE_DECL_SO_DETACH_FILTER) && HAVE_DECL_SO_DETACH_FILTER)
+       XLAT(SO_DETACH_FILTER),
+#endif
+#if defined(SO_DONTROUTE) || (defined(HAVE_DECL_SO_DONTROUTE) && HAVE_DECL_SO_DONTROUTE)
+       XLAT(SO_DONTROUTE),
+#endif
+#if defined(SO_ERROR) || (defined(HAVE_DECL_SO_ERROR) && HAVE_DECL_SO_ERROR)
+       XLAT(SO_ERROR),
+#endif
+#if defined(SO_ICS) || (defined(HAVE_DECL_SO_ICS) && HAVE_DECL_SO_ICS)
+       XLAT(SO_ICS),
+#endif
+#if defined(SO_IMASOCKET) || (defined(HAVE_DECL_SO_IMASOCKET) && HAVE_DECL_SO_IMASOCKET)
+       XLAT(SO_IMASOCKET),
+#endif
+#if defined(SO_KEEPALIVE) || (defined(HAVE_DECL_SO_KEEPALIVE) && HAVE_DECL_SO_KEEPALIVE)
+       XLAT(SO_KEEPALIVE),
+#endif
+#if defined(SO_LINGER) || (defined(HAVE_DECL_SO_LINGER) && HAVE_DECL_SO_LINGER)
+       XLAT(SO_LINGER),
+#endif
+#if defined(SO_LISTENING) || (defined(HAVE_DECL_SO_LISTENING) && HAVE_DECL_SO_LISTENING)
+       XLAT(SO_LISTENING),
+#endif
+#if defined(SO_MGMT) || (defined(HAVE_DECL_SO_MGMT) && HAVE_DECL_SO_MGMT)
+       XLAT(SO_MGMT),
+#endif
+#if defined(SO_NO_CHECK) || (defined(HAVE_DECL_SO_NO_CHECK) && HAVE_DECL_SO_NO_CHECK)
+       XLAT(SO_NO_CHECK),
+#endif
+#if defined(SO_OOBINLINE) || (defined(HAVE_DECL_SO_OOBINLINE) && HAVE_DECL_SO_OOBINLINE)
+       XLAT(SO_OOBINLINE),
+#endif
+#if defined(SO_ORDREL) || (defined(HAVE_DECL_SO_ORDREL) && HAVE_DECL_SO_ORDREL)
+       XLAT(SO_ORDREL),
+#endif
+#if defined(SO_PARALLELSVR) || (defined(HAVE_DECL_SO_PARALLELSVR) && HAVE_DECL_SO_PARALLELSVR)
+       XLAT(SO_PARALLELSVR),
+#endif
+#if defined(SO_PASSCRED) || (defined(HAVE_DECL_SO_PASSCRED) && HAVE_DECL_SO_PASSCRED)
+       XLAT(SO_PASSCRED),
+#endif
+#if defined(SO_PEERCRED) || (defined(HAVE_DECL_SO_PEERCRED) && HAVE_DECL_SO_PEERCRED)
+       XLAT(SO_PEERCRED),
+#endif
+#if defined(SO_PEERNAME) || (defined(HAVE_DECL_SO_PEERNAME) && HAVE_DECL_SO_PEERNAME)
+       XLAT(SO_PEERNAME),
+#endif
+#if defined(SO_PEERSEC) || (defined(HAVE_DECL_SO_PEERSEC) && HAVE_DECL_SO_PEERSEC)
+       XLAT(SO_PEERSEC),
+#endif
+#if defined(SO_PRIORITY) || (defined(HAVE_DECL_SO_PRIORITY) && HAVE_DECL_SO_PRIORITY)
+       XLAT(SO_PRIORITY),
+#endif
+#if defined(SO_PROTOTYPE) || (defined(HAVE_DECL_SO_PROTOTYPE) && HAVE_DECL_SO_PROTOTYPE)
+       XLAT(SO_PROTOTYPE),
+#endif
+#if defined(SO_RCVBUF) || (defined(HAVE_DECL_SO_RCVBUF) && HAVE_DECL_SO_RCVBUF)
+       XLAT(SO_RCVBUF),
+#endif
+#if defined(SO_RCVLOWAT) || (defined(HAVE_DECL_SO_RCVLOWAT) && HAVE_DECL_SO_RCVLOWAT)
+       XLAT(SO_RCVLOWAT),
+#endif
+#if defined(SO_RCVTIMEO) || (defined(HAVE_DECL_SO_RCVTIMEO) && HAVE_DECL_SO_RCVTIMEO)
+       XLAT(SO_RCVTIMEO),
+#endif
+#if defined(SO_RDWR) || (defined(HAVE_DECL_SO_RDWR) && HAVE_DECL_SO_RDWR)
+       XLAT(SO_RDWR),
+#endif
+#if defined(SO_REUSEADDR) || (defined(HAVE_DECL_SO_REUSEADDR) && HAVE_DECL_SO_REUSEADDR)
+       XLAT(SO_REUSEADDR),
+#endif
+#if defined(SO_REUSEPORT) || (defined(HAVE_DECL_SO_REUSEPORT) && HAVE_DECL_SO_REUSEPORT)
+       XLAT(SO_REUSEPORT),
+#endif
+#if defined(SO_SECURITY_AUTHENTICATION) || (defined(HAVE_DECL_SO_SECURITY_AUTHENTICATION) && HAVE_DECL_SO_SECURITY_AUTHENTICATION)
+       XLAT(SO_SECURITY_AUTHENTICATION),
+#endif
+#if defined(SO_SECURITY_ENCRYPTION_NETWORK) || (defined(HAVE_DECL_SO_SECURITY_ENCRYPTION_NETWORK) && HAVE_DECL_SO_SECURITY_ENCRYPTION_NETWORK)
+       XLAT(SO_SECURITY_ENCRYPTION_NETWORK),
+#endif
+#if defined(SO_SECURITY_ENCRYPTION_TRANSPORT) || (defined(HAVE_DECL_SO_SECURITY_ENCRYPTION_TRANSPORT) && HAVE_DECL_SO_SECURITY_ENCRYPTION_TRANSPORT)
+       XLAT(SO_SECURITY_ENCRYPTION_TRANSPORT),
+#endif
+#if defined(SO_SEMA) || (defined(HAVE_DECL_SO_SEMA) && HAVE_DECL_SO_SEMA)
+       XLAT(SO_SEMA),
+#endif
+#if defined(SO_SNDBUF) || (defined(HAVE_DECL_SO_SNDBUF) && HAVE_DECL_SO_SNDBUF)
+       XLAT(SO_SNDBUF),
+#endif
+#if defined(SO_SNDLOWAT) || (defined(HAVE_DECL_SO_SNDLOWAT) && HAVE_DECL_SO_SNDLOWAT)
+       XLAT(SO_SNDLOWAT),
+#endif
+#if defined(SO_SNDTIMEO) || (defined(HAVE_DECL_SO_SNDTIMEO) && HAVE_DECL_SO_SNDTIMEO)
+       XLAT(SO_SNDTIMEO),
+#endif
+#if defined(SO_TIMESTAMP) || (defined(HAVE_DECL_SO_TIMESTAMP) && HAVE_DECL_SO_TIMESTAMP)
+       XLAT(SO_TIMESTAMP),
+#endif
+#if defined(SO_TYPE) || (defined(HAVE_DECL_SO_TYPE) && HAVE_DECL_SO_TYPE)
+       XLAT(SO_TYPE),
+#endif
+#if defined(SO_USELOOPBACK) || (defined(HAVE_DECL_SO_USELOOPBACK) && HAVE_DECL_SO_USELOOPBACK)
+       XLAT(SO_USELOOPBACK),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sockoptions.in b/xlat/sockoptions.in
new file mode 100644 (file)
index 0000000..9778a85
--- /dev/null
@@ -0,0 +1,42 @@
+SO_ACCEPTCONN
+SO_ALLRAW
+SO_ATTACH_FILTER
+SO_BINDTODEVICE
+SO_BROADCAST
+SO_BSDCOMPAT
+SO_DEBUG
+SO_DETACH_FILTER
+SO_DONTROUTE
+SO_ERROR
+SO_ICS
+SO_IMASOCKET
+SO_KEEPALIVE
+SO_LINGER
+SO_LISTENING
+SO_MGMT
+SO_NO_CHECK
+SO_OOBINLINE
+SO_ORDREL
+SO_PARALLELSVR
+SO_PASSCRED
+SO_PEERCRED
+SO_PEERNAME
+SO_PEERSEC
+SO_PRIORITY
+SO_PROTOTYPE
+SO_RCVBUF
+SO_RCVLOWAT
+SO_RCVTIMEO
+SO_RDWR
+SO_REUSEADDR
+SO_REUSEPORT
+SO_SECURITY_AUTHENTICATION
+SO_SECURITY_ENCRYPTION_NETWORK
+SO_SECURITY_ENCRYPTION_TRANSPORT
+SO_SEMA
+SO_SNDBUF
+SO_SNDLOWAT
+SO_SNDTIMEO
+SO_TIMESTAMP
+SO_TYPE
+SO_USELOOPBACK
diff --git a/xlat/sockpacketoptions.h b/xlat/sockpacketoptions.h
new file mode 100644 (file)
index 0000000..e7025eb
--- /dev/null
@@ -0,0 +1,44 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sockpacketoptions.in; do not edit. */
+
+static const struct xlat sockpacketoptions[] = {
+#if defined(PACKET_ADD_MEMBERSHIP) || (defined(HAVE_DECL_PACKET_ADD_MEMBERSHIP) && HAVE_DECL_PACKET_ADD_MEMBERSHIP)
+       XLAT(PACKET_ADD_MEMBERSHIP),
+#endif
+#if defined(PACKET_DROP_MEMBERSHIP) || (defined(HAVE_DECL_PACKET_DROP_MEMBERSHIP) && HAVE_DECL_PACKET_DROP_MEMBERSHIP)
+       XLAT(PACKET_DROP_MEMBERSHIP),
+#endif
+#if defined(PACKET_RECV_OUTPUT) || (defined(HAVE_DECL_PACKET_RECV_OUTPUT) && HAVE_DECL_PACKET_RECV_OUTPUT)
+       XLAT(PACKET_RECV_OUTPUT),
+#endif
+#if defined(PACKET_RX_RING) || (defined(HAVE_DECL_PACKET_RX_RING) && HAVE_DECL_PACKET_RX_RING)
+       XLAT(PACKET_RX_RING),
+#endif
+#if defined(PACKET_STATISTICS) || (defined(HAVE_DECL_PACKET_STATISTICS) && HAVE_DECL_PACKET_STATISTICS)
+       XLAT(PACKET_STATISTICS),
+#endif
+#if defined(PACKET_COPY_THRESH) || (defined(HAVE_DECL_PACKET_COPY_THRESH) && HAVE_DECL_PACKET_COPY_THRESH)
+       XLAT(PACKET_COPY_THRESH),
+#endif
+#if defined(PACKET_AUXDATA) || (defined(HAVE_DECL_PACKET_AUXDATA) && HAVE_DECL_PACKET_AUXDATA)
+       XLAT(PACKET_AUXDATA),
+#endif
+#if defined(PACKET_ORIGDEV) || (defined(HAVE_DECL_PACKET_ORIGDEV) && HAVE_DECL_PACKET_ORIGDEV)
+       XLAT(PACKET_ORIGDEV),
+#endif
+#if defined(PACKET_VERSION) || (defined(HAVE_DECL_PACKET_VERSION) && HAVE_DECL_PACKET_VERSION)
+       XLAT(PACKET_VERSION),
+#endif
+#if defined(PACKET_HDRLEN) || (defined(HAVE_DECL_PACKET_HDRLEN) && HAVE_DECL_PACKET_HDRLEN)
+       XLAT(PACKET_HDRLEN),
+#endif
+#if defined(PACKET_RESERVE) || (defined(HAVE_DECL_PACKET_RESERVE) && HAVE_DECL_PACKET_RESERVE)
+       XLAT(PACKET_RESERVE),
+#endif
+#if defined(PACKET_TX_RING) || (defined(HAVE_DECL_PACKET_TX_RING) && HAVE_DECL_PACKET_TX_RING)
+       XLAT(PACKET_TX_RING),
+#endif
+#if defined(PACKET_LOSS) || (defined(HAVE_DECL_PACKET_LOSS) && HAVE_DECL_PACKET_LOSS)
+       XLAT(PACKET_LOSS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sockpacketoptions.in b/xlat/sockpacketoptions.in
new file mode 100644 (file)
index 0000000..734ca10
--- /dev/null
@@ -0,0 +1,13 @@
+PACKET_ADD_MEMBERSHIP
+PACKET_DROP_MEMBERSHIP
+PACKET_RECV_OUTPUT
+PACKET_RX_RING
+PACKET_STATISTICS
+PACKET_COPY_THRESH
+PACKET_AUXDATA
+PACKET_ORIGDEV
+PACKET_VERSION
+PACKET_HDRLEN
+PACKET_RESERVE
+PACKET_TX_RING
+PACKET_LOSS
diff --git a/xlat/sockrawoptions.h b/xlat/sockrawoptions.h
new file mode 100644 (file)
index 0000000..96ebded
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sockrawoptions.in; do not edit. */
+
+static const struct xlat sockrawoptions[] = {
+#if defined(ICMP_FILTER) || (defined(HAVE_DECL_ICMP_FILTER) && HAVE_DECL_ICMP_FILTER)
+       XLAT(ICMP_FILTER),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sockrawoptions.in b/xlat/sockrawoptions.in
new file mode 100644 (file)
index 0000000..b341134
--- /dev/null
@@ -0,0 +1 @@
+ICMP_FILTER
diff --git a/xlat/socksctpoptions.h b/xlat/socksctpoptions.h
new file mode 100644 (file)
index 0000000..0b54030
--- /dev/null
@@ -0,0 +1,123 @@
+/* Generated by ./xlat/gen.sh from ./xlat/socksctpoptions.in; do not edit. */
+
+static const struct xlat socksctpoptions[] = {
+#if defined(SCTP_RTOINFO) || (defined(HAVE_DECL_SCTP_RTOINFO) && HAVE_DECL_SCTP_RTOINFO)
+       XLAT(SCTP_RTOINFO),
+#endif
+#if defined(SCTP_ASSOCINFO) || (defined(HAVE_DECL_SCTP_ASSOCINFO) && HAVE_DECL_SCTP_ASSOCINFO)
+       XLAT(SCTP_ASSOCINFO),
+#endif
+#if defined(SCTP_INITMSG) || (defined(HAVE_DECL_SCTP_INITMSG) && HAVE_DECL_SCTP_INITMSG)
+       XLAT(SCTP_INITMSG),
+#endif
+#if defined(SCTP_NODELAY) || (defined(HAVE_DECL_SCTP_NODELAY) && HAVE_DECL_SCTP_NODELAY)
+       XLAT(SCTP_NODELAY),
+#endif
+#if defined(SCTP_AUTOCLOSE) || (defined(HAVE_DECL_SCTP_AUTOCLOSE) && HAVE_DECL_SCTP_AUTOCLOSE)
+       XLAT(SCTP_AUTOCLOSE),
+#endif
+#if defined(SCTP_SET_PEER_PRIMARY_ADDR) || (defined(HAVE_DECL_SCTP_SET_PEER_PRIMARY_ADDR) && HAVE_DECL_SCTP_SET_PEER_PRIMARY_ADDR)
+       XLAT(SCTP_SET_PEER_PRIMARY_ADDR),
+#endif
+#if defined(SCTP_PRIMARY_ADDR) || (defined(HAVE_DECL_SCTP_PRIMARY_ADDR) && HAVE_DECL_SCTP_PRIMARY_ADDR)
+       XLAT(SCTP_PRIMARY_ADDR),
+#endif
+#if defined(SCTP_ADAPTATION_LAYER) || (defined(HAVE_DECL_SCTP_ADAPTATION_LAYER) && HAVE_DECL_SCTP_ADAPTATION_LAYER)
+       XLAT(SCTP_ADAPTATION_LAYER),
+#endif
+#if defined(SCTP_DISABLE_FRAGMENTS) || (defined(HAVE_DECL_SCTP_DISABLE_FRAGMENTS) && HAVE_DECL_SCTP_DISABLE_FRAGMENTS)
+       XLAT(SCTP_DISABLE_FRAGMENTS),
+#endif
+#if defined(SCTP_PEER_ADDR_PARAMS) || (defined(HAVE_DECL_SCTP_PEER_ADDR_PARAMS) && HAVE_DECL_SCTP_PEER_ADDR_PARAMS)
+       XLAT(SCTP_PEER_ADDR_PARAMS),
+#endif
+#if defined(SCTP_DEFAULT_SEND_PARAM) || (defined(HAVE_DECL_SCTP_DEFAULT_SEND_PARAM) && HAVE_DECL_SCTP_DEFAULT_SEND_PARAM)
+       XLAT(SCTP_DEFAULT_SEND_PARAM),
+#endif
+#if defined(SCTP_EVENTS) || (defined(HAVE_DECL_SCTP_EVENTS) && HAVE_DECL_SCTP_EVENTS)
+       XLAT(SCTP_EVENTS),
+#endif
+#if defined(SCTP_I_WANT_MAPPED_V4_ADDR) || (defined(HAVE_DECL_SCTP_I_WANT_MAPPED_V4_ADDR) && HAVE_DECL_SCTP_I_WANT_MAPPED_V4_ADDR)
+       XLAT(SCTP_I_WANT_MAPPED_V4_ADDR),
+#endif
+#if defined(SCTP_MAXSEG) || (defined(HAVE_DECL_SCTP_MAXSEG) && HAVE_DECL_SCTP_MAXSEG)
+       XLAT(SCTP_MAXSEG),
+#endif
+#if defined(SCTP_STATUS) || (defined(HAVE_DECL_SCTP_STATUS) && HAVE_DECL_SCTP_STATUS)
+       XLAT(SCTP_STATUS),
+#endif
+#if defined(SCTP_GET_PEER_ADDR_INFO) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDR_INFO) && HAVE_DECL_SCTP_GET_PEER_ADDR_INFO)
+       XLAT(SCTP_GET_PEER_ADDR_INFO),
+#endif
+#if defined(SCTP_DELAYED_ACK) || (defined(HAVE_DECL_SCTP_DELAYED_ACK) && HAVE_DECL_SCTP_DELAYED_ACK)
+       XLAT(SCTP_DELAYED_ACK),
+#endif
+#if defined(SCTP_CONTEXT) || (defined(HAVE_DECL_SCTP_CONTEXT) && HAVE_DECL_SCTP_CONTEXT)
+       XLAT(SCTP_CONTEXT),
+#endif
+#if defined(SCTP_FRAGMENT_INTERLEAVE) || (defined(HAVE_DECL_SCTP_FRAGMENT_INTERLEAVE) && HAVE_DECL_SCTP_FRAGMENT_INTERLEAVE)
+       XLAT(SCTP_FRAGMENT_INTERLEAVE),
+#endif
+#if defined(SCTP_PARTIAL_DELIVERY_POINT) || (defined(HAVE_DECL_SCTP_PARTIAL_DELIVERY_POINT) && HAVE_DECL_SCTP_PARTIAL_DELIVERY_POINT)
+       XLAT(SCTP_PARTIAL_DELIVERY_POINT),
+#endif
+#if defined(SCTP_MAX_BURST) || (defined(HAVE_DECL_SCTP_MAX_BURST) && HAVE_DECL_SCTP_MAX_BURST)
+       XLAT(SCTP_MAX_BURST),
+#endif
+#if defined(SCTP_AUTH_CHUNK) || (defined(HAVE_DECL_SCTP_AUTH_CHUNK) && HAVE_DECL_SCTP_AUTH_CHUNK)
+       XLAT(SCTP_AUTH_CHUNK),
+#endif
+#if defined(SCTP_HMAC_IDENT) || (defined(HAVE_DECL_SCTP_HMAC_IDENT) && HAVE_DECL_SCTP_HMAC_IDENT)
+       XLAT(SCTP_HMAC_IDENT),
+#endif
+#if defined(SCTP_AUTH_KEY) || (defined(HAVE_DECL_SCTP_AUTH_KEY) && HAVE_DECL_SCTP_AUTH_KEY)
+       XLAT(SCTP_AUTH_KEY),
+#endif
+#if defined(SCTP_AUTH_ACTIVE_KEY) || (defined(HAVE_DECL_SCTP_AUTH_ACTIVE_KEY) && HAVE_DECL_SCTP_AUTH_ACTIVE_KEY)
+       XLAT(SCTP_AUTH_ACTIVE_KEY),
+#endif
+#if defined(SCTP_AUTH_DELETE_KEY) || (defined(HAVE_DECL_SCTP_AUTH_DELETE_KEY) && HAVE_DECL_SCTP_AUTH_DELETE_KEY)
+       XLAT(SCTP_AUTH_DELETE_KEY),
+#endif
+#if defined(SCTP_PEER_AUTH_CHUNKS) || (defined(HAVE_DECL_SCTP_PEER_AUTH_CHUNKS) && HAVE_DECL_SCTP_PEER_AUTH_CHUNKS)
+       XLAT(SCTP_PEER_AUTH_CHUNKS),
+#endif
+#if defined(SCTP_LOCAL_AUTH_CHUNKS) || (defined(HAVE_DECL_SCTP_LOCAL_AUTH_CHUNKS) && HAVE_DECL_SCTP_LOCAL_AUTH_CHUNKS)
+       XLAT(SCTP_LOCAL_AUTH_CHUNKS),
+#endif
+#if defined(SCTP_GET_ASSOC_NUMBER) || (defined(HAVE_DECL_SCTP_GET_ASSOC_NUMBER) && HAVE_DECL_SCTP_GET_ASSOC_NUMBER)
+       XLAT(SCTP_GET_ASSOC_NUMBER),
+#endif
+/* linux specific things */
+#if defined(SCTP_SOCKOPT_BINDX_ADD) || (defined(HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD) && HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD)
+       XLAT(SCTP_SOCKOPT_BINDX_ADD),
+#endif
+#if defined(SCTP_SOCKOPT_BINDX_REM) || (defined(HAVE_DECL_SCTP_SOCKOPT_BINDX_REM) && HAVE_DECL_SCTP_SOCKOPT_BINDX_REM)
+       XLAT(SCTP_SOCKOPT_BINDX_REM),
+#endif
+#if defined(SCTP_SOCKOPT_PEELOFF) || (defined(HAVE_DECL_SCTP_SOCKOPT_PEELOFF) && HAVE_DECL_SCTP_SOCKOPT_PEELOFF)
+       XLAT(SCTP_SOCKOPT_PEELOFF),
+#endif
+#if defined(SCTP_GET_PEER_ADDRS_NUM_OLD) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDRS_NUM_OLD) && HAVE_DECL_SCTP_GET_PEER_ADDRS_NUM_OLD)
+       XLAT(SCTP_GET_PEER_ADDRS_NUM_OLD),
+#endif
+#if defined(SCTP_GET_PEER_ADDRS_OLD) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDRS_OLD) && HAVE_DECL_SCTP_GET_PEER_ADDRS_OLD)
+       XLAT(SCTP_GET_PEER_ADDRS_OLD),
+#endif
+#if defined(SCTP_GET_LOCAL_ADDRS_NUM_OLD) || (defined(HAVE_DECL_SCTP_GET_LOCAL_ADDRS_NUM_OLD) && HAVE_DECL_SCTP_GET_LOCAL_ADDRS_NUM_OLD)
+       XLAT(SCTP_GET_LOCAL_ADDRS_NUM_OLD),
+#endif
+#if defined(SCTP_GET_LOCAL_ADDRS_OLD) || (defined(HAVE_DECL_SCTP_GET_LOCAL_ADDRS_OLD) && HAVE_DECL_SCTP_GET_LOCAL_ADDRS_OLD)
+       XLAT(SCTP_GET_LOCAL_ADDRS_OLD),
+#endif
+#if defined(SCTP_SOCKOPT_CONNECTX_OLD) || (defined(HAVE_DECL_SCTP_SOCKOPT_CONNECTX_OLD) && HAVE_DECL_SCTP_SOCKOPT_CONNECTX_OLD)
+       XLAT(SCTP_SOCKOPT_CONNECTX_OLD),
+#endif
+#if defined(SCTP_GET_PEER_ADDRS) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDRS) && HAVE_DECL_SCTP_GET_PEER_ADDRS)
+       XLAT(SCTP_GET_PEER_ADDRS),
+#endif
+#if defined(SCTP_GET_LOCAL_ADDRS) || (defined(HAVE_DECL_SCTP_GET_LOCAL_ADDRS) && HAVE_DECL_SCTP_GET_LOCAL_ADDRS)
+       XLAT(SCTP_GET_LOCAL_ADDRS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/socksctpoptions.in b/xlat/socksctpoptions.in
new file mode 100644 (file)
index 0000000..5ee7ad0
--- /dev/null
@@ -0,0 +1,40 @@
+SCTP_RTOINFO
+SCTP_ASSOCINFO
+SCTP_INITMSG
+SCTP_NODELAY
+SCTP_AUTOCLOSE
+SCTP_SET_PEER_PRIMARY_ADDR
+SCTP_PRIMARY_ADDR
+SCTP_ADAPTATION_LAYER
+SCTP_DISABLE_FRAGMENTS
+SCTP_PEER_ADDR_PARAMS
+SCTP_DEFAULT_SEND_PARAM
+SCTP_EVENTS
+SCTP_I_WANT_MAPPED_V4_ADDR
+SCTP_MAXSEG
+SCTP_STATUS
+SCTP_GET_PEER_ADDR_INFO
+SCTP_DELAYED_ACK
+SCTP_CONTEXT
+SCTP_FRAGMENT_INTERLEAVE
+SCTP_PARTIAL_DELIVERY_POINT
+SCTP_MAX_BURST
+SCTP_AUTH_CHUNK
+SCTP_HMAC_IDENT
+SCTP_AUTH_KEY
+SCTP_AUTH_ACTIVE_KEY
+SCTP_AUTH_DELETE_KEY
+SCTP_PEER_AUTH_CHUNKS
+SCTP_LOCAL_AUTH_CHUNKS
+SCTP_GET_ASSOC_NUMBER
+/* linux specific things */
+SCTP_SOCKOPT_BINDX_ADD
+SCTP_SOCKOPT_BINDX_REM
+SCTP_SOCKOPT_PEELOFF
+SCTP_GET_PEER_ADDRS_NUM_OLD
+SCTP_GET_PEER_ADDRS_OLD
+SCTP_GET_LOCAL_ADDRS_NUM_OLD
+SCTP_GET_LOCAL_ADDRS_OLD
+SCTP_SOCKOPT_CONNECTX_OLD
+SCTP_GET_PEER_ADDRS
+SCTP_GET_LOCAL_ADDRS
diff --git a/xlat/socktcpoptions.h b/xlat/socktcpoptions.h
new file mode 100644 (file)
index 0000000..e6a3a28
--- /dev/null
@@ -0,0 +1,77 @@
+/* Generated by ./xlat/gen.sh from ./xlat/socktcpoptions.in; do not edit. */
+
+static const struct xlat socktcpoptions[] = {
+#if defined(TCP_NODELAY) || (defined(HAVE_DECL_TCP_NODELAY) && HAVE_DECL_TCP_NODELAY)
+       XLAT(TCP_NODELAY),
+#endif
+#if defined(TCP_MAXSEG) || (defined(HAVE_DECL_TCP_MAXSEG) && HAVE_DECL_TCP_MAXSEG)
+       XLAT(TCP_MAXSEG),
+#endif
+#if defined(TCP_CORK) || (defined(HAVE_DECL_TCP_CORK) && HAVE_DECL_TCP_CORK)
+       XLAT(TCP_CORK),
+#endif
+#if defined(TCP_KEEPIDLE) || (defined(HAVE_DECL_TCP_KEEPIDLE) && HAVE_DECL_TCP_KEEPIDLE)
+       XLAT(TCP_KEEPIDLE),
+#endif
+#if defined(TCP_KEEPINTVL) || (defined(HAVE_DECL_TCP_KEEPINTVL) && HAVE_DECL_TCP_KEEPINTVL)
+       XLAT(TCP_KEEPINTVL),
+#endif
+#if defined(TCP_KEEPCNT) || (defined(HAVE_DECL_TCP_KEEPCNT) && HAVE_DECL_TCP_KEEPCNT)
+       XLAT(TCP_KEEPCNT),
+#endif
+#if defined(TCP_SYNCNT) || (defined(HAVE_DECL_TCP_SYNCNT) && HAVE_DECL_TCP_SYNCNT)
+       XLAT(TCP_SYNCNT),
+#endif
+#if defined(TCP_LINGER2) || (defined(HAVE_DECL_TCP_LINGER2) && HAVE_DECL_TCP_LINGER2)
+       XLAT(TCP_LINGER2),
+#endif
+#if defined(TCP_DEFER_ACCEPT) || (defined(HAVE_DECL_TCP_DEFER_ACCEPT) && HAVE_DECL_TCP_DEFER_ACCEPT)
+       XLAT(TCP_DEFER_ACCEPT),
+#endif
+#if defined(TCP_WINDOW_CLAMP) || (defined(HAVE_DECL_TCP_WINDOW_CLAMP) && HAVE_DECL_TCP_WINDOW_CLAMP)
+       XLAT(TCP_WINDOW_CLAMP),
+#endif
+#if defined(TCP_INFO) || (defined(HAVE_DECL_TCP_INFO) && HAVE_DECL_TCP_INFO)
+       XLAT(TCP_INFO),
+#endif
+#if defined(TCP_QUICKACK) || (defined(HAVE_DECL_TCP_QUICKACK) && HAVE_DECL_TCP_QUICKACK)
+       XLAT(TCP_QUICKACK),
+#endif
+#if defined(TCP_CONGESTION) || (defined(HAVE_DECL_TCP_CONGESTION) && HAVE_DECL_TCP_CONGESTION)
+       XLAT(TCP_CONGESTION),
+#endif
+#if defined(TCP_MD5SIG) || (defined(HAVE_DECL_TCP_MD5SIG) && HAVE_DECL_TCP_MD5SIG)
+       XLAT(TCP_MD5SIG),
+#endif
+#if defined(TCP_COOKIE_TRANSACTIONS) || (defined(HAVE_DECL_TCP_COOKIE_TRANSACTIONS) && HAVE_DECL_TCP_COOKIE_TRANSACTIONS)
+       XLAT(TCP_COOKIE_TRANSACTIONS),
+#endif
+#if defined(TCP_THIN_LINEAR_TIMEOUTS) || (defined(HAVE_DECL_TCP_THIN_LINEAR_TIMEOUTS) && HAVE_DECL_TCP_THIN_LINEAR_TIMEOUTS)
+       XLAT(TCP_THIN_LINEAR_TIMEOUTS),
+#endif
+#if defined(TCP_THIN_DUPACK) || (defined(HAVE_DECL_TCP_THIN_DUPACK) && HAVE_DECL_TCP_THIN_DUPACK)
+       XLAT(TCP_THIN_DUPACK),
+#endif
+#if defined(TCP_USER_TIMEOUT) || (defined(HAVE_DECL_TCP_USER_TIMEOUT) && HAVE_DECL_TCP_USER_TIMEOUT)
+       XLAT(TCP_USER_TIMEOUT),
+#endif
+#if defined(TCP_REPAIR) || (defined(HAVE_DECL_TCP_REPAIR) && HAVE_DECL_TCP_REPAIR)
+       XLAT(TCP_REPAIR),
+#endif
+#if defined(TCP_REPAIR_QUEUE) || (defined(HAVE_DECL_TCP_REPAIR_QUEUE) && HAVE_DECL_TCP_REPAIR_QUEUE)
+       XLAT(TCP_REPAIR_QUEUE),
+#endif
+#if defined(TCP_QUEUE_SEQ) || (defined(HAVE_DECL_TCP_QUEUE_SEQ) && HAVE_DECL_TCP_QUEUE_SEQ)
+       XLAT(TCP_QUEUE_SEQ),
+#endif
+#if defined(TCP_REPAIR_OPTIONS) || (defined(HAVE_DECL_TCP_REPAIR_OPTIONS) && HAVE_DECL_TCP_REPAIR_OPTIONS)
+       XLAT(TCP_REPAIR_OPTIONS),
+#endif
+#if defined(TCP_FASTOPEN) || (defined(HAVE_DECL_TCP_FASTOPEN) && HAVE_DECL_TCP_FASTOPEN)
+       XLAT(TCP_FASTOPEN),
+#endif
+#if defined(TCP_TIMESTAMP) || (defined(HAVE_DECL_TCP_TIMESTAMP) && HAVE_DECL_TCP_TIMESTAMP)
+       XLAT(TCP_TIMESTAMP),
+#endif
+       XLAT_END
+};
diff --git a/xlat/socktcpoptions.in b/xlat/socktcpoptions.in
new file mode 100644 (file)
index 0000000..e83c382
--- /dev/null
@@ -0,0 +1,24 @@
+TCP_NODELAY
+TCP_MAXSEG
+TCP_CORK
+TCP_KEEPIDLE
+TCP_KEEPINTVL
+TCP_KEEPCNT
+TCP_SYNCNT
+TCP_LINGER2
+TCP_DEFER_ACCEPT
+TCP_WINDOW_CLAMP
+TCP_INFO
+TCP_QUICKACK
+TCP_CONGESTION
+TCP_MD5SIG
+TCP_COOKIE_TRANSACTIONS
+TCP_THIN_LINEAR_TIMEOUTS
+TCP_THIN_DUPACK
+TCP_USER_TIMEOUT
+TCP_REPAIR
+TCP_REPAIR_QUEUE
+TCP_QUEUE_SEQ
+TCP_REPAIR_OPTIONS
+TCP_FASTOPEN
+TCP_TIMESTAMP
diff --git a/xlat/socktypes.h b/xlat/socktypes.h
new file mode 100644 (file)
index 0000000..6434759
--- /dev/null
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/socktypes.in; do not edit. */
+
+static const struct xlat socktypes[] = {
+#if defined(SOCK_STREAM) || (defined(HAVE_DECL_SOCK_STREAM) && HAVE_DECL_SOCK_STREAM)
+       XLAT(SOCK_STREAM),
+#endif
+#if defined(SOCK_DGRAM) || (defined(HAVE_DECL_SOCK_DGRAM) && HAVE_DECL_SOCK_DGRAM)
+       XLAT(SOCK_DGRAM),
+#endif
+#if defined(SOCK_RAW) || (defined(HAVE_DECL_SOCK_RAW) && HAVE_DECL_SOCK_RAW)
+       XLAT(SOCK_RAW),
+#endif
+#if defined(SOCK_RDM) || (defined(HAVE_DECL_SOCK_RDM) && HAVE_DECL_SOCK_RDM)
+       XLAT(SOCK_RDM),
+#endif
+#if defined(SOCK_SEQPACKET) || (defined(HAVE_DECL_SOCK_SEQPACKET) && HAVE_DECL_SOCK_SEQPACKET)
+       XLAT(SOCK_SEQPACKET),
+#endif
+#if defined(SOCK_DCCP) || (defined(HAVE_DECL_SOCK_DCCP) && HAVE_DECL_SOCK_DCCP)
+       XLAT(SOCK_DCCP),
+#endif
+#if defined(SOCK_PACKET) || (defined(HAVE_DECL_SOCK_PACKET) && HAVE_DECL_SOCK_PACKET)
+       XLAT(SOCK_PACKET),
+#endif
+       XLAT_END
+};
diff --git a/xlat/socktypes.in b/xlat/socktypes.in
new file mode 100644 (file)
index 0000000..4b3eadc
--- /dev/null
@@ -0,0 +1,7 @@
+SOCK_STREAM
+SOCK_DGRAM
+SOCK_RAW
+SOCK_RDM
+SOCK_SEQPACKET
+SOCK_DCCP
+SOCK_PACKET
diff --git a/xlat/splice_flags.h b/xlat/splice_flags.h
new file mode 100644 (file)
index 0000000..7ae6c84
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/splice_flags.in; do not edit. */
+
+static const struct xlat splice_flags[] = {
+#if defined(SPLICE_F_MOVE) || (defined(HAVE_DECL_SPLICE_F_MOVE) && HAVE_DECL_SPLICE_F_MOVE)
+       XLAT(SPLICE_F_MOVE),
+#endif
+#if defined(SPLICE_F_NONBLOCK) || (defined(HAVE_DECL_SPLICE_F_NONBLOCK) && HAVE_DECL_SPLICE_F_NONBLOCK)
+       XLAT(SPLICE_F_NONBLOCK),
+#endif
+#if defined(SPLICE_F_MORE) || (defined(HAVE_DECL_SPLICE_F_MORE) && HAVE_DECL_SPLICE_F_MORE)
+       XLAT(SPLICE_F_MORE),
+#endif
+#if defined(SPLICE_F_GIFT) || (defined(HAVE_DECL_SPLICE_F_GIFT) && HAVE_DECL_SPLICE_F_GIFT)
+       XLAT(SPLICE_F_GIFT),
+#endif
+       XLAT_END
+};
diff --git a/xlat/splice_flags.in b/xlat/splice_flags.in
new file mode 100644 (file)
index 0000000..72e2c0b
--- /dev/null
@@ -0,0 +1,4 @@
+SPLICE_F_MOVE
+SPLICE_F_NONBLOCK
+SPLICE_F_MORE
+SPLICE_F_GIFT
diff --git a/xlat/sram_alloc_flags.h b/xlat/sram_alloc_flags.h
new file mode 100644 (file)
index 0000000..48dd0f1
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sram_alloc_flags.in; do not edit. */
+
+static const struct xlat sram_alloc_flags[] = {
+#if defined(L1_INST_SRAM) || (defined(HAVE_DECL_L1_INST_SRAM) && HAVE_DECL_L1_INST_SRAM)
+       XLAT(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),
+#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),
+#endif
+#if defined(L1_DATA_SRAM) || (defined(HAVE_DECL_L1_DATA_SRAM) && HAVE_DECL_L1_DATA_SRAM)
+       XLAT(L1_DATA_SRAM),
+#endif
+#if defined(L2_SRAM) || (defined(HAVE_DECL_L2_SRAM) && HAVE_DECL_L2_SRAM)
+       XLAT(L2_SRAM),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sram_alloc_flags.in b/xlat/sram_alloc_flags.in
new file mode 100644 (file)
index 0000000..8c06633
--- /dev/null
@@ -0,0 +1,5 @@
+L1_INST_SRAM
+L1_DATA_A_SRAM
+L1_DATA_B_SRAM
+L1_DATA_SRAM
+L2_SRAM
diff --git a/xlat/swap_flags.h b/xlat/swap_flags.h
new file mode 100644 (file)
index 0000000..0ffc832
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/swap_flags.in; do not edit. */
+
+static const struct xlat swap_flags[] = {
+#if defined(SWAP_FLAG_PREFER) || (defined(HAVE_DECL_SWAP_FLAG_PREFER) && HAVE_DECL_SWAP_FLAG_PREFER)
+       XLAT(SWAP_FLAG_PREFER),
+#endif
+#if defined(SWAP_FLAG_DISCARD) || (defined(HAVE_DECL_SWAP_FLAG_DISCARD) && HAVE_DECL_SWAP_FLAG_DISCARD)
+       XLAT(SWAP_FLAG_DISCARD),
+#endif
+       XLAT_END
+};
diff --git a/xlat/swap_flags.in b/xlat/swap_flags.in
new file mode 100644 (file)
index 0000000..d93e2c1
--- /dev/null
@@ -0,0 +1,2 @@
+SWAP_FLAG_PREFER
+SWAP_FLAG_DISCARD
diff --git a/xlat/sync_file_range_flags.h b/xlat/sync_file_range_flags.h
new file mode 100644 (file)
index 0000000..53ee15c
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sync_file_range_flags.in; do not edit. */
+
+static const struct xlat sync_file_range_flags[] = {
+#if defined(SYNC_FILE_RANGE_WAIT_BEFORE) || (defined(HAVE_DECL_SYNC_FILE_RANGE_WAIT_BEFORE) && HAVE_DECL_SYNC_FILE_RANGE_WAIT_BEFORE)
+       XLAT(SYNC_FILE_RANGE_WAIT_BEFORE),
+#endif
+#if defined(SYNC_FILE_RANGE_WRITE) || (defined(HAVE_DECL_SYNC_FILE_RANGE_WRITE) && HAVE_DECL_SYNC_FILE_RANGE_WRITE)
+       XLAT(SYNC_FILE_RANGE_WRITE),
+#endif
+#if defined(SYNC_FILE_RANGE_WAIT_AFTER) || (defined(HAVE_DECL_SYNC_FILE_RANGE_WAIT_AFTER) && HAVE_DECL_SYNC_FILE_RANGE_WAIT_AFTER)
+       XLAT(SYNC_FILE_RANGE_WAIT_AFTER),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sync_file_range_flags.in b/xlat/sync_file_range_flags.in
new file mode 100644 (file)
index 0000000..3a62f29
--- /dev/null
@@ -0,0 +1,3 @@
+SYNC_FILE_RANGE_WAIT_BEFORE
+SYNC_FILE_RANGE_WRITE
+SYNC_FILE_RANGE_WAIT_AFTER
diff --git a/xlat/sysctl_kern.h b/xlat/sysctl_kern.h
new file mode 100644 (file)
index 0000000..562f3f0
--- /dev/null
@@ -0,0 +1,203 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_kern.in; do not edit. */
+
+static const struct xlat sysctl_kern[] = {
+#if defined(KERN_OSTYPE) || (defined(HAVE_DECL_KERN_OSTYPE) && HAVE_DECL_KERN_OSTYPE)
+       XLAT(KERN_OSTYPE),
+#endif
+#if defined(KERN_OSRELEASE) || (defined(HAVE_DECL_KERN_OSRELEASE) && HAVE_DECL_KERN_OSRELEASE)
+       XLAT(KERN_OSRELEASE),
+#endif
+#if defined(KERN_OSREV) || (defined(HAVE_DECL_KERN_OSREV) && HAVE_DECL_KERN_OSREV)
+       XLAT(KERN_OSREV),
+#endif
+#if defined(KERN_VERSION) || (defined(HAVE_DECL_KERN_VERSION) && HAVE_DECL_KERN_VERSION)
+       XLAT(KERN_VERSION),
+#endif
+#if defined(KERN_SECUREMASK) || (defined(HAVE_DECL_KERN_SECUREMASK) && HAVE_DECL_KERN_SECUREMASK)
+       XLAT(KERN_SECUREMASK),
+#endif
+#if defined(KERN_PROF) || (defined(HAVE_DECL_KERN_PROF) && HAVE_DECL_KERN_PROF)
+       XLAT(KERN_PROF),
+#endif
+#if defined(KERN_NODENAME) || (defined(HAVE_DECL_KERN_NODENAME) && HAVE_DECL_KERN_NODENAME)
+       XLAT(KERN_NODENAME),
+#endif
+#if defined(KERN_DOMAINNAME) || (defined(HAVE_DECL_KERN_DOMAINNAME) && HAVE_DECL_KERN_DOMAINNAME)
+       XLAT(KERN_DOMAINNAME),
+#endif
+#if defined(KERN_PANIC) || (defined(HAVE_DECL_KERN_PANIC) && HAVE_DECL_KERN_PANIC)
+       XLAT(KERN_PANIC),
+#endif
+#if defined(KERN_REALROOTDEV) || (defined(HAVE_DECL_KERN_REALROOTDEV) && HAVE_DECL_KERN_REALROOTDEV)
+       XLAT(KERN_REALROOTDEV),
+#endif
+#if defined(KERN_SPARC_REBOOT) || (defined(HAVE_DECL_KERN_SPARC_REBOOT) && HAVE_DECL_KERN_SPARC_REBOOT)
+       XLAT(KERN_SPARC_REBOOT),
+#endif
+#if defined(KERN_CTLALTDEL) || (defined(HAVE_DECL_KERN_CTLALTDEL) && HAVE_DECL_KERN_CTLALTDEL)
+       XLAT(KERN_CTLALTDEL),
+#endif
+#if defined(KERN_PRINTK) || (defined(HAVE_DECL_KERN_PRINTK) && HAVE_DECL_KERN_PRINTK)
+       XLAT(KERN_PRINTK),
+#endif
+#if defined(KERN_NAMETRANS) || (defined(HAVE_DECL_KERN_NAMETRANS) && HAVE_DECL_KERN_NAMETRANS)
+       XLAT(KERN_NAMETRANS),
+#endif
+#if defined(KERN_PPC_HTABRECLAIM) || (defined(HAVE_DECL_KERN_PPC_HTABRECLAIM) && HAVE_DECL_KERN_PPC_HTABRECLAIM)
+       XLAT(KERN_PPC_HTABRECLAIM),
+#endif
+#if defined(KERN_PPC_ZEROPAGED) || (defined(HAVE_DECL_KERN_PPC_ZEROPAGED) && HAVE_DECL_KERN_PPC_ZEROPAGED)
+       XLAT(KERN_PPC_ZEROPAGED),
+#endif
+#if defined(KERN_PPC_POWERSAVE_NAP) || (defined(HAVE_DECL_KERN_PPC_POWERSAVE_NAP) && HAVE_DECL_KERN_PPC_POWERSAVE_NAP)
+       XLAT(KERN_PPC_POWERSAVE_NAP),
+#endif
+#if defined(KERN_MODPROBE) || (defined(HAVE_DECL_KERN_MODPROBE) && HAVE_DECL_KERN_MODPROBE)
+       XLAT(KERN_MODPROBE),
+#endif
+#if defined(KERN_SG_BIG_BUFF) || (defined(HAVE_DECL_KERN_SG_BIG_BUFF) && HAVE_DECL_KERN_SG_BIG_BUFF)
+       XLAT(KERN_SG_BIG_BUFF),
+#endif
+#if defined(KERN_ACCT) || (defined(HAVE_DECL_KERN_ACCT) && HAVE_DECL_KERN_ACCT)
+       XLAT(KERN_ACCT),
+#endif
+#if defined(KERN_PPC_L2CR) || (defined(HAVE_DECL_KERN_PPC_L2CR) && HAVE_DECL_KERN_PPC_L2CR)
+       XLAT(KERN_PPC_L2CR),
+#endif
+#if defined(KERN_RTSIGNR) || (defined(HAVE_DECL_KERN_RTSIGNR) && HAVE_DECL_KERN_RTSIGNR)
+       XLAT(KERN_RTSIGNR),
+#endif
+#if defined(KERN_RTSIGMAX) || (defined(HAVE_DECL_KERN_RTSIGMAX) && HAVE_DECL_KERN_RTSIGMAX)
+       XLAT(KERN_RTSIGMAX),
+#endif
+#if defined(KERN_SHMMAX) || (defined(HAVE_DECL_KERN_SHMMAX) && HAVE_DECL_KERN_SHMMAX)
+       XLAT(KERN_SHMMAX),
+#endif
+#if defined(KERN_MSGMAX) || (defined(HAVE_DECL_KERN_MSGMAX) && HAVE_DECL_KERN_MSGMAX)
+       XLAT(KERN_MSGMAX),
+#endif
+#if defined(KERN_MSGMNB) || (defined(HAVE_DECL_KERN_MSGMNB) && HAVE_DECL_KERN_MSGMNB)
+       XLAT(KERN_MSGMNB),
+#endif
+#if defined(KERN_MSGPOOL) || (defined(HAVE_DECL_KERN_MSGPOOL) && HAVE_DECL_KERN_MSGPOOL)
+       XLAT(KERN_MSGPOOL),
+#endif
+#if defined(KERN_SYSRQ) || (defined(HAVE_DECL_KERN_SYSRQ) && HAVE_DECL_KERN_SYSRQ)
+       XLAT(KERN_SYSRQ),
+#endif
+#if defined(KERN_MAX_THREADS) || (defined(HAVE_DECL_KERN_MAX_THREADS) && HAVE_DECL_KERN_MAX_THREADS)
+       XLAT(KERN_MAX_THREADS),
+#endif
+#if defined(KERN_RANDOM) || (defined(HAVE_DECL_KERN_RANDOM) && HAVE_DECL_KERN_RANDOM)
+       XLAT(KERN_RANDOM),
+#endif
+#if defined(KERN_SHMALL) || (defined(HAVE_DECL_KERN_SHMALL) && HAVE_DECL_KERN_SHMALL)
+       XLAT(KERN_SHMALL),
+#endif
+#if defined(KERN_MSGMNI) || (defined(HAVE_DECL_KERN_MSGMNI) && HAVE_DECL_KERN_MSGMNI)
+       XLAT(KERN_MSGMNI),
+#endif
+#if defined(KERN_SEM) || (defined(HAVE_DECL_KERN_SEM) && HAVE_DECL_KERN_SEM)
+       XLAT(KERN_SEM),
+#endif
+#if defined(KERN_SPARC_STOP_A) || (defined(HAVE_DECL_KERN_SPARC_STOP_A) && HAVE_DECL_KERN_SPARC_STOP_A)
+       XLAT(KERN_SPARC_STOP_A),
+#endif
+#if defined(KERN_SHMMNI) || (defined(HAVE_DECL_KERN_SHMMNI) && HAVE_DECL_KERN_SHMMNI)
+       XLAT(KERN_SHMMNI),
+#endif
+#if defined(KERN_OVERFLOWUID) || (defined(HAVE_DECL_KERN_OVERFLOWUID) && HAVE_DECL_KERN_OVERFLOWUID)
+       XLAT(KERN_OVERFLOWUID),
+#endif
+#if defined(KERN_OVERFLOWGID) || (defined(HAVE_DECL_KERN_OVERFLOWGID) && HAVE_DECL_KERN_OVERFLOWGID)
+       XLAT(KERN_OVERFLOWGID),
+#endif
+#if defined(KERN_SHMPATH) || (defined(HAVE_DECL_KERN_SHMPATH) && HAVE_DECL_KERN_SHMPATH)
+       XLAT(KERN_SHMPATH),
+#endif
+#if defined(KERN_HOTPLUG) || (defined(HAVE_DECL_KERN_HOTPLUG) && HAVE_DECL_KERN_HOTPLUG)
+       XLAT(KERN_HOTPLUG),
+#endif
+#if defined(KERN_IEEE_EMULATION_WARNINGS) || (defined(HAVE_DECL_KERN_IEEE_EMULATION_WARNINGS) && HAVE_DECL_KERN_IEEE_EMULATION_WARNINGS)
+       XLAT(KERN_IEEE_EMULATION_WARNINGS),
+#endif
+#if defined(KERN_S390_USER_DEBUG_LOGGING) || (defined(HAVE_DECL_KERN_S390_USER_DEBUG_LOGGING) && HAVE_DECL_KERN_S390_USER_DEBUG_LOGGING)
+       XLAT(KERN_S390_USER_DEBUG_LOGGING),
+#endif
+#if defined(KERN_CORE_USES_PID) || (defined(HAVE_DECL_KERN_CORE_USES_PID) && HAVE_DECL_KERN_CORE_USES_PID)
+       XLAT(KERN_CORE_USES_PID),
+#endif
+#if defined(KERN_TAINTED) || (defined(HAVE_DECL_KERN_TAINTED) && HAVE_DECL_KERN_TAINTED)
+       XLAT(KERN_TAINTED),
+#endif
+#if defined(KERN_CADPID) || (defined(HAVE_DECL_KERN_CADPID) && HAVE_DECL_KERN_CADPID)
+       XLAT(KERN_CADPID),
+#endif
+#if defined(KERN_PIDMAX) || (defined(HAVE_DECL_KERN_PIDMAX) && HAVE_DECL_KERN_PIDMAX)
+       XLAT(KERN_PIDMAX),
+#endif
+#if defined(KERN_CORE_PATTERN) || (defined(HAVE_DECL_KERN_CORE_PATTERN) && HAVE_DECL_KERN_CORE_PATTERN)
+       XLAT(KERN_CORE_PATTERN),
+#endif
+#if defined(KERN_PANIC_ON_OOPS) || (defined(HAVE_DECL_KERN_PANIC_ON_OOPS) && HAVE_DECL_KERN_PANIC_ON_OOPS)
+       XLAT(KERN_PANIC_ON_OOPS),
+#endif
+#if defined(KERN_HPPA_PWRSW) || (defined(HAVE_DECL_KERN_HPPA_PWRSW) && HAVE_DECL_KERN_HPPA_PWRSW)
+       XLAT(KERN_HPPA_PWRSW),
+#endif
+#if defined(KERN_HPPA_UNALIGNED) || (defined(HAVE_DECL_KERN_HPPA_UNALIGNED) && HAVE_DECL_KERN_HPPA_UNALIGNED)
+       XLAT(KERN_HPPA_UNALIGNED),
+#endif
+#if defined(KERN_PRINTK_RATELIMIT) || (defined(HAVE_DECL_KERN_PRINTK_RATELIMIT) && HAVE_DECL_KERN_PRINTK_RATELIMIT)
+       XLAT(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),
+#endif
+#if defined(KERN_PTY) || (defined(HAVE_DECL_KERN_PTY) && HAVE_DECL_KERN_PTY)
+       XLAT(KERN_PTY),
+#endif
+#if defined(KERN_NGROUPS_MAX) || (defined(HAVE_DECL_KERN_NGROUPS_MAX) && HAVE_DECL_KERN_NGROUPS_MAX)
+       XLAT(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),
+#endif
+#if defined(KERN_HZ_TIMER) || (defined(HAVE_DECL_KERN_HZ_TIMER) && HAVE_DECL_KERN_HZ_TIMER)
+       XLAT(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),
+#endif
+#if defined(KERN_BOOTLOADER_TYPE) || (defined(HAVE_DECL_KERN_BOOTLOADER_TYPE) && HAVE_DECL_KERN_BOOTLOADER_TYPE)
+       XLAT(KERN_BOOTLOADER_TYPE),
+#endif
+#if defined(KERN_RANDOMIZE) || (defined(HAVE_DECL_KERN_RANDOMIZE) && HAVE_DECL_KERN_RANDOMIZE)
+       XLAT(KERN_RANDOMIZE),
+#endif
+#if defined(KERN_SETUID_DUMPABLE) || (defined(HAVE_DECL_KERN_SETUID_DUMPABLE) && HAVE_DECL_KERN_SETUID_DUMPABLE)
+       XLAT(KERN_SETUID_DUMPABLE),
+#endif
+#if defined(KERN_SPIN_RETRY) || (defined(HAVE_DECL_KERN_SPIN_RETRY) && HAVE_DECL_KERN_SPIN_RETRY)
+       XLAT(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),
+#endif
+#if defined(KERN_IA64_UNALIGNED) || (defined(HAVE_DECL_KERN_IA64_UNALIGNED) && HAVE_DECL_KERN_IA64_UNALIGNED)
+       XLAT(KERN_IA64_UNALIGNED),
+#endif
+#if defined(KERN_COMPAT_LOG) || (defined(HAVE_DECL_KERN_COMPAT_LOG) && HAVE_DECL_KERN_COMPAT_LOG)
+       XLAT(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),
+#endif
+#if defined(KERN_NMI_WATCHDOG) || (defined(HAVE_DECL_KERN_NMI_WATCHDOG) && HAVE_DECL_KERN_NMI_WATCHDOG)
+       XLAT(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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_kern.in b/xlat/sysctl_kern.in
new file mode 100644 (file)
index 0000000..93ebfe2
--- /dev/null
@@ -0,0 +1,66 @@
+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
diff --git a/xlat/sysctl_net.h b/xlat/sysctl_net.h
new file mode 100644 (file)
index 0000000..675c4bd
--- /dev/null
@@ -0,0 +1,68 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net.in; do not edit. */
+
+static const struct xlat sysctl_net[] = {
+#if defined(NET_CORE) || (defined(HAVE_DECL_NET_CORE) && HAVE_DECL_NET_CORE)
+       XLAT(NET_CORE),
+#endif
+#if defined(NET_ETHER) || (defined(HAVE_DECL_NET_ETHER) && HAVE_DECL_NET_ETHER)
+       XLAT(NET_ETHER),
+#endif
+#if defined(NET_802) || (defined(HAVE_DECL_NET_802) && HAVE_DECL_NET_802)
+       XLAT(NET_802),
+#endif
+#if defined(NET_UNIX) || (defined(HAVE_DECL_NET_UNIX) && HAVE_DECL_NET_UNIX)
+       XLAT(NET_UNIX),
+#endif
+#if defined(NET_IPV4) || (defined(HAVE_DECL_NET_IPV4) && HAVE_DECL_NET_IPV4)
+       XLAT(NET_IPV4),
+#endif
+#if defined(NET_IPX) || (defined(HAVE_DECL_NET_IPX) && HAVE_DECL_NET_IPX)
+       XLAT(NET_IPX),
+#endif
+#if defined(NET_ATALK) || (defined(HAVE_DECL_NET_ATALK) && HAVE_DECL_NET_ATALK)
+       XLAT(NET_ATALK),
+#endif
+#if defined(NET_NETROM) || (defined(HAVE_DECL_NET_NETROM) && HAVE_DECL_NET_NETROM)
+       XLAT(NET_NETROM),
+#endif
+#if defined(NET_AX25) || (defined(HAVE_DECL_NET_AX25) && HAVE_DECL_NET_AX25)
+       XLAT(NET_AX25),
+#endif
+#if defined(NET_BRIDGE) || (defined(HAVE_DECL_NET_BRIDGE) && HAVE_DECL_NET_BRIDGE)
+       XLAT(NET_BRIDGE),
+#endif
+#if defined(NET_ROSE) || (defined(HAVE_DECL_NET_ROSE) && HAVE_DECL_NET_ROSE)
+       XLAT(NET_ROSE),
+#endif
+#if defined(NET_IPV6) || (defined(HAVE_DECL_NET_IPV6) && HAVE_DECL_NET_IPV6)
+       XLAT(NET_IPV6),
+#endif
+#if defined(NET_X25) || (defined(HAVE_DECL_NET_X25) && HAVE_DECL_NET_X25)
+       XLAT(NET_X25),
+#endif
+#if defined(NET_TR) || (defined(HAVE_DECL_NET_TR) && HAVE_DECL_NET_TR)
+       XLAT(NET_TR),
+#endif
+#if defined(NET_DECNET) || (defined(HAVE_DECL_NET_DECNET) && HAVE_DECL_NET_DECNET)
+       XLAT(NET_DECNET),
+#endif
+#if defined(NET_ECONET) || (defined(HAVE_DECL_NET_ECONET) && HAVE_DECL_NET_ECONET)
+       XLAT(NET_ECONET),
+#endif
+#if defined(NET_SCTP) || (defined(HAVE_DECL_NET_SCTP) && HAVE_DECL_NET_SCTP)
+       XLAT(NET_SCTP),
+#endif
+#if defined(NET_LLC) || (defined(HAVE_DECL_NET_LLC) && HAVE_DECL_NET_LLC)
+       XLAT(NET_LLC),
+#endif
+#if defined(NET_NETFILTER) || (defined(HAVE_DECL_NET_NETFILTER) && HAVE_DECL_NET_NETFILTER)
+       XLAT(NET_NETFILTER),
+#endif
+#if defined(NET_DCCP) || (defined(HAVE_DECL_NET_DCCP) && HAVE_DECL_NET_DCCP)
+       XLAT(NET_DCCP),
+#endif
+#if defined(NET_IRDA) || (defined(HAVE_DECL_NET_IRDA) && HAVE_DECL_NET_IRDA)
+       XLAT(NET_IRDA),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net.in b/xlat/sysctl_net.in
new file mode 100644 (file)
index 0000000..4e64a46
--- /dev/null
@@ -0,0 +1,21 @@
+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
diff --git a/xlat/sysctl_net_core.h b/xlat/sysctl_net_core.h
new file mode 100644 (file)
index 0000000..5a5d627
--- /dev/null
@@ -0,0 +1,71 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_core.in; do not edit. */
+
+static const struct xlat sysctl_net_core[] = {
+#if defined(NET_CORE_WMEM_MAX) || (defined(HAVE_DECL_NET_CORE_WMEM_MAX) && HAVE_DECL_NET_CORE_WMEM_MAX)
+       XLAT(NET_CORE_WMEM_MAX),
+#endif
+#if defined(NET_CORE_RMEM_MAX) || (defined(HAVE_DECL_NET_CORE_RMEM_MAX) && HAVE_DECL_NET_CORE_RMEM_MAX)
+       XLAT(NET_CORE_RMEM_MAX),
+#endif
+#if defined(NET_CORE_WMEM_DEFAULT) || (defined(HAVE_DECL_NET_CORE_WMEM_DEFAULT) && HAVE_DECL_NET_CORE_WMEM_DEFAULT)
+       XLAT(NET_CORE_WMEM_DEFAULT),
+#endif
+#if defined(NET_CORE_RMEM_DEFAULT) || (defined(HAVE_DECL_NET_CORE_RMEM_DEFAULT) && HAVE_DECL_NET_CORE_RMEM_DEFAULT)
+       XLAT(NET_CORE_RMEM_DEFAULT),
+#endif
+#if defined(NET_CORE_DESTROY_DELAY) || (defined(HAVE_DECL_NET_CORE_DESTROY_DELAY) && HAVE_DECL_NET_CORE_DESTROY_DELAY)
+       XLAT(NET_CORE_DESTROY_DELAY),
+#endif
+#if defined(NET_CORE_MAX_BACKLOG) || (defined(HAVE_DECL_NET_CORE_MAX_BACKLOG) && HAVE_DECL_NET_CORE_MAX_BACKLOG)
+       XLAT(NET_CORE_MAX_BACKLOG),
+#endif
+#if defined(NET_CORE_FASTROUTE) || (defined(HAVE_DECL_NET_CORE_FASTROUTE) && HAVE_DECL_NET_CORE_FASTROUTE)
+       XLAT(NET_CORE_FASTROUTE),
+#endif
+#if defined(NET_CORE_MSG_COST) || (defined(HAVE_DECL_NET_CORE_MSG_COST) && HAVE_DECL_NET_CORE_MSG_COST)
+       XLAT(NET_CORE_MSG_COST),
+#endif
+#if defined(NET_CORE_MSG_BURST) || (defined(HAVE_DECL_NET_CORE_MSG_BURST) && HAVE_DECL_NET_CORE_MSG_BURST)
+       XLAT(NET_CORE_MSG_BURST),
+#endif
+#if defined(NET_CORE_OPTMEM_MAX) || (defined(HAVE_DECL_NET_CORE_OPTMEM_MAX) && HAVE_DECL_NET_CORE_OPTMEM_MAX)
+       XLAT(NET_CORE_OPTMEM_MAX),
+#endif
+#if defined(NET_CORE_HOT_LIST_LENGTH) || (defined(HAVE_DECL_NET_CORE_HOT_LIST_LENGTH) && HAVE_DECL_NET_CORE_HOT_LIST_LENGTH)
+       XLAT(NET_CORE_HOT_LIST_LENGTH),
+#endif
+#if defined(NET_CORE_DIVERT_VERSION) || (defined(HAVE_DECL_NET_CORE_DIVERT_VERSION) && HAVE_DECL_NET_CORE_DIVERT_VERSION)
+       XLAT(NET_CORE_DIVERT_VERSION),
+#endif
+#if defined(NET_CORE_NO_CONG_THRESH) || (defined(HAVE_DECL_NET_CORE_NO_CONG_THRESH) && HAVE_DECL_NET_CORE_NO_CONG_THRESH)
+       XLAT(NET_CORE_NO_CONG_THRESH),
+#endif
+#if defined(NET_CORE_NO_CONG) || (defined(HAVE_DECL_NET_CORE_NO_CONG) && HAVE_DECL_NET_CORE_NO_CONG)
+       XLAT(NET_CORE_NO_CONG),
+#endif
+#if defined(NET_CORE_LO_CONG) || (defined(HAVE_DECL_NET_CORE_LO_CONG) && HAVE_DECL_NET_CORE_LO_CONG)
+       XLAT(NET_CORE_LO_CONG),
+#endif
+#if defined(NET_CORE_MOD_CONG) || (defined(HAVE_DECL_NET_CORE_MOD_CONG) && HAVE_DECL_NET_CORE_MOD_CONG)
+       XLAT(NET_CORE_MOD_CONG),
+#endif
+#if defined(NET_CORE_DEV_WEIGHT) || (defined(HAVE_DECL_NET_CORE_DEV_WEIGHT) && HAVE_DECL_NET_CORE_DEV_WEIGHT)
+       XLAT(NET_CORE_DEV_WEIGHT),
+#endif
+#if defined(NET_CORE_SOMAXCONN) || (defined(HAVE_DECL_NET_CORE_SOMAXCONN) && HAVE_DECL_NET_CORE_SOMAXCONN)
+       XLAT(NET_CORE_SOMAXCONN),
+#endif
+#if defined(NET_CORE_BUDGET) || (defined(HAVE_DECL_NET_CORE_BUDGET) && HAVE_DECL_NET_CORE_BUDGET)
+       XLAT(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),
+#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),
+#endif
+#if defined(NET_CORE_WARNINGS) || (defined(HAVE_DECL_NET_CORE_WARNINGS) && HAVE_DECL_NET_CORE_WARNINGS)
+       XLAT(NET_CORE_WARNINGS),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_core.in b/xlat/sysctl_net_core.in
new file mode 100644 (file)
index 0000000..d29dc50
--- /dev/null
@@ -0,0 +1,22 @@
+NET_CORE_WMEM_MAX
+NET_CORE_RMEM_MAX
+NET_CORE_WMEM_DEFAULT
+NET_CORE_RMEM_DEFAULT
+NET_CORE_DESTROY_DELAY
+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_BUDGET
+NET_CORE_AEVENT_ETIME
+NET_CORE_AEVENT_RSEQTH
+NET_CORE_WARNINGS
diff --git a/xlat/sysctl_net_ipv4.h b/xlat/sysctl_net_ipv4.h
new file mode 100644 (file)
index 0000000..addd87b
--- /dev/null
@@ -0,0 +1,281 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv4.in; do not edit. */
+
+static const struct xlat sysctl_net_ipv4[] = {
+#if defined(NET_IPV4_FORWARD) || (defined(HAVE_DECL_NET_IPV4_FORWARD) && HAVE_DECL_NET_IPV4_FORWARD)
+       XLAT(NET_IPV4_FORWARD),
+#endif
+#if defined(NET_IPV4_DYNADDR) || (defined(HAVE_DECL_NET_IPV4_DYNADDR) && HAVE_DECL_NET_IPV4_DYNADDR)
+       XLAT(NET_IPV4_DYNADDR),
+#endif
+#if defined(NET_IPV4_CONF) || (defined(HAVE_DECL_NET_IPV4_CONF) && HAVE_DECL_NET_IPV4_CONF)
+       XLAT(NET_IPV4_CONF),
+#endif
+#if defined(NET_IPV4_NEIGH) || (defined(HAVE_DECL_NET_IPV4_NEIGH) && HAVE_DECL_NET_IPV4_NEIGH)
+       XLAT(NET_IPV4_NEIGH),
+#endif
+#if defined(NET_IPV4_ROUTE) || (defined(HAVE_DECL_NET_IPV4_ROUTE) && HAVE_DECL_NET_IPV4_ROUTE)
+       XLAT(NET_IPV4_ROUTE),
+#endif
+#if defined(NET_IPV4_FIB_HASH) || (defined(HAVE_DECL_NET_IPV4_FIB_HASH) && HAVE_DECL_NET_IPV4_FIB_HASH)
+       XLAT(NET_IPV4_FIB_HASH),
+#endif
+#if defined(NET_IPV4_NETFILTER) || (defined(HAVE_DECL_NET_IPV4_NETFILTER) && HAVE_DECL_NET_IPV4_NETFILTER)
+       XLAT(NET_IPV4_NETFILTER),
+#endif
+#if defined(NET_IPV4_TCP_TIMESTAMPS) || (defined(HAVE_DECL_NET_IPV4_TCP_TIMESTAMPS) && HAVE_DECL_NET_IPV4_TCP_TIMESTAMPS)
+       XLAT(NET_IPV4_TCP_TIMESTAMPS),
+#endif
+#if defined(NET_IPV4_TCP_WINDOW_SCALING) || (defined(HAVE_DECL_NET_IPV4_TCP_WINDOW_SCALING) && HAVE_DECL_NET_IPV4_TCP_WINDOW_SCALING)
+       XLAT(NET_IPV4_TCP_WINDOW_SCALING),
+#endif
+#if defined(NET_IPV4_TCP_SACK) || (defined(HAVE_DECL_NET_IPV4_TCP_SACK) && HAVE_DECL_NET_IPV4_TCP_SACK)
+       XLAT(NET_IPV4_TCP_SACK),
+#endif
+#if defined(NET_IPV4_TCP_RETRANS_COLLAPSE) || (defined(HAVE_DECL_NET_IPV4_TCP_RETRANS_COLLAPSE) && HAVE_DECL_NET_IPV4_TCP_RETRANS_COLLAPSE)
+       XLAT(NET_IPV4_TCP_RETRANS_COLLAPSE),
+#endif
+#if defined(NET_IPV4_DEFAULT_TTL) || (defined(HAVE_DECL_NET_IPV4_DEFAULT_TTL) && HAVE_DECL_NET_IPV4_DEFAULT_TTL)
+       XLAT(NET_IPV4_DEFAULT_TTL),
+#endif
+#if defined(NET_IPV4_AUTOCONFIG) || (defined(HAVE_DECL_NET_IPV4_AUTOCONFIG) && HAVE_DECL_NET_IPV4_AUTOCONFIG)
+       XLAT(NET_IPV4_AUTOCONFIG),
+#endif
+#if defined(NET_IPV4_NO_PMTU_DISC) || (defined(HAVE_DECL_NET_IPV4_NO_PMTU_DISC) && HAVE_DECL_NET_IPV4_NO_PMTU_DISC)
+       XLAT(NET_IPV4_NO_PMTU_DISC),
+#endif
+#if defined(NET_IPV4_TCP_SYN_RETRIES) || (defined(HAVE_DECL_NET_IPV4_TCP_SYN_RETRIES) && HAVE_DECL_NET_IPV4_TCP_SYN_RETRIES)
+       XLAT(NET_IPV4_TCP_SYN_RETRIES),
+#endif
+#if defined(NET_IPV4_IPFRAG_HIGH_THRESH) || (defined(HAVE_DECL_NET_IPV4_IPFRAG_HIGH_THRESH) && HAVE_DECL_NET_IPV4_IPFRAG_HIGH_THRESH)
+       XLAT(NET_IPV4_IPFRAG_HIGH_THRESH),
+#endif
+#if defined(NET_IPV4_IPFRAG_LOW_THRESH) || (defined(HAVE_DECL_NET_IPV4_IPFRAG_LOW_THRESH) && HAVE_DECL_NET_IPV4_IPFRAG_LOW_THRESH)
+       XLAT(NET_IPV4_IPFRAG_LOW_THRESH),
+#endif
+#if defined(NET_IPV4_IPFRAG_TIME) || (defined(HAVE_DECL_NET_IPV4_IPFRAG_TIME) && HAVE_DECL_NET_IPV4_IPFRAG_TIME)
+       XLAT(NET_IPV4_IPFRAG_TIME),
+#endif
+#if defined(NET_IPV4_TCP_MAX_KA_PROBES) || (defined(HAVE_DECL_NET_IPV4_TCP_MAX_KA_PROBES) && HAVE_DECL_NET_IPV4_TCP_MAX_KA_PROBES)
+       XLAT(NET_IPV4_TCP_MAX_KA_PROBES),
+#endif
+#if defined(NET_IPV4_TCP_KEEPALIVE_TIME) || (defined(HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_TIME) && HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_TIME)
+       XLAT(NET_IPV4_TCP_KEEPALIVE_TIME),
+#endif
+#if defined(NET_IPV4_TCP_KEEPALIVE_PROBES) || (defined(HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_PROBES) && HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_PROBES)
+       XLAT(NET_IPV4_TCP_KEEPALIVE_PROBES),
+#endif
+#if defined(NET_IPV4_TCP_RETRIES1) || (defined(HAVE_DECL_NET_IPV4_TCP_RETRIES1) && HAVE_DECL_NET_IPV4_TCP_RETRIES1)
+       XLAT(NET_IPV4_TCP_RETRIES1),
+#endif
+#if defined(NET_IPV4_TCP_RETRIES2) || (defined(HAVE_DECL_NET_IPV4_TCP_RETRIES2) && HAVE_DECL_NET_IPV4_TCP_RETRIES2)
+       XLAT(NET_IPV4_TCP_RETRIES2),
+#endif
+#if defined(NET_IPV4_TCP_FIN_TIMEOUT) || (defined(HAVE_DECL_NET_IPV4_TCP_FIN_TIMEOUT) && HAVE_DECL_NET_IPV4_TCP_FIN_TIMEOUT)
+       XLAT(NET_IPV4_TCP_FIN_TIMEOUT),
+#endif
+#if defined(NET_IPV4_IP_MASQ_DEBUG) || (defined(HAVE_DECL_NET_IPV4_IP_MASQ_DEBUG) && HAVE_DECL_NET_IPV4_IP_MASQ_DEBUG)
+       XLAT(NET_IPV4_IP_MASQ_DEBUG),
+#endif
+#if defined(NET_TCP_SYNCOOKIES) || (defined(HAVE_DECL_NET_TCP_SYNCOOKIES) && HAVE_DECL_NET_TCP_SYNCOOKIES)
+       XLAT(NET_TCP_SYNCOOKIES),
+#endif
+#if defined(NET_TCP_STDURG) || (defined(HAVE_DECL_NET_TCP_STDURG) && HAVE_DECL_NET_TCP_STDURG)
+       XLAT(NET_TCP_STDURG),
+#endif
+#if defined(NET_TCP_RFC1337) || (defined(HAVE_DECL_NET_TCP_RFC1337) && HAVE_DECL_NET_TCP_RFC1337)
+       XLAT(NET_TCP_RFC1337),
+#endif
+#if defined(NET_TCP_SYN_TAILDROP) || (defined(HAVE_DECL_NET_TCP_SYN_TAILDROP) && HAVE_DECL_NET_TCP_SYN_TAILDROP)
+       XLAT(NET_TCP_SYN_TAILDROP),
+#endif
+#if defined(NET_TCP_MAX_SYN_BACKLOG) || (defined(HAVE_DECL_NET_TCP_MAX_SYN_BACKLOG) && HAVE_DECL_NET_TCP_MAX_SYN_BACKLOG)
+       XLAT(NET_TCP_MAX_SYN_BACKLOG),
+#endif
+#if defined(NET_IPV4_LOCAL_PORT_RANGE) || (defined(HAVE_DECL_NET_IPV4_LOCAL_PORT_RANGE) && HAVE_DECL_NET_IPV4_LOCAL_PORT_RANGE)
+       XLAT(NET_IPV4_LOCAL_PORT_RANGE),
+#endif
+#if defined(NET_IPV4_ICMP_ECHO_IGNORE_ALL) || (defined(HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_ALL) && HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_ALL)
+       XLAT(NET_IPV4_ICMP_ECHO_IGNORE_ALL),
+#endif
+#if defined(NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS) || (defined(HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS) && HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS)
+       XLAT(NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS),
+#endif
+#if defined(NET_IPV4_ICMP_SOURCEQUENCH_RATE) || (defined(HAVE_DECL_NET_IPV4_ICMP_SOURCEQUENCH_RATE) && HAVE_DECL_NET_IPV4_ICMP_SOURCEQUENCH_RATE)
+       XLAT(NET_IPV4_ICMP_SOURCEQUENCH_RATE),
+#endif
+#if defined(NET_IPV4_ICMP_DESTUNREACH_RATE) || (defined(HAVE_DECL_NET_IPV4_ICMP_DESTUNREACH_RATE) && HAVE_DECL_NET_IPV4_ICMP_DESTUNREACH_RATE)
+       XLAT(NET_IPV4_ICMP_DESTUNREACH_RATE),
+#endif
+#if defined(NET_IPV4_ICMP_TIMEEXCEED_RATE) || (defined(HAVE_DECL_NET_IPV4_ICMP_TIMEEXCEED_RATE) && HAVE_DECL_NET_IPV4_ICMP_TIMEEXCEED_RATE)
+       XLAT(NET_IPV4_ICMP_TIMEEXCEED_RATE),
+#endif
+#if defined(NET_IPV4_ICMP_PARAMPROB_RATE) || (defined(HAVE_DECL_NET_IPV4_ICMP_PARAMPROB_RATE) && HAVE_DECL_NET_IPV4_ICMP_PARAMPROB_RATE)
+       XLAT(NET_IPV4_ICMP_PARAMPROB_RATE),
+#endif
+#if defined(NET_IPV4_ICMP_ECHOREPLY_RATE) || (defined(HAVE_DECL_NET_IPV4_ICMP_ECHOREPLY_RATE) && HAVE_DECL_NET_IPV4_ICMP_ECHOREPLY_RATE)
+       XLAT(NET_IPV4_ICMP_ECHOREPLY_RATE),
+#endif
+#if defined(NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES) || (defined(HAVE_DECL_NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES) && HAVE_DECL_NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES)
+       XLAT(NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES),
+#endif
+#if defined(NET_IPV4_IGMP_MAX_MEMBERSHIPS) || (defined(HAVE_DECL_NET_IPV4_IGMP_MAX_MEMBERSHIPS) && HAVE_DECL_NET_IPV4_IGMP_MAX_MEMBERSHIPS)
+       XLAT(NET_IPV4_IGMP_MAX_MEMBERSHIPS),
+#endif
+#if defined(NET_TCP_TW_RECYCLE) || (defined(HAVE_DECL_NET_TCP_TW_RECYCLE) && HAVE_DECL_NET_TCP_TW_RECYCLE)
+       XLAT(NET_TCP_TW_RECYCLE),
+#endif
+#if defined(NET_IPV4_ALWAYS_DEFRAG) || (defined(HAVE_DECL_NET_IPV4_ALWAYS_DEFRAG) && HAVE_DECL_NET_IPV4_ALWAYS_DEFRAG)
+       XLAT(NET_IPV4_ALWAYS_DEFRAG),
+#endif
+#if defined(NET_IPV4_TCP_KEEPALIVE_INTVL) || (defined(HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_INTVL) && HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_INTVL)
+       XLAT(NET_IPV4_TCP_KEEPALIVE_INTVL),
+#endif
+#if defined(NET_IPV4_INET_PEER_THRESHOLD) || (defined(HAVE_DECL_NET_IPV4_INET_PEER_THRESHOLD) && HAVE_DECL_NET_IPV4_INET_PEER_THRESHOLD)
+       XLAT(NET_IPV4_INET_PEER_THRESHOLD),
+#endif
+#if defined(NET_IPV4_INET_PEER_MINTTL) || (defined(HAVE_DECL_NET_IPV4_INET_PEER_MINTTL) && HAVE_DECL_NET_IPV4_INET_PEER_MINTTL)
+       XLAT(NET_IPV4_INET_PEER_MINTTL),
+#endif
+#if defined(NET_IPV4_INET_PEER_MAXTTL) || (defined(HAVE_DECL_NET_IPV4_INET_PEER_MAXTTL) && HAVE_DECL_NET_IPV4_INET_PEER_MAXTTL)
+       XLAT(NET_IPV4_INET_PEER_MAXTTL),
+#endif
+#if defined(NET_IPV4_INET_PEER_GC_MINTIME) || (defined(HAVE_DECL_NET_IPV4_INET_PEER_GC_MINTIME) && HAVE_DECL_NET_IPV4_INET_PEER_GC_MINTIME)
+       XLAT(NET_IPV4_INET_PEER_GC_MINTIME),
+#endif
+#if defined(NET_IPV4_INET_PEER_GC_MAXTIME) || (defined(HAVE_DECL_NET_IPV4_INET_PEER_GC_MAXTIME) && HAVE_DECL_NET_IPV4_INET_PEER_GC_MAXTIME)
+       XLAT(NET_IPV4_INET_PEER_GC_MAXTIME),
+#endif
+#if defined(NET_TCP_ORPHAN_RETRIES) || (defined(HAVE_DECL_NET_TCP_ORPHAN_RETRIES) && HAVE_DECL_NET_TCP_ORPHAN_RETRIES)
+       XLAT(NET_TCP_ORPHAN_RETRIES),
+#endif
+#if defined(NET_TCP_ABORT_ON_OVERFLOW) || (defined(HAVE_DECL_NET_TCP_ABORT_ON_OVERFLOW) && HAVE_DECL_NET_TCP_ABORT_ON_OVERFLOW)
+       XLAT(NET_TCP_ABORT_ON_OVERFLOW),
+#endif
+#if defined(NET_TCP_SYNACK_RETRIES) || (defined(HAVE_DECL_NET_TCP_SYNACK_RETRIES) && HAVE_DECL_NET_TCP_SYNACK_RETRIES)
+       XLAT(NET_TCP_SYNACK_RETRIES),
+#endif
+#if defined(NET_TCP_MAX_ORPHANS) || (defined(HAVE_DECL_NET_TCP_MAX_ORPHANS) && HAVE_DECL_NET_TCP_MAX_ORPHANS)
+       XLAT(NET_TCP_MAX_ORPHANS),
+#endif
+#if defined(NET_TCP_MAX_TW_BUCKETS) || (defined(HAVE_DECL_NET_TCP_MAX_TW_BUCKETS) && HAVE_DECL_NET_TCP_MAX_TW_BUCKETS)
+       XLAT(NET_TCP_MAX_TW_BUCKETS),
+#endif
+#if defined(NET_TCP_FACK) || (defined(HAVE_DECL_NET_TCP_FACK) && HAVE_DECL_NET_TCP_FACK)
+       XLAT(NET_TCP_FACK),
+#endif
+#if defined(NET_TCP_REORDERING) || (defined(HAVE_DECL_NET_TCP_REORDERING) && HAVE_DECL_NET_TCP_REORDERING)
+       XLAT(NET_TCP_REORDERING),
+#endif
+#if defined(NET_TCP_ECN) || (defined(HAVE_DECL_NET_TCP_ECN) && HAVE_DECL_NET_TCP_ECN)
+       XLAT(NET_TCP_ECN),
+#endif
+#if defined(NET_TCP_DSACK) || (defined(HAVE_DECL_NET_TCP_DSACK) && HAVE_DECL_NET_TCP_DSACK)
+       XLAT(NET_TCP_DSACK),
+#endif
+#if defined(NET_TCP_MEM) || (defined(HAVE_DECL_NET_TCP_MEM) && HAVE_DECL_NET_TCP_MEM)
+       XLAT(NET_TCP_MEM),
+#endif
+#if defined(NET_TCP_WMEM) || (defined(HAVE_DECL_NET_TCP_WMEM) && HAVE_DECL_NET_TCP_WMEM)
+       XLAT(NET_TCP_WMEM),
+#endif
+#if defined(NET_TCP_RMEM) || (defined(HAVE_DECL_NET_TCP_RMEM) && HAVE_DECL_NET_TCP_RMEM)
+       XLAT(NET_TCP_RMEM),
+#endif
+#if defined(NET_TCP_APP_WIN) || (defined(HAVE_DECL_NET_TCP_APP_WIN) && HAVE_DECL_NET_TCP_APP_WIN)
+       XLAT(NET_TCP_APP_WIN),
+#endif
+#if defined(NET_TCP_ADV_WIN_SCALE) || (defined(HAVE_DECL_NET_TCP_ADV_WIN_SCALE) && HAVE_DECL_NET_TCP_ADV_WIN_SCALE)
+       XLAT(NET_TCP_ADV_WIN_SCALE),
+#endif
+#if defined(NET_IPV4_NONLOCAL_BIND) || (defined(HAVE_DECL_NET_IPV4_NONLOCAL_BIND) && HAVE_DECL_NET_IPV4_NONLOCAL_BIND)
+       XLAT(NET_IPV4_NONLOCAL_BIND),
+#endif
+#if defined(NET_IPV4_ICMP_RATELIMIT) || (defined(HAVE_DECL_NET_IPV4_ICMP_RATELIMIT) && HAVE_DECL_NET_IPV4_ICMP_RATELIMIT)
+       XLAT(NET_IPV4_ICMP_RATELIMIT),
+#endif
+#if defined(NET_IPV4_ICMP_RATEMASK) || (defined(HAVE_DECL_NET_IPV4_ICMP_RATEMASK) && HAVE_DECL_NET_IPV4_ICMP_RATEMASK)
+       XLAT(NET_IPV4_ICMP_RATEMASK),
+#endif
+#if defined(NET_TCP_TW_REUSE) || (defined(HAVE_DECL_NET_TCP_TW_REUSE) && HAVE_DECL_NET_TCP_TW_REUSE)
+       XLAT(NET_TCP_TW_REUSE),
+#endif
+#if defined(NET_TCP_FRTO) || (defined(HAVE_DECL_NET_TCP_FRTO) && HAVE_DECL_NET_TCP_FRTO)
+       XLAT(NET_TCP_FRTO),
+#endif
+#if defined(NET_TCP_LOW_LATENCY) || (defined(HAVE_DECL_NET_TCP_LOW_LATENCY) && HAVE_DECL_NET_TCP_LOW_LATENCY)
+       XLAT(NET_TCP_LOW_LATENCY),
+#endif
+#if defined(NET_IPV4_IPFRAG_SECRET_INTERVAL) || (defined(HAVE_DECL_NET_IPV4_IPFRAG_SECRET_INTERVAL) && HAVE_DECL_NET_IPV4_IPFRAG_SECRET_INTERVAL)
+       XLAT(NET_IPV4_IPFRAG_SECRET_INTERVAL),
+#endif
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#endif
+#if defined(NET_TCP_ABC) || (defined(HAVE_DECL_NET_TCP_ABC) && HAVE_DECL_NET_TCP_ABC)
+       XLAT(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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_ipv4.in b/xlat/sysctl_net_ipv4.in
new file mode 100644 (file)
index 0000000..d700cc9
--- /dev/null
@@ -0,0 +1,92 @@
+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
diff --git a/xlat/sysctl_net_ipv4_conf.h b/xlat/sysctl_net_ipv4_conf.h
new file mode 100644 (file)
index 0000000..dde6230
--- /dev/null
@@ -0,0 +1,71 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv4_conf.in; do not edit. */
+
+static const struct xlat sysctl_net_ipv4_conf[] = {
+#if defined(NET_IPV4_CONF_FORWARDING) || (defined(HAVE_DECL_NET_IPV4_CONF_FORWARDING) && HAVE_DECL_NET_IPV4_CONF_FORWARDING)
+       XLAT(NET_IPV4_CONF_FORWARDING),
+#endif
+#if defined(NET_IPV4_CONF_MC_FORWARDING) || (defined(HAVE_DECL_NET_IPV4_CONF_MC_FORWARDING) && HAVE_DECL_NET_IPV4_CONF_MC_FORWARDING)
+       XLAT(NET_IPV4_CONF_MC_FORWARDING),
+#endif
+#if defined(NET_IPV4_CONF_PROXY_ARP) || (defined(HAVE_DECL_NET_IPV4_CONF_PROXY_ARP) && HAVE_DECL_NET_IPV4_CONF_PROXY_ARP)
+       XLAT(NET_IPV4_CONF_PROXY_ARP),
+#endif
+#if defined(NET_IPV4_CONF_ACCEPT_REDIRECTS) || (defined(HAVE_DECL_NET_IPV4_CONF_ACCEPT_REDIRECTS) && HAVE_DECL_NET_IPV4_CONF_ACCEPT_REDIRECTS)
+       XLAT(NET_IPV4_CONF_ACCEPT_REDIRECTS),
+#endif
+#if defined(NET_IPV4_CONF_SECURE_REDIRECTS) || (defined(HAVE_DECL_NET_IPV4_CONF_SECURE_REDIRECTS) && HAVE_DECL_NET_IPV4_CONF_SECURE_REDIRECTS)
+       XLAT(NET_IPV4_CONF_SECURE_REDIRECTS),
+#endif
+#if defined(NET_IPV4_CONF_SEND_REDIRECTS) || (defined(HAVE_DECL_NET_IPV4_CONF_SEND_REDIRECTS) && HAVE_DECL_NET_IPV4_CONF_SEND_REDIRECTS)
+       XLAT(NET_IPV4_CONF_SEND_REDIRECTS),
+#endif
+#if defined(NET_IPV4_CONF_SHARED_MEDIA) || (defined(HAVE_DECL_NET_IPV4_CONF_SHARED_MEDIA) && HAVE_DECL_NET_IPV4_CONF_SHARED_MEDIA)
+       XLAT(NET_IPV4_CONF_SHARED_MEDIA),
+#endif
+#if defined(NET_IPV4_CONF_RP_FILTER) || (defined(HAVE_DECL_NET_IPV4_CONF_RP_FILTER) && HAVE_DECL_NET_IPV4_CONF_RP_FILTER)
+       XLAT(NET_IPV4_CONF_RP_FILTER),
+#endif
+#if defined(NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE) || (defined(HAVE_DECL_NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE) && HAVE_DECL_NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE)
+       XLAT(NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE),
+#endif
+#if defined(NET_IPV4_CONF_BOOTP_RELAY) || (defined(HAVE_DECL_NET_IPV4_CONF_BOOTP_RELAY) && HAVE_DECL_NET_IPV4_CONF_BOOTP_RELAY)
+       XLAT(NET_IPV4_CONF_BOOTP_RELAY),
+#endif
+#if defined(NET_IPV4_CONF_LOG_MARTIANS) || (defined(HAVE_DECL_NET_IPV4_CONF_LOG_MARTIANS) && HAVE_DECL_NET_IPV4_CONF_LOG_MARTIANS)
+       XLAT(NET_IPV4_CONF_LOG_MARTIANS),
+#endif
+#if defined(NET_IPV4_CONF_TAG) || (defined(HAVE_DECL_NET_IPV4_CONF_TAG) && HAVE_DECL_NET_IPV4_CONF_TAG)
+       XLAT(NET_IPV4_CONF_TAG),
+#endif
+#if defined(NET_IPV4_CONF_ARPFILTER) || (defined(HAVE_DECL_NET_IPV4_CONF_ARPFILTER) && HAVE_DECL_NET_IPV4_CONF_ARPFILTER)
+       XLAT(NET_IPV4_CONF_ARPFILTER),
+#endif
+#if defined(NET_IPV4_CONF_MEDIUM_ID) || (defined(HAVE_DECL_NET_IPV4_CONF_MEDIUM_ID) && HAVE_DECL_NET_IPV4_CONF_MEDIUM_ID)
+       XLAT(NET_IPV4_CONF_MEDIUM_ID),
+#endif
+#if defined(NET_IPV4_CONF_NOXFRM) || (defined(HAVE_DECL_NET_IPV4_CONF_NOXFRM) && HAVE_DECL_NET_IPV4_CONF_NOXFRM)
+       XLAT(NET_IPV4_CONF_NOXFRM),
+#endif
+#if defined(NET_IPV4_CONF_NOPOLICY) || (defined(HAVE_DECL_NET_IPV4_CONF_NOPOLICY) && HAVE_DECL_NET_IPV4_CONF_NOPOLICY)
+       XLAT(NET_IPV4_CONF_NOPOLICY),
+#endif
+#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),
+#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),
+#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),
+#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),
+#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),
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_ipv4_conf.in b/xlat/sysctl_net_ipv4_conf.in
new file mode 100644 (file)
index 0000000..03ce527
--- /dev/null
@@ -0,0 +1,22 @@
+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
diff --git a/xlat/sysctl_net_ipv4_route.h b/xlat/sysctl_net_ipv4_route.h
new file mode 100644 (file)
index 0000000..63820d6
--- /dev/null
@@ -0,0 +1,62 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv4_route.in; do not edit. */
+
+static const struct xlat sysctl_net_ipv4_route[] = {
+#if defined(NET_IPV4_ROUTE_FLUSH) || (defined(HAVE_DECL_NET_IPV4_ROUTE_FLUSH) && HAVE_DECL_NET_IPV4_ROUTE_FLUSH)
+       XLAT(NET_IPV4_ROUTE_FLUSH),
+#endif
+#if defined(NET_IPV4_ROUTE_MIN_DELAY) || (defined(HAVE_DECL_NET_IPV4_ROUTE_MIN_DELAY) && HAVE_DECL_NET_IPV4_ROUTE_MIN_DELAY)
+       XLAT(NET_IPV4_ROUTE_MIN_DELAY),
+#endif
+#if defined(NET_IPV4_ROUTE_MAX_DELAY) || (defined(HAVE_DECL_NET_IPV4_ROUTE_MAX_DELAY) && HAVE_DECL_NET_IPV4_ROUTE_MAX_DELAY)
+       XLAT(NET_IPV4_ROUTE_MAX_DELAY),
+#endif
+#if defined(NET_IPV4_ROUTE_GC_THRESH) || (defined(HAVE_DECL_NET_IPV4_ROUTE_GC_THRESH) && HAVE_DECL_NET_IPV4_ROUTE_GC_THRESH)
+       XLAT(NET_IPV4_ROUTE_GC_THRESH),
+#endif
+#if defined(NET_IPV4_ROUTE_MAX_SIZE) || (defined(HAVE_DECL_NET_IPV4_ROUTE_MAX_SIZE) && HAVE_DECL_NET_IPV4_ROUTE_MAX_SIZE)
+       XLAT(NET_IPV4_ROUTE_MAX_SIZE),
+#endif
+#if defined(NET_IPV4_ROUTE_GC_MIN_INTERVAL) || (defined(HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL) && HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL)
+       XLAT(NET_IPV4_ROUTE_GC_MIN_INTERVAL),
+#endif
+#if defined(NET_IPV4_ROUTE_GC_TIMEOUT) || (defined(HAVE_DECL_NET_IPV4_ROUTE_GC_TIMEOUT) && HAVE_DECL_NET_IPV4_ROUTE_GC_TIMEOUT)
+       XLAT(NET_IPV4_ROUTE_GC_TIMEOUT),
+#endif
+#if defined(NET_IPV4_ROUTE_GC_INTERVAL) || (defined(HAVE_DECL_NET_IPV4_ROUTE_GC_INTERVAL) && HAVE_DECL_NET_IPV4_ROUTE_GC_INTERVAL)
+       XLAT(NET_IPV4_ROUTE_GC_INTERVAL),
+#endif
+#if defined(NET_IPV4_ROUTE_REDIRECT_LOAD) || (defined(HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_LOAD) && HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_LOAD)
+       XLAT(NET_IPV4_ROUTE_REDIRECT_LOAD),
+#endif
+#if defined(NET_IPV4_ROUTE_REDIRECT_NUMBER) || (defined(HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_NUMBER) && HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_NUMBER)
+       XLAT(NET_IPV4_ROUTE_REDIRECT_NUMBER),
+#endif
+#if defined(NET_IPV4_ROUTE_REDIRECT_SILENCE) || (defined(HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_SILENCE) && HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_SILENCE)
+       XLAT(NET_IPV4_ROUTE_REDIRECT_SILENCE),
+#endif
+#if defined(NET_IPV4_ROUTE_ERROR_COST) || (defined(HAVE_DECL_NET_IPV4_ROUTE_ERROR_COST) && HAVE_DECL_NET_IPV4_ROUTE_ERROR_COST)
+       XLAT(NET_IPV4_ROUTE_ERROR_COST),
+#endif
+#if defined(NET_IPV4_ROUTE_ERROR_BURST) || (defined(HAVE_DECL_NET_IPV4_ROUTE_ERROR_BURST) && HAVE_DECL_NET_IPV4_ROUTE_ERROR_BURST)
+       XLAT(NET_IPV4_ROUTE_ERROR_BURST),
+#endif
+#if defined(NET_IPV4_ROUTE_GC_ELASTICITY) || (defined(HAVE_DECL_NET_IPV4_ROUTE_GC_ELASTICITY) && HAVE_DECL_NET_IPV4_ROUTE_GC_ELASTICITY)
+       XLAT(NET_IPV4_ROUTE_GC_ELASTICITY),
+#endif
+#if defined(NET_IPV4_ROUTE_MTU_EXPIRES) || (defined(HAVE_DECL_NET_IPV4_ROUTE_MTU_EXPIRES) && HAVE_DECL_NET_IPV4_ROUTE_MTU_EXPIRES)
+       XLAT(NET_IPV4_ROUTE_MTU_EXPIRES),
+#endif
+#if defined(NET_IPV4_ROUTE_MIN_PMTU) || (defined(HAVE_DECL_NET_IPV4_ROUTE_MIN_PMTU) && HAVE_DECL_NET_IPV4_ROUTE_MIN_PMTU)
+       XLAT(NET_IPV4_ROUTE_MIN_PMTU),
+#endif
+#if defined(NET_IPV4_ROUTE_MIN_ADVMSS) || (defined(HAVE_DECL_NET_IPV4_ROUTE_MIN_ADVMSS) && HAVE_DECL_NET_IPV4_ROUTE_MIN_ADVMSS)
+       XLAT(NET_IPV4_ROUTE_MIN_ADVMSS),
+#endif
+#if defined(NET_IPV4_ROUTE_SECRET_INTERVAL) || (defined(HAVE_DECL_NET_IPV4_ROUTE_SECRET_INTERVAL) && HAVE_DECL_NET_IPV4_ROUTE_SECRET_INTERVAL)
+       XLAT(NET_IPV4_ROUTE_SECRET_INTERVAL),
+#endif
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_ipv4_route.in b/xlat/sysctl_net_ipv4_route.in
new file mode 100644 (file)
index 0000000..fb06e9c
--- /dev/null
@@ -0,0 +1,19 @@
+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
diff --git a/xlat/sysctl_net_ipv6.h b/xlat/sysctl_net_ipv6.h
new file mode 100644 (file)
index 0000000..514e2dd
--- /dev/null
@@ -0,0 +1,35 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv6.in; do not edit. */
+
+static const struct xlat sysctl_net_ipv6[] = {
+#if defined(NET_IPV6_CONF) || (defined(HAVE_DECL_NET_IPV6_CONF) && HAVE_DECL_NET_IPV6_CONF)
+       XLAT(NET_IPV6_CONF),
+#endif
+#if defined(NET_IPV6_NEIGH) || (defined(HAVE_DECL_NET_IPV6_NEIGH) && HAVE_DECL_NET_IPV6_NEIGH)
+       XLAT(NET_IPV6_NEIGH),
+#endif
+#if defined(NET_IPV6_ROUTE) || (defined(HAVE_DECL_NET_IPV6_ROUTE) && HAVE_DECL_NET_IPV6_ROUTE)
+       XLAT(NET_IPV6_ROUTE),
+#endif
+#if defined(NET_IPV6_ICMP) || (defined(HAVE_DECL_NET_IPV6_ICMP) && HAVE_DECL_NET_IPV6_ICMP)
+       XLAT(NET_IPV6_ICMP),
+#endif
+#if defined(NET_IPV6_BINDV6ONLY) || (defined(HAVE_DECL_NET_IPV6_BINDV6ONLY) && HAVE_DECL_NET_IPV6_BINDV6ONLY)
+       XLAT(NET_IPV6_BINDV6ONLY),
+#endif
+#if defined(NET_IPV6_IP6FRAG_HIGH_THRESH) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH) && HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH)
+       XLAT(NET_IPV6_IP6FRAG_HIGH_THRESH),
+#endif
+#if defined(NET_IPV6_IP6FRAG_LOW_THRESH) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH) && HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH)
+       XLAT(NET_IPV6_IP6FRAG_LOW_THRESH),
+#endif
+#if defined(NET_IPV6_IP6FRAG_TIME) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_TIME) && HAVE_DECL_NET_IPV6_IP6FRAG_TIME)
+       XLAT(NET_IPV6_IP6FRAG_TIME),
+#endif
+#if defined(NET_IPV6_IP6FRAG_SECRET_INTERVAL) || (defined(HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL) && HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL)
+       XLAT(NET_IPV6_IP6FRAG_SECRET_INTERVAL),
+#endif
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_ipv6.in b/xlat/sysctl_net_ipv6.in
new file mode 100644 (file)
index 0000000..75e64ec
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/xlat/sysctl_net_ipv6_route.h b/xlat/sysctl_net_ipv6_route.h
new file mode 100644 (file)
index 0000000..1f363a5
--- /dev/null
@@ -0,0 +1,35 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv6_route.in; do not edit. */
+
+static const struct xlat sysctl_net_ipv6_route[] = {
+#if defined(NET_IPV6_ROUTE_FLUSH) || (defined(HAVE_DECL_NET_IPV6_ROUTE_FLUSH) && HAVE_DECL_NET_IPV6_ROUTE_FLUSH)
+       XLAT(NET_IPV6_ROUTE_FLUSH),
+#endif
+#if defined(NET_IPV6_ROUTE_GC_THRESH) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH) && HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH)
+       XLAT(NET_IPV6_ROUTE_GC_THRESH),
+#endif
+#if defined(NET_IPV6_ROUTE_MAX_SIZE) || (defined(HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE) && HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE)
+       XLAT(NET_IPV6_ROUTE_MAX_SIZE),
+#endif
+#if defined(NET_IPV6_ROUTE_GC_MIN_INTERVAL) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL) && HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL)
+       XLAT(NET_IPV6_ROUTE_GC_MIN_INTERVAL),
+#endif
+#if defined(NET_IPV6_ROUTE_GC_TIMEOUT) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT) && HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT)
+       XLAT(NET_IPV6_ROUTE_GC_TIMEOUT),
+#endif
+#if defined(NET_IPV6_ROUTE_GC_INTERVAL) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL) && HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL)
+       XLAT(NET_IPV6_ROUTE_GC_INTERVAL),
+#endif
+#if defined(NET_IPV6_ROUTE_GC_ELASTICITY) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY) && HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY)
+       XLAT(NET_IPV6_ROUTE_GC_ELASTICITY),
+#endif
+#if defined(NET_IPV6_ROUTE_MTU_EXPIRES) || (defined(HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES) && HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES)
+       XLAT(NET_IPV6_ROUTE_MTU_EXPIRES),
+#endif
+#if defined(NET_IPV6_ROUTE_MIN_ADVMSS) || (defined(HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS) && HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS)
+       XLAT(NET_IPV6_ROUTE_MIN_ADVMSS),
+#endif
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_ipv6_route.in b/xlat/sysctl_net_ipv6_route.in
new file mode 100644 (file)
index 0000000..6395edd
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/xlat/sysctl_net_unix.h b/xlat/sysctl_net_unix.h
new file mode 100644 (file)
index 0000000..cd660e7
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_net_unix.in; do not edit. */
+
+static const struct xlat sysctl_net_unix[] = {
+#if defined(NET_UNIX_DESTROY_DELAY) || (defined(HAVE_DECL_NET_UNIX_DESTROY_DELAY) && HAVE_DECL_NET_UNIX_DESTROY_DELAY)
+       XLAT(NET_UNIX_DESTROY_DELAY),
+#endif
+#if defined(NET_UNIX_DELETE_DELAY) || (defined(HAVE_DECL_NET_UNIX_DELETE_DELAY) && HAVE_DECL_NET_UNIX_DELETE_DELAY)
+       XLAT(NET_UNIX_DELETE_DELAY),
+#endif
+#if defined(NET_UNIX_MAX_DGRAM_QLEN) || (defined(HAVE_DECL_NET_UNIX_MAX_DGRAM_QLEN) && HAVE_DECL_NET_UNIX_MAX_DGRAM_QLEN)
+       XLAT(NET_UNIX_MAX_DGRAM_QLEN),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_net_unix.in b/xlat/sysctl_net_unix.in
new file mode 100644 (file)
index 0000000..a442fee
--- /dev/null
@@ -0,0 +1,3 @@
+NET_UNIX_DESTROY_DELAY
+NET_UNIX_DELETE_DELAY
+NET_UNIX_MAX_DGRAM_QLEN
diff --git a/xlat/sysctl_root.h b/xlat/sysctl_root.h
new file mode 100644 (file)
index 0000000..71d90c3
--- /dev/null
@@ -0,0 +1,50 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_root.in; do not edit. */
+
+static const struct xlat sysctl_root[] = {
+#if defined(CTL_KERN) || (defined(HAVE_DECL_CTL_KERN) && HAVE_DECL_CTL_KERN)
+       XLAT(CTL_KERN),
+#endif
+#if defined(CTL_VM) || (defined(HAVE_DECL_CTL_VM) && HAVE_DECL_CTL_VM)
+       XLAT(CTL_VM),
+#endif
+#if defined(CTL_NET) || (defined(HAVE_DECL_CTL_NET) && HAVE_DECL_CTL_NET)
+       XLAT(CTL_NET),
+#endif
+#if defined(CTL_PROC) || (defined(HAVE_DECL_CTL_PROC) && HAVE_DECL_CTL_PROC)
+       XLAT(CTL_PROC),
+#endif
+#if defined(CTL_FS) || (defined(HAVE_DECL_CTL_FS) && HAVE_DECL_CTL_FS)
+       XLAT(CTL_FS),
+#endif
+#if defined(CTL_DEBUG) || (defined(HAVE_DECL_CTL_DEBUG) && HAVE_DECL_CTL_DEBUG)
+       XLAT(CTL_DEBUG),
+#endif
+#if defined(CTL_DEV) || (defined(HAVE_DECL_CTL_DEV) && HAVE_DECL_CTL_DEV)
+       XLAT(CTL_DEV),
+#endif
+#if defined(CTL_BUS) || (defined(HAVE_DECL_CTL_BUS) && HAVE_DECL_CTL_BUS)
+       XLAT(CTL_BUS),
+#endif
+#if defined(CTL_ABI) || (defined(HAVE_DECL_CTL_ABI) && HAVE_DECL_CTL_ABI)
+       XLAT(CTL_ABI),
+#endif
+#if defined(CTL_CPU) || (defined(HAVE_DECL_CTL_CPU) && HAVE_DECL_CTL_CPU)
+       XLAT(CTL_CPU),
+#endif
+#if defined(CTL_ARLAN) || (defined(HAVE_DECL_CTL_ARLAN) && HAVE_DECL_CTL_ARLAN)
+       XLAT(CTL_ARLAN),
+#endif
+#if defined(CTL_S390DBF) || (defined(HAVE_DECL_CTL_S390DBF) && HAVE_DECL_CTL_S390DBF)
+       XLAT(CTL_S390DBF),
+#endif
+#if defined(CTL_SUNRPC) || (defined(HAVE_DECL_CTL_SUNRPC) && HAVE_DECL_CTL_SUNRPC)
+       XLAT(CTL_SUNRPC),
+#endif
+#if defined(CTL_PM) || (defined(HAVE_DECL_CTL_PM) && HAVE_DECL_CTL_PM)
+       XLAT(CTL_PM),
+#endif
+#if defined(CTL_FRV) || (defined(HAVE_DECL_CTL_FRV) && HAVE_DECL_CTL_FRV)
+       XLAT(CTL_FRV),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_root.in b/xlat/sysctl_root.in
new file mode 100644 (file)
index 0000000..28bd49a
--- /dev/null
@@ -0,0 +1,15 @@
+CTL_KERN
+CTL_VM
+CTL_NET
+CTL_PROC
+CTL_FS
+CTL_DEBUG
+CTL_DEV
+CTL_BUS
+CTL_ABI
+CTL_CPU
+CTL_ARLAN
+CTL_S390DBF
+CTL_SUNRPC
+CTL_PM
+CTL_FRV
diff --git a/xlat/sysctl_vm.h b/xlat/sysctl_vm.h
new file mode 100644 (file)
index 0000000..e2926ae
--- /dev/null
@@ -0,0 +1,65 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysctl_vm.in; do not edit. */
+
+static const struct xlat sysctl_vm[] = {
+#if defined(VM_OVERCOMMIT_MEMORY) || (defined(HAVE_DECL_VM_OVERCOMMIT_MEMORY) && HAVE_DECL_VM_OVERCOMMIT_MEMORY)
+       XLAT(VM_OVERCOMMIT_MEMORY),
+#endif
+#if defined(VM_PAGE_CLUSTER) || (defined(HAVE_DECL_VM_PAGE_CLUSTER) && HAVE_DECL_VM_PAGE_CLUSTER)
+       XLAT(VM_PAGE_CLUSTER),
+#endif
+#if defined(VM_DIRTY_BACKGROUND) || (defined(HAVE_DECL_VM_DIRTY_BACKGROUND) && HAVE_DECL_VM_DIRTY_BACKGROUND)
+       XLAT(VM_DIRTY_BACKGROUND),
+#endif
+#if defined(VM_DIRTY_RATIO) || (defined(HAVE_DECL_VM_DIRTY_RATIO) && HAVE_DECL_VM_DIRTY_RATIO)
+       XLAT(VM_DIRTY_RATIO),
+#endif
+#if defined(VM_DIRTY_WB_CS) || (defined(HAVE_DECL_VM_DIRTY_WB_CS) && HAVE_DECL_VM_DIRTY_WB_CS)
+       XLAT(VM_DIRTY_WB_CS),
+#endif
+#if defined(VM_DIRTY_EXPIRE_CS) || (defined(HAVE_DECL_VM_DIRTY_EXPIRE_CS) && HAVE_DECL_VM_DIRTY_EXPIRE_CS)
+       XLAT(VM_DIRTY_EXPIRE_CS),
+#endif
+#if defined(VM_NR_PDFLUSH_THREADS) || (defined(HAVE_DECL_VM_NR_PDFLUSH_THREADS) && HAVE_DECL_VM_NR_PDFLUSH_THREADS)
+       XLAT(VM_NR_PDFLUSH_THREADS),
+#endif
+#if defined(VM_OVERCOMMIT_RATIO) || (defined(HAVE_DECL_VM_OVERCOMMIT_RATIO) && HAVE_DECL_VM_OVERCOMMIT_RATIO)
+       XLAT(VM_OVERCOMMIT_RATIO),
+#endif
+#if defined(VM_PAGEBUF) || (defined(HAVE_DECL_VM_PAGEBUF) && HAVE_DECL_VM_PAGEBUF)
+       XLAT(VM_PAGEBUF),
+#endif
+#if defined(VM_HUGETLB_PAGES) || (defined(HAVE_DECL_VM_HUGETLB_PAGES) && HAVE_DECL_VM_HUGETLB_PAGES)
+       XLAT(VM_HUGETLB_PAGES),
+#endif
+#if defined(VM_SWAPPINESS) || (defined(HAVE_DECL_VM_SWAPPINESS) && HAVE_DECL_VM_SWAPPINESS)
+       XLAT(VM_SWAPPINESS),
+#endif
+#if defined(VM_LOWMEM_RESERVE_RATIO) || (defined(HAVE_DECL_VM_LOWMEM_RESERVE_RATIO) && HAVE_DECL_VM_LOWMEM_RESERVE_RATIO)
+       XLAT(VM_LOWMEM_RESERVE_RATIO),
+#endif
+#if defined(VM_MIN_FREE_KBYTES) || (defined(HAVE_DECL_VM_MIN_FREE_KBYTES) && HAVE_DECL_VM_MIN_FREE_KBYTES)
+       XLAT(VM_MIN_FREE_KBYTES),
+#endif
+#if defined(VM_MAX_MAP_COUNT) || (defined(HAVE_DECL_VM_MAX_MAP_COUNT) && HAVE_DECL_VM_MAX_MAP_COUNT)
+       XLAT(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),
+#endif
+#if defined(VM_BLOCK_DUMP) || (defined(HAVE_DECL_VM_BLOCK_DUMP) && HAVE_DECL_VM_BLOCK_DUMP)
+       XLAT(VM_BLOCK_DUMP),
+#endif
+#if defined(VM_HUGETLB_GROUP) || (defined(HAVE_DECL_VM_HUGETLB_GROUP) && HAVE_DECL_VM_HUGETLB_GROUP)
+       XLAT(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),
+#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),
+#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),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysctl_vm.in b/xlat/sysctl_vm.in
new file mode 100644 (file)
index 0000000..6d476af
--- /dev/null
@@ -0,0 +1,20 @@
+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
diff --git a/xlat/syslog_action_type.h b/xlat/syslog_action_type.h
new file mode 100644 (file)
index 0000000..1083d35
--- /dev/null
@@ -0,0 +1,16 @@
+/* Generated by ./xlat/gen.sh from ./xlat/syslog_action_type.in; do not edit. */
+
+static const struct xlat syslog_action_type[] = {
+       XLAT(SYSLOG_ACTION_CLOSE),
+       XLAT(SYSLOG_ACTION_OPEN),
+       XLAT(SYSLOG_ACTION_READ),
+       XLAT(SYSLOG_ACTION_READ_ALL),
+       XLAT(SYSLOG_ACTION_READ_CLEAR),
+       XLAT(SYSLOG_ACTION_CLEAR),
+       XLAT(SYSLOG_ACTION_CONSOLE_OFF),
+       XLAT(SYSLOG_ACTION_CONSOLE_ON),
+       XLAT(SYSLOG_ACTION_CONSOLE_LEVEL),
+       XLAT(SYSLOG_ACTION_SIZE_UNREAD),
+       XLAT(SYSLOG_ACTION_SIZE_BUFFER),
+       XLAT_END
+};
diff --git a/xlat/syslog_action_type.in b/xlat/syslog_action_type.in
new file mode 100644 (file)
index 0000000..6e0109a
--- /dev/null
@@ -0,0 +1,12 @@
+#unconditional
+SYSLOG_ACTION_CLOSE
+SYSLOG_ACTION_OPEN
+SYSLOG_ACTION_READ
+SYSLOG_ACTION_READ_ALL
+SYSLOG_ACTION_READ_CLEAR
+SYSLOG_ACTION_CLEAR
+SYSLOG_ACTION_CONSOLE_OFF
+SYSLOG_ACTION_CONSOLE_ON
+SYSLOG_ACTION_CONSOLE_LEVEL
+SYSLOG_ACTION_SIZE_UNREAD
+SYSLOG_ACTION_SIZE_BUFFER
diff --git a/xlat/sysmips_operations.h b/xlat/sysmips_operations.h
new file mode 100644 (file)
index 0000000..6138107
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/sysmips_operations.in; do not edit. */
+
+static const struct xlat sysmips_operations[] = {
+#if defined(SETNAME) || (defined(HAVE_DECL_SETNAME) && HAVE_DECL_SETNAME)
+       XLAT(SETNAME),
+#endif
+#if defined(FLUSH_CACHE) || (defined(HAVE_DECL_FLUSH_CACHE) && HAVE_DECL_FLUSH_CACHE)
+       XLAT(FLUSH_CACHE),
+#endif
+#if defined(MIPS_FIXADE) || (defined(HAVE_DECL_MIPS_FIXADE) && HAVE_DECL_MIPS_FIXADE)
+       XLAT(MIPS_FIXADE),
+#endif
+#if defined(MIPS_RDNVRAM) || (defined(HAVE_DECL_MIPS_RDNVRAM) && HAVE_DECL_MIPS_RDNVRAM)
+       XLAT(MIPS_RDNVRAM),
+#endif
+#if defined(MIPS_ATOMIC_SET) || (defined(HAVE_DECL_MIPS_ATOMIC_SET) && HAVE_DECL_MIPS_ATOMIC_SET)
+       XLAT(MIPS_ATOMIC_SET),
+#endif
+       XLAT_END
+};
diff --git a/xlat/sysmips_operations.in b/xlat/sysmips_operations.in
new file mode 100644 (file)
index 0000000..3d367cb
--- /dev/null
@@ -0,0 +1,5 @@
+SETNAME
+FLUSH_CACHE
+MIPS_FIXADE
+MIPS_RDNVRAM
+MIPS_ATOMIC_SET
diff --git a/xlat/tcflsh_options.h b/xlat/tcflsh_options.h
new file mode 100644 (file)
index 0000000..83f77bf
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tcflsh_options.in; do not edit. */
+
+static const struct xlat tcflsh_options[] = {
+#if defined(TCIFLUSH) || (defined(HAVE_DECL_TCIFLUSH) && HAVE_DECL_TCIFLUSH)
+       XLAT(TCIFLUSH),
+#endif
+#if defined(TCOFLUSH) || (defined(HAVE_DECL_TCOFLUSH) && HAVE_DECL_TCOFLUSH)
+       XLAT(TCOFLUSH),
+#endif
+#if defined(TCIOFLUSH) || (defined(HAVE_DECL_TCIOFLUSH) && HAVE_DECL_TCIOFLUSH)
+       XLAT(TCIOFLUSH),
+#endif
+       XLAT_END
+};
diff --git a/xlat/tcflsh_options.in b/xlat/tcflsh_options.in
new file mode 100644 (file)
index 0000000..470a5a4
--- /dev/null
@@ -0,0 +1,3 @@
+TCIFLUSH
+TCOFLUSH
+TCIOFLUSH
diff --git a/xlat/tcxonc_options.h b/xlat/tcxonc_options.h
new file mode 100644 (file)
index 0000000..a84f0ef
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tcxonc_options.in; do not edit. */
+
+static const struct xlat tcxonc_options[] = {
+#if defined(TCOOFF) || (defined(HAVE_DECL_TCOOFF) && HAVE_DECL_TCOOFF)
+       XLAT(TCOOFF),
+#endif
+#if defined(TCOON) || (defined(HAVE_DECL_TCOON) && HAVE_DECL_TCOON)
+       XLAT(TCOON),
+#endif
+#if defined(TCIOFF) || (defined(HAVE_DECL_TCIOFF) && HAVE_DECL_TCIOFF)
+       XLAT(TCIOFF),
+#endif
+#if defined(TCION) || (defined(HAVE_DECL_TCION) && HAVE_DECL_TCION)
+       XLAT(TCION),
+#endif
+       XLAT_END
+};
diff --git a/xlat/tcxonc_options.in b/xlat/tcxonc_options.in
new file mode 100644 (file)
index 0000000..733aee9
--- /dev/null
@@ -0,0 +1,4 @@
+TCOOFF
+TCOON
+TCIOFF
+TCION
diff --git a/xlat/timerfdflags.h b/xlat/timerfdflags.h
new file mode 100644 (file)
index 0000000..4fadfc4
--- /dev/null
@@ -0,0 +1,8 @@
+/* Generated by ./xlat/gen.sh from ./xlat/timerfdflags.in; do not edit. */
+
+static const struct xlat timerfdflags[] = {
+#if defined(TFD_TIMER_ABSTIME) || (defined(HAVE_DECL_TFD_TIMER_ABSTIME) && HAVE_DECL_TFD_TIMER_ABSTIME)
+       XLAT(TFD_TIMER_ABSTIME),
+#endif
+       XLAT_END
+};
diff --git a/xlat/timerfdflags.in b/xlat/timerfdflags.in
new file mode 100644 (file)
index 0000000..cfd506d
--- /dev/null
@@ -0,0 +1 @@
+TFD_TIMER_ABSTIME
diff --git a/xlat/ubi_volume_props.h b/xlat/ubi_volume_props.h
new file mode 100644 (file)
index 0000000..7aa90c6
--- /dev/null
@@ -0,0 +1,6 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ubi_volume_props.in; do not edit. */
+
+static const struct xlat ubi_volume_props[] = {
+       XLAT(UBI_VOL_PROP_DIRECT_WRITE),
+       XLAT_END
+};
diff --git a/xlat/ubi_volume_props.in b/xlat/ubi_volume_props.in
new file mode 100644 (file)
index 0000000..78f2880
--- /dev/null
@@ -0,0 +1,2 @@
+#unconditional
+UBI_VOL_PROP_DIRECT_WRITE
diff --git a/xlat/ubi_volume_types.h b/xlat/ubi_volume_types.h
new file mode 100644 (file)
index 0000000..36a2f07
--- /dev/null
@@ -0,0 +1,7 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ubi_volume_types.in; do not edit. */
+
+static const struct xlat ubi_volume_types[] = {
+       XLAT(UBI_DYNAMIC_VOLUME),
+       XLAT(UBI_STATIC_VOLUME),
+       XLAT_END
+};
diff --git a/xlat/ubi_volume_types.in b/xlat/ubi_volume_types.in
new file mode 100644 (file)
index 0000000..b4de52e
--- /dev/null
@@ -0,0 +1,3 @@
+#unconditional
+UBI_DYNAMIC_VOLUME
+UBI_STATIC_VOLUME
diff --git a/xlat/umount_flags.h b/xlat/umount_flags.h
new file mode 100644 (file)
index 0000000..304c1a6
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/umount_flags.in; do not edit. */
+
+static const struct xlat umount_flags[] = {
+#if defined(MNT_FORCE) || (defined(HAVE_DECL_MNT_FORCE) && HAVE_DECL_MNT_FORCE)
+       XLAT(MNT_FORCE),
+#endif
+#if defined(MNT_DETACH) || (defined(HAVE_DECL_MNT_DETACH) && HAVE_DECL_MNT_DETACH)
+       XLAT(MNT_DETACH),
+#endif
+#if defined(MNT_EXPIRE) || (defined(HAVE_DECL_MNT_EXPIRE) && HAVE_DECL_MNT_EXPIRE)
+       XLAT(MNT_EXPIRE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/umount_flags.in b/xlat/umount_flags.in
new file mode 100644 (file)
index 0000000..4a7e366
--- /dev/null
@@ -0,0 +1,3 @@
+MNT_FORCE
+MNT_DETACH
+MNT_EXPIRE
diff --git a/xlat/usagewho.h b/xlat/usagewho.h
new file mode 100644 (file)
index 0000000..860e0a0
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/usagewho.in; do not edit. */
+
+static const struct xlat usagewho[] = {
+#if defined(RUSAGE_SELF) || (defined(HAVE_DECL_RUSAGE_SELF) && HAVE_DECL_RUSAGE_SELF)
+       XLAT(RUSAGE_SELF),
+#endif
+#if defined(RUSAGE_CHILDREN) || (defined(HAVE_DECL_RUSAGE_CHILDREN) && HAVE_DECL_RUSAGE_CHILDREN)
+       XLAT(RUSAGE_CHILDREN),
+#endif
+#if defined(RUSAGE_BOTH) || (defined(HAVE_DECL_RUSAGE_BOTH) && HAVE_DECL_RUSAGE_BOTH)
+       XLAT(RUSAGE_BOTH),
+#endif
+       XLAT_END
+};
diff --git a/xlat/usagewho.in b/xlat/usagewho.in
new file mode 100644 (file)
index 0000000..e2153b3
--- /dev/null
@@ -0,0 +1,3 @@
+RUSAGE_SELF
+RUSAGE_CHILDREN
+RUSAGE_BOTH
diff --git a/xlat/wait4_options.h b/xlat/wait4_options.h
new file mode 100644 (file)
index 0000000..86df119
--- /dev/null
@@ -0,0 +1,37 @@
+/* Generated by ./xlat/gen.sh from ./xlat/wait4_options.in; do not edit. */
+
+static const struct xlat wait4_options[] = {
+#if defined(WNOHANG) || (defined(HAVE_DECL_WNOHANG) && HAVE_DECL_WNOHANG)
+       XLAT(WNOHANG),
+#endif
+#ifndef WSTOPPED
+#if defined(WUNTRACED) || (defined(HAVE_DECL_WUNTRACED) && HAVE_DECL_WUNTRACED)
+       XLAT(WUNTRACED),
+#endif
+#endif
+#if defined(WEXITED) || (defined(HAVE_DECL_WEXITED) && HAVE_DECL_WEXITED)
+       XLAT(WEXITED),
+#endif
+#if defined(WTRAPPED) || (defined(HAVE_DECL_WTRAPPED) && HAVE_DECL_WTRAPPED)
+       XLAT(WTRAPPED),
+#endif
+#if defined(WSTOPPED) || (defined(HAVE_DECL_WSTOPPED) && HAVE_DECL_WSTOPPED)
+       XLAT(WSTOPPED),
+#endif
+#if defined(WCONTINUED) || (defined(HAVE_DECL_WCONTINUED) && HAVE_DECL_WCONTINUED)
+       XLAT(WCONTINUED),
+#endif
+#if defined(WNOWAIT) || (defined(HAVE_DECL_WNOWAIT) && HAVE_DECL_WNOWAIT)
+       XLAT(WNOWAIT),
+#endif
+#if defined(__WCLONE) || (defined(HAVE_DECL___WCLONE) && HAVE_DECL___WCLONE)
+       XLAT(__WCLONE),
+#endif
+#if defined(__WALL) || (defined(HAVE_DECL___WALL) && HAVE_DECL___WALL)
+       XLAT(__WALL),
+#endif
+#if defined(__WNOTHREAD) || (defined(HAVE_DECL___WNOTHREAD) && HAVE_DECL___WNOTHREAD)
+       XLAT(__WNOTHREAD),
+#endif
+       XLAT_END
+};
diff --git a/xlat/wait4_options.in b/xlat/wait4_options.in
new file mode 100644 (file)
index 0000000..61219d3
--- /dev/null
@@ -0,0 +1,12 @@
+WNOHANG
+#ifndef WSTOPPED
+WUNTRACED
+#endif
+WEXITED
+WTRAPPED
+WSTOPPED
+WCONTINUED
+WNOWAIT
+__WCLONE
+__WALL
+__WNOTHREAD
diff --git a/xlat/waitid_types.h b/xlat/waitid_types.h
new file mode 100644 (file)
index 0000000..333ecc2
--- /dev/null
@@ -0,0 +1,32 @@
+/* Generated by ./xlat/gen.sh from ./xlat/waitid_types.in; do not edit. */
+
+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
+};
diff --git a/xlat/waitid_types.in b/xlat/waitid_types.in
new file mode 100644 (file)
index 0000000..99a3560
--- /dev/null
@@ -0,0 +1,9 @@
+P_PID
+P_PPID
+P_PGID
+P_SID
+P_CID
+P_UID
+P_GID
+P_ALL
+P_LWPID
diff --git a/xlat/whence_codes.h b/xlat/whence_codes.h
new file mode 100644 (file)
index 0000000..2576b78
--- /dev/null
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/whence_codes.in; do not edit. */
+
+const struct xlat whence_codes[] = {
+#if defined(SEEK_SET) || (defined(HAVE_DECL_SEEK_SET) && HAVE_DECL_SEEK_SET)
+       XLAT(SEEK_SET),
+#endif
+#if defined(SEEK_CUR) || (defined(HAVE_DECL_SEEK_CUR) && HAVE_DECL_SEEK_CUR)
+       XLAT(SEEK_CUR),
+#endif
+#if defined(SEEK_END) || (defined(HAVE_DECL_SEEK_END) && HAVE_DECL_SEEK_END)
+       XLAT(SEEK_END),
+#endif
+#if defined(SEEK_DATA) || (defined(HAVE_DECL_SEEK_DATA) && HAVE_DECL_SEEK_DATA)
+       XLAT(SEEK_DATA),
+#endif
+#if defined(SEEK_HOLE) || (defined(HAVE_DECL_SEEK_HOLE) && HAVE_DECL_SEEK_HOLE)
+       XLAT(SEEK_HOLE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/whence_codes.in b/xlat/whence_codes.in
new file mode 100644 (file)
index 0000000..c04d79a
--- /dev/null
@@ -0,0 +1,5 @@
+SEEK_SET
+SEEK_CUR
+SEEK_END
+SEEK_DATA
+SEEK_HOLE
diff --git a/xlat/xattrflags.h b/xlat/xattrflags.h
new file mode 100644 (file)
index 0000000..33622c4
--- /dev/null
@@ -0,0 +1,11 @@
+/* Generated by ./xlat/gen.sh from ./xlat/xattrflags.in; do not edit. */
+
+static const struct xlat xattrflags[] = {
+#if defined(XATTR_CREATE) || (defined(HAVE_DECL_XATTR_CREATE) && HAVE_DECL_XATTR_CREATE)
+       XLAT(XATTR_CREATE),
+#endif
+#if defined(XATTR_REPLACE) || (defined(HAVE_DECL_XATTR_REPLACE) && HAVE_DECL_XATTR_REPLACE)
+       XLAT(XATTR_REPLACE),
+#endif
+       XLAT_END
+};
diff --git a/xlat/xattrflags.in b/xlat/xattrflags.in
new file mode 100644 (file)
index 0000000..41d1896
--- /dev/null
@@ -0,0 +1,2 @@
+XATTR_CREATE
+XATTR_REPLACE
diff --git a/xlat/xfs_dqblk_flags.h b/xlat/xfs_dqblk_flags.h
new file mode 100644 (file)
index 0000000..049bb34
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./xlat/gen.sh from ./xlat/xfs_dqblk_flags.in; do not edit. */
+
+static const struct xlat xfs_dqblk_flags[] = {
+#if defined(XFS_USER_QUOTA) || (defined(HAVE_DECL_XFS_USER_QUOTA) && HAVE_DECL_XFS_USER_QUOTA)
+       XLAT(XFS_USER_QUOTA),
+#endif
+#if defined(XFS_PROJ_QUOTA) || (defined(HAVE_DECL_XFS_PROJ_QUOTA) && HAVE_DECL_XFS_PROJ_QUOTA)
+       XLAT(XFS_PROJ_QUOTA),
+#endif
+#if defined(XFS_GROUP_QUOTA) || (defined(HAVE_DECL_XFS_GROUP_QUOTA) && HAVE_DECL_XFS_GROUP_QUOTA)
+       XLAT(XFS_GROUP_QUOTA),
+#endif
+       XLAT_END
+};
diff --git a/xlat/xfs_dqblk_flags.in b/xlat/xfs_dqblk_flags.in
new file mode 100644 (file)
index 0000000..3128e17
--- /dev/null
@@ -0,0 +1,3 @@
+XFS_USER_QUOTA
+XFS_PROJ_QUOTA
+XFS_GROUP_QUOTA
diff --git a/xlat/xfs_quota_flags.h b/xlat/xfs_quota_flags.h
new file mode 100644 (file)
index 0000000..a43321d
--- /dev/null
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/xfs_quota_flags.in; do not edit. */
+
+static const struct xlat xfs_quota_flags[] = {
+#if defined(XFS_QUOTA_UDQ_ACCT) || (defined(HAVE_DECL_XFS_QUOTA_UDQ_ACCT) && HAVE_DECL_XFS_QUOTA_UDQ_ACCT)
+       XLAT(XFS_QUOTA_UDQ_ACCT),
+#endif
+#if defined(XFS_QUOTA_UDQ_ENFD) || (defined(HAVE_DECL_XFS_QUOTA_UDQ_ENFD) && HAVE_DECL_XFS_QUOTA_UDQ_ENFD)
+       XLAT(XFS_QUOTA_UDQ_ENFD),
+#endif
+#if defined(XFS_QUOTA_GDQ_ACCT) || (defined(HAVE_DECL_XFS_QUOTA_GDQ_ACCT) && HAVE_DECL_XFS_QUOTA_GDQ_ACCT)
+       XLAT(XFS_QUOTA_GDQ_ACCT),
+#endif
+#if defined(XFS_QUOTA_GDQ_ENFD) || (defined(HAVE_DECL_XFS_QUOTA_GDQ_ENFD) && HAVE_DECL_XFS_QUOTA_GDQ_ENFD)
+       XLAT(XFS_QUOTA_GDQ_ENFD),
+#endif
+       XLAT_END
+};
diff --git a/xlat/xfs_quota_flags.in b/xlat/xfs_quota_flags.in
new file mode 100644 (file)
index 0000000..b9a53f0
--- /dev/null
@@ -0,0 +1,4 @@
+XFS_QUOTA_UDQ_ACCT
+XFS_QUOTA_UDQ_ENFD
+XFS_QUOTA_GDQ_ACCT
+XFS_QUOTA_GDQ_ENFD