Upgrade strace to 4.16 from 4.14.
Noteworthy changes in release 4.16 (2017-02-14)
* Improvements
* Implemented syscall return value injection (-e inject=SET:retval= option).
* Implemented signal injection (-e inject=SET:signal= option).
* Implemented decoding of SUID_DUMP_* constants in PR_[GS]ET_DUMPABLE.
* Implemented decoding of all SG_* ioctl commands.
* Implemented decoding of ustat syscall.
* Implemented decoding of BPF_OBJ_PIN, BPF_OBJ_GET, BPF_PROG_ATTACH,
and BPF_PROG_DETACH commands of bpf syscall.
* Enhanced decoding of sg_io_hdr and sg_io_v4 structures.
* Enhanced decoding of get_robust_list, getrandom, io_submit, set_robust_list
syscalls.
* Enhanced decoding of entities of kernel long type on x32 and mips n32 ABIs.
* Updated lists of IP_*, IPV6_*, and LOOP_* constants.
* Updated lists of ioctl commands from Linux 4.10.
* Added decoding of recently added syscalls on avr32, microblaze, ppc,
and ppc64.
* Bug fixes
* Fixed pathmatch of oldselect syscall on 64-bit architectures.
* Fixed decoding of mmap2 syscall on s390 when arguments are not available.
* Fixed decoding of kexec_file_load, mprotect, pkey_mprotect, prctl, preadv*,
and pwritev* syscalls on x32.
* Fixed printing of string arguments of getxattr and setxattr syscalls
when -s option is used to limit the printed string size.
* Fixed decoding of ifconf, ifreq, and loop_info structures on non-native
personalities.
* Fixed decoding of SG_* and LOOP_* ioctl commands.
* Fixed build on mips with musl libc.
* Fixed cross-building of ioctlsort.
* Applied minor formatting fixes to the manual page.
Noteworthy changes in release 4.15 (2016-12-14)
* Changes in behavior
* Time stamps are now printed according to ISO 8601.
* Changed output format of val3 parameter of futex FUTEX_WAKE_OP operation.
* The last argument of mincore, sched_getaffinity, and sched_setaffinity
syscalls is now formatted as an array.
* Improvements
* Implemented syscall fault injection (-e fault=... option).
* Implemented decoding of DM_* ioctl commands.
* Implemented decoding of attr parameter of perf_event_open syscall.
* Implemented decoding of pkey_alloc, pkey_free, and pkey_mprotect syscalls.
* Implemented dumping of mq_timedsend and mq_timedreceive syscalls.
* Implemented decoding of PR_SET_FP_MODE and PR_GET_FP_MODE operations
of prctl syscall.
* Implemented PTRACE_GETREGS API support on m68k.
* Updated lists of ARCH_*, BPF_*, BTRFS_*, FALLOC_*, MS_*, *_MAGIC,
and V4L2_* constants.
* Updated lists of ioctl commands from Linux 4.9.
* Added decoding of recently added syscalls on arc, x32, and xtensa.
* Enhanced manual page.
* Bug fixes
* Fixed corner cases in decoding of exit, exit_group, futimesat, getgroups,
getresuid, init_module, inotify_init1, kcmp, kexec_load, lookup_dcookie,
mq_getsetattr, mq_notify, mq_open, mq_timedreceive, mq_timedsend,
name_to_handle_at, prctl, process_vm_readv, process_vm_writev, setfsuid,
setgroups, setns, unshare, and utimes syscalls.
* Fixed handling of verbose flag in printing of controls array
of struct v4l2_ext_controls.
* Fixed omission of field names in the output of capability, sigaction,
sigevent, statfs, timespec, timeval, and utimbuf structures.
* Fixed printing of unknown syscalls in siginfo structure.
* Fixed decoding of ioctl constants on m68k.
* Fixed cris architecture support.
* Fixed cross build when host compiler does not support the same
set of warning flags as the cross compiler.
* Fixed build on SLE10 and SLE11.
Bug: N/A
Test: manual
Change-Id: I590bf5db1652aa1dfdc0eb16e30fd97c82af2261
diff --git a/tests/.gitignore b/tests/.gitignore
deleted file mode 100644
index 5b33416..0000000
--- a/tests/.gitignore
+++ /dev/null
@@ -1,323 +0,0 @@
-*.log
-*.log.*
-*.o
-*.tmp
-*.tmp-*
-*.tmp.*
-*.trs
-_newselect
-accept
-accept4
-access
-acct
-addkey
-adjtimex
-aio
-alarm
-attach-f-p
-attach-p-cmd-cmd
-attach-p-cmd-p
-bpf
-brk
-btrfs
-caps
-chmod
-chown
-chown32
-chroot
-clock_adjtime
-clock_nanosleep
-clock_xettime
-copy_file_range
-count-f
-creat
-dup
-dup2
-dup3
-epoll_create
-epoll_create1
-epoll_ctl
-epoll_pwait
-epoll_wait
-eventfd
-execve
-execve-v
-execveat
-execveat-v
-faccessat
-fadvise64
-fadvise64_64
-fallocate
-fanotify_mark
-fchdir
-fchmod
-fchmodat
-fchown
-fchown32
-fchownat
-fcntl
-fcntl64
-fdatasync
-file_handle
-file_ioctl
-filter-unavailable
-flock
-fork-f
-fstat
-fstat64
-fstatat64
-fstatfs
-fstatfs64
-fsync
-ftruncate
-ftruncate64
-futex
-futimesat
-get_mempolicy
-getcpu
-getcwd
-getdents
-getdents64
-getegid
-getegid32
-geteuid
-geteuid32
-getgid
-getgid32
-getgroups
-getgroups32
-getpeername
-getpgrp
-getrandom
-getresgid
-getresgid32
-getresuid
-getresuid32
-getrlimit
-getrusage
-getsid
-getsockname
-getuid
-getuid32
-getxxid
-inet-cmsg
-ioctl
-ioctl_block
-ioctl_evdev
-ioctl_evdev-v
-ioctl_mtd
-ioctl_rtc
-ioctl_rtc-v
-ioctl_uffdio
-ioctl_v4l2
-ioperm
-iopl
-ip_mreq
-ipc
-ipc_msg
-ipc_msgbuf
-ipc_sem
-ipc_shm
-keyctl
-kill
-ksysent
-ksysent.h
-lchown
-lchown32
-libtests.a
-link
-linkat
-llseek
-lseek
-lstat
-lstat64
-mbind
-membarrier
-memfd_create
-migrate_pages
-mincore
-mkdir
-mkdirat
-mknod
-mknodat
-mlock
-mlock2
-mlockall
-mmap
-mmap64
-mmsg
-mmsg-silent
-mmsg_name
-mmsg_name-v
-mount
-move_pages
-mq
-msg_control
-msg_control-v
-msg_name
-munlockall
-nanosleep
-net-accept-connect
-net-icmp_filter
-net-sockaddr
-net-y-unix
-net-yy-inet
-net-yy-netlink
-net-yy-unix
-netlink_inet_diag
-netlink_netlink_diag
-netlink_protocol
-netlink_unix_diag
-newfstatat
-nsyscalls
-old_mmap
-oldselect
-open
-openat
-pause
-pc
-perf_event_open
-personality
-pipe
-poll
-ppoll
-prctl-seccomp-filter-v
-prctl-seccomp-strict
-pread64-pwrite64
-preadv
-preadv-pwritev
-preadv2-pwritev2
-prlimit64
-pselect6
-ptrace
-pwritev
-quotactl
-quotactl-v
-quotactl-xfs
-quotactl-xfs-v
-read-write
-readahead
-readdir
-readlink
-readlinkat
-readv
-reboot
-recvfrom
-recvmmsg-timeout
-recvmsg
-redirect-fds
-remap_file_pages
-rename
-renameat
-renameat2
-request_key
-restart_syscall
-rmdir
-rt_sigpending
-rt_sigprocmask
-rt_sigqueueinfo
-rt_sigsuspend
-rt_sigtimedwait
-rt_tgsigqueueinfo
-sched_get_priority_mxx
-sched_rr_get_interval
-sched_xetaffinity
-sched_xetattr
-sched_xetparam
-sched_xetscheduler
-sched_yield
-scm_rights
-seccomp-filter
-seccomp-filter-v
-seccomp-strict
-select
-semop
-sendfile
-sendfile64
-set_mempolicy
-set_ptracer_any
-setdomainname
-setfsgid
-setfsgid32
-setfsuid
-setfsuid32
-setgid
-setgid32
-setgroups
-setgroups32
-sethostname
-setregid
-setregid32
-setresgid
-setresgid32
-setresuid
-setresuid32
-setreuid
-setreuid32
-setrlimit
-setuid
-setuid32
-shmxt
-shutdown
-sigaction
-sigaltstack
-siginfo
-signal_receive
-signalfd4
-sigreturn
-sleep
-socketcall
-splice
-stack-fcall
-stat
-stat64
-statfs
-statfs64
-swap
-symlink
-symlinkat
-sync
-sync_file_range
-sync_file_range2
-sysinfo
-syslog
-tee
-time
-timer_create
-timer_xettime
-timerfd_xettime
-times
-times-fail
-truncate
-truncate64
-ugetrlimit
-uio
-umask
-umount
-umount2
-umovestr
-umovestr2
-umovestr3
-uname
-unix-pair-send-recv
-unix-pair-sendto-recvfrom
-unlink
-unlinkat
-userfaultfd
-utime
-utimensat
-utimes
-vfork-f
-vhangup
-vmsplice
-wait4
-wait4-v
-waitid
-waitid-v
-waitpid
-xattr
-xet_robust_list
-xetitimer
-xetpgid
-xetpriority
-xettimeofday
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..53b7a6c
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,5800 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# tests/Makefile. Generated from Makefile.in by configure.
+
+# 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Automake input for strace tests.
+#
+# Copyright (c) 2011-2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# scno.h make rules for strace.
+#
+# Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+# 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.
+
+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 \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ 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)/strace
+pkgincludedir = $(includedir)/strace
+pkglibdir = $(libdir)/strace
+pkglibexecdir = $(libexecdir)/strace
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-pc-linux-gnu
+host_triplet = x86_64-pc-linux-gnu
+check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+ access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+ adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
+ attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+ attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
+ brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
+ chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+ clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+ clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
+ count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
+ dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
+ epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
+ epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
+ execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
+ execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+ fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+ fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+ fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+ fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+ fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+ file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
+ finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
+ fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+ fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+ ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+ futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+ getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+ getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+ geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+ getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+ getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
+ getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
+ getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
+ getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
+ getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
+ inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
+ ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
+ ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+ ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
+ ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
+ ioctl_rtc-v$(EXEEXT) ioctl_scsi$(EXEEXT) \
+ ioctl_sg_io_v3$(EXEEXT) ioctl_sg_io_v4$(EXEEXT) \
+ ioctl_sock_gifconf$(EXEEXT) ioctl_uffdio$(EXEEXT) \
+ ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) iopl$(EXEEXT) \
+ ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) ipc_msg$(EXEEXT) \
+ ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+ kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+ keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
+ lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+ llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+ lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
+ membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+ migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
+ mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
+ mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
+ mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
+ mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
+ move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
+ mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
+ msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
+ munlockall$(EXEEXT) nanosleep$(EXEEXT) \
+ net-accept-connect$(EXEEXT) net-icmp_filter$(EXEEXT) \
+ net-sockaddr$(EXEEXT) net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+ net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+ netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+ netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
+ newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
+ oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
+ oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
+ pc$(EXEEXT) perf_event_open$(EXEEXT) \
+ perf_event_open_nonverbose$(EXEEXT) \
+ perf_event_open_unabbrev$(EXEEXT) personality$(EXEEXT) \
+ pipe$(EXEEXT) pipe2$(EXEEXT) pkey_alloc$(EXEEXT) \
+ pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) poll$(EXEEXT) \
+ ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
+ prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
+ prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
+ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+ prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
+ prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+ preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+ print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
+ process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
+ pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
+ qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
+ qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
+ qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
+ quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+ read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+ readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
+ reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
+ recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
+ remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
+ renameat2$(EXEEXT) request_key$(EXEEXT) \
+ restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
+ rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
+ rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+ rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+ sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+ sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+ sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+ scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
+ seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
+ select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
+ sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+ set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
+ setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
+ setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
+ setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
+ setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
+ setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
+ setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
+ setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
+ shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
+ sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
+ signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
+ socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
+ stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
+ statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
+ symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
+ sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
+ tee$(EXEEXT) threads-execve$(EXEEXT) time$(EXEEXT) \
+ timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+ timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+ truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
+ uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
+ umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
+ umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
+ uname$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+ unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
+ unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
+ ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
+ utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
+ vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
+ waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
+ xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+ xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+ xettimeofday$(EXEEXT)
+TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
+DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
+ $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
+ $(top_srcdir)/m4/ax_valgrind_check.m4 \
+ $(top_srcdir)/m4/mpers.m4 \
+ $(top_srcdir)/m4/st_save_restore_var.m4 \
+ $(top_srcdir)/m4/st_warn_cflags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_$(V))
+am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libtests_a_AR = $(AR) $(ARFLAGS)
+libtests_a_LIBADD =
+am_libtests_a_OBJECTS = libtests_a-errno2name.$(OBJEXT) \
+ libtests_a-error_msg.$(OBJEXT) \
+ libtests_a-fill_memory.$(OBJEXT) \
+ libtests_a-get_page_size.$(OBJEXT) \
+ libtests_a-hexdump_strdup.$(OBJEXT) \
+ libtests_a-hexquote_strndup.$(OBJEXT) \
+ libtests_a-inode_of_sockfd.$(OBJEXT) \
+ libtests_a-libmmsg.$(OBJEXT) \
+ libtests_a-libsocketcall.$(OBJEXT) \
+ libtests_a-overflowuid.$(OBJEXT) \
+ libtests_a-pipe_maxfd.$(OBJEXT) \
+ libtests_a-print_quoted_string.$(OBJEXT) \
+ libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
+ libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
+ libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+_newselect_SOURCES = _newselect.c
+_newselect_OBJECTS = _newselect.$(OBJEXT)
+_newselect_LDADD = $(LDADD)
+_newselect_DEPENDENCIES = libtests.a
+accept_SOURCES = accept.c
+accept_OBJECTS = accept.$(OBJEXT)
+accept_LDADD = $(LDADD)
+accept_DEPENDENCIES = libtests.a
+accept4_SOURCES = accept4.c
+accept4_OBJECTS = accept4.$(OBJEXT)
+accept4_LDADD = $(LDADD)
+accept4_DEPENDENCIES = libtests.a
+access_SOURCES = access.c
+access_OBJECTS = access.$(OBJEXT)
+access_LDADD = $(LDADD)
+access_DEPENDENCIES = libtests.a
+acct_SOURCES = acct.c
+acct_OBJECTS = acct.$(OBJEXT)
+acct_LDADD = $(LDADD)
+acct_DEPENDENCIES = libtests.a
+add_key_SOURCES = add_key.c
+add_key_OBJECTS = add_key.$(OBJEXT)
+add_key_LDADD = $(LDADD)
+add_key_DEPENDENCIES = libtests.a
+adjtimex_SOURCES = adjtimex.c
+adjtimex_OBJECTS = adjtimex.$(OBJEXT)
+adjtimex_LDADD = $(LDADD)
+adjtimex_DEPENDENCIES = libtests.a
+aio_SOURCES = aio.c
+aio_OBJECTS = aio.$(OBJEXT)
+aio_LDADD = $(LDADD)
+aio_DEPENDENCIES = libtests.a
+alarm_SOURCES = alarm.c
+alarm_OBJECTS = alarm.$(OBJEXT)
+alarm_LDADD = $(LDADD)
+alarm_DEPENDENCIES = libtests.a
+answer_SOURCES = answer.c
+answer_OBJECTS = answer.$(OBJEXT)
+answer_LDADD = $(LDADD)
+answer_DEPENDENCIES = libtests.a
+attach_f_p_SOURCES = attach-f-p.c
+attach_f_p_OBJECTS = attach-f-p.$(OBJEXT)
+attach_f_p_DEPENDENCIES = $(LDADD)
+attach_f_p_cmd_SOURCES = attach-f-p-cmd.c
+attach_f_p_cmd_OBJECTS = attach-f-p-cmd.$(OBJEXT)
+attach_f_p_cmd_LDADD = $(LDADD)
+attach_f_p_cmd_DEPENDENCIES = libtests.a
+attach_p_cmd_cmd_SOURCES = attach-p-cmd-cmd.c
+attach_p_cmd_cmd_OBJECTS = attach-p-cmd-cmd.$(OBJEXT)
+attach_p_cmd_cmd_LDADD = $(LDADD)
+attach_p_cmd_cmd_DEPENDENCIES = libtests.a
+attach_p_cmd_p_SOURCES = attach-p-cmd-p.c
+attach_p_cmd_p_OBJECTS = attach-p-cmd-p.$(OBJEXT)
+attach_p_cmd_p_LDADD = $(LDADD)
+attach_p_cmd_p_DEPENDENCIES = libtests.a
+bpf_SOURCES = bpf.c
+bpf_OBJECTS = bpf.$(OBJEXT)
+bpf_LDADD = $(LDADD)
+bpf_DEPENDENCIES = libtests.a
+brk_SOURCES = brk.c
+brk_OBJECTS = brk.$(OBJEXT)
+brk_LDADD = $(LDADD)
+brk_DEPENDENCIES = libtests.a
+btrfs_SOURCES = btrfs.c
+btrfs_OBJECTS = btrfs.$(OBJEXT)
+btrfs_LDADD = $(LDADD)
+btrfs_DEPENDENCIES = libtests.a
+caps_SOURCES = caps.c
+caps_OBJECTS = caps.$(OBJEXT)
+caps_LDADD = $(LDADD)
+caps_DEPENDENCIES = libtests.a
+caps_abbrev_SOURCES = caps-abbrev.c
+caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT)
+caps_abbrev_LDADD = $(LDADD)
+caps_abbrev_DEPENDENCIES = libtests.a
+chmod_SOURCES = chmod.c
+chmod_OBJECTS = chmod.$(OBJEXT)
+chmod_LDADD = $(LDADD)
+chmod_DEPENDENCIES = libtests.a
+chown_SOURCES = chown.c
+chown_OBJECTS = chown.$(OBJEXT)
+chown_LDADD = $(LDADD)
+chown_DEPENDENCIES = libtests.a
+chown32_SOURCES = chown32.c
+chown32_OBJECTS = chown32.$(OBJEXT)
+chown32_LDADD = $(LDADD)
+chown32_DEPENDENCIES = libtests.a
+chroot_SOURCES = chroot.c
+chroot_OBJECTS = chroot.$(OBJEXT)
+chroot_LDADD = $(LDADD)
+chroot_DEPENDENCIES = libtests.a
+clock_adjtime_SOURCES = clock_adjtime.c
+clock_adjtime_OBJECTS = clock_adjtime.$(OBJEXT)
+clock_adjtime_LDADD = $(LDADD)
+clock_adjtime_DEPENDENCIES = libtests.a
+clock_nanosleep_SOURCES = clock_nanosleep.c
+clock_nanosleep_OBJECTS = clock_nanosleep.$(OBJEXT)
+clock_nanosleep_LDADD = $(LDADD)
+clock_nanosleep_DEPENDENCIES = libtests.a
+clock_xettime_SOURCES = clock_xettime.c
+clock_xettime_OBJECTS = clock_xettime.$(OBJEXT)
+clock_xettime_DEPENDENCIES = $(LDADD)
+copy_file_range_SOURCES = copy_file_range.c
+copy_file_range_OBJECTS = copy_file_range.$(OBJEXT)
+copy_file_range_LDADD = $(LDADD)
+copy_file_range_DEPENDENCIES = libtests.a
+count_f_SOURCES = count-f.c
+count_f_OBJECTS = count-f.$(OBJEXT)
+count_f_DEPENDENCIES = $(LDADD)
+creat_SOURCES = creat.c
+creat_OBJECTS = creat.$(OBJEXT)
+creat_LDADD = $(LDADD)
+creat_DEPENDENCIES = libtests.a
+delete_module_SOURCES = delete_module.c
+delete_module_OBJECTS = delete_module.$(OBJEXT)
+delete_module_LDADD = $(LDADD)
+delete_module_DEPENDENCIES = libtests.a
+dup_SOURCES = dup.c
+dup_OBJECTS = dup.$(OBJEXT)
+dup_LDADD = $(LDADD)
+dup_DEPENDENCIES = libtests.a
+dup2_SOURCES = dup2.c
+dup2_OBJECTS = dup2.$(OBJEXT)
+dup2_LDADD = $(LDADD)
+dup2_DEPENDENCIES = libtests.a
+dup3_SOURCES = dup3.c
+dup3_OBJECTS = dup3.$(OBJEXT)
+dup3_LDADD = $(LDADD)
+dup3_DEPENDENCIES = libtests.a
+epoll_create_SOURCES = epoll_create.c
+epoll_create_OBJECTS = epoll_create.$(OBJEXT)
+epoll_create_LDADD = $(LDADD)
+epoll_create_DEPENDENCIES = libtests.a
+epoll_create1_SOURCES = epoll_create1.c
+epoll_create1_OBJECTS = epoll_create1.$(OBJEXT)
+epoll_create1_LDADD = $(LDADD)
+epoll_create1_DEPENDENCIES = libtests.a
+epoll_ctl_SOURCES = epoll_ctl.c
+epoll_ctl_OBJECTS = epoll_ctl.$(OBJEXT)
+epoll_ctl_LDADD = $(LDADD)
+epoll_ctl_DEPENDENCIES = libtests.a
+epoll_pwait_SOURCES = epoll_pwait.c
+epoll_pwait_OBJECTS = epoll_pwait.$(OBJEXT)
+epoll_pwait_LDADD = $(LDADD)
+epoll_pwait_DEPENDENCIES = libtests.a
+epoll_wait_SOURCES = epoll_wait.c
+epoll_wait_OBJECTS = epoll_wait.$(OBJEXT)
+epoll_wait_LDADD = $(LDADD)
+epoll_wait_DEPENDENCIES = libtests.a
+erestartsys_SOURCES = erestartsys.c
+erestartsys_OBJECTS = erestartsys.$(OBJEXT)
+erestartsys_LDADD = $(LDADD)
+erestartsys_DEPENDENCIES = libtests.a
+eventfd_SOURCES = eventfd.c
+eventfd_OBJECTS = eventfd.$(OBJEXT)
+eventfd_LDADD = $(LDADD)
+eventfd_DEPENDENCIES = libtests.a
+execve_SOURCES = execve.c
+execve_OBJECTS = execve.$(OBJEXT)
+execve_LDADD = $(LDADD)
+execve_DEPENDENCIES = libtests.a
+execve_v_SOURCES = execve-v.c
+execve_v_OBJECTS = execve-v.$(OBJEXT)
+execve_v_LDADD = $(LDADD)
+execve_v_DEPENDENCIES = libtests.a
+execveat_SOURCES = execveat.c
+execveat_OBJECTS = execveat.$(OBJEXT)
+execveat_LDADD = $(LDADD)
+execveat_DEPENDENCIES = libtests.a
+execveat_v_SOURCES = execveat-v.c
+execveat_v_OBJECTS = execveat-v.$(OBJEXT)
+execveat_v_LDADD = $(LDADD)
+execveat_v_DEPENDENCIES = libtests.a
+faccessat_SOURCES = faccessat.c
+faccessat_OBJECTS = faccessat.$(OBJEXT)
+faccessat_LDADD = $(LDADD)
+faccessat_DEPENDENCIES = libtests.a
+fadvise64_SOURCES = fadvise64.c
+fadvise64_OBJECTS = fadvise64.$(OBJEXT)
+fadvise64_LDADD = $(LDADD)
+fadvise64_DEPENDENCIES = libtests.a
+fadvise64_64_SOURCES = fadvise64_64.c
+fadvise64_64_OBJECTS = fadvise64_64.$(OBJEXT)
+fadvise64_64_LDADD = $(LDADD)
+fadvise64_64_DEPENDENCIES = libtests.a
+fallocate_SOURCES = fallocate.c
+fallocate_OBJECTS = fallocate.$(OBJEXT)
+fallocate_LDADD = $(LDADD)
+fallocate_DEPENDENCIES = libtests.a
+fanotify_init_SOURCES = fanotify_init.c
+fanotify_init_OBJECTS = fanotify_init.$(OBJEXT)
+fanotify_init_LDADD = $(LDADD)
+fanotify_init_DEPENDENCIES = libtests.a
+fanotify_mark_SOURCES = fanotify_mark.c
+fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT)
+fanotify_mark_LDADD = $(LDADD)
+fanotify_mark_DEPENDENCIES = libtests.a
+fchdir_SOURCES = fchdir.c
+fchdir_OBJECTS = fchdir.$(OBJEXT)
+fchdir_LDADD = $(LDADD)
+fchdir_DEPENDENCIES = libtests.a
+fchmod_SOURCES = fchmod.c
+fchmod_OBJECTS = fchmod.$(OBJEXT)
+fchmod_LDADD = $(LDADD)
+fchmod_DEPENDENCIES = libtests.a
+fchmodat_SOURCES = fchmodat.c
+fchmodat_OBJECTS = fchmodat.$(OBJEXT)
+fchmodat_LDADD = $(LDADD)
+fchmodat_DEPENDENCIES = libtests.a
+fchown_SOURCES = fchown.c
+fchown_OBJECTS = fchown.$(OBJEXT)
+fchown_LDADD = $(LDADD)
+fchown_DEPENDENCIES = libtests.a
+fchown32_SOURCES = fchown32.c
+fchown32_OBJECTS = fchown32.$(OBJEXT)
+fchown32_LDADD = $(LDADD)
+fchown32_DEPENDENCIES = libtests.a
+fchownat_SOURCES = fchownat.c
+fchownat_OBJECTS = fchownat.$(OBJEXT)
+fchownat_LDADD = $(LDADD)
+fchownat_DEPENDENCIES = libtests.a
+fcntl_SOURCES = fcntl.c
+fcntl_OBJECTS = fcntl.$(OBJEXT)
+fcntl_LDADD = $(LDADD)
+fcntl_DEPENDENCIES = libtests.a
+fcntl64_SOURCES = fcntl64.c
+fcntl64_OBJECTS = fcntl64.$(OBJEXT)
+fcntl64_LDADD = $(LDADD)
+fcntl64_DEPENDENCIES = libtests.a
+fdatasync_SOURCES = fdatasync.c
+fdatasync_OBJECTS = fdatasync.$(OBJEXT)
+fdatasync_LDADD = $(LDADD)
+fdatasync_DEPENDENCIES = libtests.a
+file_handle_SOURCES = file_handle.c
+file_handle_OBJECTS = file_handle.$(OBJEXT)
+file_handle_LDADD = $(LDADD)
+file_handle_DEPENDENCIES = libtests.a
+file_ioctl_SOURCES = file_ioctl.c
+file_ioctl_OBJECTS = file_ioctl.$(OBJEXT)
+file_ioctl_LDADD = $(LDADD)
+file_ioctl_DEPENDENCIES = libtests.a
+filter_unavailable_SOURCES = filter-unavailable.c
+filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT)
+filter_unavailable_DEPENDENCIES = $(LDADD)
+finit_module_SOURCES = finit_module.c
+finit_module_OBJECTS = finit_module.$(OBJEXT)
+finit_module_LDADD = $(LDADD)
+finit_module_DEPENDENCIES = libtests.a
+flock_SOURCES = flock.c
+flock_OBJECTS = flock.$(OBJEXT)
+flock_LDADD = $(LDADD)
+flock_DEPENDENCIES = libtests.a
+fork_f_SOURCES = fork-f.c
+fork_f_OBJECTS = fork-f.$(OBJEXT)
+fork_f_LDADD = $(LDADD)
+fork_f_DEPENDENCIES = libtests.a
+fstat_SOURCES = fstat.c
+fstat_OBJECTS = fstat.$(OBJEXT)
+fstat_LDADD = $(LDADD)
+fstat_DEPENDENCIES = libtests.a
+fstat64_SOURCES = fstat64.c
+fstat64_OBJECTS = fstat64-fstat64.$(OBJEXT)
+fstat64_LDADD = $(LDADD)
+fstat64_DEPENDENCIES = libtests.a
+fstatat64_SOURCES = fstatat64.c
+fstatat64_OBJECTS = fstatat64-fstatat64.$(OBJEXT)
+fstatat64_LDADD = $(LDADD)
+fstatat64_DEPENDENCIES = libtests.a
+fstatfs_SOURCES = fstatfs.c
+fstatfs_OBJECTS = fstatfs.$(OBJEXT)
+fstatfs_LDADD = $(LDADD)
+fstatfs_DEPENDENCIES = libtests.a
+fstatfs64_SOURCES = fstatfs64.c
+fstatfs64_OBJECTS = fstatfs64.$(OBJEXT)
+fstatfs64_LDADD = $(LDADD)
+fstatfs64_DEPENDENCIES = libtests.a
+fsync_SOURCES = fsync.c
+fsync_OBJECTS = fsync.$(OBJEXT)
+fsync_LDADD = $(LDADD)
+fsync_DEPENDENCIES = libtests.a
+ftruncate_SOURCES = ftruncate.c
+ftruncate_OBJECTS = ftruncate.$(OBJEXT)
+ftruncate_LDADD = $(LDADD)
+ftruncate_DEPENDENCIES = libtests.a
+ftruncate64_SOURCES = ftruncate64.c
+ftruncate64_OBJECTS = ftruncate64-ftruncate64.$(OBJEXT)
+ftruncate64_LDADD = $(LDADD)
+ftruncate64_DEPENDENCIES = libtests.a
+futex_SOURCES = futex.c
+futex_OBJECTS = futex.$(OBJEXT)
+futex_LDADD = $(LDADD)
+futex_DEPENDENCIES = libtests.a
+futimesat_SOURCES = futimesat.c
+futimesat_OBJECTS = futimesat.$(OBJEXT)
+futimesat_LDADD = $(LDADD)
+futimesat_DEPENDENCIES = libtests.a
+get_mempolicy_SOURCES = get_mempolicy.c
+get_mempolicy_OBJECTS = get_mempolicy.$(OBJEXT)
+get_mempolicy_LDADD = $(LDADD)
+get_mempolicy_DEPENDENCIES = libtests.a
+getcpu_SOURCES = getcpu.c
+getcpu_OBJECTS = getcpu.$(OBJEXT)
+getcpu_LDADD = $(LDADD)
+getcpu_DEPENDENCIES = libtests.a
+getcwd_SOURCES = getcwd.c
+getcwd_OBJECTS = getcwd.$(OBJEXT)
+getcwd_LDADD = $(LDADD)
+getcwd_DEPENDENCIES = libtests.a
+getdents_SOURCES = getdents.c
+getdents_OBJECTS = getdents.$(OBJEXT)
+getdents_LDADD = $(LDADD)
+getdents_DEPENDENCIES = libtests.a
+getdents64_SOURCES = getdents64.c
+getdents64_OBJECTS = getdents64.$(OBJEXT)
+getdents64_LDADD = $(LDADD)
+getdents64_DEPENDENCIES = libtests.a
+getegid_SOURCES = getegid.c
+getegid_OBJECTS = getegid.$(OBJEXT)
+getegid_LDADD = $(LDADD)
+getegid_DEPENDENCIES = libtests.a
+getegid32_SOURCES = getegid32.c
+getegid32_OBJECTS = getegid32.$(OBJEXT)
+getegid32_LDADD = $(LDADD)
+getegid32_DEPENDENCIES = libtests.a
+geteuid_SOURCES = geteuid.c
+geteuid_OBJECTS = geteuid.$(OBJEXT)
+geteuid_LDADD = $(LDADD)
+geteuid_DEPENDENCIES = libtests.a
+geteuid32_SOURCES = geteuid32.c
+geteuid32_OBJECTS = geteuid32.$(OBJEXT)
+geteuid32_LDADD = $(LDADD)
+geteuid32_DEPENDENCIES = libtests.a
+getgid_SOURCES = getgid.c
+getgid_OBJECTS = getgid.$(OBJEXT)
+getgid_LDADD = $(LDADD)
+getgid_DEPENDENCIES = libtests.a
+getgid32_SOURCES = getgid32.c
+getgid32_OBJECTS = getgid32.$(OBJEXT)
+getgid32_LDADD = $(LDADD)
+getgid32_DEPENDENCIES = libtests.a
+getgroups_SOURCES = getgroups.c
+getgroups_OBJECTS = getgroups.$(OBJEXT)
+getgroups_LDADD = $(LDADD)
+getgroups_DEPENDENCIES = libtests.a
+getgroups32_SOURCES = getgroups32.c
+getgroups32_OBJECTS = getgroups32.$(OBJEXT)
+getgroups32_LDADD = $(LDADD)
+getgroups32_DEPENDENCIES = libtests.a
+getpeername_SOURCES = getpeername.c
+getpeername_OBJECTS = getpeername.$(OBJEXT)
+getpeername_LDADD = $(LDADD)
+getpeername_DEPENDENCIES = libtests.a
+getpgrp_SOURCES = getpgrp.c
+getpgrp_OBJECTS = getpgrp.$(OBJEXT)
+getpgrp_LDADD = $(LDADD)
+getpgrp_DEPENDENCIES = libtests.a
+getrandom_SOURCES = getrandom.c
+getrandom_OBJECTS = getrandom.$(OBJEXT)
+getrandom_LDADD = $(LDADD)
+getrandom_DEPENDENCIES = libtests.a
+getresgid_SOURCES = getresgid.c
+getresgid_OBJECTS = getresgid.$(OBJEXT)
+getresgid_LDADD = $(LDADD)
+getresgid_DEPENDENCIES = libtests.a
+getresgid32_SOURCES = getresgid32.c
+getresgid32_OBJECTS = getresgid32.$(OBJEXT)
+getresgid32_LDADD = $(LDADD)
+getresgid32_DEPENDENCIES = libtests.a
+getresuid_SOURCES = getresuid.c
+getresuid_OBJECTS = getresuid.$(OBJEXT)
+getresuid_LDADD = $(LDADD)
+getresuid_DEPENDENCIES = libtests.a
+getresuid32_SOURCES = getresuid32.c
+getresuid32_OBJECTS = getresuid32.$(OBJEXT)
+getresuid32_LDADD = $(LDADD)
+getresuid32_DEPENDENCIES = libtests.a
+getrlimit_SOURCES = getrlimit.c
+getrlimit_OBJECTS = getrlimit.$(OBJEXT)
+getrlimit_LDADD = $(LDADD)
+getrlimit_DEPENDENCIES = libtests.a
+getrusage_SOURCES = getrusage.c
+getrusage_OBJECTS = getrusage.$(OBJEXT)
+getrusage_LDADD = $(LDADD)
+getrusage_DEPENDENCIES = libtests.a
+getsid_SOURCES = getsid.c
+getsid_OBJECTS = getsid.$(OBJEXT)
+getsid_LDADD = $(LDADD)
+getsid_DEPENDENCIES = libtests.a
+getsockname_SOURCES = getsockname.c
+getsockname_OBJECTS = getsockname.$(OBJEXT)
+getsockname_LDADD = $(LDADD)
+getsockname_DEPENDENCIES = libtests.a
+getuid_SOURCES = getuid.c
+getuid_OBJECTS = getuid.$(OBJEXT)
+getuid_LDADD = $(LDADD)
+getuid_DEPENDENCIES = libtests.a
+getuid32_SOURCES = getuid32.c
+getuid32_OBJECTS = getuid32.$(OBJEXT)
+getuid32_LDADD = $(LDADD)
+getuid32_DEPENDENCIES = libtests.a
+getxxid_SOURCES = getxxid.c
+getxxid_OBJECTS = getxxid.$(OBJEXT)
+getxxid_LDADD = $(LDADD)
+getxxid_DEPENDENCIES = libtests.a
+inet_cmsg_SOURCES = inet-cmsg.c
+inet_cmsg_OBJECTS = inet-cmsg.$(OBJEXT)
+inet_cmsg_LDADD = $(LDADD)
+inet_cmsg_DEPENDENCIES = libtests.a
+init_module_SOURCES = init_module.c
+init_module_OBJECTS = init_module.$(OBJEXT)
+init_module_LDADD = $(LDADD)
+init_module_DEPENDENCIES = libtests.a
+inotify_SOURCES = inotify.c
+inotify_OBJECTS = inotify.$(OBJEXT)
+inotify_LDADD = $(LDADD)
+inotify_DEPENDENCIES = libtests.a
+inotify_init1_SOURCES = inotify_init1.c
+inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
+inotify_init1_LDADD = $(LDADD)
+inotify_init1_DEPENDENCIES = libtests.a
+ioctl_SOURCES = ioctl.c
+ioctl_OBJECTS = ioctl.$(OBJEXT)
+ioctl_LDADD = $(LDADD)
+ioctl_DEPENDENCIES = libtests.a
+ioctl_block_SOURCES = ioctl_block.c
+ioctl_block_OBJECTS = ioctl_block.$(OBJEXT)
+ioctl_block_LDADD = $(LDADD)
+ioctl_block_DEPENDENCIES = libtests.a
+ioctl_dm_SOURCES = ioctl_dm.c
+ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT)
+ioctl_dm_LDADD = $(LDADD)
+ioctl_dm_DEPENDENCIES = libtests.a
+ioctl_dm_v_SOURCES = ioctl_dm-v.c
+ioctl_dm_v_OBJECTS = ioctl_dm-v.$(OBJEXT)
+ioctl_dm_v_LDADD = $(LDADD)
+ioctl_dm_v_DEPENDENCIES = libtests.a
+ioctl_evdev_SOURCES = ioctl_evdev.c
+ioctl_evdev_OBJECTS = ioctl_evdev.$(OBJEXT)
+ioctl_evdev_LDADD = $(LDADD)
+ioctl_evdev_DEPENDENCIES = libtests.a
+ioctl_evdev_v_SOURCES = ioctl_evdev-v.c
+ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
+ioctl_evdev_v_LDADD = $(LDADD)
+ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_loop_SOURCES = ioctl_loop.c
+ioctl_loop_OBJECTS = ioctl_loop.$(OBJEXT)
+ioctl_loop_LDADD = $(LDADD)
+ioctl_loop_DEPENDENCIES = libtests.a
+ioctl_loop_nv_SOURCES = ioctl_loop-nv.c
+ioctl_loop_nv_OBJECTS = ioctl_loop-nv.$(OBJEXT)
+ioctl_loop_nv_LDADD = $(LDADD)
+ioctl_loop_nv_DEPENDENCIES = libtests.a
+ioctl_loop_v_SOURCES = ioctl_loop-v.c
+ioctl_loop_v_OBJECTS = ioctl_loop-v.$(OBJEXT)
+ioctl_loop_v_LDADD = $(LDADD)
+ioctl_loop_v_DEPENDENCIES = libtests.a
+ioctl_mtd_SOURCES = ioctl_mtd.c
+ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
+ioctl_mtd_LDADD = $(LDADD)
+ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_rtc_SOURCES = ioctl_rtc.c
+ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
+ioctl_rtc_LDADD = $(LDADD)
+ioctl_rtc_DEPENDENCIES = libtests.a
+ioctl_rtc_v_SOURCES = ioctl_rtc-v.c
+ioctl_rtc_v_OBJECTS = ioctl_rtc-v.$(OBJEXT)
+ioctl_rtc_v_LDADD = $(LDADD)
+ioctl_rtc_v_DEPENDENCIES = libtests.a
+ioctl_scsi_SOURCES = ioctl_scsi.c
+ioctl_scsi_OBJECTS = ioctl_scsi.$(OBJEXT)
+ioctl_scsi_LDADD = $(LDADD)
+ioctl_scsi_DEPENDENCIES = libtests.a
+ioctl_sg_io_v3_SOURCES = ioctl_sg_io_v3.c
+ioctl_sg_io_v3_OBJECTS = ioctl_sg_io_v3.$(OBJEXT)
+ioctl_sg_io_v3_LDADD = $(LDADD)
+ioctl_sg_io_v3_DEPENDENCIES = libtests.a
+ioctl_sg_io_v4_SOURCES = ioctl_sg_io_v4.c
+ioctl_sg_io_v4_OBJECTS = ioctl_sg_io_v4.$(OBJEXT)
+ioctl_sg_io_v4_LDADD = $(LDADD)
+ioctl_sg_io_v4_DEPENDENCIES = libtests.a
+ioctl_sock_gifconf_SOURCES = ioctl_sock_gifconf.c
+ioctl_sock_gifconf_OBJECTS = ioctl_sock_gifconf.$(OBJEXT)
+ioctl_sock_gifconf_LDADD = $(LDADD)
+ioctl_sock_gifconf_DEPENDENCIES = libtests.a
+ioctl_uffdio_SOURCES = ioctl_uffdio.c
+ioctl_uffdio_OBJECTS = ioctl_uffdio.$(OBJEXT)
+ioctl_uffdio_LDADD = $(LDADD)
+ioctl_uffdio_DEPENDENCIES = libtests.a
+ioctl_v4l2_SOURCES = ioctl_v4l2.c
+ioctl_v4l2_OBJECTS = ioctl_v4l2.$(OBJEXT)
+ioctl_v4l2_LDADD = $(LDADD)
+ioctl_v4l2_DEPENDENCIES = libtests.a
+ioperm_SOURCES = ioperm.c
+ioperm_OBJECTS = ioperm.$(OBJEXT)
+ioperm_LDADD = $(LDADD)
+ioperm_DEPENDENCIES = libtests.a
+iopl_SOURCES = iopl.c
+iopl_OBJECTS = iopl.$(OBJEXT)
+iopl_LDADD = $(LDADD)
+iopl_DEPENDENCIES = libtests.a
+ioprio_SOURCES = ioprio.c
+ioprio_OBJECTS = ioprio.$(OBJEXT)
+ioprio_LDADD = $(LDADD)
+ioprio_DEPENDENCIES = libtests.a
+ip_mreq_SOURCES = ip_mreq.c
+ip_mreq_OBJECTS = ip_mreq.$(OBJEXT)
+ip_mreq_LDADD = $(LDADD)
+ip_mreq_DEPENDENCIES = libtests.a
+ipc_SOURCES = ipc.c
+ipc_OBJECTS = ipc.$(OBJEXT)
+ipc_LDADD = $(LDADD)
+ipc_DEPENDENCIES = libtests.a
+ipc_msg_SOURCES = ipc_msg.c
+ipc_msg_OBJECTS = ipc_msg.$(OBJEXT)
+ipc_msg_LDADD = $(LDADD)
+ipc_msg_DEPENDENCIES = libtests.a
+ipc_msgbuf_SOURCES = ipc_msgbuf.c
+ipc_msgbuf_OBJECTS = ipc_msgbuf.$(OBJEXT)
+ipc_msgbuf_LDADD = $(LDADD)
+ipc_msgbuf_DEPENDENCIES = libtests.a
+ipc_sem_SOURCES = ipc_sem.c
+ipc_sem_OBJECTS = ipc_sem.$(OBJEXT)
+ipc_sem_LDADD = $(LDADD)
+ipc_sem_DEPENDENCIES = libtests.a
+ipc_shm_SOURCES = ipc_shm.c
+ipc_shm_OBJECTS = ipc_shm.$(OBJEXT)
+ipc_shm_LDADD = $(LDADD)
+ipc_shm_DEPENDENCIES = libtests.a
+kcmp_SOURCES = kcmp.c
+kcmp_OBJECTS = kcmp.$(OBJEXT)
+kcmp_LDADD = $(LDADD)
+kcmp_DEPENDENCIES = libtests.a
+kexec_file_load_SOURCES = kexec_file_load.c
+kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT)
+kexec_file_load_LDADD = $(LDADD)
+kexec_file_load_DEPENDENCIES = libtests.a
+kexec_load_SOURCES = kexec_load.c
+kexec_load_OBJECTS = kexec_load.$(OBJEXT)
+kexec_load_LDADD = $(LDADD)
+kexec_load_DEPENDENCIES = libtests.a
+keyctl_SOURCES = keyctl.c
+keyctl_OBJECTS = keyctl.$(OBJEXT)
+keyctl_LDADD = $(LDADD)
+keyctl_DEPENDENCIES = libtests.a
+kill_SOURCES = kill.c
+kill_OBJECTS = kill.$(OBJEXT)
+kill_LDADD = $(LDADD)
+kill_DEPENDENCIES = libtests.a
+ksysent_SOURCES = ksysent.c
+ksysent_OBJECTS = ksysent.$(OBJEXT)
+ksysent_LDADD = $(LDADD)
+ksysent_DEPENDENCIES = libtests.a
+lchown_SOURCES = lchown.c
+lchown_OBJECTS = lchown.$(OBJEXT)
+lchown_LDADD = $(LDADD)
+lchown_DEPENDENCIES = libtests.a
+lchown32_SOURCES = lchown32.c
+lchown32_OBJECTS = lchown32.$(OBJEXT)
+lchown32_LDADD = $(LDADD)
+lchown32_DEPENDENCIES = libtests.a
+link_SOURCES = link.c
+link_OBJECTS = link.$(OBJEXT)
+link_LDADD = $(LDADD)
+link_DEPENDENCIES = libtests.a
+linkat_SOURCES = linkat.c
+linkat_OBJECTS = linkat.$(OBJEXT)
+linkat_LDADD = $(LDADD)
+linkat_DEPENDENCIES = libtests.a
+llseek_SOURCES = llseek.c
+llseek_OBJECTS = llseek.$(OBJEXT)
+llseek_LDADD = $(LDADD)
+llseek_DEPENDENCIES = libtests.a
+lookup_dcookie_SOURCES = lookup_dcookie.c
+lookup_dcookie_OBJECTS = lookup_dcookie.$(OBJEXT)
+lookup_dcookie_LDADD = $(LDADD)
+lookup_dcookie_DEPENDENCIES = libtests.a
+lseek_SOURCES = lseek.c
+lseek_OBJECTS = lseek.$(OBJEXT)
+lseek_LDADD = $(LDADD)
+lseek_DEPENDENCIES = libtests.a
+lstat_SOURCES = lstat.c
+lstat_OBJECTS = lstat.$(OBJEXT)
+lstat_LDADD = $(LDADD)
+lstat_DEPENDENCIES = libtests.a
+lstat64_SOURCES = lstat64.c
+lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
+lstat64_LDADD = $(LDADD)
+lstat64_DEPENDENCIES = libtests.a
+mbind_SOURCES = mbind.c
+mbind_OBJECTS = mbind.$(OBJEXT)
+mbind_LDADD = $(LDADD)
+mbind_DEPENDENCIES = libtests.a
+membarrier_SOURCES = membarrier.c
+membarrier_OBJECTS = membarrier.$(OBJEXT)
+membarrier_LDADD = $(LDADD)
+membarrier_DEPENDENCIES = libtests.a
+memfd_create_SOURCES = memfd_create.c
+memfd_create_OBJECTS = memfd_create.$(OBJEXT)
+memfd_create_LDADD = $(LDADD)
+memfd_create_DEPENDENCIES = libtests.a
+migrate_pages_SOURCES = migrate_pages.c
+migrate_pages_OBJECTS = migrate_pages.$(OBJEXT)
+migrate_pages_LDADD = $(LDADD)
+migrate_pages_DEPENDENCIES = libtests.a
+mincore_SOURCES = mincore.c
+mincore_OBJECTS = mincore.$(OBJEXT)
+mincore_LDADD = $(LDADD)
+mincore_DEPENDENCIES = libtests.a
+mkdir_SOURCES = mkdir.c
+mkdir_OBJECTS = mkdir.$(OBJEXT)
+mkdir_LDADD = $(LDADD)
+mkdir_DEPENDENCIES = libtests.a
+mkdirat_SOURCES = mkdirat.c
+mkdirat_OBJECTS = mkdirat.$(OBJEXT)
+mkdirat_LDADD = $(LDADD)
+mkdirat_DEPENDENCIES = libtests.a
+mknod_SOURCES = mknod.c
+mknod_OBJECTS = mknod.$(OBJEXT)
+mknod_LDADD = $(LDADD)
+mknod_DEPENDENCIES = libtests.a
+mknodat_SOURCES = mknodat.c
+mknodat_OBJECTS = mknodat.$(OBJEXT)
+mknodat_LDADD = $(LDADD)
+mknodat_DEPENDENCIES = libtests.a
+mlock_SOURCES = mlock.c
+mlock_OBJECTS = mlock.$(OBJEXT)
+mlock_LDADD = $(LDADD)
+mlock_DEPENDENCIES = libtests.a
+mlock2_SOURCES = mlock2.c
+mlock2_OBJECTS = mlock2.$(OBJEXT)
+mlock2_LDADD = $(LDADD)
+mlock2_DEPENDENCIES = libtests.a
+mlockall_SOURCES = mlockall.c
+mlockall_OBJECTS = mlockall.$(OBJEXT)
+mlockall_LDADD = $(LDADD)
+mlockall_DEPENDENCIES = libtests.a
+mmap_SOURCES = mmap.c
+mmap_OBJECTS = mmap.$(OBJEXT)
+mmap_LDADD = $(LDADD)
+mmap_DEPENDENCIES = libtests.a
+mmap64_SOURCES = mmap64.c
+mmap64_OBJECTS = mmap64-mmap64.$(OBJEXT)
+mmap64_LDADD = $(LDADD)
+mmap64_DEPENDENCIES = libtests.a
+mmsg_SOURCES = mmsg.c
+mmsg_OBJECTS = mmsg.$(OBJEXT)
+mmsg_LDADD = $(LDADD)
+mmsg_DEPENDENCIES = libtests.a
+mmsg_silent_SOURCES = mmsg-silent.c
+mmsg_silent_OBJECTS = mmsg-silent.$(OBJEXT)
+mmsg_silent_LDADD = $(LDADD)
+mmsg_silent_DEPENDENCIES = libtests.a
+mmsg_name_SOURCES = mmsg_name.c
+mmsg_name_OBJECTS = mmsg_name.$(OBJEXT)
+mmsg_name_LDADD = $(LDADD)
+mmsg_name_DEPENDENCIES = libtests.a
+mmsg_name_v_SOURCES = mmsg_name-v.c
+mmsg_name_v_OBJECTS = mmsg_name-v.$(OBJEXT)
+mmsg_name_v_LDADD = $(LDADD)
+mmsg_name_v_DEPENDENCIES = libtests.a
+mount_SOURCES = mount.c
+mount_OBJECTS = mount.$(OBJEXT)
+mount_LDADD = $(LDADD)
+mount_DEPENDENCIES = libtests.a
+move_pages_SOURCES = move_pages.c
+move_pages_OBJECTS = move_pages.$(OBJEXT)
+move_pages_LDADD = $(LDADD)
+move_pages_DEPENDENCIES = libtests.a
+mq_SOURCES = mq.c
+mq_OBJECTS = mq.$(OBJEXT)
+mq_DEPENDENCIES = $(LDADD)
+mq_sendrecv_SOURCES = mq_sendrecv.c
+mq_sendrecv_OBJECTS = mq_sendrecv.$(OBJEXT)
+mq_sendrecv_DEPENDENCIES = $(LDADD)
+mq_sendrecv_read_SOURCES = mq_sendrecv-read.c
+mq_sendrecv_read_OBJECTS = mq_sendrecv-read.$(OBJEXT)
+mq_sendrecv_read_DEPENDENCIES = $(LDADD)
+mq_sendrecv_write_SOURCES = mq_sendrecv-write.c
+mq_sendrecv_write_OBJECTS = mq_sendrecv-write.$(OBJEXT)
+mq_sendrecv_write_DEPENDENCIES = $(LDADD)
+msg_control_SOURCES = msg_control.c
+msg_control_OBJECTS = msg_control.$(OBJEXT)
+msg_control_LDADD = $(LDADD)
+msg_control_DEPENDENCIES = libtests.a
+msg_control_v_SOURCES = msg_control-v.c
+msg_control_v_OBJECTS = msg_control-v.$(OBJEXT)
+msg_control_v_LDADD = $(LDADD)
+msg_control_v_DEPENDENCIES = libtests.a
+msg_name_SOURCES = msg_name.c
+msg_name_OBJECTS = msg_name.$(OBJEXT)
+msg_name_LDADD = $(LDADD)
+msg_name_DEPENDENCIES = libtests.a
+munlockall_SOURCES = munlockall.c
+munlockall_OBJECTS = munlockall.$(OBJEXT)
+munlockall_LDADD = $(LDADD)
+munlockall_DEPENDENCIES = libtests.a
+nanosleep_SOURCES = nanosleep.c
+nanosleep_OBJECTS = nanosleep.$(OBJEXT)
+nanosleep_LDADD = $(LDADD)
+nanosleep_DEPENDENCIES = libtests.a
+net_accept_connect_SOURCES = net-accept-connect.c
+net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT)
+net_accept_connect_LDADD = $(LDADD)
+net_accept_connect_DEPENDENCIES = libtests.a
+net_icmp_filter_SOURCES = net-icmp_filter.c
+net_icmp_filter_OBJECTS = net-icmp_filter.$(OBJEXT)
+net_icmp_filter_LDADD = $(LDADD)
+net_icmp_filter_DEPENDENCIES = libtests.a
+net_sockaddr_SOURCES = net-sockaddr.c
+net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT)
+net_sockaddr_LDADD = $(LDADD)
+net_sockaddr_DEPENDENCIES = libtests.a
+net_y_unix_SOURCES = net-y-unix.c
+net_y_unix_OBJECTS = net-y-unix.$(OBJEXT)
+net_y_unix_LDADD = $(LDADD)
+net_y_unix_DEPENDENCIES = libtests.a
+net_yy_inet_SOURCES = net-yy-inet.c
+net_yy_inet_OBJECTS = net-yy-inet.$(OBJEXT)
+net_yy_inet_LDADD = $(LDADD)
+net_yy_inet_DEPENDENCIES = libtests.a
+net_yy_netlink_SOURCES = net-yy-netlink.c
+net_yy_netlink_OBJECTS = net-yy-netlink.$(OBJEXT)
+net_yy_netlink_LDADD = $(LDADD)
+net_yy_netlink_DEPENDENCIES = libtests.a
+net_yy_unix_SOURCES = net-yy-unix.c
+net_yy_unix_OBJECTS = net-yy-unix.$(OBJEXT)
+net_yy_unix_LDADD = $(LDADD)
+net_yy_unix_DEPENDENCIES = libtests.a
+netlink_inet_diag_SOURCES = netlink_inet_diag.c
+netlink_inet_diag_OBJECTS = netlink_inet_diag.$(OBJEXT)
+netlink_inet_diag_LDADD = $(LDADD)
+netlink_inet_diag_DEPENDENCIES = libtests.a
+netlink_netlink_diag_SOURCES = netlink_netlink_diag.c
+netlink_netlink_diag_OBJECTS = netlink_netlink_diag.$(OBJEXT)
+netlink_netlink_diag_LDADD = $(LDADD)
+netlink_netlink_diag_DEPENDENCIES = libtests.a
+netlink_protocol_SOURCES = netlink_protocol.c
+netlink_protocol_OBJECTS = netlink_protocol.$(OBJEXT)
+netlink_protocol_LDADD = $(LDADD)
+netlink_protocol_DEPENDENCIES = libtests.a
+netlink_unix_diag_SOURCES = netlink_unix_diag.c
+netlink_unix_diag_OBJECTS = netlink_unix_diag.$(OBJEXT)
+netlink_unix_diag_LDADD = $(LDADD)
+netlink_unix_diag_DEPENDENCIES = libtests.a
+newfstatat_SOURCES = newfstatat.c
+newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT)
+newfstatat_LDADD = $(LDADD)
+newfstatat_DEPENDENCIES = libtests.a
+nsyscalls_SOURCES = nsyscalls.c
+nsyscalls_OBJECTS = nsyscalls.$(OBJEXT)
+nsyscalls_LDADD = $(LDADD)
+nsyscalls_DEPENDENCIES = libtests.a
+old_mmap_SOURCES = old_mmap.c
+old_mmap_OBJECTS = old_mmap.$(OBJEXT)
+old_mmap_LDADD = $(LDADD)
+old_mmap_DEPENDENCIES = libtests.a
+oldfstat_SOURCES = oldfstat.c
+oldfstat_OBJECTS = oldfstat.$(OBJEXT)
+oldfstat_LDADD = $(LDADD)
+oldfstat_DEPENDENCIES = libtests.a
+oldlstat_SOURCES = oldlstat.c
+oldlstat_OBJECTS = oldlstat.$(OBJEXT)
+oldlstat_LDADD = $(LDADD)
+oldlstat_DEPENDENCIES = libtests.a
+oldselect_SOURCES = oldselect.c
+oldselect_OBJECTS = oldselect.$(OBJEXT)
+oldselect_LDADD = $(LDADD)
+oldselect_DEPENDENCIES = libtests.a
+oldstat_SOURCES = oldstat.c
+oldstat_OBJECTS = oldstat.$(OBJEXT)
+oldstat_LDADD = $(LDADD)
+oldstat_DEPENDENCIES = libtests.a
+open_SOURCES = open.c
+open_OBJECTS = open.$(OBJEXT)
+open_LDADD = $(LDADD)
+open_DEPENDENCIES = libtests.a
+openat_SOURCES = openat.c
+openat_OBJECTS = openat.$(OBJEXT)
+openat_LDADD = $(LDADD)
+openat_DEPENDENCIES = libtests.a
+pause_SOURCES = pause.c
+pause_OBJECTS = pause.$(OBJEXT)
+pause_LDADD = $(LDADD)
+pause_DEPENDENCIES = libtests.a
+pc_SOURCES = pc.c
+pc_OBJECTS = pc.$(OBJEXT)
+am__DEPENDENCIES_1 =
+pc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+perf_event_open_SOURCES = perf_event_open.c
+perf_event_open_OBJECTS = perf_event_open.$(OBJEXT)
+perf_event_open_LDADD = $(LDADD)
+perf_event_open_DEPENDENCIES = libtests.a
+perf_event_open_nonverbose_SOURCES = perf_event_open_nonverbose.c
+perf_event_open_nonverbose_OBJECTS = \
+ perf_event_open_nonverbose.$(OBJEXT)
+perf_event_open_nonverbose_LDADD = $(LDADD)
+perf_event_open_nonverbose_DEPENDENCIES = libtests.a
+perf_event_open_unabbrev_SOURCES = perf_event_open_unabbrev.c
+perf_event_open_unabbrev_OBJECTS = perf_event_open_unabbrev.$(OBJEXT)
+perf_event_open_unabbrev_LDADD = $(LDADD)
+perf_event_open_unabbrev_DEPENDENCIES = libtests.a
+personality_SOURCES = personality.c
+personality_OBJECTS = personality.$(OBJEXT)
+personality_LDADD = $(LDADD)
+personality_DEPENDENCIES = libtests.a
+pipe_SOURCES = pipe.c
+pipe_OBJECTS = pipe.$(OBJEXT)
+pipe_LDADD = $(LDADD)
+pipe_DEPENDENCIES = libtests.a
+pipe2_SOURCES = pipe2.c
+pipe2_OBJECTS = pipe2.$(OBJEXT)
+pipe2_LDADD = $(LDADD)
+pipe2_DEPENDENCIES = libtests.a
+pkey_alloc_SOURCES = pkey_alloc.c
+pkey_alloc_OBJECTS = pkey_alloc.$(OBJEXT)
+pkey_alloc_LDADD = $(LDADD)
+pkey_alloc_DEPENDENCIES = libtests.a
+pkey_free_SOURCES = pkey_free.c
+pkey_free_OBJECTS = pkey_free.$(OBJEXT)
+pkey_free_LDADD = $(LDADD)
+pkey_free_DEPENDENCIES = libtests.a
+pkey_mprotect_SOURCES = pkey_mprotect.c
+pkey_mprotect_OBJECTS = pkey_mprotect.$(OBJEXT)
+pkey_mprotect_LDADD = $(LDADD)
+pkey_mprotect_DEPENDENCIES = libtests.a
+poll_SOURCES = poll.c
+poll_OBJECTS = poll.$(OBJEXT)
+poll_LDADD = $(LDADD)
+poll_DEPENDENCIES = libtests.a
+ppoll_SOURCES = ppoll.c
+ppoll_OBJECTS = ppoll.$(OBJEXT)
+ppoll_LDADD = $(LDADD)
+ppoll_DEPENDENCIES = libtests.a
+prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
+prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
+prctl_arg2_intptr_LDADD = $(LDADD)
+prctl_arg2_intptr_DEPENDENCIES = libtests.a
+prctl_dumpable_SOURCES = prctl-dumpable.c
+prctl_dumpable_OBJECTS = prctl-dumpable.$(OBJEXT)
+prctl_dumpable_LDADD = $(LDADD)
+prctl_dumpable_DEPENDENCIES = libtests.a
+prctl_name_SOURCES = prctl-name.c
+prctl_name_OBJECTS = prctl-name.$(OBJEXT)
+prctl_name_LDADD = $(LDADD)
+prctl_name_DEPENDENCIES = libtests.a
+prctl_no_args_SOURCES = prctl-no-args.c
+prctl_no_args_OBJECTS = prctl-no-args.$(OBJEXT)
+prctl_no_args_LDADD = $(LDADD)
+prctl_no_args_DEPENDENCIES = libtests.a
+prctl_pdeathsig_SOURCES = prctl-pdeathsig.c
+prctl_pdeathsig_OBJECTS = prctl-pdeathsig.$(OBJEXT)
+prctl_pdeathsig_LDADD = $(LDADD)
+prctl_pdeathsig_DEPENDENCIES = libtests.a
+prctl_seccomp_filter_v_SOURCES = prctl-seccomp-filter-v.c
+prctl_seccomp_filter_v_OBJECTS = prctl-seccomp-filter-v.$(OBJEXT)
+prctl_seccomp_filter_v_LDADD = $(LDADD)
+prctl_seccomp_filter_v_DEPENDENCIES = libtests.a
+prctl_seccomp_strict_SOURCES = prctl-seccomp-strict.c
+prctl_seccomp_strict_OBJECTS = prctl-seccomp-strict.$(OBJEXT)
+prctl_seccomp_strict_LDADD = $(LDADD)
+prctl_seccomp_strict_DEPENDENCIES = libtests.a
+prctl_securebits_SOURCES = prctl-securebits.c
+prctl_securebits_OBJECTS = prctl-securebits.$(OBJEXT)
+prctl_securebits_LDADD = $(LDADD)
+prctl_securebits_DEPENDENCIES = libtests.a
+prctl_tid_address_SOURCES = prctl-tid_address.c
+prctl_tid_address_OBJECTS = prctl-tid_address.$(OBJEXT)
+prctl_tid_address_LDADD = $(LDADD)
+prctl_tid_address_DEPENDENCIES = libtests.a
+prctl_tsc_SOURCES = prctl-tsc.c
+prctl_tsc_OBJECTS = prctl-tsc.$(OBJEXT)
+prctl_tsc_LDADD = $(LDADD)
+prctl_tsc_DEPENDENCIES = libtests.a
+pread64_pwrite64_SOURCES = pread64-pwrite64.c
+pread64_pwrite64_OBJECTS = \
+ pread64_pwrite64-pread64-pwrite64.$(OBJEXT)
+pread64_pwrite64_LDADD = $(LDADD)
+pread64_pwrite64_DEPENDENCIES = libtests.a
+preadv_SOURCES = preadv.c
+preadv_OBJECTS = preadv-preadv.$(OBJEXT)
+preadv_LDADD = $(LDADD)
+preadv_DEPENDENCIES = libtests.a
+preadv_pwritev_SOURCES = preadv-pwritev.c
+preadv_pwritev_OBJECTS = preadv_pwritev-preadv-pwritev.$(OBJEXT)
+preadv_pwritev_LDADD = $(LDADD)
+preadv_pwritev_DEPENDENCIES = libtests.a
+preadv2_pwritev2_SOURCES = preadv2-pwritev2.c
+preadv2_pwritev2_OBJECTS = preadv2-pwritev2.$(OBJEXT)
+preadv2_pwritev2_LDADD = $(LDADD)
+preadv2_pwritev2_DEPENDENCIES = libtests.a
+print_maxfd_SOURCES = print_maxfd.c
+print_maxfd_OBJECTS = print_maxfd.$(OBJEXT)
+print_maxfd_LDADD = $(LDADD)
+print_maxfd_DEPENDENCIES = libtests.a
+printstr_SOURCES = printstr.c
+printstr_OBJECTS = printstr.$(OBJEXT)
+printstr_LDADD = $(LDADD)
+printstr_DEPENDENCIES = libtests.a
+prlimit64_SOURCES = prlimit64.c
+prlimit64_OBJECTS = prlimit64.$(OBJEXT)
+prlimit64_LDADD = $(LDADD)
+prlimit64_DEPENDENCIES = libtests.a
+process_vm_readv_SOURCES = process_vm_readv.c
+process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT)
+process_vm_readv_LDADD = $(LDADD)
+process_vm_readv_DEPENDENCIES = libtests.a
+process_vm_writev_SOURCES = process_vm_writev.c
+process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT)
+process_vm_writev_LDADD = $(LDADD)
+process_vm_writev_DEPENDENCIES = libtests.a
+pselect6_SOURCES = pselect6.c
+pselect6_OBJECTS = pselect6.$(OBJEXT)
+pselect6_LDADD = $(LDADD)
+pselect6_DEPENDENCIES = libtests.a
+ptrace_SOURCES = ptrace.c
+ptrace_OBJECTS = ptrace.$(OBJEXT)
+ptrace_LDADD = $(LDADD)
+ptrace_DEPENDENCIES = libtests.a
+pwritev_SOURCES = pwritev.c
+pwritev_OBJECTS = pwritev-pwritev.$(OBJEXT)
+pwritev_LDADD = $(LDADD)
+pwritev_DEPENDENCIES = libtests.a
+qual_fault_SOURCES = qual_fault.c
+qual_fault_OBJECTS = qual_fault.$(OBJEXT)
+qual_fault_LDADD = $(LDADD)
+qual_fault_DEPENDENCIES = libtests.a
+qual_inject_error_signal_SOURCES = qual_inject-error-signal.c
+qual_inject_error_signal_OBJECTS = qual_inject-error-signal.$(OBJEXT)
+qual_inject_error_signal_LDADD = $(LDADD)
+qual_inject_error_signal_DEPENDENCIES = libtests.a
+qual_inject_retval_SOURCES = qual_inject-retval.c
+qual_inject_retval_OBJECTS = qual_inject-retval.$(OBJEXT)
+qual_inject_retval_LDADD = $(LDADD)
+qual_inject_retval_DEPENDENCIES = libtests.a
+qual_inject_signal_SOURCES = qual_inject-signal.c
+qual_inject_signal_OBJECTS = qual_inject-signal.$(OBJEXT)
+qual_inject_signal_LDADD = $(LDADD)
+qual_inject_signal_DEPENDENCIES = libtests.a
+qual_signal_SOURCES = qual_signal.c
+qual_signal_OBJECTS = qual_signal.$(OBJEXT)
+qual_signal_LDADD = $(LDADD)
+qual_signal_DEPENDENCIES = libtests.a
+quotactl_SOURCES = quotactl.c
+quotactl_OBJECTS = quotactl.$(OBJEXT)
+quotactl_LDADD = $(LDADD)
+quotactl_DEPENDENCIES = libtests.a
+quotactl_v_SOURCES = quotactl-v.c
+quotactl_v_OBJECTS = quotactl-v.$(OBJEXT)
+quotactl_v_LDADD = $(LDADD)
+quotactl_v_DEPENDENCIES = libtests.a
+quotactl_xfs_SOURCES = quotactl-xfs.c
+quotactl_xfs_OBJECTS = quotactl-xfs.$(OBJEXT)
+quotactl_xfs_LDADD = $(LDADD)
+quotactl_xfs_DEPENDENCIES = libtests.a
+quotactl_xfs_v_SOURCES = quotactl-xfs-v.c
+quotactl_xfs_v_OBJECTS = quotactl-xfs-v.$(OBJEXT)
+quotactl_xfs_v_LDADD = $(LDADD)
+quotactl_xfs_v_DEPENDENCIES = libtests.a
+read_write_SOURCES = read-write.c
+read_write_OBJECTS = read-write.$(OBJEXT)
+read_write_LDADD = $(LDADD)
+read_write_DEPENDENCIES = libtests.a
+readahead_SOURCES = readahead.c
+readahead_OBJECTS = readahead.$(OBJEXT)
+readahead_LDADD = $(LDADD)
+readahead_DEPENDENCIES = libtests.a
+readdir_SOURCES = readdir.c
+readdir_OBJECTS = readdir.$(OBJEXT)
+readdir_LDADD = $(LDADD)
+readdir_DEPENDENCIES = libtests.a
+readlink_SOURCES = readlink.c
+readlink_OBJECTS = readlink.$(OBJEXT)
+readlink_LDADD = $(LDADD)
+readlink_DEPENDENCIES = libtests.a
+readlinkat_SOURCES = readlinkat.c
+readlinkat_OBJECTS = readlinkat.$(OBJEXT)
+readlinkat_LDADD = $(LDADD)
+readlinkat_DEPENDENCIES = libtests.a
+readv_SOURCES = readv.c
+readv_OBJECTS = readv.$(OBJEXT)
+readv_LDADD = $(LDADD)
+readv_DEPENDENCIES = libtests.a
+reboot_SOURCES = reboot.c
+reboot_OBJECTS = reboot.$(OBJEXT)
+reboot_LDADD = $(LDADD)
+reboot_DEPENDENCIES = libtests.a
+recvfrom_SOURCES = recvfrom.c
+recvfrom_OBJECTS = recvfrom.$(OBJEXT)
+recvfrom_LDADD = $(LDADD)
+recvfrom_DEPENDENCIES = libtests.a
+recvmmsg_timeout_SOURCES = recvmmsg-timeout.c
+recvmmsg_timeout_OBJECTS = recvmmsg-timeout.$(OBJEXT)
+recvmmsg_timeout_LDADD = $(LDADD)
+recvmmsg_timeout_DEPENDENCIES = libtests.a
+recvmsg_SOURCES = recvmsg.c
+recvmsg_OBJECTS = recvmsg.$(OBJEXT)
+recvmsg_LDADD = $(LDADD)
+recvmsg_DEPENDENCIES = libtests.a
+redirect_fds_SOURCES = redirect-fds.c
+redirect_fds_OBJECTS = redirect-fds.$(OBJEXT)
+redirect_fds_LDADD = $(LDADD)
+redirect_fds_DEPENDENCIES = libtests.a
+remap_file_pages_SOURCES = remap_file_pages.c
+remap_file_pages_OBJECTS = remap_file_pages.$(OBJEXT)
+remap_file_pages_LDADD = $(LDADD)
+remap_file_pages_DEPENDENCIES = libtests.a
+rename_SOURCES = rename.c
+rename_OBJECTS = rename.$(OBJEXT)
+rename_LDADD = $(LDADD)
+rename_DEPENDENCIES = libtests.a
+renameat_SOURCES = renameat.c
+renameat_OBJECTS = renameat.$(OBJEXT)
+renameat_LDADD = $(LDADD)
+renameat_DEPENDENCIES = libtests.a
+renameat2_SOURCES = renameat2.c
+renameat2_OBJECTS = renameat2.$(OBJEXT)
+renameat2_LDADD = $(LDADD)
+renameat2_DEPENDENCIES = libtests.a
+request_key_SOURCES = request_key.c
+request_key_OBJECTS = request_key.$(OBJEXT)
+request_key_LDADD = $(LDADD)
+request_key_DEPENDENCIES = libtests.a
+restart_syscall_SOURCES = restart_syscall.c
+restart_syscall_OBJECTS = restart_syscall.$(OBJEXT)
+restart_syscall_LDADD = $(LDADD)
+restart_syscall_DEPENDENCIES = libtests.a
+rmdir_SOURCES = rmdir.c
+rmdir_OBJECTS = rmdir.$(OBJEXT)
+rmdir_LDADD = $(LDADD)
+rmdir_DEPENDENCIES = libtests.a
+rt_sigpending_SOURCES = rt_sigpending.c
+rt_sigpending_OBJECTS = rt_sigpending.$(OBJEXT)
+rt_sigpending_LDADD = $(LDADD)
+rt_sigpending_DEPENDENCIES = libtests.a
+rt_sigprocmask_SOURCES = rt_sigprocmask.c
+rt_sigprocmask_OBJECTS = rt_sigprocmask.$(OBJEXT)
+rt_sigprocmask_LDADD = $(LDADD)
+rt_sigprocmask_DEPENDENCIES = libtests.a
+rt_sigqueueinfo_SOURCES = rt_sigqueueinfo.c
+rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
+rt_sigqueueinfo_LDADD = $(LDADD)
+rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigsuspend_SOURCES = rt_sigsuspend.c
+rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
+rt_sigsuspend_LDADD = $(LDADD)
+rt_sigsuspend_DEPENDENCIES = libtests.a
+rt_sigtimedwait_SOURCES = rt_sigtimedwait.c
+rt_sigtimedwait_OBJECTS = rt_sigtimedwait.$(OBJEXT)
+rt_sigtimedwait_LDADD = $(LDADD)
+rt_sigtimedwait_DEPENDENCIES = libtests.a
+rt_tgsigqueueinfo_SOURCES = rt_tgsigqueueinfo.c
+rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT)
+rt_tgsigqueueinfo_LDADD = $(LDADD)
+rt_tgsigqueueinfo_DEPENDENCIES = libtests.a
+sched_get_priority_mxx_SOURCES = sched_get_priority_mxx.c
+sched_get_priority_mxx_OBJECTS = sched_get_priority_mxx.$(OBJEXT)
+sched_get_priority_mxx_LDADD = $(LDADD)
+sched_get_priority_mxx_DEPENDENCIES = libtests.a
+sched_rr_get_interval_SOURCES = sched_rr_get_interval.c
+sched_rr_get_interval_OBJECTS = sched_rr_get_interval.$(OBJEXT)
+sched_rr_get_interval_LDADD = $(LDADD)
+sched_rr_get_interval_DEPENDENCIES = libtests.a
+sched_xetaffinity_SOURCES = sched_xetaffinity.c
+sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT)
+sched_xetaffinity_LDADD = $(LDADD)
+sched_xetaffinity_DEPENDENCIES = libtests.a
+sched_xetattr_SOURCES = sched_xetattr.c
+sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT)
+sched_xetattr_LDADD = $(LDADD)
+sched_xetattr_DEPENDENCIES = libtests.a
+sched_xetparam_SOURCES = sched_xetparam.c
+sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT)
+sched_xetparam_LDADD = $(LDADD)
+sched_xetparam_DEPENDENCIES = libtests.a
+sched_xetscheduler_SOURCES = sched_xetscheduler.c
+sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT)
+sched_xetscheduler_LDADD = $(LDADD)
+sched_xetscheduler_DEPENDENCIES = libtests.a
+sched_yield_SOURCES = sched_yield.c
+sched_yield_OBJECTS = sched_yield.$(OBJEXT)
+sched_yield_LDADD = $(LDADD)
+sched_yield_DEPENDENCIES = libtests.a
+scm_rights_SOURCES = scm_rights.c
+scm_rights_OBJECTS = scm_rights.$(OBJEXT)
+scm_rights_LDADD = $(LDADD)
+scm_rights_DEPENDENCIES = libtests.a
+seccomp_filter_SOURCES = seccomp-filter.c
+seccomp_filter_OBJECTS = seccomp-filter.$(OBJEXT)
+seccomp_filter_LDADD = $(LDADD)
+seccomp_filter_DEPENDENCIES = libtests.a
+seccomp_filter_v_SOURCES = seccomp-filter-v.c
+seccomp_filter_v_OBJECTS = seccomp-filter-v.$(OBJEXT)
+seccomp_filter_v_LDADD = $(LDADD)
+seccomp_filter_v_DEPENDENCIES = libtests.a
+seccomp_strict_SOURCES = seccomp-strict.c
+seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT)
+seccomp_strict_LDADD = $(LDADD)
+seccomp_strict_DEPENDENCIES = libtests.a
+select_SOURCES = select.c
+select_OBJECTS = select.$(OBJEXT)
+select_LDADD = $(LDADD)
+select_DEPENDENCIES = libtests.a
+semop_SOURCES = semop.c
+semop_OBJECTS = semop.$(OBJEXT)
+semop_LDADD = $(LDADD)
+semop_DEPENDENCIES = libtests.a
+sendfile_SOURCES = sendfile.c
+sendfile_OBJECTS = sendfile.$(OBJEXT)
+sendfile_LDADD = $(LDADD)
+sendfile_DEPENDENCIES = libtests.a
+sendfile64_SOURCES = sendfile64.c
+sendfile64_OBJECTS = sendfile64.$(OBJEXT)
+sendfile64_LDADD = $(LDADD)
+sendfile64_DEPENDENCIES = libtests.a
+set_mempolicy_SOURCES = set_mempolicy.c
+set_mempolicy_OBJECTS = set_mempolicy.$(OBJEXT)
+set_mempolicy_LDADD = $(LDADD)
+set_mempolicy_DEPENDENCIES = libtests.a
+set_ptracer_any_SOURCES = set_ptracer_any.c
+set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
+set_ptracer_any_LDADD = $(LDADD)
+set_ptracer_any_DEPENDENCIES = libtests.a
+setdomainname_SOURCES = setdomainname.c
+setdomainname_OBJECTS = setdomainname.$(OBJEXT)
+setdomainname_LDADD = $(LDADD)
+setdomainname_DEPENDENCIES = libtests.a
+setfsgid_SOURCES = setfsgid.c
+setfsgid_OBJECTS = setfsgid.$(OBJEXT)
+setfsgid_LDADD = $(LDADD)
+setfsgid_DEPENDENCIES = libtests.a
+setfsgid32_SOURCES = setfsgid32.c
+setfsgid32_OBJECTS = setfsgid32.$(OBJEXT)
+setfsgid32_LDADD = $(LDADD)
+setfsgid32_DEPENDENCIES = libtests.a
+setfsuid_SOURCES = setfsuid.c
+setfsuid_OBJECTS = setfsuid.$(OBJEXT)
+setfsuid_LDADD = $(LDADD)
+setfsuid_DEPENDENCIES = libtests.a
+setfsuid32_SOURCES = setfsuid32.c
+setfsuid32_OBJECTS = setfsuid32.$(OBJEXT)
+setfsuid32_LDADD = $(LDADD)
+setfsuid32_DEPENDENCIES = libtests.a
+setgid_SOURCES = setgid.c
+setgid_OBJECTS = setgid.$(OBJEXT)
+setgid_LDADD = $(LDADD)
+setgid_DEPENDENCIES = libtests.a
+setgid32_SOURCES = setgid32.c
+setgid32_OBJECTS = setgid32.$(OBJEXT)
+setgid32_LDADD = $(LDADD)
+setgid32_DEPENDENCIES = libtests.a
+setgroups_SOURCES = setgroups.c
+setgroups_OBJECTS = setgroups.$(OBJEXT)
+setgroups_LDADD = $(LDADD)
+setgroups_DEPENDENCIES = libtests.a
+setgroups32_SOURCES = setgroups32.c
+setgroups32_OBJECTS = setgroups32.$(OBJEXT)
+setgroups32_LDADD = $(LDADD)
+setgroups32_DEPENDENCIES = libtests.a
+sethostname_SOURCES = sethostname.c
+sethostname_OBJECTS = sethostname.$(OBJEXT)
+sethostname_LDADD = $(LDADD)
+sethostname_DEPENDENCIES = libtests.a
+setns_SOURCES = setns.c
+setns_OBJECTS = setns.$(OBJEXT)
+setns_LDADD = $(LDADD)
+setns_DEPENDENCIES = libtests.a
+setregid_SOURCES = setregid.c
+setregid_OBJECTS = setregid.$(OBJEXT)
+setregid_LDADD = $(LDADD)
+setregid_DEPENDENCIES = libtests.a
+setregid32_SOURCES = setregid32.c
+setregid32_OBJECTS = setregid32.$(OBJEXT)
+setregid32_LDADD = $(LDADD)
+setregid32_DEPENDENCIES = libtests.a
+setresgid_SOURCES = setresgid.c
+setresgid_OBJECTS = setresgid.$(OBJEXT)
+setresgid_LDADD = $(LDADD)
+setresgid_DEPENDENCIES = libtests.a
+setresgid32_SOURCES = setresgid32.c
+setresgid32_OBJECTS = setresgid32.$(OBJEXT)
+setresgid32_LDADD = $(LDADD)
+setresgid32_DEPENDENCIES = libtests.a
+setresuid_SOURCES = setresuid.c
+setresuid_OBJECTS = setresuid.$(OBJEXT)
+setresuid_LDADD = $(LDADD)
+setresuid_DEPENDENCIES = libtests.a
+setresuid32_SOURCES = setresuid32.c
+setresuid32_OBJECTS = setresuid32.$(OBJEXT)
+setresuid32_LDADD = $(LDADD)
+setresuid32_DEPENDENCIES = libtests.a
+setreuid_SOURCES = setreuid.c
+setreuid_OBJECTS = setreuid.$(OBJEXT)
+setreuid_LDADD = $(LDADD)
+setreuid_DEPENDENCIES = libtests.a
+setreuid32_SOURCES = setreuid32.c
+setreuid32_OBJECTS = setreuid32.$(OBJEXT)
+setreuid32_LDADD = $(LDADD)
+setreuid32_DEPENDENCIES = libtests.a
+setrlimit_SOURCES = setrlimit.c
+setrlimit_OBJECTS = setrlimit.$(OBJEXT)
+setrlimit_LDADD = $(LDADD)
+setrlimit_DEPENDENCIES = libtests.a
+setuid_SOURCES = setuid.c
+setuid_OBJECTS = setuid.$(OBJEXT)
+setuid_LDADD = $(LDADD)
+setuid_DEPENDENCIES = libtests.a
+setuid32_SOURCES = setuid32.c
+setuid32_OBJECTS = setuid32.$(OBJEXT)
+setuid32_LDADD = $(LDADD)
+setuid32_DEPENDENCIES = libtests.a
+shmxt_SOURCES = shmxt.c
+shmxt_OBJECTS = shmxt.$(OBJEXT)
+shmxt_LDADD = $(LDADD)
+shmxt_DEPENDENCIES = libtests.a
+shutdown_SOURCES = shutdown.c
+shutdown_OBJECTS = shutdown.$(OBJEXT)
+shutdown_LDADD = $(LDADD)
+shutdown_DEPENDENCIES = libtests.a
+sigaction_SOURCES = sigaction.c
+sigaction_OBJECTS = sigaction.$(OBJEXT)
+sigaction_LDADD = $(LDADD)
+sigaction_DEPENDENCIES = libtests.a
+sigaltstack_SOURCES = sigaltstack.c
+sigaltstack_OBJECTS = sigaltstack.$(OBJEXT)
+sigaltstack_LDADD = $(LDADD)
+sigaltstack_DEPENDENCIES = libtests.a
+siginfo_SOURCES = siginfo.c
+siginfo_OBJECTS = siginfo.$(OBJEXT)
+siginfo_LDADD = $(LDADD)
+siginfo_DEPENDENCIES = libtests.a
+signal_receive_SOURCES = signal_receive.c
+signal_receive_OBJECTS = signal_receive.$(OBJEXT)
+signal_receive_LDADD = $(LDADD)
+signal_receive_DEPENDENCIES = libtests.a
+signalfd4_SOURCES = signalfd4.c
+signalfd4_OBJECTS = signalfd4.$(OBJEXT)
+signalfd4_LDADD = $(LDADD)
+signalfd4_DEPENDENCIES = libtests.a
+sigreturn_SOURCES = sigreturn.c
+sigreturn_OBJECTS = sigreturn.$(OBJEXT)
+sigreturn_LDADD = $(LDADD)
+sigreturn_DEPENDENCIES = libtests.a
+sleep_SOURCES = sleep.c
+sleep_OBJECTS = sleep.$(OBJEXT)
+sleep_LDADD = $(LDADD)
+sleep_DEPENDENCIES = libtests.a
+socketcall_SOURCES = socketcall.c
+socketcall_OBJECTS = socketcall.$(OBJEXT)
+socketcall_LDADD = $(LDADD)
+socketcall_DEPENDENCIES = libtests.a
+splice_SOURCES = splice.c
+splice_OBJECTS = splice.$(OBJEXT)
+splice_LDADD = $(LDADD)
+splice_DEPENDENCIES = libtests.a
+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)
+stack_fcall_DEPENDENCIES = libtests.a
+stat_SOURCES = stat.c
+stat_OBJECTS = stat.$(OBJEXT)
+stat_LDADD = $(LDADD)
+stat_DEPENDENCIES = libtests.a
+stat64_SOURCES = stat64.c
+stat64_OBJECTS = stat64-stat64.$(OBJEXT)
+stat64_LDADD = $(LDADD)
+stat64_DEPENDENCIES = libtests.a
+statfs_SOURCES = statfs.c
+statfs_OBJECTS = statfs-statfs.$(OBJEXT)
+statfs_LDADD = $(LDADD)
+statfs_DEPENDENCIES = libtests.a
+statfs64_SOURCES = statfs64.c
+statfs64_OBJECTS = statfs64.$(OBJEXT)
+statfs64_LDADD = $(LDADD)
+statfs64_DEPENDENCIES = libtests.a
+swap_SOURCES = swap.c
+swap_OBJECTS = swap.$(OBJEXT)
+swap_LDADD = $(LDADD)
+swap_DEPENDENCIES = libtests.a
+symlink_SOURCES = symlink.c
+symlink_OBJECTS = symlink.$(OBJEXT)
+symlink_LDADD = $(LDADD)
+symlink_DEPENDENCIES = libtests.a
+symlinkat_SOURCES = symlinkat.c
+symlinkat_OBJECTS = symlinkat.$(OBJEXT)
+symlinkat_LDADD = $(LDADD)
+symlinkat_DEPENDENCIES = libtests.a
+sync_SOURCES = sync.c
+sync_OBJECTS = sync.$(OBJEXT)
+sync_LDADD = $(LDADD)
+sync_DEPENDENCIES = libtests.a
+sync_file_range_SOURCES = sync_file_range.c
+sync_file_range_OBJECTS = sync_file_range.$(OBJEXT)
+sync_file_range_LDADD = $(LDADD)
+sync_file_range_DEPENDENCIES = libtests.a
+sync_file_range2_SOURCES = sync_file_range2.c
+sync_file_range2_OBJECTS = sync_file_range2.$(OBJEXT)
+sync_file_range2_LDADD = $(LDADD)
+sync_file_range2_DEPENDENCIES = libtests.a
+sysinfo_SOURCES = sysinfo.c
+sysinfo_OBJECTS = sysinfo.$(OBJEXT)
+sysinfo_LDADD = $(LDADD)
+sysinfo_DEPENDENCIES = libtests.a
+syslog_SOURCES = syslog.c
+syslog_OBJECTS = syslog.$(OBJEXT)
+syslog_LDADD = $(LDADD)
+syslog_DEPENDENCIES = libtests.a
+tee_SOURCES = tee.c
+tee_OBJECTS = tee.$(OBJEXT)
+tee_LDADD = $(LDADD)
+tee_DEPENDENCIES = libtests.a
+threads_execve_SOURCES = threads-execve.c
+threads_execve_OBJECTS = threads-execve.$(OBJEXT)
+threads_execve_DEPENDENCIES = $(LDADD)
+time_SOURCES = time.c
+time_OBJECTS = time.$(OBJEXT)
+time_LDADD = $(LDADD)
+time_DEPENDENCIES = libtests.a
+timer_create_SOURCES = timer_create.c
+timer_create_OBJECTS = timer_create.$(OBJEXT)
+timer_create_LDADD = $(LDADD)
+timer_create_DEPENDENCIES = libtests.a
+timer_xettime_SOURCES = timer_xettime.c
+timer_xettime_OBJECTS = timer_xettime.$(OBJEXT)
+timer_xettime_LDADD = $(LDADD)
+timer_xettime_DEPENDENCIES = libtests.a
+timerfd_xettime_SOURCES = timerfd_xettime.c
+timerfd_xettime_OBJECTS = timerfd_xettime.$(OBJEXT)
+timerfd_xettime_LDADD = $(LDADD)
+timerfd_xettime_DEPENDENCIES = libtests.a
+times_SOURCES = times.c
+times_OBJECTS = times.$(OBJEXT)
+times_DEPENDENCIES = $(LDADD)
+times_fail_SOURCES = times-fail.c
+times_fail_OBJECTS = times-fail.$(OBJEXT)
+times_fail_LDADD = $(LDADD)
+times_fail_DEPENDENCIES = libtests.a
+truncate_SOURCES = truncate.c
+truncate_OBJECTS = truncate.$(OBJEXT)
+truncate_LDADD = $(LDADD)
+truncate_DEPENDENCIES = libtests.a
+truncate64_SOURCES = truncate64.c
+truncate64_OBJECTS = truncate64-truncate64.$(OBJEXT)
+truncate64_LDADD = $(LDADD)
+truncate64_DEPENDENCIES = libtests.a
+ugetrlimit_SOURCES = ugetrlimit.c
+ugetrlimit_OBJECTS = ugetrlimit.$(OBJEXT)
+ugetrlimit_LDADD = $(LDADD)
+ugetrlimit_DEPENDENCIES = libtests.a
+uio_SOURCES = uio.c
+uio_OBJECTS = uio-uio.$(OBJEXT)
+uio_LDADD = $(LDADD)
+uio_DEPENDENCIES = libtests.a
+umask_SOURCES = umask.c
+umask_OBJECTS = umask.$(OBJEXT)
+umask_LDADD = $(LDADD)
+umask_DEPENDENCIES = libtests.a
+umount_SOURCES = umount.c
+umount_OBJECTS = umount.$(OBJEXT)
+umount_LDADD = $(LDADD)
+umount_DEPENDENCIES = libtests.a
+umount2_SOURCES = umount2.c
+umount2_OBJECTS = umount2.$(OBJEXT)
+umount2_LDADD = $(LDADD)
+umount2_DEPENDENCIES = libtests.a
+umoven_illptr_SOURCES = umoven-illptr.c
+umoven_illptr_OBJECTS = umoven-illptr.$(OBJEXT)
+umoven_illptr_LDADD = $(LDADD)
+umoven_illptr_DEPENDENCIES = libtests.a
+umovestr_SOURCES = umovestr.c
+umovestr_OBJECTS = umovestr.$(OBJEXT)
+umovestr_LDADD = $(LDADD)
+umovestr_DEPENDENCIES = libtests.a
+umovestr_illptr_SOURCES = umovestr-illptr.c
+umovestr_illptr_OBJECTS = umovestr-illptr.$(OBJEXT)
+umovestr_illptr_LDADD = $(LDADD)
+umovestr_illptr_DEPENDENCIES = libtests.a
+umovestr2_SOURCES = umovestr2.c
+umovestr2_OBJECTS = umovestr2.$(OBJEXT)
+umovestr2_LDADD = $(LDADD)
+umovestr2_DEPENDENCIES = libtests.a
+umovestr3_SOURCES = umovestr3.c
+umovestr3_OBJECTS = umovestr3.$(OBJEXT)
+umovestr3_LDADD = $(LDADD)
+umovestr3_DEPENDENCIES = libtests.a
+uname_SOURCES = uname.c
+uname_OBJECTS = uname.$(OBJEXT)
+uname_LDADD = $(LDADD)
+uname_DEPENDENCIES = libtests.a
+unix_pair_send_recv_SOURCES = unix-pair-send-recv.c
+unix_pair_send_recv_OBJECTS = unix-pair-send-recv.$(OBJEXT)
+unix_pair_send_recv_LDADD = $(LDADD)
+unix_pair_send_recv_DEPENDENCIES = libtests.a
+unix_pair_sendto_recvfrom_SOURCES = unix-pair-sendto-recvfrom.c
+unix_pair_sendto_recvfrom_OBJECTS = \
+ unix-pair-sendto-recvfrom.$(OBJEXT)
+unix_pair_sendto_recvfrom_LDADD = $(LDADD)
+unix_pair_sendto_recvfrom_DEPENDENCIES = libtests.a
+unlink_SOURCES = unlink.c
+unlink_OBJECTS = unlink.$(OBJEXT)
+unlink_LDADD = $(LDADD)
+unlink_DEPENDENCIES = libtests.a
+unlinkat_SOURCES = unlinkat.c
+unlinkat_OBJECTS = unlinkat.$(OBJEXT)
+unlinkat_LDADD = $(LDADD)
+unlinkat_DEPENDENCIES = libtests.a
+unshare_SOURCES = unshare.c
+unshare_OBJECTS = unshare.$(OBJEXT)
+unshare_LDADD = $(LDADD)
+unshare_DEPENDENCIES = libtests.a
+userfaultfd_SOURCES = userfaultfd.c
+userfaultfd_OBJECTS = userfaultfd.$(OBJEXT)
+userfaultfd_LDADD = $(LDADD)
+userfaultfd_DEPENDENCIES = libtests.a
+ustat_SOURCES = ustat.c
+ustat_OBJECTS = ustat.$(OBJEXT)
+ustat_LDADD = $(LDADD)
+ustat_DEPENDENCIES = libtests.a
+utime_SOURCES = utime.c
+utime_OBJECTS = utime.$(OBJEXT)
+utime_LDADD = $(LDADD)
+utime_DEPENDENCIES = libtests.a
+utimensat_SOURCES = utimensat.c
+utimensat_OBJECTS = utimensat.$(OBJEXT)
+utimensat_LDADD = $(LDADD)
+utimensat_DEPENDENCIES = libtests.a
+utimes_SOURCES = utimes.c
+utimes_OBJECTS = utimes.$(OBJEXT)
+utimes_LDADD = $(LDADD)
+utimes_DEPENDENCIES = libtests.a
+vfork_f_SOURCES = vfork-f.c
+vfork_f_OBJECTS = vfork-f.$(OBJEXT)
+vfork_f_LDADD = $(LDADD)
+vfork_f_DEPENDENCIES = libtests.a
+vhangup_SOURCES = vhangup.c
+vhangup_OBJECTS = vhangup.$(OBJEXT)
+vhangup_LDADD = $(LDADD)
+vhangup_DEPENDENCIES = libtests.a
+vmsplice_SOURCES = vmsplice.c
+vmsplice_OBJECTS = vmsplice.$(OBJEXT)
+vmsplice_LDADD = $(LDADD)
+vmsplice_DEPENDENCIES = libtests.a
+wait4_SOURCES = wait4.c
+wait4_OBJECTS = wait4.$(OBJEXT)
+wait4_LDADD = $(LDADD)
+wait4_DEPENDENCIES = libtests.a
+wait4_v_SOURCES = wait4-v.c
+wait4_v_OBJECTS = wait4-v.$(OBJEXT)
+wait4_v_LDADD = $(LDADD)
+wait4_v_DEPENDENCIES = libtests.a
+waitid_SOURCES = waitid.c
+waitid_OBJECTS = waitid.$(OBJEXT)
+waitid_LDADD = $(LDADD)
+waitid_DEPENDENCIES = libtests.a
+waitid_v_SOURCES = waitid-v.c
+waitid_v_OBJECTS = waitid-v.$(OBJEXT)
+waitid_v_LDADD = $(LDADD)
+waitid_v_DEPENDENCIES = libtests.a
+waitpid_SOURCES = waitpid.c
+waitpid_OBJECTS = waitpid.$(OBJEXT)
+waitpid_LDADD = $(LDADD)
+waitpid_DEPENDENCIES = libtests.a
+xattr_SOURCES = xattr.c
+xattr_OBJECTS = xattr.$(OBJEXT)
+xattr_LDADD = $(LDADD)
+xattr_DEPENDENCIES = libtests.a
+xattr_strings_SOURCES = xattr-strings.c
+xattr_strings_OBJECTS = xattr-strings.$(OBJEXT)
+xattr_strings_LDADD = $(LDADD)
+xattr_strings_DEPENDENCIES = libtests.a
+xet_robust_list_SOURCES = xet_robust_list.c
+xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
+xet_robust_list_LDADD = $(LDADD)
+xet_robust_list_DEPENDENCIES = libtests.a
+xetitimer_SOURCES = xetitimer.c
+xetitimer_OBJECTS = xetitimer.$(OBJEXT)
+xetitimer_LDADD = $(LDADD)
+xetitimer_DEPENDENCIES = libtests.a
+xetpgid_SOURCES = xetpgid.c
+xetpgid_OBJECTS = xetpgid.$(OBJEXT)
+xetpgid_LDADD = $(LDADD)
+xetpgid_DEPENDENCIES = libtests.a
+xetpriority_SOURCES = xetpriority.c
+xetpriority_OBJECTS = xetpriority.$(OBJEXT)
+xetpriority_LDADD = $(LDADD)
+xetpriority_DEPENDENCIES = libtests.a
+xettimeofday_SOURCES = xettimeofday.c
+xettimeofday_OBJECTS = xettimeofday.$(OBJEXT)
+xettimeofday_LDADD = $(LDADD)
+xettimeofday_DEPENDENCIES = libtests.a
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES =
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+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_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
+ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
+ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+ attach-p-cmd-p.c bpf.c brk.c btrfs.c caps.c caps-abbrev.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c copy_file_range.c count-f.c \
+ creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
+ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
+ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
+ fallocate.c fanotify_init.c fanotify_mark.c fchdir.c fchmod.c \
+ fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c fcntl64.c \
+ fdatasync.c file_handle.c file_ioctl.c filter-unavailable.c \
+ finit_module.c flock.c fork-f.c fstat.c fstat64.c fstatat64.c \
+ fstatfs.c fstatfs64.c fsync.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
+ getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+ getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
+ getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
+ getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
+ init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+ ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-v.c \
+ ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
+ ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c \
+ ioctl_sg_io_v4.c ioctl_sock_gifconf.c ioctl_uffdio.c \
+ ioctl_v4l2.c ioperm.c iopl.c ioprio.c ip_mreq.c ipc.c \
+ ipc_msg.c ipc_msgbuf.c ipc_sem.c ipc_shm.c kcmp.c \
+ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
+ lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
+ lseek.c lstat.c lstat64.c mbind.c membarrier.c memfd_create.c \
+ migrate_pages.c mincore.c mkdir.c mkdirat.c mknod.c mknodat.c \
+ mlock.c mlock2.c mlockall.c mmap.c mmap64.c mmsg.c \
+ mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c move_pages.c \
+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+ msg_control.c msg_control-v.c msg_name.c munlockall.c \
+ nanosleep.c net-accept-connect.c net-icmp_filter.c \
+ net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+ net-yy-unix.c netlink_inet_diag.c netlink_netlink_diag.c \
+ netlink_protocol.c netlink_unix_diag.c newfstatat.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+ pkey_mprotect.c poll.c ppoll.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
+ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
+ preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
+ process_vm_readv.c process_vm_writev.c pselect6.c ptrace.c \
+ pwritev.c qual_fault.c qual_inject-error-signal.c \
+ qual_inject-retval.c qual_inject-signal.c qual_signal.c \
+ quotactl.c quotactl-v.c quotactl-xfs.c quotactl-xfs-v.c \
+ read-write.c readahead.c readdir.c readlink.c readlinkat.c \
+ readv.c reboot.c recvfrom.c recvmmsg-timeout.c recvmsg.c \
+ redirect-fds.c remap_file_pages.c rename.c renameat.c \
+ renameat2.c request_key.c restart_syscall.c rmdir.c \
+ rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+ rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
+ sched_get_priority_mxx.c sched_rr_get_interval.c \
+ sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
+ sched_xetscheduler.c sched_yield.c scm_rights.c \
+ seccomp-filter.c seccomp-filter-v.c seccomp-strict.c select.c \
+ semop.c sendfile.c sendfile64.c set_mempolicy.c \
+ set_ptracer_any.c setdomainname.c setfsgid.c setfsgid32.c \
+ setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \
+ setgroups32.c sethostname.c setns.c setregid.c setregid32.c \
+ setresgid.c setresgid32.c setresuid.c setresuid32.c setreuid.c \
+ setreuid32.c setrlimit.c setuid.c setuid32.c shmxt.c \
+ shutdown.c sigaction.c sigaltstack.c siginfo.c \
+ signal_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
+ splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
+ statfs64.c swap.c symlink.c symlinkat.c sync.c \
+ sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
+ threads-execve.c time.c timer_create.c timer_xettime.c \
+ timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
+ ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
+ umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
+ unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \
+ unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \
+ utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \
+ waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \
+ xet_robust_list.c xetitimer.c xetpgid.c xetpriority.c \
+ xettimeofday.c
+DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
+ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
+ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+ attach-p-cmd-p.c bpf.c brk.c btrfs.c caps.c caps-abbrev.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c copy_file_range.c count-f.c \
+ creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
+ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
+ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
+ fallocate.c fanotify_init.c fanotify_mark.c fchdir.c fchmod.c \
+ fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c fcntl64.c \
+ fdatasync.c file_handle.c file_ioctl.c filter-unavailable.c \
+ finit_module.c flock.c fork-f.c fstat.c fstat64.c fstatat64.c \
+ fstatfs.c fstatfs64.c fsync.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
+ getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+ getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
+ getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
+ getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
+ init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+ ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-v.c \
+ ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
+ ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c \
+ ioctl_sg_io_v4.c ioctl_sock_gifconf.c ioctl_uffdio.c \
+ ioctl_v4l2.c ioperm.c iopl.c ioprio.c ip_mreq.c ipc.c \
+ ipc_msg.c ipc_msgbuf.c ipc_sem.c ipc_shm.c kcmp.c \
+ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
+ lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
+ lseek.c lstat.c lstat64.c mbind.c membarrier.c memfd_create.c \
+ migrate_pages.c mincore.c mkdir.c mkdirat.c mknod.c mknodat.c \
+ mlock.c mlock2.c mlockall.c mmap.c mmap64.c mmsg.c \
+ mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c move_pages.c \
+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+ msg_control.c msg_control-v.c msg_name.c munlockall.c \
+ nanosleep.c net-accept-connect.c net-icmp_filter.c \
+ net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+ net-yy-unix.c netlink_inet_diag.c netlink_netlink_diag.c \
+ netlink_protocol.c netlink_unix_diag.c newfstatat.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+ pkey_mprotect.c poll.c ppoll.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
+ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
+ preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
+ process_vm_readv.c process_vm_writev.c pselect6.c ptrace.c \
+ pwritev.c qual_fault.c qual_inject-error-signal.c \
+ qual_inject-retval.c qual_inject-signal.c qual_signal.c \
+ quotactl.c quotactl-v.c quotactl-xfs.c quotactl-xfs-v.c \
+ read-write.c readahead.c readdir.c readlink.c readlinkat.c \
+ readv.c reboot.c recvfrom.c recvmmsg-timeout.c recvmsg.c \
+ redirect-fds.c remap_file_pages.c rename.c renameat.c \
+ renameat2.c request_key.c restart_syscall.c rmdir.c \
+ rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+ rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
+ sched_get_priority_mxx.c sched_rr_get_interval.c \
+ sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
+ sched_xetscheduler.c sched_yield.c scm_rights.c \
+ seccomp-filter.c seccomp-filter-v.c seccomp-strict.c select.c \
+ semop.c sendfile.c sendfile64.c set_mempolicy.c \
+ set_ptracer_any.c setdomainname.c setfsgid.c setfsgid32.c \
+ setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \
+ setgroups32.c sethostname.c setns.c setregid.c setregid32.c \
+ setresgid.c setresgid32.c setresuid.c setresuid32.c setreuid.c \
+ setreuid32.c setrlimit.c setuid.c setuid32.c shmxt.c \
+ shutdown.c sigaction.c sigaltstack.c siginfo.c \
+ signal_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
+ splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
+ statfs64.c swap.c symlink.c symlinkat.c sync.c \
+ sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
+ threads-execve.c time.c timer_create.c timer_xettime.c \
+ timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
+ ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
+ umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
+ unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \
+ unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \
+ utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \
+ waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \
+ xet_robust_list.c xetitimer.c xetpgid.c xetpriority.c \
+ xettimeofday.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__extra_recursive_targets = check-valgrind-recursive
+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_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='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[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
+#am__EXEEXT_1 = strace-k.test
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:.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 = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing aclocal-1.14
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+AUTOCONF = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoconf
+AUTOHEADER = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoheader
+AUTOMAKE = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing automake-1.14
+AWK = gawk
+BUILD_EXEEXT =
+BUILD_OBJEXT =
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CC_FOR_BUILD = gcc
+CFLAGS = -g -O2
+CFLAGS_FOR_BUILD = -g -O2
+CODE_COVERAGE_CFLAGS =
+CODE_COVERAGE_CPPFLAGS =
+CODE_COVERAGE_CXXFLAGS =
+CODE_COVERAGE_ENABLED = no
+CODE_COVERAGE_LDFLAGS =
+CPP = gcc -E
+CPPFLAGS =
+CPPFLAGS_FOR_BUILD =
+CPP_FOR_BUILD = gcc -E
+CYGPATH_W = echo
+DEB_CHANGELOGTIME = Wed, 15 Feb 2017 11:38:25 -0800
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = /bin/grep -E
+ENABLE_VALGRIND_drd = no
+ENABLE_VALGRIND_helgrind = no
+ENABLE_VALGRIND_memcheck = yes
+ENABLE_VALGRIND_sgcheck =
+EXEEXT =
+GCOV =
+GENHTML =
+GREP = /bin/grep
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LCOV =
+LDFLAGS =
+LDFLAGS_FOR_BUILD =
+LIBOBJS =
+LIBS =
+LTLIBOBJS =
+MAINT = #
+MAKEINFO = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo
+MIPS_ABI =
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+PACKAGE = strace
+PACKAGE_BUGREPORT = [email protected]
+PACKAGE_NAME = strace
+PACKAGE_STRING = strace 4.16
+PACKAGE_TARNAME = strace
+PACKAGE_URL = https://strace.io
+PACKAGE_VERSION = 4.16
+PATH_SEPARATOR = :
+PERL = /usr/bin/perl
+RANLIB = ranlib
+RPM_CHANGELOGTIME = Wed Feb 15 2017
+SED = /bin/sed
+SET_MAKE =
+SHELL = /bin/sh
+STRIP =
+VALGRIND = valgrind
+VALGRIND_ENABLED = yes
+VERSION = 4.16
+WARN_CFLAGS = -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
+WARN_CFLAGS_FOR_BUILD = -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
+abs_builddir = /usr/local/google/home/enh/Downloads/strace-4.16/tests
+abs_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16/tests
+abs_top_builddir = /usr/local/google/home/enh/Downloads/strace-4.16
+abs_top_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16
+ac_ct_CC = gcc
+ac_ct_CC_FOR_BUILD = gcc
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+arch = x86_64
+arch_m32 = i386
+arch_mx32 = x32
+bindir = ${exec_prefix}/bin
+build = x86_64-pc-linux-gnu
+build_alias =
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = pc
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+dl_LIBS = -ldl
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-pc-linux-gnu
+host_alias =
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libunwind_CPPFLAGS =
+libunwind_LDFLAGS =
+libunwind_LIBS =
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+valgrind_enabled_tools = memcheck
+valgrind_tools = memcheck helgrind drd sgcheck
+OS = linux
+ARCH = x86_64
+MPERS_NAME =
+ARCH_MFLAGS =
+AM_CFLAGS = $(WARN_CFLAGS)
+AM_CPPFLAGS = $(ARCH_MFLAGS) \
+ -I$(builddir) \
+ -I$(top_builddir)/$(OS)/$(ARCH) \
+ -I$(top_srcdir)/$(OS)/$(ARCH) \
+ -I$(top_builddir)/$(OS) \
+ -I$(top_srcdir)/$(OS) \
+ -I$(top_builddir) \
+ -I$(top_srcdir)
+
+AM_LDFLAGS = $(ARCH_MFLAGS)
+libtests_a_SOURCES = \
+ errno2name.c \
+ error_msg.c \
+ fill_memory.c \
+ get_page_size.c \
+ hexdump_strdup.c \
+ hexquote_strndup.c \
+ inode_of_sockfd.c \
+ libmmsg.c \
+ libsocketcall.c \
+ overflowuid.c \
+ pipe_maxfd.c \
+ print_quoted_string.c \
+ printflags.c \
+ printxval.c \
+ signal2name.c \
+ sprintrc.c \
+ tail_alloc.c \
+ tests.h \
+ tprintf.c \
+ # end of libtests_a_SOURCES
+
+libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+check_LIBRARIES = libtests.a
+LDADD = libtests.a
+attach_f_p_LDADD = -lrt -lpthread $(LDADD)
+clock_xettime_LDADD = -lrt $(LDADD)
+count_f_LDADD = -lpthread $(LDADD)
+filter_unavailable_LDADD = -lpthread $(LDADD)
+fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+mq_LDADD = -lrt $(LDADD)
+mq_sendrecv_LDADD = -lrt $(LDADD)
+mq_sendrecv_read_LDADD = -lrt $(LDADD)
+mq_sendrecv_write_LDADD = -lrt $(LDADD)
+newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+pc_LDADD = $(dl_LIBS) $(LDADD)
+pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+preadv_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+threads_execve_LDADD = -lrt -lpthread $(LDADD)
+times_LDADD = -lrt $(LDADD)
+truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+stack_fcall_SOURCES = stack-fcall.c \
+ stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
+LIBUNWIND_TESTS =
+#LIBUNWIND_TESTS = strace-k.test
+DECODER_TESTS = \
+ _newselect.test \
+ accept.test \
+ accept4.test \
+ access.test \
+ acct.test \
+ add_key.test \
+ adjtimex.test \
+ aio.test \
+ alarm.test \
+ bpf.test \
+ brk.test \
+ btrfs-v.test \
+ btrfs-vw.test \
+ btrfs-w.test \
+ btrfs.test \
+ caps-abbrev.test \
+ caps.test \
+ chmod.test \
+ chown.test \
+ chown32.test \
+ chroot.test \
+ clock_adjtime.test \
+ clock_nanosleep.test \
+ clock_xettime.test \
+ copy_file_range.test \
+ creat.test \
+ delete_module.test \
+ dup.test \
+ dup2.test \
+ dup3.test \
+ epoll_create.test \
+ epoll_create1.test \
+ epoll_ctl.test \
+ epoll_pwait.test \
+ epoll_wait.test \
+ erestartsys.test \
+ eventfd.test \
+ execve-v.test \
+ execve.test \
+ execveat-v.test \
+ execveat.test \
+ faccessat.test \
+ fadvise64.test \
+ fadvise64_64.test \
+ fallocate.test \
+ fanotify_init.test \
+ fanotify_mark.test \
+ fchdir.test \
+ fchmod.test \
+ fchmodat.test \
+ fchown.test \
+ fchown32.test \
+ fchownat.test \
+ fcntl.test \
+ fcntl64.test \
+ fdatasync.test \
+ file_handle.test \
+ file_ioctl.test \
+ finit_module.test \
+ flock.test \
+ fstat.test \
+ fstat64.test \
+ fstatat64.test \
+ fstatfs.test \
+ fstatfs64.test \
+ fsync.test \
+ ftruncate.test \
+ ftruncate64.test \
+ futex.test \
+ futimesat.test \
+ get_mempolicy.test \
+ getcpu.test \
+ getcwd.test \
+ getdents.test \
+ getdents64.test \
+ getegid.test \
+ getegid32.test \
+ geteuid.test \
+ geteuid32.test \
+ getgid.test \
+ getgid32.test \
+ getgroups.test \
+ getgroups32.test \
+ getpeername.test \
+ getpgrp.test \
+ getrandom.test \
+ getresgid.test \
+ getresgid32.test \
+ getresuid.test \
+ getresuid32.test \
+ getrlimit.test \
+ getrusage.test \
+ getsid.test \
+ getsockname.test \
+ getuid.test \
+ getuid32.test \
+ getxxid.test \
+ inet-cmsg.test \
+ init_module.test \
+ inotify.test \
+ inotify_init1.test \
+ ioctl.test \
+ ioctl_block.test \
+ ioctl_dm-v.test \
+ ioctl_dm.test \
+ ioctl_evdev-v.test \
+ ioctl_evdev.test \
+ ioctl_loop-nv.test \
+ ioctl_loop-v.test \
+ ioctl_loop.test \
+ ioctl_mtd.test \
+ ioctl_rtc-v.test \
+ ioctl_rtc.test \
+ ioctl_scsi.test \
+ ioctl_sg_io_v3.test \
+ ioctl_sg_io_v4.test \
+ ioctl_sock_gifconf.test \
+ ioctl_uffdio.test \
+ ioctl_v4l2.test \
+ ioperm.test \
+ iopl.test \
+ ioprio.test \
+ ip_mreq.test \
+ ipc.test \
+ ipc_msg.test \
+ ipc_msgbuf.test \
+ ipc_sem.test \
+ ipc_shm.test \
+ kcmp.test \
+ kexec_file_load.test \
+ kexec_load.test \
+ keyctl.test \
+ kill.test \
+ lchown.test \
+ lchown32.test \
+ link.test \
+ linkat.test \
+ llseek.test \
+ lookup_dcookie.test \
+ lseek.test \
+ lstat.test \
+ lstat64.test \
+ mbind.test \
+ membarrier.test \
+ memfd_create.test \
+ migrate_pages.test \
+ mincore.test \
+ mkdir.test \
+ mkdirat.test \
+ mknod.test \
+ mknodat.test \
+ mlock.test \
+ mlock2.test \
+ mlockall.test \
+ mmap.test \
+ mmap64.test \
+ mmsg-silent.test \
+ mmsg.test \
+ mmsg_name-v.test \
+ mmsg_name.test \
+ mount.test \
+ move_pages.test \
+ mq.test \
+ mq_sendrecv-read.test \
+ mq_sendrecv-write.test \
+ mq_sendrecv.test \
+ msg_control-v.test \
+ msg_control.test \
+ msg_name.test \
+ munlockall.test \
+ nanosleep.test \
+ net-icmp_filter.test \
+ net-sockaddr.test \
+ net-y-unix.test \
+ net-yy-inet.test \
+ net-yy-netlink.test \
+ net-yy-unix.test \
+ net.test \
+ netlink_protocol.test \
+ newfstatat.test \
+ nsyscalls.test \
+ old_mmap.test \
+ oldfstat.test \
+ oldlstat.test \
+ oldselect.test \
+ oldstat.test \
+ open.test \
+ openat.test \
+ pause.test \
+ perf_event_open.test \
+ perf_event_open_nonverbose.test \
+ perf_event_open_unabbrev.test \
+ personality.test \
+ pipe.test \
+ pipe2.test \
+ pkey_alloc.test \
+ pkey_free.test \
+ pkey_mprotect.test \
+ poll.test \
+ ppoll.test \
+ prctl-arg2-intptr.test \
+ prctl-dumpable.test \
+ prctl-name.test \
+ prctl-no-args.test \
+ prctl-pdeathsig.test \
+ prctl-seccomp-filter-v.test \
+ prctl-seccomp-strict.test \
+ prctl-securebits.test \
+ prctl-tid_address.test \
+ prctl-tsc.test \
+ pread64-pwrite64.test \
+ preadv-pwritev.test \
+ preadv.test \
+ preadv2-pwritev2.test \
+ printstr.test \
+ prlimit64.test \
+ process_vm_readv.test \
+ process_vm_writev.test \
+ pselect6.test \
+ ptrace.test \
+ pwritev.test \
+ qual_fault-exit_group.test \
+ quotactl-v.test \
+ quotactl-xfs-v.test \
+ quotactl-xfs.test \
+ quotactl.test \
+ read-write.test \
+ readahead.test \
+ readdir.test \
+ readlink.test \
+ readlinkat.test \
+ readv.test \
+ reboot.test \
+ recvfrom.test \
+ recvmmsg-timeout.test \
+ recvmsg.test \
+ remap_file_pages.test \
+ rename.test \
+ renameat.test \
+ renameat2.test \
+ request_key.test \
+ rmdir.test \
+ rt_sigpending.test \
+ rt_sigprocmask.test \
+ rt_sigqueueinfo.test \
+ rt_sigsuspend.test \
+ rt_sigtimedwait.test \
+ rt_tgsigqueueinfo.test \
+ sched_get_priority_mxx.test \
+ sched_rr_get_interval.test \
+ sched_xetaffinity.test \
+ sched_xetattr.test \
+ sched_xetparam.test \
+ sched_xetscheduler.test \
+ sched_yield.test \
+ scm_rights-fd.test \
+ seccomp-filter-v.test \
+ seccomp-filter.test \
+ seccomp-strict.test \
+ select.test \
+ semop.test \
+ sendfile.test \
+ sendfile64.test \
+ set_mempolicy.test \
+ setdomainname.test \
+ setfsgid.test \
+ setfsgid32.test \
+ setfsuid.test \
+ setfsuid32.test \
+ setgid.test \
+ setgid32.test \
+ setgroups.test \
+ setgroups32.test \
+ sethostname.test \
+ setns.test \
+ setregid.test \
+ setregid32.test \
+ setresgid.test \
+ setresgid32.test \
+ setresuid.test \
+ setresuid32.test \
+ setreuid.test \
+ setreuid32.test \
+ setrlimit.test \
+ setuid.test \
+ setuid32.test \
+ shmxt.test \
+ shutdown.test \
+ sigaction.test \
+ sigaltstack.test \
+ siginfo.test \
+ signalfd4.test \
+ sigreturn.test \
+ socketcall.test \
+ splice.test \
+ stat.test \
+ stat64.test \
+ statfs.test \
+ statfs64.test \
+ sun_path.test \
+ swap.test \
+ symlink.test \
+ symlinkat.test \
+ sync.test \
+ sync_file_range.test \
+ sync_file_range2.test \
+ sysinfo.test \
+ syslog.test \
+ tee.test \
+ time.test \
+ timer_create.test \
+ timer_xettime.test \
+ timerfd_xettime.test \
+ times-fail.test \
+ times.test \
+ truncate.test \
+ truncate64.test \
+ ugetrlimit.test \
+ uio.test \
+ umask.test \
+ umount.test \
+ umount2.test \
+ umoven-illptr.test \
+ umovestr-illptr.test \
+ umovestr.test \
+ umovestr2.test \
+ umovestr3.test \
+ uname.test \
+ unix-pair-send-recv.test \
+ unix-pair-sendto-recvfrom.test \
+ unlink.test \
+ unlinkat.test \
+ unshare.test \
+ userfaultfd.test \
+ ustat.test \
+ utime.test \
+ utimensat.test \
+ utimes.test \
+ vhangup.test \
+ vmsplice.test \
+ wait4-v.test \
+ wait4.test \
+ waitid-v.test \
+ waitid.test \
+ waitpid.test \
+ xattr-strings.test \
+ xattr.test \
+ xet_robust_list.test \
+ xetitimer.test \
+ xetpgid.test \
+ xetpriority.test \
+ xettimeofday.test \
+ # end of DECODER_TESTS
+
+MISC_TESTS = \
+ attach-f-p.test \
+ attach-p-cmd.test \
+ bexecve.test \
+ count-f.test \
+ count.test \
+ detach-running.test \
+ detach-sleeping.test \
+ detach-stopped.test \
+ filter-unavailable.test \
+ fork-f.test \
+ ksysent.test \
+ opipe.test \
+ options-syntax.test \
+ pc.test \
+ qual_fault-syntax.test \
+ qual_fault.test \
+ qual_inject-error-signal.test \
+ qual_inject-retval.test \
+ qual_inject-signal.test \
+ qual_inject-syntax.test \
+ qual_signal.test \
+ qual_syscall.test \
+ redirect-fds.test \
+ redirect.test \
+ restart_syscall.test \
+ signal_receive.test \
+ strace-C.test \
+ strace-E.test \
+ strace-S.test \
+ strace-T.test \
+ strace-V.test \
+ strace-ff.test \
+ strace-r.test \
+ strace-t.test \
+ strace-tt.test \
+ strace-ttt.test \
+ threads-execve.test \
+ vfork-f.test \
+ # end of MISC_TESTS
+
+XFAIL_TESTS_ =
+XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
+XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
+XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+TEST_LOG_COMPILER = env
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+VALGRIND_FLAGS = --quiet
+VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
+EXTRA_DIST = init.sh run.sh match.awk \
+ caps-abbrev.awk \
+ caps.awk \
+ count-f.expected \
+ eventfd.expected \
+ fadvise.h \
+ filter-unavailable.expected \
+ fstatat.c \
+ fstatx.c \
+ getresugid.c \
+ init_delete_module.h \
+ ipc.sh \
+ ipc_msgbuf.expected \
+ ksysent.sed \
+ lstatx.c \
+ net.expected \
+ oldselect.expected \
+ pipe.expected \
+ ppoll-v.expected \
+ ppoll.expected \
+ process_vm_readv_writev.c \
+ qual_fault-exit_group.expected \
+ qual_inject-error-signal.expected \
+ qual_inject-signal.expected \
+ quotactl.h \
+ scno_tampering.sh \
+ setfsugid.c \
+ setresugid.c \
+ setreugid.c \
+ setugid.c \
+ sigaction.awk \
+ sigaltstack.expected \
+ sockname.c \
+ statfs.expected \
+ statx.sh \
+ strace-C.expected \
+ strace-E.expected \
+ strace-T.expected \
+ strace-ff.expected \
+ strace-k.test \
+ strace-r.expected \
+ strace.supp \
+ struct_flock.c \
+ sun_path.expected \
+ uio.expected \
+ umode_t.c \
+ umovestr.expected \
+ unix-pair-send-recv.expected \
+ unix-pair-sendto-recvfrom.expected \
+ xchownx.c \
+ xgetrlimit.c \
+ xselect.c \
+ xstatfs.c \
+ xstatfs64.c \
+ xstatfsx.c \
+ xstatx.c \
+ $(TESTS)
+
+objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
+CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
+
+digits = [[:digit:]][[:digit:]]*
+al_nums = [[:alnum:]_][[:alnum:]_]*
+SCNO_SED = /TRACE_INDIRECT_SUBCALL/d; s/^\[[[:space:]]*\($(digits)\)\][[:space:]]*=[[:space:]]*{[^,]*,[^,]*,[^,]*,[[:space:]]*"\($(al_nums)\)"[[:space:]]*},.*/\#ifndef __NR_\2\n\# define __NR_\2 (SYSCALL_BIT | \1)\n\#endif/p
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(srcdir)/../scno.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkLIBRARIES:
+ -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
+
+libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES) $(EXTRA_libtests_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtests.a
+ $(AM_V_AR)$(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtests.a
+
+clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+_newselect$(EXEEXT): $(_newselect_OBJECTS) $(_newselect_DEPENDENCIES) $(EXTRA__newselect_DEPENDENCIES)
+ @rm -f _newselect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(_newselect_OBJECTS) $(_newselect_LDADD) $(LIBS)
+
+accept$(EXEEXT): $(accept_OBJECTS) $(accept_DEPENDENCIES) $(EXTRA_accept_DEPENDENCIES)
+ @rm -f accept$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(accept_OBJECTS) $(accept_LDADD) $(LIBS)
+
+accept4$(EXEEXT): $(accept4_OBJECTS) $(accept4_DEPENDENCIES) $(EXTRA_accept4_DEPENDENCIES)
+ @rm -f accept4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(accept4_OBJECTS) $(accept4_LDADD) $(LIBS)
+
+access$(EXEEXT): $(access_OBJECTS) $(access_DEPENDENCIES) $(EXTRA_access_DEPENDENCIES)
+ @rm -f access$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS)
+
+acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES)
+ @rm -f acct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS)
+
+add_key$(EXEEXT): $(add_key_OBJECTS) $(add_key_DEPENDENCIES) $(EXTRA_add_key_DEPENDENCIES)
+ @rm -f add_key$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(add_key_OBJECTS) $(add_key_LDADD) $(LIBS)
+
+adjtimex$(EXEEXT): $(adjtimex_OBJECTS) $(adjtimex_DEPENDENCIES) $(EXTRA_adjtimex_DEPENDENCIES)
+ @rm -f adjtimex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(adjtimex_OBJECTS) $(adjtimex_LDADD) $(LIBS)
+
+aio$(EXEEXT): $(aio_OBJECTS) $(aio_DEPENDENCIES) $(EXTRA_aio_DEPENDENCIES)
+ @rm -f aio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(aio_OBJECTS) $(aio_LDADD) $(LIBS)
+
+alarm$(EXEEXT): $(alarm_OBJECTS) $(alarm_DEPENDENCIES) $(EXTRA_alarm_DEPENDENCIES)
+ @rm -f alarm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(alarm_OBJECTS) $(alarm_LDADD) $(LIBS)
+
+answer$(EXEEXT): $(answer_OBJECTS) $(answer_DEPENDENCIES) $(EXTRA_answer_DEPENDENCIES)
+ @rm -f answer$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(answer_OBJECTS) $(answer_LDADD) $(LIBS)
+
+attach-f-p$(EXEEXT): $(attach_f_p_OBJECTS) $(attach_f_p_DEPENDENCIES) $(EXTRA_attach_f_p_DEPENDENCIES)
+ @rm -f attach-f-p$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_f_p_OBJECTS) $(attach_f_p_LDADD) $(LIBS)
+
+attach-f-p-cmd$(EXEEXT): $(attach_f_p_cmd_OBJECTS) $(attach_f_p_cmd_DEPENDENCIES) $(EXTRA_attach_f_p_cmd_DEPENDENCIES)
+ @rm -f attach-f-p-cmd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_f_p_cmd_OBJECTS) $(attach_f_p_cmd_LDADD) $(LIBS)
+
+attach-p-cmd-cmd$(EXEEXT): $(attach_p_cmd_cmd_OBJECTS) $(attach_p_cmd_cmd_DEPENDENCIES) $(EXTRA_attach_p_cmd_cmd_DEPENDENCIES)
+ @rm -f attach-p-cmd-cmd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_p_cmd_cmd_OBJECTS) $(attach_p_cmd_cmd_LDADD) $(LIBS)
+
+attach-p-cmd-p$(EXEEXT): $(attach_p_cmd_p_OBJECTS) $(attach_p_cmd_p_DEPENDENCIES) $(EXTRA_attach_p_cmd_p_DEPENDENCIES)
+ @rm -f attach-p-cmd-p$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_p_cmd_p_OBJECTS) $(attach_p_cmd_p_LDADD) $(LIBS)
+
+bpf$(EXEEXT): $(bpf_OBJECTS) $(bpf_DEPENDENCIES) $(EXTRA_bpf_DEPENDENCIES)
+ @rm -f bpf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bpf_OBJECTS) $(bpf_LDADD) $(LIBS)
+
+brk$(EXEEXT): $(brk_OBJECTS) $(brk_DEPENDENCIES) $(EXTRA_brk_DEPENDENCIES)
+ @rm -f brk$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(brk_OBJECTS) $(brk_LDADD) $(LIBS)
+
+btrfs$(EXEEXT): $(btrfs_OBJECTS) $(btrfs_DEPENDENCIES) $(EXTRA_btrfs_DEPENDENCIES)
+ @rm -f btrfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(btrfs_OBJECTS) $(btrfs_LDADD) $(LIBS)
+
+caps$(EXEEXT): $(caps_OBJECTS) $(caps_DEPENDENCIES) $(EXTRA_caps_DEPENDENCIES)
+ @rm -f caps$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(caps_OBJECTS) $(caps_LDADD) $(LIBS)
+
+caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA_caps_abbrev_DEPENDENCIES)
+ @rm -f caps-abbrev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS)
+
+chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES)
+ @rm -f chmod$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
+
+chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES)
+ @rm -f chown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS)
+
+chown32$(EXEEXT): $(chown32_OBJECTS) $(chown32_DEPENDENCIES) $(EXTRA_chown32_DEPENDENCIES)
+ @rm -f chown32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chown32_OBJECTS) $(chown32_LDADD) $(LIBS)
+
+chroot$(EXEEXT): $(chroot_OBJECTS) $(chroot_DEPENDENCIES) $(EXTRA_chroot_DEPENDENCIES)
+ @rm -f chroot$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chroot_OBJECTS) $(chroot_LDADD) $(LIBS)
+
+clock_adjtime$(EXEEXT): $(clock_adjtime_OBJECTS) $(clock_adjtime_DEPENDENCIES) $(EXTRA_clock_adjtime_DEPENDENCIES)
+ @rm -f clock_adjtime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(clock_adjtime_OBJECTS) $(clock_adjtime_LDADD) $(LIBS)
+
+clock_nanosleep$(EXEEXT): $(clock_nanosleep_OBJECTS) $(clock_nanosleep_DEPENDENCIES) $(EXTRA_clock_nanosleep_DEPENDENCIES)
+ @rm -f clock_nanosleep$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(clock_nanosleep_OBJECTS) $(clock_nanosleep_LDADD) $(LIBS)
+
+clock_xettime$(EXEEXT): $(clock_xettime_OBJECTS) $(clock_xettime_DEPENDENCIES) $(EXTRA_clock_xettime_DEPENDENCIES)
+ @rm -f clock_xettime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(clock_xettime_OBJECTS) $(clock_xettime_LDADD) $(LIBS)
+
+copy_file_range$(EXEEXT): $(copy_file_range_OBJECTS) $(copy_file_range_DEPENDENCIES) $(EXTRA_copy_file_range_DEPENDENCIES)
+ @rm -f copy_file_range$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(copy_file_range_OBJECTS) $(copy_file_range_LDADD) $(LIBS)
+
+count-f$(EXEEXT): $(count_f_OBJECTS) $(count_f_DEPENDENCIES) $(EXTRA_count_f_DEPENDENCIES)
+ @rm -f count-f$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(count_f_OBJECTS) $(count_f_LDADD) $(LIBS)
+
+creat$(EXEEXT): $(creat_OBJECTS) $(creat_DEPENDENCIES) $(EXTRA_creat_DEPENDENCIES)
+ @rm -f creat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(creat_OBJECTS) $(creat_LDADD) $(LIBS)
+
+delete_module$(EXEEXT): $(delete_module_OBJECTS) $(delete_module_DEPENDENCIES) $(EXTRA_delete_module_DEPENDENCIES)
+ @rm -f delete_module$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(delete_module_OBJECTS) $(delete_module_LDADD) $(LIBS)
+
+dup$(EXEEXT): $(dup_OBJECTS) $(dup_DEPENDENCIES) $(EXTRA_dup_DEPENDENCIES)
+ @rm -f dup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dup_OBJECTS) $(dup_LDADD) $(LIBS)
+
+dup2$(EXEEXT): $(dup2_OBJECTS) $(dup2_DEPENDENCIES) $(EXTRA_dup2_DEPENDENCIES)
+ @rm -f dup2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dup2_OBJECTS) $(dup2_LDADD) $(LIBS)
+
+dup3$(EXEEXT): $(dup3_OBJECTS) $(dup3_DEPENDENCIES) $(EXTRA_dup3_DEPENDENCIES)
+ @rm -f dup3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dup3_OBJECTS) $(dup3_LDADD) $(LIBS)
+
+epoll_create$(EXEEXT): $(epoll_create_OBJECTS) $(epoll_create_DEPENDENCIES) $(EXTRA_epoll_create_DEPENDENCIES)
+ @rm -f epoll_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_create_OBJECTS) $(epoll_create_LDADD) $(LIBS)
+
+epoll_create1$(EXEEXT): $(epoll_create1_OBJECTS) $(epoll_create1_DEPENDENCIES) $(EXTRA_epoll_create1_DEPENDENCIES)
+ @rm -f epoll_create1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_create1_OBJECTS) $(epoll_create1_LDADD) $(LIBS)
+
+epoll_ctl$(EXEEXT): $(epoll_ctl_OBJECTS) $(epoll_ctl_DEPENDENCIES) $(EXTRA_epoll_ctl_DEPENDENCIES)
+ @rm -f epoll_ctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_ctl_OBJECTS) $(epoll_ctl_LDADD) $(LIBS)
+
+epoll_pwait$(EXEEXT): $(epoll_pwait_OBJECTS) $(epoll_pwait_DEPENDENCIES) $(EXTRA_epoll_pwait_DEPENDENCIES)
+ @rm -f epoll_pwait$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_pwait_OBJECTS) $(epoll_pwait_LDADD) $(LIBS)
+
+epoll_wait$(EXEEXT): $(epoll_wait_OBJECTS) $(epoll_wait_DEPENDENCIES) $(EXTRA_epoll_wait_DEPENDENCIES)
+ @rm -f epoll_wait$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_wait_OBJECTS) $(epoll_wait_LDADD) $(LIBS)
+
+erestartsys$(EXEEXT): $(erestartsys_OBJECTS) $(erestartsys_DEPENDENCIES) $(EXTRA_erestartsys_DEPENDENCIES)
+ @rm -f erestartsys$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(erestartsys_OBJECTS) $(erestartsys_LDADD) $(LIBS)
+
+eventfd$(EXEEXT): $(eventfd_OBJECTS) $(eventfd_DEPENDENCIES) $(EXTRA_eventfd_DEPENDENCIES)
+ @rm -f eventfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(eventfd_OBJECTS) $(eventfd_LDADD) $(LIBS)
+
+execve$(EXEEXT): $(execve_OBJECTS) $(execve_DEPENDENCIES) $(EXTRA_execve_DEPENDENCIES)
+ @rm -f execve$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS)
+
+execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES)
+ @rm -f execve-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS)
+
+execveat$(EXEEXT): $(execveat_OBJECTS) $(execveat_DEPENDENCIES) $(EXTRA_execveat_DEPENDENCIES)
+ @rm -f execveat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS)
+
+execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES)
+ @rm -f execveat-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS)
+
+faccessat$(EXEEXT): $(faccessat_OBJECTS) $(faccessat_DEPENDENCIES) $(EXTRA_faccessat_DEPENDENCIES)
+ @rm -f faccessat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
+
+fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES)
+ @rm -f fadvise64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
+
+fadvise64_64$(EXEEXT): $(fadvise64_64_OBJECTS) $(fadvise64_64_DEPENDENCIES) $(EXTRA_fadvise64_64_DEPENDENCIES)
+ @rm -f fadvise64_64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fadvise64_64_OBJECTS) $(fadvise64_64_LDADD) $(LIBS)
+
+fallocate$(EXEEXT): $(fallocate_OBJECTS) $(fallocate_DEPENDENCIES) $(EXTRA_fallocate_DEPENDENCIES)
+ @rm -f fallocate$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fallocate_OBJECTS) $(fallocate_LDADD) $(LIBS)
+
+fanotify_init$(EXEEXT): $(fanotify_init_OBJECTS) $(fanotify_init_DEPENDENCIES) $(EXTRA_fanotify_init_DEPENDENCIES)
+ @rm -f fanotify_init$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_init_OBJECTS) $(fanotify_init_LDADD) $(LIBS)
+
+fanotify_mark$(EXEEXT): $(fanotify_mark_OBJECTS) $(fanotify_mark_DEPENDENCIES) $(EXTRA_fanotify_mark_DEPENDENCIES)
+ @rm -f fanotify_mark$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS)
+
+fchdir$(EXEEXT): $(fchdir_OBJECTS) $(fchdir_DEPENDENCIES) $(EXTRA_fchdir_DEPENDENCIES)
+ @rm -f fchdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchdir_OBJECTS) $(fchdir_LDADD) $(LIBS)
+
+fchmod$(EXEEXT): $(fchmod_OBJECTS) $(fchmod_DEPENDENCIES) $(EXTRA_fchmod_DEPENDENCIES)
+ @rm -f fchmod$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
+
+fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES)
+ @rm -f fchmodat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
+
+fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES)
+ @rm -f fchown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS)
+
+fchown32$(EXEEXT): $(fchown32_OBJECTS) $(fchown32_DEPENDENCIES) $(EXTRA_fchown32_DEPENDENCIES)
+ @rm -f fchown32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchown32_OBJECTS) $(fchown32_LDADD) $(LIBS)
+
+fchownat$(EXEEXT): $(fchownat_OBJECTS) $(fchownat_DEPENDENCIES) $(EXTRA_fchownat_DEPENDENCIES)
+ @rm -f fchownat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS)
+
+fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES)
+ @rm -f fcntl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
+
+fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES)
+ @rm -f fcntl64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS)
+
+fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES)
+ @rm -f fdatasync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS)
+
+file_handle$(EXEEXT): $(file_handle_OBJECTS) $(file_handle_DEPENDENCIES) $(EXTRA_file_handle_DEPENDENCIES)
+ @rm -f file_handle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS)
+
+file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES)
+ @rm -f file_ioctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS)
+
+filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_DEPENDENCIES) $(EXTRA_filter_unavailable_DEPENDENCIES)
+ @rm -f filter-unavailable$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS)
+
+finit_module$(EXEEXT): $(finit_module_OBJECTS) $(finit_module_DEPENDENCIES) $(EXTRA_finit_module_DEPENDENCIES)
+ @rm -f finit_module$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(finit_module_OBJECTS) $(finit_module_LDADD) $(LIBS)
+
+flock$(EXEEXT): $(flock_OBJECTS) $(flock_DEPENDENCIES) $(EXTRA_flock_DEPENDENCIES)
+ @rm -f flock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS)
+
+fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES)
+ @rm -f fork-f$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS)
+
+fstat$(EXEEXT): $(fstat_OBJECTS) $(fstat_DEPENDENCIES) $(EXTRA_fstat_DEPENDENCIES)
+ @rm -f fstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstat_OBJECTS) $(fstat_LDADD) $(LIBS)
+
+fstat64$(EXEEXT): $(fstat64_OBJECTS) $(fstat64_DEPENDENCIES) $(EXTRA_fstat64_DEPENDENCIES)
+ @rm -f fstat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstat64_OBJECTS) $(fstat64_LDADD) $(LIBS)
+
+fstatat64$(EXEEXT): $(fstatat64_OBJECTS) $(fstatat64_DEPENDENCIES) $(EXTRA_fstatat64_DEPENDENCIES)
+ @rm -f fstatat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstatat64_OBJECTS) $(fstatat64_LDADD) $(LIBS)
+
+fstatfs$(EXEEXT): $(fstatfs_OBJECTS) $(fstatfs_DEPENDENCIES) $(EXTRA_fstatfs_DEPENDENCIES)
+ @rm -f fstatfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstatfs_OBJECTS) $(fstatfs_LDADD) $(LIBS)
+
+fstatfs64$(EXEEXT): $(fstatfs64_OBJECTS) $(fstatfs64_DEPENDENCIES) $(EXTRA_fstatfs64_DEPENDENCIES)
+ @rm -f fstatfs64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstatfs64_OBJECTS) $(fstatfs64_LDADD) $(LIBS)
+
+fsync$(EXEEXT): $(fsync_OBJECTS) $(fsync_DEPENDENCIES) $(EXTRA_fsync_DEPENDENCIES)
+ @rm -f fsync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fsync_OBJECTS) $(fsync_LDADD) $(LIBS)
+
+ftruncate$(EXEEXT): $(ftruncate_OBJECTS) $(ftruncate_DEPENDENCIES) $(EXTRA_ftruncate_DEPENDENCIES)
+ @rm -f ftruncate$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ftruncate_OBJECTS) $(ftruncate_LDADD) $(LIBS)
+
+ftruncate64$(EXEEXT): $(ftruncate64_OBJECTS) $(ftruncate64_DEPENDENCIES) $(EXTRA_ftruncate64_DEPENDENCIES)
+ @rm -f ftruncate64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ftruncate64_OBJECTS) $(ftruncate64_LDADD) $(LIBS)
+
+futex$(EXEEXT): $(futex_OBJECTS) $(futex_DEPENDENCIES) $(EXTRA_futex_DEPENDENCIES)
+ @rm -f futex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(futex_OBJECTS) $(futex_LDADD) $(LIBS)
+
+futimesat$(EXEEXT): $(futimesat_OBJECTS) $(futimesat_DEPENDENCIES) $(EXTRA_futimesat_DEPENDENCIES)
+ @rm -f futimesat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(futimesat_OBJECTS) $(futimesat_LDADD) $(LIBS)
+
+get_mempolicy$(EXEEXT): $(get_mempolicy_OBJECTS) $(get_mempolicy_DEPENDENCIES) $(EXTRA_get_mempolicy_DEPENDENCIES)
+ @rm -f get_mempolicy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(get_mempolicy_OBJECTS) $(get_mempolicy_LDADD) $(LIBS)
+
+getcpu$(EXEEXT): $(getcpu_OBJECTS) $(getcpu_DEPENDENCIES) $(EXTRA_getcpu_DEPENDENCIES)
+ @rm -f getcpu$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getcpu_OBJECTS) $(getcpu_LDADD) $(LIBS)
+
+getcwd$(EXEEXT): $(getcwd_OBJECTS) $(getcwd_DEPENDENCIES) $(EXTRA_getcwd_DEPENDENCIES)
+ @rm -f getcwd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getcwd_OBJECTS) $(getcwd_LDADD) $(LIBS)
+
+getdents$(EXEEXT): $(getdents_OBJECTS) $(getdents_DEPENDENCIES) $(EXTRA_getdents_DEPENDENCIES)
+ @rm -f getdents$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getdents_OBJECTS) $(getdents_LDADD) $(LIBS)
+
+getdents64$(EXEEXT): $(getdents64_OBJECTS) $(getdents64_DEPENDENCIES) $(EXTRA_getdents64_DEPENDENCIES)
+ @rm -f getdents64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getdents64_OBJECTS) $(getdents64_LDADD) $(LIBS)
+
+getegid$(EXEEXT): $(getegid_OBJECTS) $(getegid_DEPENDENCIES) $(EXTRA_getegid_DEPENDENCIES)
+ @rm -f getegid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getegid_OBJECTS) $(getegid_LDADD) $(LIBS)
+
+getegid32$(EXEEXT): $(getegid32_OBJECTS) $(getegid32_DEPENDENCIES) $(EXTRA_getegid32_DEPENDENCIES)
+ @rm -f getegid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getegid32_OBJECTS) $(getegid32_LDADD) $(LIBS)
+
+geteuid$(EXEEXT): $(geteuid_OBJECTS) $(geteuid_DEPENDENCIES) $(EXTRA_geteuid_DEPENDENCIES)
+ @rm -f geteuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(geteuid_OBJECTS) $(geteuid_LDADD) $(LIBS)
+
+geteuid32$(EXEEXT): $(geteuid32_OBJECTS) $(geteuid32_DEPENDENCIES) $(EXTRA_geteuid32_DEPENDENCIES)
+ @rm -f geteuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(geteuid32_OBJECTS) $(geteuid32_LDADD) $(LIBS)
+
+getgid$(EXEEXT): $(getgid_OBJECTS) $(getgid_DEPENDENCIES) $(EXTRA_getgid_DEPENDENCIES)
+ @rm -f getgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgid_OBJECTS) $(getgid_LDADD) $(LIBS)
+
+getgid32$(EXEEXT): $(getgid32_OBJECTS) $(getgid32_DEPENDENCIES) $(EXTRA_getgid32_DEPENDENCIES)
+ @rm -f getgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgid32_OBJECTS) $(getgid32_LDADD) $(LIBS)
+
+getgroups$(EXEEXT): $(getgroups_OBJECTS) $(getgroups_DEPENDENCIES) $(EXTRA_getgroups_DEPENDENCIES)
+ @rm -f getgroups$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgroups_OBJECTS) $(getgroups_LDADD) $(LIBS)
+
+getgroups32$(EXEEXT): $(getgroups32_OBJECTS) $(getgroups32_DEPENDENCIES) $(EXTRA_getgroups32_DEPENDENCIES)
+ @rm -f getgroups32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgroups32_OBJECTS) $(getgroups32_LDADD) $(LIBS)
+
+getpeername$(EXEEXT): $(getpeername_OBJECTS) $(getpeername_DEPENDENCIES) $(EXTRA_getpeername_DEPENDENCIES)
+ @rm -f getpeername$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getpeername_OBJECTS) $(getpeername_LDADD) $(LIBS)
+
+getpgrp$(EXEEXT): $(getpgrp_OBJECTS) $(getpgrp_DEPENDENCIES) $(EXTRA_getpgrp_DEPENDENCIES)
+ @rm -f getpgrp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
+
+getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES)
+ @rm -f getrandom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
+
+getresgid$(EXEEXT): $(getresgid_OBJECTS) $(getresgid_DEPENDENCIES) $(EXTRA_getresgid_DEPENDENCIES)
+ @rm -f getresgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresgid_OBJECTS) $(getresgid_LDADD) $(LIBS)
+
+getresgid32$(EXEEXT): $(getresgid32_OBJECTS) $(getresgid32_DEPENDENCIES) $(EXTRA_getresgid32_DEPENDENCIES)
+ @rm -f getresgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresgid32_OBJECTS) $(getresgid32_LDADD) $(LIBS)
+
+getresuid$(EXEEXT): $(getresuid_OBJECTS) $(getresuid_DEPENDENCIES) $(EXTRA_getresuid_DEPENDENCIES)
+ @rm -f getresuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresuid_OBJECTS) $(getresuid_LDADD) $(LIBS)
+
+getresuid32$(EXEEXT): $(getresuid32_OBJECTS) $(getresuid32_DEPENDENCIES) $(EXTRA_getresuid32_DEPENDENCIES)
+ @rm -f getresuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresuid32_OBJECTS) $(getresuid32_LDADD) $(LIBS)
+
+getrlimit$(EXEEXT): $(getrlimit_OBJECTS) $(getrlimit_DEPENDENCIES) $(EXTRA_getrlimit_DEPENDENCIES)
+ @rm -f getrlimit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getrlimit_OBJECTS) $(getrlimit_LDADD) $(LIBS)
+
+getrusage$(EXEEXT): $(getrusage_OBJECTS) $(getrusage_DEPENDENCIES) $(EXTRA_getrusage_DEPENDENCIES)
+ @rm -f getrusage$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getrusage_OBJECTS) $(getrusage_LDADD) $(LIBS)
+
+getsid$(EXEEXT): $(getsid_OBJECTS) $(getsid_DEPENDENCIES) $(EXTRA_getsid_DEPENDENCIES)
+ @rm -f getsid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS)
+
+getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES)
+ @rm -f getsockname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
+
+getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES)
+ @rm -f getuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
+
+getuid32$(EXEEXT): $(getuid32_OBJECTS) $(getuid32_DEPENDENCIES) $(EXTRA_getuid32_DEPENDENCIES)
+ @rm -f getuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getuid32_OBJECTS) $(getuid32_LDADD) $(LIBS)
+
+getxxid$(EXEEXT): $(getxxid_OBJECTS) $(getxxid_DEPENDENCIES) $(EXTRA_getxxid_DEPENDENCIES)
+ @rm -f getxxid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getxxid_OBJECTS) $(getxxid_LDADD) $(LIBS)
+
+inet-cmsg$(EXEEXT): $(inet_cmsg_OBJECTS) $(inet_cmsg_DEPENDENCIES) $(EXTRA_inet_cmsg_DEPENDENCIES)
+ @rm -f inet-cmsg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inet_cmsg_OBJECTS) $(inet_cmsg_LDADD) $(LIBS)
+
+init_module$(EXEEXT): $(init_module_OBJECTS) $(init_module_DEPENDENCIES) $(EXTRA_init_module_DEPENDENCIES)
+ @rm -f init_module$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(init_module_OBJECTS) $(init_module_LDADD) $(LIBS)
+
+inotify$(EXEEXT): $(inotify_OBJECTS) $(inotify_DEPENDENCIES) $(EXTRA_inotify_DEPENDENCIES)
+ @rm -f inotify$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inotify_OBJECTS) $(inotify_LDADD) $(LIBS)
+
+inotify_init1$(EXEEXT): $(inotify_init1_OBJECTS) $(inotify_init1_DEPENDENCIES) $(EXTRA_inotify_init1_DEPENDENCIES)
+ @rm -f inotify_init1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
+
+ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES)
+ @rm -f ioctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
+
+ioctl_block$(EXEEXT): $(ioctl_block_OBJECTS) $(ioctl_block_DEPENDENCIES) $(EXTRA_ioctl_block_DEPENDENCIES)
+ @rm -f ioctl_block$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS)
+
+ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES)
+ @rm -f ioctl_dm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS)
+
+ioctl_dm-v$(EXEEXT): $(ioctl_dm_v_OBJECTS) $(ioctl_dm_v_DEPENDENCIES) $(EXTRA_ioctl_dm_v_DEPENDENCIES)
+ @rm -f ioctl_dm-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_dm_v_OBJECTS) $(ioctl_dm_v_LDADD) $(LIBS)
+
+ioctl_evdev$(EXEEXT): $(ioctl_evdev_OBJECTS) $(ioctl_evdev_DEPENDENCIES) $(EXTRA_ioctl_evdev_DEPENDENCIES)
+ @rm -f ioctl_evdev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_evdev_OBJECTS) $(ioctl_evdev_LDADD) $(LIBS)
+
+ioctl_evdev-v$(EXEEXT): $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_DEPENDENCIES)
+ @rm -f ioctl_evdev-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
+
+ioctl_loop$(EXEEXT): $(ioctl_loop_OBJECTS) $(ioctl_loop_DEPENDENCIES) $(EXTRA_ioctl_loop_DEPENDENCIES)
+ @rm -f ioctl_loop$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_loop_OBJECTS) $(ioctl_loop_LDADD) $(LIBS)
+
+ioctl_loop-nv$(EXEEXT): $(ioctl_loop_nv_OBJECTS) $(ioctl_loop_nv_DEPENDENCIES) $(EXTRA_ioctl_loop_nv_DEPENDENCIES)
+ @rm -f ioctl_loop-nv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_loop_nv_OBJECTS) $(ioctl_loop_nv_LDADD) $(LIBS)
+
+ioctl_loop-v$(EXEEXT): $(ioctl_loop_v_OBJECTS) $(ioctl_loop_v_DEPENDENCIES) $(EXTRA_ioctl_loop_v_DEPENDENCIES)
+ @rm -f ioctl_loop-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_loop_v_OBJECTS) $(ioctl_loop_v_LDADD) $(LIBS)
+
+ioctl_mtd$(EXEEXT): $(ioctl_mtd_OBJECTS) $(ioctl_mtd_DEPENDENCIES) $(EXTRA_ioctl_mtd_DEPENDENCIES)
+ @rm -f ioctl_mtd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
+
+ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES)
+ @rm -f ioctl_rtc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
+
+ioctl_rtc-v$(EXEEXT): $(ioctl_rtc_v_OBJECTS) $(ioctl_rtc_v_DEPENDENCIES) $(EXTRA_ioctl_rtc_v_DEPENDENCIES)
+ @rm -f ioctl_rtc-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_rtc_v_OBJECTS) $(ioctl_rtc_v_LDADD) $(LIBS)
+
+ioctl_scsi$(EXEEXT): $(ioctl_scsi_OBJECTS) $(ioctl_scsi_DEPENDENCIES) $(EXTRA_ioctl_scsi_DEPENDENCIES)
+ @rm -f ioctl_scsi$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_scsi_OBJECTS) $(ioctl_scsi_LDADD) $(LIBS)
+
+ioctl_sg_io_v3$(EXEEXT): $(ioctl_sg_io_v3_OBJECTS) $(ioctl_sg_io_v3_DEPENDENCIES) $(EXTRA_ioctl_sg_io_v3_DEPENDENCIES)
+ @rm -f ioctl_sg_io_v3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_sg_io_v3_OBJECTS) $(ioctl_sg_io_v3_LDADD) $(LIBS)
+
+ioctl_sg_io_v4$(EXEEXT): $(ioctl_sg_io_v4_OBJECTS) $(ioctl_sg_io_v4_DEPENDENCIES) $(EXTRA_ioctl_sg_io_v4_DEPENDENCIES)
+ @rm -f ioctl_sg_io_v4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_sg_io_v4_OBJECTS) $(ioctl_sg_io_v4_LDADD) $(LIBS)
+
+ioctl_sock_gifconf$(EXEEXT): $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_DEPENDENCIES) $(EXTRA_ioctl_sock_gifconf_DEPENDENCIES)
+ @rm -f ioctl_sock_gifconf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_LDADD) $(LIBS)
+
+ioctl_uffdio$(EXEEXT): $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_DEPENDENCIES) $(EXTRA_ioctl_uffdio_DEPENDENCIES)
+ @rm -f ioctl_uffdio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_LDADD) $(LIBS)
+
+ioctl_v4l2$(EXEEXT): $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_DEPENDENCIES) $(EXTRA_ioctl_v4l2_DEPENDENCIES)
+ @rm -f ioctl_v4l2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_LDADD) $(LIBS)
+
+ioperm$(EXEEXT): $(ioperm_OBJECTS) $(ioperm_DEPENDENCIES) $(EXTRA_ioperm_DEPENDENCIES)
+ @rm -f ioperm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioperm_OBJECTS) $(ioperm_LDADD) $(LIBS)
+
+iopl$(EXEEXT): $(iopl_OBJECTS) $(iopl_DEPENDENCIES) $(EXTRA_iopl_DEPENDENCIES)
+ @rm -f iopl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(iopl_OBJECTS) $(iopl_LDADD) $(LIBS)
+
+ioprio$(EXEEXT): $(ioprio_OBJECTS) $(ioprio_DEPENDENCIES) $(EXTRA_ioprio_DEPENDENCIES)
+ @rm -f ioprio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS)
+
+ip_mreq$(EXEEXT): $(ip_mreq_OBJECTS) $(ip_mreq_DEPENDENCIES) $(EXTRA_ip_mreq_DEPENDENCIES)
+ @rm -f ip_mreq$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ip_mreq_OBJECTS) $(ip_mreq_LDADD) $(LIBS)
+
+ipc$(EXEEXT): $(ipc_OBJECTS) $(ipc_DEPENDENCIES) $(EXTRA_ipc_DEPENDENCIES)
+ @rm -f ipc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_OBJECTS) $(ipc_LDADD) $(LIBS)
+
+ipc_msg$(EXEEXT): $(ipc_msg_OBJECTS) $(ipc_msg_DEPENDENCIES) $(EXTRA_ipc_msg_DEPENDENCIES)
+ @rm -f ipc_msg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_msg_OBJECTS) $(ipc_msg_LDADD) $(LIBS)
+
+ipc_msgbuf$(EXEEXT): $(ipc_msgbuf_OBJECTS) $(ipc_msgbuf_DEPENDENCIES) $(EXTRA_ipc_msgbuf_DEPENDENCIES)
+ @rm -f ipc_msgbuf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_msgbuf_OBJECTS) $(ipc_msgbuf_LDADD) $(LIBS)
+
+ipc_sem$(EXEEXT): $(ipc_sem_OBJECTS) $(ipc_sem_DEPENDENCIES) $(EXTRA_ipc_sem_DEPENDENCIES)
+ @rm -f ipc_sem$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_sem_OBJECTS) $(ipc_sem_LDADD) $(LIBS)
+
+ipc_shm$(EXEEXT): $(ipc_shm_OBJECTS) $(ipc_shm_DEPENDENCIES) $(EXTRA_ipc_shm_DEPENDENCIES)
+ @rm -f ipc_shm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_shm_OBJECTS) $(ipc_shm_LDADD) $(LIBS)
+
+kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES)
+ @rm -f kcmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS)
+
+kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES)
+ @rm -f kexec_file_load$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS)
+
+kexec_load$(EXEEXT): $(kexec_load_OBJECTS) $(kexec_load_DEPENDENCIES) $(EXTRA_kexec_load_DEPENDENCIES)
+ @rm -f kexec_load$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kexec_load_OBJECTS) $(kexec_load_LDADD) $(LIBS)
+
+keyctl$(EXEEXT): $(keyctl_OBJECTS) $(keyctl_DEPENDENCIES) $(EXTRA_keyctl_DEPENDENCIES)
+ @rm -f keyctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(keyctl_OBJECTS) $(keyctl_LDADD) $(LIBS)
+
+kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES) $(EXTRA_kill_DEPENDENCIES)
+ @rm -f kill$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
+
+ksysent$(EXEEXT): $(ksysent_OBJECTS) $(ksysent_DEPENDENCIES) $(EXTRA_ksysent_DEPENDENCIES)
+ @rm -f ksysent$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ksysent_OBJECTS) $(ksysent_LDADD) $(LIBS)
+
+lchown$(EXEEXT): $(lchown_OBJECTS) $(lchown_DEPENDENCIES) $(EXTRA_lchown_DEPENDENCIES)
+ @rm -f lchown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lchown_OBJECTS) $(lchown_LDADD) $(LIBS)
+
+lchown32$(EXEEXT): $(lchown32_OBJECTS) $(lchown32_DEPENDENCIES) $(EXTRA_lchown32_DEPENDENCIES)
+ @rm -f lchown32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lchown32_OBJECTS) $(lchown32_LDADD) $(LIBS)
+
+link$(EXEEXT): $(link_OBJECTS) $(link_DEPENDENCIES) $(EXTRA_link_DEPENDENCIES)
+ @rm -f link$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(link_OBJECTS) $(link_LDADD) $(LIBS)
+
+linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDENCIES)
+ @rm -f linkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+
+llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES)
+ @rm -f llseek$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS)
+
+lookup_dcookie$(EXEEXT): $(lookup_dcookie_OBJECTS) $(lookup_dcookie_DEPENDENCIES) $(EXTRA_lookup_dcookie_DEPENDENCIES)
+ @rm -f lookup_dcookie$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lookup_dcookie_OBJECTS) $(lookup_dcookie_LDADD) $(LIBS)
+
+lseek$(EXEEXT): $(lseek_OBJECTS) $(lseek_DEPENDENCIES) $(EXTRA_lseek_DEPENDENCIES)
+ @rm -f lseek$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lseek_OBJECTS) $(lseek_LDADD) $(LIBS)
+
+lstat$(EXEEXT): $(lstat_OBJECTS) $(lstat_DEPENDENCIES) $(EXTRA_lstat_DEPENDENCIES)
+ @rm -f lstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lstat_OBJECTS) $(lstat_LDADD) $(LIBS)
+
+lstat64$(EXEEXT): $(lstat64_OBJECTS) $(lstat64_DEPENDENCIES) $(EXTRA_lstat64_DEPENDENCIES)
+ @rm -f lstat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
+
+mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES)
+ @rm -f mbind$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
+
+membarrier$(EXEEXT): $(membarrier_OBJECTS) $(membarrier_DEPENDENCIES) $(EXTRA_membarrier_DEPENDENCIES)
+ @rm -f membarrier$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(membarrier_OBJECTS) $(membarrier_LDADD) $(LIBS)
+
+memfd_create$(EXEEXT): $(memfd_create_OBJECTS) $(memfd_create_DEPENDENCIES) $(EXTRA_memfd_create_DEPENDENCIES)
+ @rm -f memfd_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(memfd_create_OBJECTS) $(memfd_create_LDADD) $(LIBS)
+
+migrate_pages$(EXEEXT): $(migrate_pages_OBJECTS) $(migrate_pages_DEPENDENCIES) $(EXTRA_migrate_pages_DEPENDENCIES)
+ @rm -f migrate_pages$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS)
+
+mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES)
+ @rm -f mincore$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS)
+
+mkdir$(EXEEXT): $(mkdir_OBJECTS) $(mkdir_DEPENDENCIES) $(EXTRA_mkdir_DEPENDENCIES)
+ @rm -f mkdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mkdir_OBJECTS) $(mkdir_LDADD) $(LIBS)
+
+mkdirat$(EXEEXT): $(mkdirat_OBJECTS) $(mkdirat_DEPENDENCIES) $(EXTRA_mkdirat_DEPENDENCIES)
+ @rm -f mkdirat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mkdirat_OBJECTS) $(mkdirat_LDADD) $(LIBS)
+
+mknod$(EXEEXT): $(mknod_OBJECTS) $(mknod_DEPENDENCIES) $(EXTRA_mknod_DEPENDENCIES)
+ @rm -f mknod$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mknod_OBJECTS) $(mknod_LDADD) $(LIBS)
+
+mknodat$(EXEEXT): $(mknodat_OBJECTS) $(mknodat_DEPENDENCIES) $(EXTRA_mknodat_DEPENDENCIES)
+ @rm -f mknodat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mknodat_OBJECTS) $(mknodat_LDADD) $(LIBS)
+
+mlock$(EXEEXT): $(mlock_OBJECTS) $(mlock_DEPENDENCIES) $(EXTRA_mlock_DEPENDENCIES)
+ @rm -f mlock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mlock_OBJECTS) $(mlock_LDADD) $(LIBS)
+
+mlock2$(EXEEXT): $(mlock2_OBJECTS) $(mlock2_DEPENDENCIES) $(EXTRA_mlock2_DEPENDENCIES)
+ @rm -f mlock2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mlock2_OBJECTS) $(mlock2_LDADD) $(LIBS)
+
+mlockall$(EXEEXT): $(mlockall_OBJECTS) $(mlockall_DEPENDENCIES) $(EXTRA_mlockall_DEPENDENCIES)
+ @rm -f mlockall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mlockall_OBJECTS) $(mlockall_LDADD) $(LIBS)
+
+mmap$(EXEEXT): $(mmap_OBJECTS) $(mmap_DEPENDENCIES) $(EXTRA_mmap_DEPENDENCIES)
+ @rm -f mmap$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmap_OBJECTS) $(mmap_LDADD) $(LIBS)
+
+mmap64$(EXEEXT): $(mmap64_OBJECTS) $(mmap64_DEPENDENCIES) $(EXTRA_mmap64_DEPENDENCIES)
+ @rm -f mmap64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmap64_OBJECTS) $(mmap64_LDADD) $(LIBS)
+
+mmsg$(EXEEXT): $(mmsg_OBJECTS) $(mmsg_DEPENDENCIES) $(EXTRA_mmsg_DEPENDENCIES)
+ @rm -f mmsg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_OBJECTS) $(mmsg_LDADD) $(LIBS)
+
+mmsg-silent$(EXEEXT): $(mmsg_silent_OBJECTS) $(mmsg_silent_DEPENDENCIES) $(EXTRA_mmsg_silent_DEPENDENCIES)
+ @rm -f mmsg-silent$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_silent_OBJECTS) $(mmsg_silent_LDADD) $(LIBS)
+
+mmsg_name$(EXEEXT): $(mmsg_name_OBJECTS) $(mmsg_name_DEPENDENCIES) $(EXTRA_mmsg_name_DEPENDENCIES)
+ @rm -f mmsg_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_name_OBJECTS) $(mmsg_name_LDADD) $(LIBS)
+
+mmsg_name-v$(EXEEXT): $(mmsg_name_v_OBJECTS) $(mmsg_name_v_DEPENDENCIES) $(EXTRA_mmsg_name_v_DEPENDENCIES)
+ @rm -f mmsg_name-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_name_v_OBJECTS) $(mmsg_name_v_LDADD) $(LIBS)
+
+mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) $(EXTRA_mount_DEPENDENCIES)
+ @rm -f mount$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mount_OBJECTS) $(mount_LDADD) $(LIBS)
+
+move_pages$(EXEEXT): $(move_pages_OBJECTS) $(move_pages_DEPENDENCIES) $(EXTRA_move_pages_DEPENDENCIES)
+ @rm -f move_pages$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS)
+
+mq$(EXEEXT): $(mq_OBJECTS) $(mq_DEPENDENCIES) $(EXTRA_mq_DEPENDENCIES)
+ @rm -f mq$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_OBJECTS) $(mq_LDADD) $(LIBS)
+
+mq_sendrecv$(EXEEXT): $(mq_sendrecv_OBJECTS) $(mq_sendrecv_DEPENDENCIES) $(EXTRA_mq_sendrecv_DEPENDENCIES)
+ @rm -f mq_sendrecv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_sendrecv_OBJECTS) $(mq_sendrecv_LDADD) $(LIBS)
+
+mq_sendrecv-read$(EXEEXT): $(mq_sendrecv_read_OBJECTS) $(mq_sendrecv_read_DEPENDENCIES) $(EXTRA_mq_sendrecv_read_DEPENDENCIES)
+ @rm -f mq_sendrecv-read$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_sendrecv_read_OBJECTS) $(mq_sendrecv_read_LDADD) $(LIBS)
+
+mq_sendrecv-write$(EXEEXT): $(mq_sendrecv_write_OBJECTS) $(mq_sendrecv_write_DEPENDENCIES) $(EXTRA_mq_sendrecv_write_DEPENDENCIES)
+ @rm -f mq_sendrecv-write$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_sendrecv_write_OBJECTS) $(mq_sendrecv_write_LDADD) $(LIBS)
+
+msg_control$(EXEEXT): $(msg_control_OBJECTS) $(msg_control_DEPENDENCIES) $(EXTRA_msg_control_DEPENDENCIES)
+ @rm -f msg_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(msg_control_OBJECTS) $(msg_control_LDADD) $(LIBS)
+
+msg_control-v$(EXEEXT): $(msg_control_v_OBJECTS) $(msg_control_v_DEPENDENCIES) $(EXTRA_msg_control_v_DEPENDENCIES)
+ @rm -f msg_control-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(msg_control_v_OBJECTS) $(msg_control_v_LDADD) $(LIBS)
+
+msg_name$(EXEEXT): $(msg_name_OBJECTS) $(msg_name_DEPENDENCIES) $(EXTRA_msg_name_DEPENDENCIES)
+ @rm -f msg_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(msg_name_OBJECTS) $(msg_name_LDADD) $(LIBS)
+
+munlockall$(EXEEXT): $(munlockall_OBJECTS) $(munlockall_DEPENDENCIES) $(EXTRA_munlockall_DEPENDENCIES)
+ @rm -f munlockall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(munlockall_OBJECTS) $(munlockall_LDADD) $(LIBS)
+
+nanosleep$(EXEEXT): $(nanosleep_OBJECTS) $(nanosleep_DEPENDENCIES) $(EXTRA_nanosleep_DEPENDENCIES)
+ @rm -f nanosleep$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nanosleep_OBJECTS) $(nanosleep_LDADD) $(LIBS)
+
+net-accept-connect$(EXEEXT): $(net_accept_connect_OBJECTS) $(net_accept_connect_DEPENDENCIES) $(EXTRA_net_accept_connect_DEPENDENCIES)
+ @rm -f net-accept-connect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_accept_connect_OBJECTS) $(net_accept_connect_LDADD) $(LIBS)
+
+net-icmp_filter$(EXEEXT): $(net_icmp_filter_OBJECTS) $(net_icmp_filter_DEPENDENCIES) $(EXTRA_net_icmp_filter_DEPENDENCIES)
+ @rm -f net-icmp_filter$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_icmp_filter_OBJECTS) $(net_icmp_filter_LDADD) $(LIBS)
+
+net-sockaddr$(EXEEXT): $(net_sockaddr_OBJECTS) $(net_sockaddr_DEPENDENCIES) $(EXTRA_net_sockaddr_DEPENDENCIES)
+ @rm -f net-sockaddr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS)
+
+net-y-unix$(EXEEXT): $(net_y_unix_OBJECTS) $(net_y_unix_DEPENDENCIES) $(EXTRA_net_y_unix_DEPENDENCIES)
+ @rm -f net-y-unix$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_y_unix_OBJECTS) $(net_y_unix_LDADD) $(LIBS)
+
+net-yy-inet$(EXEEXT): $(net_yy_inet_OBJECTS) $(net_yy_inet_DEPENDENCIES) $(EXTRA_net_yy_inet_DEPENDENCIES)
+ @rm -f net-yy-inet$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_yy_inet_OBJECTS) $(net_yy_inet_LDADD) $(LIBS)
+
+net-yy-netlink$(EXEEXT): $(net_yy_netlink_OBJECTS) $(net_yy_netlink_DEPENDENCIES) $(EXTRA_net_yy_netlink_DEPENDENCIES)
+ @rm -f net-yy-netlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_yy_netlink_OBJECTS) $(net_yy_netlink_LDADD) $(LIBS)
+
+net-yy-unix$(EXEEXT): $(net_yy_unix_OBJECTS) $(net_yy_unix_DEPENDENCIES) $(EXTRA_net_yy_unix_DEPENDENCIES)
+ @rm -f net-yy-unix$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_yy_unix_OBJECTS) $(net_yy_unix_LDADD) $(LIBS)
+
+netlink_inet_diag$(EXEEXT): $(netlink_inet_diag_OBJECTS) $(netlink_inet_diag_DEPENDENCIES) $(EXTRA_netlink_inet_diag_DEPENDENCIES)
+ @rm -f netlink_inet_diag$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_inet_diag_OBJECTS) $(netlink_inet_diag_LDADD) $(LIBS)
+
+netlink_netlink_diag$(EXEEXT): $(netlink_netlink_diag_OBJECTS) $(netlink_netlink_diag_DEPENDENCIES) $(EXTRA_netlink_netlink_diag_DEPENDENCIES)
+ @rm -f netlink_netlink_diag$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_netlink_diag_OBJECTS) $(netlink_netlink_diag_LDADD) $(LIBS)
+
+netlink_protocol$(EXEEXT): $(netlink_protocol_OBJECTS) $(netlink_protocol_DEPENDENCIES) $(EXTRA_netlink_protocol_DEPENDENCIES)
+ @rm -f netlink_protocol$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_protocol_OBJECTS) $(netlink_protocol_LDADD) $(LIBS)
+
+netlink_unix_diag$(EXEEXT): $(netlink_unix_diag_OBJECTS) $(netlink_unix_diag_DEPENDENCIES) $(EXTRA_netlink_unix_diag_DEPENDENCIES)
+ @rm -f netlink_unix_diag$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_unix_diag_OBJECTS) $(netlink_unix_diag_LDADD) $(LIBS)
+
+newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_newfstatat_DEPENDENCIES)
+ @rm -f newfstatat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS)
+
+nsyscalls$(EXEEXT): $(nsyscalls_OBJECTS) $(nsyscalls_DEPENDENCIES) $(EXTRA_nsyscalls_DEPENDENCIES)
+ @rm -f nsyscalls$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nsyscalls_OBJECTS) $(nsyscalls_LDADD) $(LIBS)
+
+old_mmap$(EXEEXT): $(old_mmap_OBJECTS) $(old_mmap_DEPENDENCIES) $(EXTRA_old_mmap_DEPENDENCIES)
+ @rm -f old_mmap$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(old_mmap_OBJECTS) $(old_mmap_LDADD) $(LIBS)
+
+oldfstat$(EXEEXT): $(oldfstat_OBJECTS) $(oldfstat_DEPENDENCIES) $(EXTRA_oldfstat_DEPENDENCIES)
+ @rm -f oldfstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldfstat_OBJECTS) $(oldfstat_LDADD) $(LIBS)
+
+oldlstat$(EXEEXT): $(oldlstat_OBJECTS) $(oldlstat_DEPENDENCIES) $(EXTRA_oldlstat_DEPENDENCIES)
+ @rm -f oldlstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldlstat_OBJECTS) $(oldlstat_LDADD) $(LIBS)
+
+oldselect$(EXEEXT): $(oldselect_OBJECTS) $(oldselect_DEPENDENCIES) $(EXTRA_oldselect_DEPENDENCIES)
+ @rm -f oldselect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldselect_OBJECTS) $(oldselect_LDADD) $(LIBS)
+
+oldstat$(EXEEXT): $(oldstat_OBJECTS) $(oldstat_DEPENDENCIES) $(EXTRA_oldstat_DEPENDENCIES)
+ @rm -f oldstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldstat_OBJECTS) $(oldstat_LDADD) $(LIBS)
+
+open$(EXEEXT): $(open_OBJECTS) $(open_DEPENDENCIES) $(EXTRA_open_DEPENDENCIES)
+ @rm -f open$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
+
+openat$(EXEEXT): $(openat_OBJECTS) $(openat_DEPENDENCIES) $(EXTRA_openat_DEPENDENCIES)
+ @rm -f openat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+
+pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES)
+ @rm -f pause$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
+
+pc$(EXEEXT): $(pc_OBJECTS) $(pc_DEPENDENCIES) $(EXTRA_pc_DEPENDENCIES)
+ @rm -f pc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pc_OBJECTS) $(pc_LDADD) $(LIBS)
+
+perf_event_open$(EXEEXT): $(perf_event_open_OBJECTS) $(perf_event_open_DEPENDENCIES) $(EXTRA_perf_event_open_DEPENDENCIES)
+ @rm -f perf_event_open$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(perf_event_open_OBJECTS) $(perf_event_open_LDADD) $(LIBS)
+
+perf_event_open_nonverbose$(EXEEXT): $(perf_event_open_nonverbose_OBJECTS) $(perf_event_open_nonverbose_DEPENDENCIES) $(EXTRA_perf_event_open_nonverbose_DEPENDENCIES)
+ @rm -f perf_event_open_nonverbose$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(perf_event_open_nonverbose_OBJECTS) $(perf_event_open_nonverbose_LDADD) $(LIBS)
+
+perf_event_open_unabbrev$(EXEEXT): $(perf_event_open_unabbrev_OBJECTS) $(perf_event_open_unabbrev_DEPENDENCIES) $(EXTRA_perf_event_open_unabbrev_DEPENDENCIES)
+ @rm -f perf_event_open_unabbrev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(perf_event_open_unabbrev_OBJECTS) $(perf_event_open_unabbrev_LDADD) $(LIBS)
+
+personality$(EXEEXT): $(personality_OBJECTS) $(personality_DEPENDENCIES) $(EXTRA_personality_DEPENDENCIES)
+ @rm -f personality$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(personality_OBJECTS) $(personality_LDADD) $(LIBS)
+
+pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES)
+ @rm -f pipe$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS)
+
+pipe2$(EXEEXT): $(pipe2_OBJECTS) $(pipe2_DEPENDENCIES) $(EXTRA_pipe2_DEPENDENCIES)
+ @rm -f pipe2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pipe2_OBJECTS) $(pipe2_LDADD) $(LIBS)
+
+pkey_alloc$(EXEEXT): $(pkey_alloc_OBJECTS) $(pkey_alloc_DEPENDENCIES) $(EXTRA_pkey_alloc_DEPENDENCIES)
+ @rm -f pkey_alloc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pkey_alloc_OBJECTS) $(pkey_alloc_LDADD) $(LIBS)
+
+pkey_free$(EXEEXT): $(pkey_free_OBJECTS) $(pkey_free_DEPENDENCIES) $(EXTRA_pkey_free_DEPENDENCIES)
+ @rm -f pkey_free$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pkey_free_OBJECTS) $(pkey_free_LDADD) $(LIBS)
+
+pkey_mprotect$(EXEEXT): $(pkey_mprotect_OBJECTS) $(pkey_mprotect_DEPENDENCIES) $(EXTRA_pkey_mprotect_DEPENDENCIES)
+ @rm -f pkey_mprotect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pkey_mprotect_OBJECTS) $(pkey_mprotect_LDADD) $(LIBS)
+
+poll$(EXEEXT): $(poll_OBJECTS) $(poll_DEPENDENCIES) $(EXTRA_poll_DEPENDENCIES)
+ @rm -f poll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(poll_OBJECTS) $(poll_LDADD) $(LIBS)
+
+ppoll$(EXEEXT): $(ppoll_OBJECTS) $(ppoll_DEPENDENCIES) $(EXTRA_ppoll_DEPENDENCIES)
+ @rm -f ppoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
+
+prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES)
+ @rm -f prctl-arg2-intptr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
+
+prctl-dumpable$(EXEEXT): $(prctl_dumpable_OBJECTS) $(prctl_dumpable_DEPENDENCIES) $(EXTRA_prctl_dumpable_DEPENDENCIES)
+ @rm -f prctl-dumpable$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_dumpable_OBJECTS) $(prctl_dumpable_LDADD) $(LIBS)
+
+prctl-name$(EXEEXT): $(prctl_name_OBJECTS) $(prctl_name_DEPENDENCIES) $(EXTRA_prctl_name_DEPENDENCIES)
+ @rm -f prctl-name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_name_OBJECTS) $(prctl_name_LDADD) $(LIBS)
+
+prctl-no-args$(EXEEXT): $(prctl_no_args_OBJECTS) $(prctl_no_args_DEPENDENCIES) $(EXTRA_prctl_no_args_DEPENDENCIES)
+ @rm -f prctl-no-args$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_no_args_OBJECTS) $(prctl_no_args_LDADD) $(LIBS)
+
+prctl-pdeathsig$(EXEEXT): $(prctl_pdeathsig_OBJECTS) $(prctl_pdeathsig_DEPENDENCIES) $(EXTRA_prctl_pdeathsig_DEPENDENCIES)
+ @rm -f prctl-pdeathsig$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_pdeathsig_OBJECTS) $(prctl_pdeathsig_LDADD) $(LIBS)
+
+prctl-seccomp-filter-v$(EXEEXT): $(prctl_seccomp_filter_v_OBJECTS) $(prctl_seccomp_filter_v_DEPENDENCIES) $(EXTRA_prctl_seccomp_filter_v_DEPENDENCIES)
+ @rm -f prctl-seccomp-filter-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_seccomp_filter_v_OBJECTS) $(prctl_seccomp_filter_v_LDADD) $(LIBS)
+
+prctl-seccomp-strict$(EXEEXT): $(prctl_seccomp_strict_OBJECTS) $(prctl_seccomp_strict_DEPENDENCIES) $(EXTRA_prctl_seccomp_strict_DEPENDENCIES)
+ @rm -f prctl-seccomp-strict$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_seccomp_strict_OBJECTS) $(prctl_seccomp_strict_LDADD) $(LIBS)
+
+prctl-securebits$(EXEEXT): $(prctl_securebits_OBJECTS) $(prctl_securebits_DEPENDENCIES) $(EXTRA_prctl_securebits_DEPENDENCIES)
+ @rm -f prctl-securebits$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_securebits_OBJECTS) $(prctl_securebits_LDADD) $(LIBS)
+
+prctl-tid_address$(EXEEXT): $(prctl_tid_address_OBJECTS) $(prctl_tid_address_DEPENDENCIES) $(EXTRA_prctl_tid_address_DEPENDENCIES)
+ @rm -f prctl-tid_address$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_tid_address_OBJECTS) $(prctl_tid_address_LDADD) $(LIBS)
+
+prctl-tsc$(EXEEXT): $(prctl_tsc_OBJECTS) $(prctl_tsc_DEPENDENCIES) $(EXTRA_prctl_tsc_DEPENDENCIES)
+ @rm -f prctl-tsc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_tsc_OBJECTS) $(prctl_tsc_LDADD) $(LIBS)
+
+pread64-pwrite64$(EXEEXT): $(pread64_pwrite64_OBJECTS) $(pread64_pwrite64_DEPENDENCIES) $(EXTRA_pread64_pwrite64_DEPENDENCIES)
+ @rm -f pread64-pwrite64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pread64_pwrite64_OBJECTS) $(pread64_pwrite64_LDADD) $(LIBS)
+
+preadv$(EXEEXT): $(preadv_OBJECTS) $(preadv_DEPENDENCIES) $(EXTRA_preadv_DEPENDENCIES)
+ @rm -f preadv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(preadv_OBJECTS) $(preadv_LDADD) $(LIBS)
+
+preadv-pwritev$(EXEEXT): $(preadv_pwritev_OBJECTS) $(preadv_pwritev_DEPENDENCIES) $(EXTRA_preadv_pwritev_DEPENDENCIES)
+ @rm -f preadv-pwritev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(preadv_pwritev_OBJECTS) $(preadv_pwritev_LDADD) $(LIBS)
+
+preadv2-pwritev2$(EXEEXT): $(preadv2_pwritev2_OBJECTS) $(preadv2_pwritev2_DEPENDENCIES) $(EXTRA_preadv2_pwritev2_DEPENDENCIES)
+ @rm -f preadv2-pwritev2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(preadv2_pwritev2_OBJECTS) $(preadv2_pwritev2_LDADD) $(LIBS)
+
+print_maxfd$(EXEEXT): $(print_maxfd_OBJECTS) $(print_maxfd_DEPENDENCIES) $(EXTRA_print_maxfd_DEPENDENCIES)
+ @rm -f print_maxfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(print_maxfd_OBJECTS) $(print_maxfd_LDADD) $(LIBS)
+
+printstr$(EXEEXT): $(printstr_OBJECTS) $(printstr_DEPENDENCIES) $(EXTRA_printstr_DEPENDENCIES)
+ @rm -f printstr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(printstr_OBJECTS) $(printstr_LDADD) $(LIBS)
+
+prlimit64$(EXEEXT): $(prlimit64_OBJECTS) $(prlimit64_DEPENDENCIES) $(EXTRA_prlimit64_DEPENDENCIES)
+ @rm -f prlimit64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS)
+
+process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES)
+ @rm -f process_vm_readv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS)
+
+process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES)
+ @rm -f process_vm_writev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS)
+
+pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES)
+ @rm -f pselect6$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS)
+
+ptrace$(EXEEXT): $(ptrace_OBJECTS) $(ptrace_DEPENDENCIES) $(EXTRA_ptrace_DEPENDENCIES)
+ @rm -f ptrace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ptrace_OBJECTS) $(ptrace_LDADD) $(LIBS)
+
+pwritev$(EXEEXT): $(pwritev_OBJECTS) $(pwritev_DEPENDENCIES) $(EXTRA_pwritev_DEPENDENCIES)
+ @rm -f pwritev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pwritev_OBJECTS) $(pwritev_LDADD) $(LIBS)
+
+qual_fault$(EXEEXT): $(qual_fault_OBJECTS) $(qual_fault_DEPENDENCIES) $(EXTRA_qual_fault_DEPENDENCIES)
+ @rm -f qual_fault$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_fault_OBJECTS) $(qual_fault_LDADD) $(LIBS)
+
+qual_inject-error-signal$(EXEEXT): $(qual_inject_error_signal_OBJECTS) $(qual_inject_error_signal_DEPENDENCIES) $(EXTRA_qual_inject_error_signal_DEPENDENCIES)
+ @rm -f qual_inject-error-signal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_inject_error_signal_OBJECTS) $(qual_inject_error_signal_LDADD) $(LIBS)
+
+qual_inject-retval$(EXEEXT): $(qual_inject_retval_OBJECTS) $(qual_inject_retval_DEPENDENCIES) $(EXTRA_qual_inject_retval_DEPENDENCIES)
+ @rm -f qual_inject-retval$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_inject_retval_OBJECTS) $(qual_inject_retval_LDADD) $(LIBS)
+
+qual_inject-signal$(EXEEXT): $(qual_inject_signal_OBJECTS) $(qual_inject_signal_DEPENDENCIES) $(EXTRA_qual_inject_signal_DEPENDENCIES)
+ @rm -f qual_inject-signal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_inject_signal_OBJECTS) $(qual_inject_signal_LDADD) $(LIBS)
+
+qual_signal$(EXEEXT): $(qual_signal_OBJECTS) $(qual_signal_DEPENDENCIES) $(EXTRA_qual_signal_DEPENDENCIES)
+ @rm -f qual_signal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_signal_OBJECTS) $(qual_signal_LDADD) $(LIBS)
+
+quotactl$(EXEEXT): $(quotactl_OBJECTS) $(quotactl_DEPENDENCIES) $(EXTRA_quotactl_DEPENDENCIES)
+ @rm -f quotactl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_OBJECTS) $(quotactl_LDADD) $(LIBS)
+
+quotactl-v$(EXEEXT): $(quotactl_v_OBJECTS) $(quotactl_v_DEPENDENCIES) $(EXTRA_quotactl_v_DEPENDENCIES)
+ @rm -f quotactl-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_v_OBJECTS) $(quotactl_v_LDADD) $(LIBS)
+
+quotactl-xfs$(EXEEXT): $(quotactl_xfs_OBJECTS) $(quotactl_xfs_DEPENDENCIES) $(EXTRA_quotactl_xfs_DEPENDENCIES)
+ @rm -f quotactl-xfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_xfs_OBJECTS) $(quotactl_xfs_LDADD) $(LIBS)
+
+quotactl-xfs-v$(EXEEXT): $(quotactl_xfs_v_OBJECTS) $(quotactl_xfs_v_DEPENDENCIES) $(EXTRA_quotactl_xfs_v_DEPENDENCIES)
+ @rm -f quotactl-xfs-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_xfs_v_OBJECTS) $(quotactl_xfs_v_LDADD) $(LIBS)
+
+read-write$(EXEEXT): $(read_write_OBJECTS) $(read_write_DEPENDENCIES) $(EXTRA_read_write_DEPENDENCIES)
+ @rm -f read-write$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(read_write_OBJECTS) $(read_write_LDADD) $(LIBS)
+
+readahead$(EXEEXT): $(readahead_OBJECTS) $(readahead_DEPENDENCIES) $(EXTRA_readahead_DEPENDENCIES)
+ @rm -f readahead$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readahead_OBJECTS) $(readahead_LDADD) $(LIBS)
+
+readdir$(EXEEXT): $(readdir_OBJECTS) $(readdir_DEPENDENCIES) $(EXTRA_readdir_DEPENDENCIES)
+ @rm -f readdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readdir_OBJECTS) $(readdir_LDADD) $(LIBS)
+
+readlink$(EXEEXT): $(readlink_OBJECTS) $(readlink_DEPENDENCIES) $(EXTRA_readlink_DEPENDENCIES)
+ @rm -f readlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readlink_OBJECTS) $(readlink_LDADD) $(LIBS)
+
+readlinkat$(EXEEXT): $(readlinkat_OBJECTS) $(readlinkat_DEPENDENCIES) $(EXTRA_readlinkat_DEPENDENCIES)
+ @rm -f readlinkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readlinkat_OBJECTS) $(readlinkat_LDADD) $(LIBS)
+
+readv$(EXEEXT): $(readv_OBJECTS) $(readv_DEPENDENCIES) $(EXTRA_readv_DEPENDENCIES)
+ @rm -f readv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readv_OBJECTS) $(readv_LDADD) $(LIBS)
+
+reboot$(EXEEXT): $(reboot_OBJECTS) $(reboot_DEPENDENCIES) $(EXTRA_reboot_DEPENDENCIES)
+ @rm -f reboot$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(reboot_OBJECTS) $(reboot_LDADD) $(LIBS)
+
+recvfrom$(EXEEXT): $(recvfrom_OBJECTS) $(recvfrom_DEPENDENCIES) $(EXTRA_recvfrom_DEPENDENCIES)
+ @rm -f recvfrom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(recvfrom_OBJECTS) $(recvfrom_LDADD) $(LIBS)
+
+recvmmsg-timeout$(EXEEXT): $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_DEPENDENCIES) $(EXTRA_recvmmsg_timeout_DEPENDENCIES)
+ @rm -f recvmmsg-timeout$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_LDADD) $(LIBS)
+
+recvmsg$(EXEEXT): $(recvmsg_OBJECTS) $(recvmsg_DEPENDENCIES) $(EXTRA_recvmsg_DEPENDENCIES)
+ @rm -f recvmsg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(recvmsg_OBJECTS) $(recvmsg_LDADD) $(LIBS)
+
+redirect-fds$(EXEEXT): $(redirect_fds_OBJECTS) $(redirect_fds_DEPENDENCIES) $(EXTRA_redirect_fds_DEPENDENCIES)
+ @rm -f redirect-fds$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(redirect_fds_OBJECTS) $(redirect_fds_LDADD) $(LIBS)
+
+remap_file_pages$(EXEEXT): $(remap_file_pages_OBJECTS) $(remap_file_pages_DEPENDENCIES) $(EXTRA_remap_file_pages_DEPENDENCIES)
+ @rm -f remap_file_pages$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(remap_file_pages_OBJECTS) $(remap_file_pages_LDADD) $(LIBS)
+
+rename$(EXEEXT): $(rename_OBJECTS) $(rename_DEPENDENCIES) $(EXTRA_rename_DEPENDENCIES)
+ @rm -f rename$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rename_OBJECTS) $(rename_LDADD) $(LIBS)
+
+renameat$(EXEEXT): $(renameat_OBJECTS) $(renameat_DEPENDENCIES) $(EXTRA_renameat_DEPENDENCIES)
+ @rm -f renameat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(renameat_OBJECTS) $(renameat_LDADD) $(LIBS)
+
+renameat2$(EXEEXT): $(renameat2_OBJECTS) $(renameat2_DEPENDENCIES) $(EXTRA_renameat2_DEPENDENCIES)
+ @rm -f renameat2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(renameat2_OBJECTS) $(renameat2_LDADD) $(LIBS)
+
+request_key$(EXEEXT): $(request_key_OBJECTS) $(request_key_DEPENDENCIES) $(EXTRA_request_key_DEPENDENCIES)
+ @rm -f request_key$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(request_key_OBJECTS) $(request_key_LDADD) $(LIBS)
+
+restart_syscall$(EXEEXT): $(restart_syscall_OBJECTS) $(restart_syscall_DEPENDENCIES) $(EXTRA_restart_syscall_DEPENDENCIES)
+ @rm -f restart_syscall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(restart_syscall_OBJECTS) $(restart_syscall_LDADD) $(LIBS)
+
+rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES) $(EXTRA_rmdir_DEPENDENCIES)
+ @rm -f rmdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS)
+
+rt_sigpending$(EXEEXT): $(rt_sigpending_OBJECTS) $(rt_sigpending_DEPENDENCIES) $(EXTRA_rt_sigpending_DEPENDENCIES)
+ @rm -f rt_sigpending$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigpending_OBJECTS) $(rt_sigpending_LDADD) $(LIBS)
+
+rt_sigprocmask$(EXEEXT): $(rt_sigprocmask_OBJECTS) $(rt_sigprocmask_DEPENDENCIES) $(EXTRA_rt_sigprocmask_DEPENDENCIES)
+ @rm -f rt_sigprocmask$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigprocmask_OBJECTS) $(rt_sigprocmask_LDADD) $(LIBS)
+
+rt_sigqueueinfo$(EXEEXT): $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo_DEPENDENCIES)
+ @rm -f rt_sigqueueinfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
+
+rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES)
+ @rm -f rt_sigsuspend$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
+
+rt_sigtimedwait$(EXEEXT): $(rt_sigtimedwait_OBJECTS) $(rt_sigtimedwait_DEPENDENCIES) $(EXTRA_rt_sigtimedwait_DEPENDENCIES)
+ @rm -f rt_sigtimedwait$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigtimedwait_OBJECTS) $(rt_sigtimedwait_LDADD) $(LIBS)
+
+rt_tgsigqueueinfo$(EXEEXT): $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo_DEPENDENCIES)
+ @rm -f rt_tgsigqueueinfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS)
+
+sched_get_priority_mxx$(EXEEXT): $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_DEPENDENCIES) $(EXTRA_sched_get_priority_mxx_DEPENDENCIES)
+ @rm -f sched_get_priority_mxx$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_LDADD) $(LIBS)
+
+sched_rr_get_interval$(EXEEXT): $(sched_rr_get_interval_OBJECTS) $(sched_rr_get_interval_DEPENDENCIES) $(EXTRA_sched_rr_get_interval_DEPENDENCIES)
+ @rm -f sched_rr_get_interval$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_rr_get_interval_OBJECTS) $(sched_rr_get_interval_LDADD) $(LIBS)
+
+sched_xetaffinity$(EXEEXT): $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_DEPENDENCIES) $(EXTRA_sched_xetaffinity_DEPENDENCIES)
+ @rm -f sched_xetaffinity$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS)
+
+sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES)
+ @rm -f sched_xetattr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS)
+
+sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES)
+ @rm -f sched_xetparam$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS)
+
+sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES)
+ @rm -f sched_xetscheduler$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS)
+
+sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES)
+ @rm -f sched_yield$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS)
+
+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)
+
+seccomp-filter$(EXEEXT): $(seccomp_filter_OBJECTS) $(seccomp_filter_DEPENDENCIES) $(EXTRA_seccomp_filter_DEPENDENCIES)
+ @rm -f seccomp-filter$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_filter_OBJECTS) $(seccomp_filter_LDADD) $(LIBS)
+
+seccomp-filter-v$(EXEEXT): $(seccomp_filter_v_OBJECTS) $(seccomp_filter_v_DEPENDENCIES) $(EXTRA_seccomp_filter_v_DEPENDENCIES)
+ @rm -f seccomp-filter-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_filter_v_OBJECTS) $(seccomp_filter_v_LDADD) $(LIBS)
+
+seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES) $(EXTRA_seccomp_strict_DEPENDENCIES)
+ @rm -f seccomp-strict$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS)
+
+select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES)
+ @rm -f select$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
+
+semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIES)
+ @rm -f semop$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
+
+sendfile$(EXEEXT): $(sendfile_OBJECTS) $(sendfile_DEPENDENCIES) $(EXTRA_sendfile_DEPENDENCIES)
+ @rm -f sendfile$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sendfile_OBJECTS) $(sendfile_LDADD) $(LIBS)
+
+sendfile64$(EXEEXT): $(sendfile64_OBJECTS) $(sendfile64_DEPENDENCIES) $(EXTRA_sendfile64_DEPENDENCIES)
+ @rm -f sendfile64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sendfile64_OBJECTS) $(sendfile64_LDADD) $(LIBS)
+
+set_mempolicy$(EXEEXT): $(set_mempolicy_OBJECTS) $(set_mempolicy_DEPENDENCIES) $(EXTRA_set_mempolicy_DEPENDENCIES)
+ @rm -f set_mempolicy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_mempolicy_OBJECTS) $(set_mempolicy_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)
+
+setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES)
+ @rm -f setdomainname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS)
+
+setfsgid$(EXEEXT): $(setfsgid_OBJECTS) $(setfsgid_DEPENDENCIES) $(EXTRA_setfsgid_DEPENDENCIES)
+ @rm -f setfsgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsgid_OBJECTS) $(setfsgid_LDADD) $(LIBS)
+
+setfsgid32$(EXEEXT): $(setfsgid32_OBJECTS) $(setfsgid32_DEPENDENCIES) $(EXTRA_setfsgid32_DEPENDENCIES)
+ @rm -f setfsgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsgid32_OBJECTS) $(setfsgid32_LDADD) $(LIBS)
+
+setfsuid$(EXEEXT): $(setfsuid_OBJECTS) $(setfsuid_DEPENDENCIES) $(EXTRA_setfsuid_DEPENDENCIES)
+ @rm -f setfsuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsuid_OBJECTS) $(setfsuid_LDADD) $(LIBS)
+
+setfsuid32$(EXEEXT): $(setfsuid32_OBJECTS) $(setfsuid32_DEPENDENCIES) $(EXTRA_setfsuid32_DEPENDENCIES)
+ @rm -f setfsuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsuid32_OBJECTS) $(setfsuid32_LDADD) $(LIBS)
+
+setgid$(EXEEXT): $(setgid_OBJECTS) $(setgid_DEPENDENCIES) $(EXTRA_setgid_DEPENDENCIES)
+ @rm -f setgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgid_OBJECTS) $(setgid_LDADD) $(LIBS)
+
+setgid32$(EXEEXT): $(setgid32_OBJECTS) $(setgid32_DEPENDENCIES) $(EXTRA_setgid32_DEPENDENCIES)
+ @rm -f setgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgid32_OBJECTS) $(setgid32_LDADD) $(LIBS)
+
+setgroups$(EXEEXT): $(setgroups_OBJECTS) $(setgroups_DEPENDENCIES) $(EXTRA_setgroups_DEPENDENCIES)
+ @rm -f setgroups$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgroups_OBJECTS) $(setgroups_LDADD) $(LIBS)
+
+setgroups32$(EXEEXT): $(setgroups32_OBJECTS) $(setgroups32_DEPENDENCIES) $(EXTRA_setgroups32_DEPENDENCIES)
+ @rm -f setgroups32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgroups32_OBJECTS) $(setgroups32_LDADD) $(LIBS)
+
+sethostname$(EXEEXT): $(sethostname_OBJECTS) $(sethostname_DEPENDENCIES) $(EXTRA_sethostname_DEPENDENCIES)
+ @rm -f sethostname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sethostname_OBJECTS) $(sethostname_LDADD) $(LIBS)
+
+setns$(EXEEXT): $(setns_OBJECTS) $(setns_DEPENDENCIES) $(EXTRA_setns_DEPENDENCIES)
+ @rm -f setns$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setns_OBJECTS) $(setns_LDADD) $(LIBS)
+
+setregid$(EXEEXT): $(setregid_OBJECTS) $(setregid_DEPENDENCIES) $(EXTRA_setregid_DEPENDENCIES)
+ @rm -f setregid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setregid_OBJECTS) $(setregid_LDADD) $(LIBS)
+
+setregid32$(EXEEXT): $(setregid32_OBJECTS) $(setregid32_DEPENDENCIES) $(EXTRA_setregid32_DEPENDENCIES)
+ @rm -f setregid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setregid32_OBJECTS) $(setregid32_LDADD) $(LIBS)
+
+setresgid$(EXEEXT): $(setresgid_OBJECTS) $(setresgid_DEPENDENCIES) $(EXTRA_setresgid_DEPENDENCIES)
+ @rm -f setresgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresgid_OBJECTS) $(setresgid_LDADD) $(LIBS)
+
+setresgid32$(EXEEXT): $(setresgid32_OBJECTS) $(setresgid32_DEPENDENCIES) $(EXTRA_setresgid32_DEPENDENCIES)
+ @rm -f setresgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresgid32_OBJECTS) $(setresgid32_LDADD) $(LIBS)
+
+setresuid$(EXEEXT): $(setresuid_OBJECTS) $(setresuid_DEPENDENCIES) $(EXTRA_setresuid_DEPENDENCIES)
+ @rm -f setresuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresuid_OBJECTS) $(setresuid_LDADD) $(LIBS)
+
+setresuid32$(EXEEXT): $(setresuid32_OBJECTS) $(setresuid32_DEPENDENCIES) $(EXTRA_setresuid32_DEPENDENCIES)
+ @rm -f setresuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresuid32_OBJECTS) $(setresuid32_LDADD) $(LIBS)
+
+setreuid$(EXEEXT): $(setreuid_OBJECTS) $(setreuid_DEPENDENCIES) $(EXTRA_setreuid_DEPENDENCIES)
+ @rm -f setreuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setreuid_OBJECTS) $(setreuid_LDADD) $(LIBS)
+
+setreuid32$(EXEEXT): $(setreuid32_OBJECTS) $(setreuid32_DEPENDENCIES) $(EXTRA_setreuid32_DEPENDENCIES)
+ @rm -f setreuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setreuid32_OBJECTS) $(setreuid32_LDADD) $(LIBS)
+
+setrlimit$(EXEEXT): $(setrlimit_OBJECTS) $(setrlimit_DEPENDENCIES) $(EXTRA_setrlimit_DEPENDENCIES)
+ @rm -f setrlimit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setrlimit_OBJECTS) $(setrlimit_LDADD) $(LIBS)
+
+setuid$(EXEEXT): $(setuid_OBJECTS) $(setuid_DEPENDENCIES) $(EXTRA_setuid_DEPENDENCIES)
+ @rm -f setuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setuid_OBJECTS) $(setuid_LDADD) $(LIBS)
+
+setuid32$(EXEEXT): $(setuid32_OBJECTS) $(setuid32_DEPENDENCIES) $(EXTRA_setuid32_DEPENDENCIES)
+ @rm -f setuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setuid32_OBJECTS) $(setuid32_LDADD) $(LIBS)
+
+shmxt$(EXEEXT): $(shmxt_OBJECTS) $(shmxt_DEPENDENCIES) $(EXTRA_shmxt_DEPENDENCIES)
+ @rm -f shmxt$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(shmxt_OBJECTS) $(shmxt_LDADD) $(LIBS)
+
+shutdown$(EXEEXT): $(shutdown_OBJECTS) $(shutdown_DEPENDENCIES) $(EXTRA_shutdown_DEPENDENCIES)
+ @rm -f shutdown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(shutdown_OBJECTS) $(shutdown_LDADD) $(LIBS)
+
+sigaction$(EXEEXT): $(sigaction_OBJECTS) $(sigaction_DEPENDENCIES) $(EXTRA_sigaction_DEPENDENCIES)
+ @rm -f sigaction$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigaction_OBJECTS) $(sigaction_LDADD) $(LIBS)
+
+sigaltstack$(EXEEXT): $(sigaltstack_OBJECTS) $(sigaltstack_DEPENDENCIES) $(EXTRA_sigaltstack_DEPENDENCIES)
+ @rm -f sigaltstack$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigaltstack_OBJECTS) $(sigaltstack_LDADD) $(LIBS)
+
+siginfo$(EXEEXT): $(siginfo_OBJECTS) $(siginfo_DEPENDENCIES) $(EXTRA_siginfo_DEPENDENCIES)
+ @rm -f siginfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(siginfo_OBJECTS) $(siginfo_LDADD) $(LIBS)
+
+signal_receive$(EXEEXT): $(signal_receive_OBJECTS) $(signal_receive_DEPENDENCIES) $(EXTRA_signal_receive_DEPENDENCIES)
+ @rm -f signal_receive$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS)
+
+signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES)
+ @rm -f signalfd4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS)
+
+sigreturn$(EXEEXT): $(sigreturn_OBJECTS) $(sigreturn_DEPENDENCIES) $(EXTRA_sigreturn_DEPENDENCIES)
+ @rm -f sigreturn$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
+
+sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES)
+ @rm -f sleep$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
+
+socketcall$(EXEEXT): $(socketcall_OBJECTS) $(socketcall_DEPENDENCIES) $(EXTRA_socketcall_DEPENDENCIES)
+ @rm -f socketcall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(socketcall_OBJECTS) $(socketcall_LDADD) $(LIBS)
+
+splice$(EXEEXT): $(splice_OBJECTS) $(splice_DEPENDENCIES) $(EXTRA_splice_DEPENDENCIES)
+ @rm -f splice$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(splice_OBJECTS) $(splice_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)
+
+stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES)
+ @rm -f stat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS)
+
+stat64$(EXEEXT): $(stat64_OBJECTS) $(stat64_DEPENDENCIES) $(EXTRA_stat64_DEPENDENCIES)
+ @rm -f stat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(stat64_OBJECTS) $(stat64_LDADD) $(LIBS)
+
+statfs$(EXEEXT): $(statfs_OBJECTS) $(statfs_DEPENDENCIES) $(EXTRA_statfs_DEPENDENCIES)
+ @rm -f statfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(statfs_OBJECTS) $(statfs_LDADD) $(LIBS)
+
+statfs64$(EXEEXT): $(statfs64_OBJECTS) $(statfs64_DEPENDENCIES) $(EXTRA_statfs64_DEPENDENCIES)
+ @rm -f statfs64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
+
+swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES)
+ @rm -f swap$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
+
+symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES)
+ @rm -f symlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
+
+symlinkat$(EXEEXT): $(symlinkat_OBJECTS) $(symlinkat_DEPENDENCIES) $(EXTRA_symlinkat_DEPENDENCIES)
+ @rm -f symlinkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(symlinkat_OBJECTS) $(symlinkat_LDADD) $(LIBS)
+
+sync$(EXEEXT): $(sync_OBJECTS) $(sync_DEPENDENCIES) $(EXTRA_sync_DEPENDENCIES)
+ @rm -f sync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sync_OBJECTS) $(sync_LDADD) $(LIBS)
+
+sync_file_range$(EXEEXT): $(sync_file_range_OBJECTS) $(sync_file_range_DEPENDENCIES) $(EXTRA_sync_file_range_DEPENDENCIES)
+ @rm -f sync_file_range$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sync_file_range_OBJECTS) $(sync_file_range_LDADD) $(LIBS)
+
+sync_file_range2$(EXEEXT): $(sync_file_range2_OBJECTS) $(sync_file_range2_DEPENDENCIES) $(EXTRA_sync_file_range2_DEPENDENCIES)
+ @rm -f sync_file_range2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sync_file_range2_OBJECTS) $(sync_file_range2_LDADD) $(LIBS)
+
+sysinfo$(EXEEXT): $(sysinfo_OBJECTS) $(sysinfo_DEPENDENCIES) $(EXTRA_sysinfo_DEPENDENCIES)
+ @rm -f sysinfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sysinfo_OBJECTS) $(sysinfo_LDADD) $(LIBS)
+
+syslog$(EXEEXT): $(syslog_OBJECTS) $(syslog_DEPENDENCIES) $(EXTRA_syslog_DEPENDENCIES)
+ @rm -f syslog$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(syslog_OBJECTS) $(syslog_LDADD) $(LIBS)
+
+tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES) $(EXTRA_tee_DEPENDENCIES)
+ @rm -f tee$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS)
+
+threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES)
+ @rm -f threads-execve$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS)
+
+time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES)
+ @rm -f time$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
+
+timer_create$(EXEEXT): $(timer_create_OBJECTS) $(timer_create_DEPENDENCIES) $(EXTRA_timer_create_DEPENDENCIES)
+ @rm -f timer_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(timer_create_OBJECTS) $(timer_create_LDADD) $(LIBS)
+
+timer_xettime$(EXEEXT): $(timer_xettime_OBJECTS) $(timer_xettime_DEPENDENCIES) $(EXTRA_timer_xettime_DEPENDENCIES)
+ @rm -f timer_xettime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(timer_xettime_OBJECTS) $(timer_xettime_LDADD) $(LIBS)
+
+timerfd_xettime$(EXEEXT): $(timerfd_xettime_OBJECTS) $(timerfd_xettime_DEPENDENCIES) $(EXTRA_timerfd_xettime_DEPENDENCIES)
+ @rm -f timerfd_xettime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(timerfd_xettime_OBJECTS) $(timerfd_xettime_LDADD) $(LIBS)
+
+times$(EXEEXT): $(times_OBJECTS) $(times_DEPENDENCIES) $(EXTRA_times_DEPENDENCIES)
+ @rm -f times$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(times_OBJECTS) $(times_LDADD) $(LIBS)
+
+times-fail$(EXEEXT): $(times_fail_OBJECTS) $(times_fail_DEPENDENCIES) $(EXTRA_times_fail_DEPENDENCIES)
+ @rm -f times-fail$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS)
+
+truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES)
+ @rm -f truncate$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS)
+
+truncate64$(EXEEXT): $(truncate64_OBJECTS) $(truncate64_DEPENDENCIES) $(EXTRA_truncate64_DEPENDENCIES)
+ @rm -f truncate64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(truncate64_OBJECTS) $(truncate64_LDADD) $(LIBS)
+
+ugetrlimit$(EXEEXT): $(ugetrlimit_OBJECTS) $(ugetrlimit_DEPENDENCIES) $(EXTRA_ugetrlimit_DEPENDENCIES)
+ @rm -f ugetrlimit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ugetrlimit_OBJECTS) $(ugetrlimit_LDADD) $(LIBS)
+
+uio$(EXEEXT): $(uio_OBJECTS) $(uio_DEPENDENCIES) $(EXTRA_uio_DEPENDENCIES)
+ @rm -f uio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(uio_OBJECTS) $(uio_LDADD) $(LIBS)
+
+umask$(EXEEXT): $(umask_OBJECTS) $(umask_DEPENDENCIES) $(EXTRA_umask_DEPENDENCIES)
+ @rm -f umask$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umask_OBJECTS) $(umask_LDADD) $(LIBS)
+
+umount$(EXEEXT): $(umount_OBJECTS) $(umount_DEPENDENCIES) $(EXTRA_umount_DEPENDENCIES)
+ @rm -f umount$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umount_OBJECTS) $(umount_LDADD) $(LIBS)
+
+umount2$(EXEEXT): $(umount2_OBJECTS) $(umount2_DEPENDENCIES) $(EXTRA_umount2_DEPENDENCIES)
+ @rm -f umount2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umount2_OBJECTS) $(umount2_LDADD) $(LIBS)
+
+umoven-illptr$(EXEEXT): $(umoven_illptr_OBJECTS) $(umoven_illptr_DEPENDENCIES) $(EXTRA_umoven_illptr_DEPENDENCIES)
+ @rm -f umoven-illptr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umoven_illptr_OBJECTS) $(umoven_illptr_LDADD) $(LIBS)
+
+umovestr$(EXEEXT): $(umovestr_OBJECTS) $(umovestr_DEPENDENCIES) $(EXTRA_umovestr_DEPENDENCIES)
+ @rm -f umovestr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr_OBJECTS) $(umovestr_LDADD) $(LIBS)
+
+umovestr-illptr$(EXEEXT): $(umovestr_illptr_OBJECTS) $(umovestr_illptr_DEPENDENCIES) $(EXTRA_umovestr_illptr_DEPENDENCIES)
+ @rm -f umovestr-illptr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr_illptr_OBJECTS) $(umovestr_illptr_LDADD) $(LIBS)
+
+umovestr2$(EXEEXT): $(umovestr2_OBJECTS) $(umovestr2_DEPENDENCIES) $(EXTRA_umovestr2_DEPENDENCIES)
+ @rm -f umovestr2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr2_OBJECTS) $(umovestr2_LDADD) $(LIBS)
+
+umovestr3$(EXEEXT): $(umovestr3_OBJECTS) $(umovestr3_DEPENDENCIES) $(EXTRA_umovestr3_DEPENDENCIES)
+ @rm -f umovestr3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr3_OBJECTS) $(umovestr3_LDADD) $(LIBS)
+
+uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES) $(EXTRA_uname_DEPENDENCIES)
+ @rm -f uname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(uname_OBJECTS) $(uname_LDADD) $(LIBS)
+
+unix-pair-send-recv$(EXEEXT): $(unix_pair_send_recv_OBJECTS) $(unix_pair_send_recv_DEPENDENCIES) $(EXTRA_unix_pair_send_recv_DEPENDENCIES)
+ @rm -f unix-pair-send-recv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unix_pair_send_recv_OBJECTS) $(unix_pair_send_recv_LDADD) $(LIBS)
+
+unix-pair-sendto-recvfrom$(EXEEXT): $(unix_pair_sendto_recvfrom_OBJECTS) $(unix_pair_sendto_recvfrom_DEPENDENCIES) $(EXTRA_unix_pair_sendto_recvfrom_DEPENDENCIES)
+ @rm -f unix-pair-sendto-recvfrom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unix_pair_sendto_recvfrom_OBJECTS) $(unix_pair_sendto_recvfrom_LDADD) $(LIBS)
+
+unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES) $(EXTRA_unlink_DEPENDENCIES)
+ @rm -f unlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS)
+
+unlinkat$(EXEEXT): $(unlinkat_OBJECTS) $(unlinkat_DEPENDENCIES) $(EXTRA_unlinkat_DEPENDENCIES)
+ @rm -f unlinkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unlinkat_OBJECTS) $(unlinkat_LDADD) $(LIBS)
+
+unshare$(EXEEXT): $(unshare_OBJECTS) $(unshare_DEPENDENCIES) $(EXTRA_unshare_DEPENDENCIES)
+ @rm -f unshare$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unshare_OBJECTS) $(unshare_LDADD) $(LIBS)
+
+userfaultfd$(EXEEXT): $(userfaultfd_OBJECTS) $(userfaultfd_DEPENDENCIES) $(EXTRA_userfaultfd_DEPENDENCIES)
+ @rm -f userfaultfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(userfaultfd_OBJECTS) $(userfaultfd_LDADD) $(LIBS)
+
+ustat$(EXEEXT): $(ustat_OBJECTS) $(ustat_DEPENDENCIES) $(EXTRA_ustat_DEPENDENCIES)
+ @rm -f ustat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ustat_OBJECTS) $(ustat_LDADD) $(LIBS)
+
+utime$(EXEEXT): $(utime_OBJECTS) $(utime_DEPENDENCIES) $(EXTRA_utime_DEPENDENCIES)
+ @rm -f utime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(utime_OBJECTS) $(utime_LDADD) $(LIBS)
+
+utimensat$(EXEEXT): $(utimensat_OBJECTS) $(utimensat_DEPENDENCIES) $(EXTRA_utimensat_DEPENDENCIES)
+ @rm -f utimensat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(utimensat_OBJECTS) $(utimensat_LDADD) $(LIBS)
+
+utimes$(EXEEXT): $(utimes_OBJECTS) $(utimes_DEPENDENCIES) $(EXTRA_utimes_DEPENDENCIES)
+ @rm -f utimes$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(utimes_OBJECTS) $(utimes_LDADD) $(LIBS)
+
+vfork-f$(EXEEXT): $(vfork_f_OBJECTS) $(vfork_f_DEPENDENCIES) $(EXTRA_vfork_f_DEPENDENCIES)
+ @rm -f vfork-f$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(vfork_f_OBJECTS) $(vfork_f_LDADD) $(LIBS)
+
+vhangup$(EXEEXT): $(vhangup_OBJECTS) $(vhangup_DEPENDENCIES) $(EXTRA_vhangup_DEPENDENCIES)
+ @rm -f vhangup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(vhangup_OBJECTS) $(vhangup_LDADD) $(LIBS)
+
+vmsplice$(EXEEXT): $(vmsplice_OBJECTS) $(vmsplice_DEPENDENCIES) $(EXTRA_vmsplice_DEPENDENCIES)
+ @rm -f vmsplice$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(vmsplice_OBJECTS) $(vmsplice_LDADD) $(LIBS)
+
+wait4$(EXEEXT): $(wait4_OBJECTS) $(wait4_DEPENDENCIES) $(EXTRA_wait4_DEPENDENCIES)
+ @rm -f wait4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(wait4_OBJECTS) $(wait4_LDADD) $(LIBS)
+
+wait4-v$(EXEEXT): $(wait4_v_OBJECTS) $(wait4_v_DEPENDENCIES) $(EXTRA_wait4_v_DEPENDENCIES)
+ @rm -f wait4-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(wait4_v_OBJECTS) $(wait4_v_LDADD) $(LIBS)
+
+waitid$(EXEEXT): $(waitid_OBJECTS) $(waitid_DEPENDENCIES) $(EXTRA_waitid_DEPENDENCIES)
+ @rm -f waitid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(waitid_OBJECTS) $(waitid_LDADD) $(LIBS)
+
+waitid-v$(EXEEXT): $(waitid_v_OBJECTS) $(waitid_v_DEPENDENCIES) $(EXTRA_waitid_v_DEPENDENCIES)
+ @rm -f waitid-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(waitid_v_OBJECTS) $(waitid_v_LDADD) $(LIBS)
+
+waitpid$(EXEEXT): $(waitpid_OBJECTS) $(waitpid_DEPENDENCIES) $(EXTRA_waitpid_DEPENDENCIES)
+ @rm -f waitpid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(waitpid_OBJECTS) $(waitpid_LDADD) $(LIBS)
+
+xattr$(EXEEXT): $(xattr_OBJECTS) $(xattr_DEPENDENCIES) $(EXTRA_xattr_DEPENDENCIES)
+ @rm -f xattr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xattr_OBJECTS) $(xattr_LDADD) $(LIBS)
+
+xattr-strings$(EXEEXT): $(xattr_strings_OBJECTS) $(xattr_strings_DEPENDENCIES) $(EXTRA_xattr_strings_DEPENDENCIES)
+ @rm -f xattr-strings$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xattr_strings_OBJECTS) $(xattr_strings_LDADD) $(LIBS)
+
+xet_robust_list$(EXEEXT): $(xet_robust_list_OBJECTS) $(xet_robust_list_DEPENDENCIES) $(EXTRA_xet_robust_list_DEPENDENCIES)
+ @rm -f xet_robust_list$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
+
+xetitimer$(EXEEXT): $(xetitimer_OBJECTS) $(xetitimer_DEPENDENCIES) $(EXTRA_xetitimer_DEPENDENCIES)
+ @rm -f xetitimer$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xetitimer_OBJECTS) $(xetitimer_LDADD) $(LIBS)
+
+xetpgid$(EXEEXT): $(xetpgid_OBJECTS) $(xetpgid_DEPENDENCIES) $(EXTRA_xetpgid_DEPENDENCIES)
+ @rm -f xetpgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS)
+
+xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES)
+ @rm -f xetpriority$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS)
+
+xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES)
+ @rm -f xettimeofday$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/_newselect.Po
+include ./$(DEPDIR)/accept.Po
+include ./$(DEPDIR)/accept4.Po
+include ./$(DEPDIR)/access.Po
+include ./$(DEPDIR)/acct.Po
+include ./$(DEPDIR)/add_key.Po
+include ./$(DEPDIR)/adjtimex.Po
+include ./$(DEPDIR)/aio.Po
+include ./$(DEPDIR)/alarm.Po
+include ./$(DEPDIR)/answer.Po
+include ./$(DEPDIR)/attach-f-p-cmd.Po
+include ./$(DEPDIR)/attach-f-p.Po
+include ./$(DEPDIR)/attach-p-cmd-cmd.Po
+include ./$(DEPDIR)/attach-p-cmd-p.Po
+include ./$(DEPDIR)/bpf.Po
+include ./$(DEPDIR)/brk.Po
+include ./$(DEPDIR)/btrfs.Po
+include ./$(DEPDIR)/caps-abbrev.Po
+include ./$(DEPDIR)/caps.Po
+include ./$(DEPDIR)/chmod.Po
+include ./$(DEPDIR)/chown.Po
+include ./$(DEPDIR)/chown32.Po
+include ./$(DEPDIR)/chroot.Po
+include ./$(DEPDIR)/clock_adjtime.Po
+include ./$(DEPDIR)/clock_nanosleep.Po
+include ./$(DEPDIR)/clock_xettime.Po
+include ./$(DEPDIR)/copy_file_range.Po
+include ./$(DEPDIR)/count-f.Po
+include ./$(DEPDIR)/creat.Po
+include ./$(DEPDIR)/delete_module.Po
+include ./$(DEPDIR)/dup.Po
+include ./$(DEPDIR)/dup2.Po
+include ./$(DEPDIR)/dup3.Po
+include ./$(DEPDIR)/epoll_create.Po
+include ./$(DEPDIR)/epoll_create1.Po
+include ./$(DEPDIR)/epoll_ctl.Po
+include ./$(DEPDIR)/epoll_pwait.Po
+include ./$(DEPDIR)/epoll_wait.Po
+include ./$(DEPDIR)/erestartsys.Po
+include ./$(DEPDIR)/eventfd.Po
+include ./$(DEPDIR)/execve-v.Po
+include ./$(DEPDIR)/execve.Po
+include ./$(DEPDIR)/execveat-v.Po
+include ./$(DEPDIR)/execveat.Po
+include ./$(DEPDIR)/faccessat.Po
+include ./$(DEPDIR)/fadvise64.Po
+include ./$(DEPDIR)/fadvise64_64.Po
+include ./$(DEPDIR)/fallocate.Po
+include ./$(DEPDIR)/fanotify_init.Po
+include ./$(DEPDIR)/fanotify_mark.Po
+include ./$(DEPDIR)/fchdir.Po
+include ./$(DEPDIR)/fchmod.Po
+include ./$(DEPDIR)/fchmodat.Po
+include ./$(DEPDIR)/fchown.Po
+include ./$(DEPDIR)/fchown32.Po
+include ./$(DEPDIR)/fchownat.Po
+include ./$(DEPDIR)/fcntl.Po
+include ./$(DEPDIR)/fcntl64.Po
+include ./$(DEPDIR)/fdatasync.Po
+include ./$(DEPDIR)/file_handle.Po
+include ./$(DEPDIR)/file_ioctl.Po
+include ./$(DEPDIR)/filter-unavailable.Po
+include ./$(DEPDIR)/finit_module.Po
+include ./$(DEPDIR)/flock.Po
+include ./$(DEPDIR)/fork-f.Po
+include ./$(DEPDIR)/fstat.Po
+include ./$(DEPDIR)/fstat64-fstat64.Po
+include ./$(DEPDIR)/fstatat64-fstatat64.Po
+include ./$(DEPDIR)/fstatfs.Po
+include ./$(DEPDIR)/fstatfs64.Po
+include ./$(DEPDIR)/fsync.Po
+include ./$(DEPDIR)/ftruncate.Po
+include ./$(DEPDIR)/ftruncate64-ftruncate64.Po
+include ./$(DEPDIR)/futex.Po
+include ./$(DEPDIR)/futimesat.Po
+include ./$(DEPDIR)/get_mempolicy.Po
+include ./$(DEPDIR)/getcpu.Po
+include ./$(DEPDIR)/getcwd.Po
+include ./$(DEPDIR)/getdents.Po
+include ./$(DEPDIR)/getdents64.Po
+include ./$(DEPDIR)/getegid.Po
+include ./$(DEPDIR)/getegid32.Po
+include ./$(DEPDIR)/geteuid.Po
+include ./$(DEPDIR)/geteuid32.Po
+include ./$(DEPDIR)/getgid.Po
+include ./$(DEPDIR)/getgid32.Po
+include ./$(DEPDIR)/getgroups.Po
+include ./$(DEPDIR)/getgroups32.Po
+include ./$(DEPDIR)/getpeername.Po
+include ./$(DEPDIR)/getpgrp.Po
+include ./$(DEPDIR)/getrandom.Po
+include ./$(DEPDIR)/getresgid.Po
+include ./$(DEPDIR)/getresgid32.Po
+include ./$(DEPDIR)/getresuid.Po
+include ./$(DEPDIR)/getresuid32.Po
+include ./$(DEPDIR)/getrlimit.Po
+include ./$(DEPDIR)/getrusage.Po
+include ./$(DEPDIR)/getsid.Po
+include ./$(DEPDIR)/getsockname.Po
+include ./$(DEPDIR)/getuid.Po
+include ./$(DEPDIR)/getuid32.Po
+include ./$(DEPDIR)/getxxid.Po
+include ./$(DEPDIR)/inet-cmsg.Po
+include ./$(DEPDIR)/init_module.Po
+include ./$(DEPDIR)/inotify.Po
+include ./$(DEPDIR)/inotify_init1.Po
+include ./$(DEPDIR)/ioctl.Po
+include ./$(DEPDIR)/ioctl_block.Po
+include ./$(DEPDIR)/ioctl_dm-v.Po
+include ./$(DEPDIR)/ioctl_dm.Po
+include ./$(DEPDIR)/ioctl_evdev-v.Po
+include ./$(DEPDIR)/ioctl_evdev.Po
+include ./$(DEPDIR)/ioctl_loop-nv.Po
+include ./$(DEPDIR)/ioctl_loop-v.Po
+include ./$(DEPDIR)/ioctl_loop.Po
+include ./$(DEPDIR)/ioctl_mtd.Po
+include ./$(DEPDIR)/ioctl_rtc-v.Po
+include ./$(DEPDIR)/ioctl_rtc.Po
+include ./$(DEPDIR)/ioctl_scsi.Po
+include ./$(DEPDIR)/ioctl_sg_io_v3.Po
+include ./$(DEPDIR)/ioctl_sg_io_v4.Po
+include ./$(DEPDIR)/ioctl_sock_gifconf.Po
+include ./$(DEPDIR)/ioctl_uffdio.Po
+include ./$(DEPDIR)/ioctl_v4l2.Po
+include ./$(DEPDIR)/ioperm.Po
+include ./$(DEPDIR)/iopl.Po
+include ./$(DEPDIR)/ioprio.Po
+include ./$(DEPDIR)/ip_mreq.Po
+include ./$(DEPDIR)/ipc.Po
+include ./$(DEPDIR)/ipc_msg.Po
+include ./$(DEPDIR)/ipc_msgbuf.Po
+include ./$(DEPDIR)/ipc_sem.Po
+include ./$(DEPDIR)/ipc_shm.Po
+include ./$(DEPDIR)/kcmp.Po
+include ./$(DEPDIR)/kexec_file_load.Po
+include ./$(DEPDIR)/kexec_load.Po
+include ./$(DEPDIR)/keyctl.Po
+include ./$(DEPDIR)/kill.Po
+include ./$(DEPDIR)/ksysent.Po
+include ./$(DEPDIR)/lchown.Po
+include ./$(DEPDIR)/lchown32.Po
+include ./$(DEPDIR)/libtests_a-errno2name.Po
+include ./$(DEPDIR)/libtests_a-error_msg.Po
+include ./$(DEPDIR)/libtests_a-fill_memory.Po
+include ./$(DEPDIR)/libtests_a-get_page_size.Po
+include ./$(DEPDIR)/libtests_a-hexdump_strdup.Po
+include ./$(DEPDIR)/libtests_a-hexquote_strndup.Po
+include ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
+include ./$(DEPDIR)/libtests_a-libmmsg.Po
+include ./$(DEPDIR)/libtests_a-libsocketcall.Po
+include ./$(DEPDIR)/libtests_a-overflowuid.Po
+include ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
+include ./$(DEPDIR)/libtests_a-print_quoted_string.Po
+include ./$(DEPDIR)/libtests_a-printflags.Po
+include ./$(DEPDIR)/libtests_a-printxval.Po
+include ./$(DEPDIR)/libtests_a-signal2name.Po
+include ./$(DEPDIR)/libtests_a-sprintrc.Po
+include ./$(DEPDIR)/libtests_a-tail_alloc.Po
+include ./$(DEPDIR)/libtests_a-tprintf.Po
+include ./$(DEPDIR)/link.Po
+include ./$(DEPDIR)/linkat.Po
+include ./$(DEPDIR)/llseek.Po
+include ./$(DEPDIR)/lookup_dcookie.Po
+include ./$(DEPDIR)/lseek.Po
+include ./$(DEPDIR)/lstat.Po
+include ./$(DEPDIR)/lstat64-lstat64.Po
+include ./$(DEPDIR)/mbind.Po
+include ./$(DEPDIR)/membarrier.Po
+include ./$(DEPDIR)/memfd_create.Po
+include ./$(DEPDIR)/migrate_pages.Po
+include ./$(DEPDIR)/mincore.Po
+include ./$(DEPDIR)/mkdir.Po
+include ./$(DEPDIR)/mkdirat.Po
+include ./$(DEPDIR)/mknod.Po
+include ./$(DEPDIR)/mknodat.Po
+include ./$(DEPDIR)/mlock.Po
+include ./$(DEPDIR)/mlock2.Po
+include ./$(DEPDIR)/mlockall.Po
+include ./$(DEPDIR)/mmap.Po
+include ./$(DEPDIR)/mmap64-mmap64.Po
+include ./$(DEPDIR)/mmsg-silent.Po
+include ./$(DEPDIR)/mmsg.Po
+include ./$(DEPDIR)/mmsg_name-v.Po
+include ./$(DEPDIR)/mmsg_name.Po
+include ./$(DEPDIR)/mount.Po
+include ./$(DEPDIR)/move_pages.Po
+include ./$(DEPDIR)/mq.Po
+include ./$(DEPDIR)/mq_sendrecv-read.Po
+include ./$(DEPDIR)/mq_sendrecv-write.Po
+include ./$(DEPDIR)/mq_sendrecv.Po
+include ./$(DEPDIR)/msg_control-v.Po
+include ./$(DEPDIR)/msg_control.Po
+include ./$(DEPDIR)/msg_name.Po
+include ./$(DEPDIR)/munlockall.Po
+include ./$(DEPDIR)/nanosleep.Po
+include ./$(DEPDIR)/net-accept-connect.Po
+include ./$(DEPDIR)/net-icmp_filter.Po
+include ./$(DEPDIR)/net-sockaddr.Po
+include ./$(DEPDIR)/net-y-unix.Po
+include ./$(DEPDIR)/net-yy-inet.Po
+include ./$(DEPDIR)/net-yy-netlink.Po
+include ./$(DEPDIR)/net-yy-unix.Po
+include ./$(DEPDIR)/netlink_inet_diag.Po
+include ./$(DEPDIR)/netlink_netlink_diag.Po
+include ./$(DEPDIR)/netlink_protocol.Po
+include ./$(DEPDIR)/netlink_unix_diag.Po
+include ./$(DEPDIR)/newfstatat-newfstatat.Po
+include ./$(DEPDIR)/nsyscalls.Po
+include ./$(DEPDIR)/old_mmap.Po
+include ./$(DEPDIR)/oldfstat.Po
+include ./$(DEPDIR)/oldlstat.Po
+include ./$(DEPDIR)/oldselect.Po
+include ./$(DEPDIR)/oldstat.Po
+include ./$(DEPDIR)/open.Po
+include ./$(DEPDIR)/openat.Po
+include ./$(DEPDIR)/pause.Po
+include ./$(DEPDIR)/pc.Po
+include ./$(DEPDIR)/perf_event_open.Po
+include ./$(DEPDIR)/perf_event_open_nonverbose.Po
+include ./$(DEPDIR)/perf_event_open_unabbrev.Po
+include ./$(DEPDIR)/personality.Po
+include ./$(DEPDIR)/pipe.Po
+include ./$(DEPDIR)/pipe2.Po
+include ./$(DEPDIR)/pkey_alloc.Po
+include ./$(DEPDIR)/pkey_free.Po
+include ./$(DEPDIR)/pkey_mprotect.Po
+include ./$(DEPDIR)/poll.Po
+include ./$(DEPDIR)/ppoll.Po
+include ./$(DEPDIR)/prctl-arg2-intptr.Po
+include ./$(DEPDIR)/prctl-dumpable.Po
+include ./$(DEPDIR)/prctl-name.Po
+include ./$(DEPDIR)/prctl-no-args.Po
+include ./$(DEPDIR)/prctl-pdeathsig.Po
+include ./$(DEPDIR)/prctl-seccomp-filter-v.Po
+include ./$(DEPDIR)/prctl-seccomp-strict.Po
+include ./$(DEPDIR)/prctl-securebits.Po
+include ./$(DEPDIR)/prctl-tid_address.Po
+include ./$(DEPDIR)/prctl-tsc.Po
+include ./$(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po
+include ./$(DEPDIR)/preadv-preadv.Po
+include ./$(DEPDIR)/preadv2-pwritev2.Po
+include ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
+include ./$(DEPDIR)/print_maxfd.Po
+include ./$(DEPDIR)/printstr.Po
+include ./$(DEPDIR)/prlimit64.Po
+include ./$(DEPDIR)/process_vm_readv.Po
+include ./$(DEPDIR)/process_vm_writev.Po
+include ./$(DEPDIR)/pselect6.Po
+include ./$(DEPDIR)/ptrace.Po
+include ./$(DEPDIR)/pwritev-pwritev.Po
+include ./$(DEPDIR)/qual_fault.Po
+include ./$(DEPDIR)/qual_inject-error-signal.Po
+include ./$(DEPDIR)/qual_inject-retval.Po
+include ./$(DEPDIR)/qual_inject-signal.Po
+include ./$(DEPDIR)/qual_signal.Po
+include ./$(DEPDIR)/quotactl-v.Po
+include ./$(DEPDIR)/quotactl-xfs-v.Po
+include ./$(DEPDIR)/quotactl-xfs.Po
+include ./$(DEPDIR)/quotactl.Po
+include ./$(DEPDIR)/read-write.Po
+include ./$(DEPDIR)/readahead.Po
+include ./$(DEPDIR)/readdir.Po
+include ./$(DEPDIR)/readlink.Po
+include ./$(DEPDIR)/readlinkat.Po
+include ./$(DEPDIR)/readv.Po
+include ./$(DEPDIR)/reboot.Po
+include ./$(DEPDIR)/recvfrom.Po
+include ./$(DEPDIR)/recvmmsg-timeout.Po
+include ./$(DEPDIR)/recvmsg.Po
+include ./$(DEPDIR)/redirect-fds.Po
+include ./$(DEPDIR)/remap_file_pages.Po
+include ./$(DEPDIR)/rename.Po
+include ./$(DEPDIR)/renameat.Po
+include ./$(DEPDIR)/renameat2.Po
+include ./$(DEPDIR)/request_key.Po
+include ./$(DEPDIR)/restart_syscall.Po
+include ./$(DEPDIR)/rmdir.Po
+include ./$(DEPDIR)/rt_sigpending.Po
+include ./$(DEPDIR)/rt_sigprocmask.Po
+include ./$(DEPDIR)/rt_sigqueueinfo.Po
+include ./$(DEPDIR)/rt_sigsuspend.Po
+include ./$(DEPDIR)/rt_sigtimedwait.Po
+include ./$(DEPDIR)/rt_tgsigqueueinfo.Po
+include ./$(DEPDIR)/sched_get_priority_mxx.Po
+include ./$(DEPDIR)/sched_rr_get_interval.Po
+include ./$(DEPDIR)/sched_xetaffinity.Po
+include ./$(DEPDIR)/sched_xetattr.Po
+include ./$(DEPDIR)/sched_xetparam.Po
+include ./$(DEPDIR)/sched_xetscheduler.Po
+include ./$(DEPDIR)/sched_yield.Po
+include ./$(DEPDIR)/scm_rights.Po
+include ./$(DEPDIR)/seccomp-filter-v.Po
+include ./$(DEPDIR)/seccomp-filter.Po
+include ./$(DEPDIR)/seccomp-strict.Po
+include ./$(DEPDIR)/select.Po
+include ./$(DEPDIR)/semop.Po
+include ./$(DEPDIR)/sendfile.Po
+include ./$(DEPDIR)/sendfile64.Po
+include ./$(DEPDIR)/set_mempolicy.Po
+include ./$(DEPDIR)/set_ptracer_any.Po
+include ./$(DEPDIR)/setdomainname.Po
+include ./$(DEPDIR)/setfsgid.Po
+include ./$(DEPDIR)/setfsgid32.Po
+include ./$(DEPDIR)/setfsuid.Po
+include ./$(DEPDIR)/setfsuid32.Po
+include ./$(DEPDIR)/setgid.Po
+include ./$(DEPDIR)/setgid32.Po
+include ./$(DEPDIR)/setgroups.Po
+include ./$(DEPDIR)/setgroups32.Po
+include ./$(DEPDIR)/sethostname.Po
+include ./$(DEPDIR)/setns.Po
+include ./$(DEPDIR)/setregid.Po
+include ./$(DEPDIR)/setregid32.Po
+include ./$(DEPDIR)/setresgid.Po
+include ./$(DEPDIR)/setresgid32.Po
+include ./$(DEPDIR)/setresuid.Po
+include ./$(DEPDIR)/setresuid32.Po
+include ./$(DEPDIR)/setreuid.Po
+include ./$(DEPDIR)/setreuid32.Po
+include ./$(DEPDIR)/setrlimit.Po
+include ./$(DEPDIR)/setuid.Po
+include ./$(DEPDIR)/setuid32.Po
+include ./$(DEPDIR)/shmxt.Po
+include ./$(DEPDIR)/shutdown.Po
+include ./$(DEPDIR)/sigaction.Po
+include ./$(DEPDIR)/sigaltstack.Po
+include ./$(DEPDIR)/siginfo.Po
+include ./$(DEPDIR)/signal_receive.Po
+include ./$(DEPDIR)/signalfd4.Po
+include ./$(DEPDIR)/sigreturn.Po
+include ./$(DEPDIR)/sleep.Po
+include ./$(DEPDIR)/socketcall.Po
+include ./$(DEPDIR)/splice.Po
+include ./$(DEPDIR)/stack-fcall-0.Po
+include ./$(DEPDIR)/stack-fcall-1.Po
+include ./$(DEPDIR)/stack-fcall-2.Po
+include ./$(DEPDIR)/stack-fcall-3.Po
+include ./$(DEPDIR)/stack-fcall.Po
+include ./$(DEPDIR)/stat.Po
+include ./$(DEPDIR)/stat64-stat64.Po
+include ./$(DEPDIR)/statfs-statfs.Po
+include ./$(DEPDIR)/statfs64.Po
+include ./$(DEPDIR)/swap.Po
+include ./$(DEPDIR)/symlink.Po
+include ./$(DEPDIR)/symlinkat.Po
+include ./$(DEPDIR)/sync.Po
+include ./$(DEPDIR)/sync_file_range.Po
+include ./$(DEPDIR)/sync_file_range2.Po
+include ./$(DEPDIR)/sysinfo.Po
+include ./$(DEPDIR)/syslog.Po
+include ./$(DEPDIR)/tee.Po
+include ./$(DEPDIR)/threads-execve.Po
+include ./$(DEPDIR)/time.Po
+include ./$(DEPDIR)/timer_create.Po
+include ./$(DEPDIR)/timer_xettime.Po
+include ./$(DEPDIR)/timerfd_xettime.Po
+include ./$(DEPDIR)/times-fail.Po
+include ./$(DEPDIR)/times.Po
+include ./$(DEPDIR)/truncate.Po
+include ./$(DEPDIR)/truncate64-truncate64.Po
+include ./$(DEPDIR)/ugetrlimit.Po
+include ./$(DEPDIR)/uio-uio.Po
+include ./$(DEPDIR)/umask.Po
+include ./$(DEPDIR)/umount.Po
+include ./$(DEPDIR)/umount2.Po
+include ./$(DEPDIR)/umoven-illptr.Po
+include ./$(DEPDIR)/umovestr-illptr.Po
+include ./$(DEPDIR)/umovestr.Po
+include ./$(DEPDIR)/umovestr2.Po
+include ./$(DEPDIR)/umovestr3.Po
+include ./$(DEPDIR)/uname.Po
+include ./$(DEPDIR)/unix-pair-send-recv.Po
+include ./$(DEPDIR)/unix-pair-sendto-recvfrom.Po
+include ./$(DEPDIR)/unlink.Po
+include ./$(DEPDIR)/unlinkat.Po
+include ./$(DEPDIR)/unshare.Po
+include ./$(DEPDIR)/userfaultfd.Po
+include ./$(DEPDIR)/ustat.Po
+include ./$(DEPDIR)/utime.Po
+include ./$(DEPDIR)/utimensat.Po
+include ./$(DEPDIR)/utimes.Po
+include ./$(DEPDIR)/vfork-f.Po
+include ./$(DEPDIR)/vhangup.Po
+include ./$(DEPDIR)/vmsplice.Po
+include ./$(DEPDIR)/wait4-v.Po
+include ./$(DEPDIR)/wait4.Po
+include ./$(DEPDIR)/waitid-v.Po
+include ./$(DEPDIR)/waitid.Po
+include ./$(DEPDIR)/waitpid.Po
+include ./$(DEPDIR)/xattr-strings.Po
+include ./$(DEPDIR)/xattr.Po
+include ./$(DEPDIR)/xet_robust_list.Po
+include ./$(DEPDIR)/xetitimer.Po
+include ./$(DEPDIR)/xetpgid.Po
+include ./$(DEPDIR)/xetpriority.Po
+include ./$(DEPDIR)/xettimeofday.Po
+
+.c.o:
+ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+libtests_a-errno2name.o: errno2name.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
+# $(AM_V_CC)source='errno2name.c' object='libtests_a-errno2name.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
+
+libtests_a-errno2name.obj: errno2name.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.obj -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.obj `if test -f 'errno2name.c'; then $(CYGPATH_W) 'errno2name.c'; else $(CYGPATH_W) '$(srcdir)/errno2name.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
+# $(AM_V_CC)source='errno2name.c' object='libtests_a-errno2name.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-errno2name.obj `if test -f 'errno2name.c'; then $(CYGPATH_W) 'errno2name.c'; else $(CYGPATH_W) '$(srcdir)/errno2name.c'; fi`
+
+libtests_a-error_msg.o: error_msg.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-error_msg.o -MD -MP -MF $(DEPDIR)/libtests_a-error_msg.Tpo -c -o libtests_a-error_msg.o `test -f 'error_msg.c' || echo '$(srcdir)/'`error_msg.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-error_msg.Tpo $(DEPDIR)/libtests_a-error_msg.Po
+# $(AM_V_CC)source='error_msg.c' object='libtests_a-error_msg.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-error_msg.o `test -f 'error_msg.c' || echo '$(srcdir)/'`error_msg.c
+
+libtests_a-error_msg.obj: error_msg.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-error_msg.obj -MD -MP -MF $(DEPDIR)/libtests_a-error_msg.Tpo -c -o libtests_a-error_msg.obj `if test -f 'error_msg.c'; then $(CYGPATH_W) 'error_msg.c'; else $(CYGPATH_W) '$(srcdir)/error_msg.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-error_msg.Tpo $(DEPDIR)/libtests_a-error_msg.Po
+# $(AM_V_CC)source='error_msg.c' object='libtests_a-error_msg.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-error_msg.obj `if test -f 'error_msg.c'; then $(CYGPATH_W) 'error_msg.c'; else $(CYGPATH_W) '$(srcdir)/error_msg.c'; fi`
+
+libtests_a-fill_memory.o: fill_memory.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-fill_memory.o -MD -MP -MF $(DEPDIR)/libtests_a-fill_memory.Tpo -c -o libtests_a-fill_memory.o `test -f 'fill_memory.c' || echo '$(srcdir)/'`fill_memory.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-fill_memory.Tpo $(DEPDIR)/libtests_a-fill_memory.Po
+# $(AM_V_CC)source='fill_memory.c' object='libtests_a-fill_memory.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-fill_memory.o `test -f 'fill_memory.c' || echo '$(srcdir)/'`fill_memory.c
+
+libtests_a-fill_memory.obj: fill_memory.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-fill_memory.obj -MD -MP -MF $(DEPDIR)/libtests_a-fill_memory.Tpo -c -o libtests_a-fill_memory.obj `if test -f 'fill_memory.c'; then $(CYGPATH_W) 'fill_memory.c'; else $(CYGPATH_W) '$(srcdir)/fill_memory.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-fill_memory.Tpo $(DEPDIR)/libtests_a-fill_memory.Po
+# $(AM_V_CC)source='fill_memory.c' object='libtests_a-fill_memory.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-fill_memory.obj `if test -f 'fill_memory.c'; then $(CYGPATH_W) 'fill_memory.c'; else $(CYGPATH_W) '$(srcdir)/fill_memory.c'; fi`
+
+libtests_a-get_page_size.o: get_page_size.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_page_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_page_size.Tpo -c -o libtests_a-get_page_size.o `test -f 'get_page_size.c' || echo '$(srcdir)/'`get_page_size.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_page_size.Tpo $(DEPDIR)/libtests_a-get_page_size.Po
+# $(AM_V_CC)source='get_page_size.c' object='libtests_a-get_page_size.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.o `test -f 'get_page_size.c' || echo '$(srcdir)/'`get_page_size.c
+
+libtests_a-get_page_size.obj: get_page_size.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_page_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_page_size.Tpo -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_page_size.Tpo $(DEPDIR)/libtests_a-get_page_size.Po
+# $(AM_V_CC)source='get_page_size.c' object='libtests_a-get_page_size.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
+
+libtests_a-hexdump_strdup.o: hexdump_strdup.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
+# $(AM_V_CC)source='hexdump_strdup.c' object='libtests_a-hexdump_strdup.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
+
+libtests_a-hexdump_strdup.obj: hexdump_strdup.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.obj -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.obj `if test -f 'hexdump_strdup.c'; then $(CYGPATH_W) 'hexdump_strdup.c'; else $(CYGPATH_W) '$(srcdir)/hexdump_strdup.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
+# $(AM_V_CC)source='hexdump_strdup.c' object='libtests_a-hexdump_strdup.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexdump_strdup.obj `if test -f 'hexdump_strdup.c'; then $(CYGPATH_W) 'hexdump_strdup.c'; else $(CYGPATH_W) '$(srcdir)/hexdump_strdup.c'; fi`
+
+libtests_a-hexquote_strndup.o: hexquote_strndup.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexquote_strndup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexquote_strndup.Tpo -c -o libtests_a-hexquote_strndup.o `test -f 'hexquote_strndup.c' || echo '$(srcdir)/'`hexquote_strndup.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexquote_strndup.Tpo $(DEPDIR)/libtests_a-hexquote_strndup.Po
+# $(AM_V_CC)source='hexquote_strndup.c' object='libtests_a-hexquote_strndup.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexquote_strndup.o `test -f 'hexquote_strndup.c' || echo '$(srcdir)/'`hexquote_strndup.c
+
+libtests_a-hexquote_strndup.obj: hexquote_strndup.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexquote_strndup.obj -MD -MP -MF $(DEPDIR)/libtests_a-hexquote_strndup.Tpo -c -o libtests_a-hexquote_strndup.obj `if test -f 'hexquote_strndup.c'; then $(CYGPATH_W) 'hexquote_strndup.c'; else $(CYGPATH_W) '$(srcdir)/hexquote_strndup.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexquote_strndup.Tpo $(DEPDIR)/libtests_a-hexquote_strndup.Po
+# $(AM_V_CC)source='hexquote_strndup.c' object='libtests_a-hexquote_strndup.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexquote_strndup.obj `if test -f 'hexquote_strndup.c'; then $(CYGPATH_W) 'hexquote_strndup.c'; else $(CYGPATH_W) '$(srcdir)/hexquote_strndup.c'; fi`
+
+libtests_a-inode_of_sockfd.o: inode_of_sockfd.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-inode_of_sockfd.o -MD -MP -MF $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo -c -o libtests_a-inode_of_sockfd.o `test -f 'inode_of_sockfd.c' || echo '$(srcdir)/'`inode_of_sockfd.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo $(DEPDIR)/libtests_a-inode_of_sockfd.Po
+# $(AM_V_CC)source='inode_of_sockfd.c' object='libtests_a-inode_of_sockfd.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.o `test -f 'inode_of_sockfd.c' || echo '$(srcdir)/'`inode_of_sockfd.c
+
+libtests_a-inode_of_sockfd.obj: inode_of_sockfd.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-inode_of_sockfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo $(DEPDIR)/libtests_a-inode_of_sockfd.Po
+# $(AM_V_CC)source='inode_of_sockfd.c' object='libtests_a-inode_of_sockfd.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi`
+
+libtests_a-libmmsg.o: libmmsg.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po
+# $(AM_V_CC)source='libmmsg.c' object='libtests_a-libmmsg.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c
+
+libtests_a-libmmsg.obj: libmmsg.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.obj -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.obj `if test -f 'libmmsg.c'; then $(CYGPATH_W) 'libmmsg.c'; else $(CYGPATH_W) '$(srcdir)/libmmsg.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po
+# $(AM_V_CC)source='libmmsg.c' object='libtests_a-libmmsg.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libmmsg.obj `if test -f 'libmmsg.c'; then $(CYGPATH_W) 'libmmsg.c'; else $(CYGPATH_W) '$(srcdir)/libmmsg.c'; fi`
+
+libtests_a-libsocketcall.o: libsocketcall.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libsocketcall.o -MD -MP -MF $(DEPDIR)/libtests_a-libsocketcall.Tpo -c -o libtests_a-libsocketcall.o `test -f 'libsocketcall.c' || echo '$(srcdir)/'`libsocketcall.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libsocketcall.Tpo $(DEPDIR)/libtests_a-libsocketcall.Po
+# $(AM_V_CC)source='libsocketcall.c' object='libtests_a-libsocketcall.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.o `test -f 'libsocketcall.c' || echo '$(srcdir)/'`libsocketcall.c
+
+libtests_a-libsocketcall.obj: libsocketcall.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libsocketcall.obj -MD -MP -MF $(DEPDIR)/libtests_a-libsocketcall.Tpo -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libsocketcall.Tpo $(DEPDIR)/libtests_a-libsocketcall.Po
+# $(AM_V_CC)source='libsocketcall.c' object='libtests_a-libsocketcall.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
+
+libtests_a-overflowuid.o: overflowuid.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.o -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
+# $(AM_V_CC)source='overflowuid.c' object='libtests_a-overflowuid.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
+
+libtests_a-overflowuid.obj: overflowuid.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.obj -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
+# $(AM_V_CC)source='overflowuid.c' object='libtests_a-overflowuid.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
+
+libtests_a-pipe_maxfd.o: pipe_maxfd.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
+# $(AM_V_CC)source='pipe_maxfd.c' object='libtests_a-pipe_maxfd.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
+
+libtests_a-pipe_maxfd.obj: pipe_maxfd.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.obj `if test -f 'pipe_maxfd.c'; then $(CYGPATH_W) 'pipe_maxfd.c'; else $(CYGPATH_W) '$(srcdir)/pipe_maxfd.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
+# $(AM_V_CC)source='pipe_maxfd.c' object='libtests_a-pipe_maxfd.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pipe_maxfd.obj `if test -f 'pipe_maxfd.c'; then $(CYGPATH_W) 'pipe_maxfd.c'; else $(CYGPATH_W) '$(srcdir)/pipe_maxfd.c'; fi`
+
+libtests_a-print_quoted_string.o: print_quoted_string.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_quoted_string.o -MD -MP -MF $(DEPDIR)/libtests_a-print_quoted_string.Tpo -c -o libtests_a-print_quoted_string.o `test -f 'print_quoted_string.c' || echo '$(srcdir)/'`print_quoted_string.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_quoted_string.Tpo $(DEPDIR)/libtests_a-print_quoted_string.Po
+# $(AM_V_CC)source='print_quoted_string.c' object='libtests_a-print_quoted_string.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.o `test -f 'print_quoted_string.c' || echo '$(srcdir)/'`print_quoted_string.c
+
+libtests_a-print_quoted_string.obj: print_quoted_string.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_quoted_string.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_quoted_string.Tpo -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_quoted_string.Tpo $(DEPDIR)/libtests_a-print_quoted_string.Po
+# $(AM_V_CC)source='print_quoted_string.c' object='libtests_a-print_quoted_string.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
+
+libtests_a-printflags.o: printflags.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
+# $(AM_V_CC)source='printflags.c' object='libtests_a-printflags.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
+
+libtests_a-printflags.obj: printflags.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.obj -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
+# $(AM_V_CC)source='printflags.c' object='libtests_a-printflags.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
+
+libtests_a-printxval.o: printxval.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
+# $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+
+libtests_a-printxval.obj: printxval.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
+# $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+
+libtests_a-signal2name.o: signal2name.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
+# $(AM_V_CC)source='signal2name.c' object='libtests_a-signal2name.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
+
+libtests_a-signal2name.obj: signal2name.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.obj -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
+# $(AM_V_CC)source='signal2name.c' object='libtests_a-signal2name.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
+
+libtests_a-sprintrc.o: sprintrc.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
+# $(AM_V_CC)source='sprintrc.c' object='libtests_a-sprintrc.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
+
+libtests_a-sprintrc.obj: sprintrc.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.obj -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
+# $(AM_V_CC)source='sprintrc.c' object='libtests_a-sprintrc.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
+
+libtests_a-tail_alloc.o: tail_alloc.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
+# $(AM_V_CC)source='tail_alloc.c' object='libtests_a-tail_alloc.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
+
+libtests_a-tail_alloc.obj: tail_alloc.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.obj -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.obj `if test -f 'tail_alloc.c'; then $(CYGPATH_W) 'tail_alloc.c'; else $(CYGPATH_W) '$(srcdir)/tail_alloc.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
+# $(AM_V_CC)source='tail_alloc.c' object='libtests_a-tail_alloc.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tail_alloc.obj `if test -f 'tail_alloc.c'; then $(CYGPATH_W) 'tail_alloc.c'; else $(CYGPATH_W) '$(srcdir)/tail_alloc.c'; fi`
+
+libtests_a-tprintf.o: tprintf.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tprintf.o -MD -MP -MF $(DEPDIR)/libtests_a-tprintf.Tpo -c -o libtests_a-tprintf.o `test -f 'tprintf.c' || echo '$(srcdir)/'`tprintf.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tprintf.Tpo $(DEPDIR)/libtests_a-tprintf.Po
+# $(AM_V_CC)source='tprintf.c' object='libtests_a-tprintf.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.o `test -f 'tprintf.c' || echo '$(srcdir)/'`tprintf.c
+
+libtests_a-tprintf.obj: tprintf.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tprintf.obj -MD -MP -MF $(DEPDIR)/libtests_a-tprintf.Tpo -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tprintf.Tpo $(DEPDIR)/libtests_a-tprintf.Po
+# $(AM_V_CC)source='tprintf.c' object='libtests_a-tprintf.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
+
+fstat64-fstat64.o: fstat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
+# $(AM_V_CC)source='fstat64.c' object='fstat64-fstat64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
+
+fstat64-fstat64.obj: fstat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.obj -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.obj `if test -f 'fstat64.c'; then $(CYGPATH_W) 'fstat64.c'; else $(CYGPATH_W) '$(srcdir)/fstat64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
+# $(AM_V_CC)source='fstat64.c' object='fstat64-fstat64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstat64-fstat64.obj `if test -f 'fstat64.c'; then $(CYGPATH_W) 'fstat64.c'; else $(CYGPATH_W) '$(srcdir)/fstat64.c'; fi`
+
+fstatat64-fstatat64.o: fstatat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstatat64-fstatat64.o -MD -MP -MF $(DEPDIR)/fstatat64-fstatat64.Tpo -c -o fstatat64-fstatat64.o `test -f 'fstatat64.c' || echo '$(srcdir)/'`fstatat64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/fstatat64-fstatat64.Tpo $(DEPDIR)/fstatat64-fstatat64.Po
+# $(AM_V_CC)source='fstatat64.c' object='fstatat64-fstatat64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstatat64-fstatat64.o `test -f 'fstatat64.c' || echo '$(srcdir)/'`fstatat64.c
+
+fstatat64-fstatat64.obj: fstatat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstatat64-fstatat64.obj -MD -MP -MF $(DEPDIR)/fstatat64-fstatat64.Tpo -c -o fstatat64-fstatat64.obj `if test -f 'fstatat64.c'; then $(CYGPATH_W) 'fstatat64.c'; else $(CYGPATH_W) '$(srcdir)/fstatat64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/fstatat64-fstatat64.Tpo $(DEPDIR)/fstatat64-fstatat64.Po
+# $(AM_V_CC)source='fstatat64.c' object='fstatat64-fstatat64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstatat64-fstatat64.obj `if test -f 'fstatat64.c'; then $(CYGPATH_W) 'fstatat64.c'; else $(CYGPATH_W) '$(srcdir)/fstatat64.c'; fi`
+
+ftruncate64-ftruncate64.o: ftruncate64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ftruncate64-ftruncate64.o -MD -MP -MF $(DEPDIR)/ftruncate64-ftruncate64.Tpo -c -o ftruncate64-ftruncate64.o `test -f 'ftruncate64.c' || echo '$(srcdir)/'`ftruncate64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/ftruncate64-ftruncate64.Tpo $(DEPDIR)/ftruncate64-ftruncate64.Po
+# $(AM_V_CC)source='ftruncate64.c' object='ftruncate64-ftruncate64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ftruncate64-ftruncate64.o `test -f 'ftruncate64.c' || echo '$(srcdir)/'`ftruncate64.c
+
+ftruncate64-ftruncate64.obj: ftruncate64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ftruncate64-ftruncate64.obj -MD -MP -MF $(DEPDIR)/ftruncate64-ftruncate64.Tpo -c -o ftruncate64-ftruncate64.obj `if test -f 'ftruncate64.c'; then $(CYGPATH_W) 'ftruncate64.c'; else $(CYGPATH_W) '$(srcdir)/ftruncate64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/ftruncate64-ftruncate64.Tpo $(DEPDIR)/ftruncate64-ftruncate64.Po
+# $(AM_V_CC)source='ftruncate64.c' object='ftruncate64-ftruncate64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ftruncate64-ftruncate64.obj `if test -f 'ftruncate64.c'; then $(CYGPATH_W) 'ftruncate64.c'; else $(CYGPATH_W) '$(srcdir)/ftruncate64.c'; fi`
+
+lstat64-lstat64.o: lstat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lstat64-lstat64.o -MD -MP -MF $(DEPDIR)/lstat64-lstat64.Tpo -c -o lstat64-lstat64.o `test -f 'lstat64.c' || echo '$(srcdir)/'`lstat64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/lstat64-lstat64.Tpo $(DEPDIR)/lstat64-lstat64.Po
+# $(AM_V_CC)source='lstat64.c' object='lstat64-lstat64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lstat64-lstat64.o `test -f 'lstat64.c' || echo '$(srcdir)/'`lstat64.c
+
+lstat64-lstat64.obj: lstat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lstat64-lstat64.obj -MD -MP -MF $(DEPDIR)/lstat64-lstat64.Tpo -c -o lstat64-lstat64.obj `if test -f 'lstat64.c'; then $(CYGPATH_W) 'lstat64.c'; else $(CYGPATH_W) '$(srcdir)/lstat64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/lstat64-lstat64.Tpo $(DEPDIR)/lstat64-lstat64.Po
+# $(AM_V_CC)source='lstat64.c' object='lstat64-lstat64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lstat64-lstat64.obj `if test -f 'lstat64.c'; then $(CYGPATH_W) 'lstat64.c'; else $(CYGPATH_W) '$(srcdir)/lstat64.c'; fi`
+
+mmap64-mmap64.o: mmap64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mmap64-mmap64.o -MD -MP -MF $(DEPDIR)/mmap64-mmap64.Tpo -c -o mmap64-mmap64.o `test -f 'mmap64.c' || echo '$(srcdir)/'`mmap64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/mmap64-mmap64.Tpo $(DEPDIR)/mmap64-mmap64.Po
+# $(AM_V_CC)source='mmap64.c' object='mmap64-mmap64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mmap64-mmap64.o `test -f 'mmap64.c' || echo '$(srcdir)/'`mmap64.c
+
+mmap64-mmap64.obj: mmap64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mmap64-mmap64.obj -MD -MP -MF $(DEPDIR)/mmap64-mmap64.Tpo -c -o mmap64-mmap64.obj `if test -f 'mmap64.c'; then $(CYGPATH_W) 'mmap64.c'; else $(CYGPATH_W) '$(srcdir)/mmap64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/mmap64-mmap64.Tpo $(DEPDIR)/mmap64-mmap64.Po
+# $(AM_V_CC)source='mmap64.c' object='mmap64-mmap64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mmap64-mmap64.obj `if test -f 'mmap64.c'; then $(CYGPATH_W) 'mmap64.c'; else $(CYGPATH_W) '$(srcdir)/mmap64.c'; fi`
+
+newfstatat-newfstatat.o: newfstatat.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT newfstatat-newfstatat.o -MD -MP -MF $(DEPDIR)/newfstatat-newfstatat.Tpo -c -o newfstatat-newfstatat.o `test -f 'newfstatat.c' || echo '$(srcdir)/'`newfstatat.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/newfstatat-newfstatat.Tpo $(DEPDIR)/newfstatat-newfstatat.Po
+# $(AM_V_CC)source='newfstatat.c' object='newfstatat-newfstatat.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o newfstatat-newfstatat.o `test -f 'newfstatat.c' || echo '$(srcdir)/'`newfstatat.c
+
+newfstatat-newfstatat.obj: newfstatat.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT newfstatat-newfstatat.obj -MD -MP -MF $(DEPDIR)/newfstatat-newfstatat.Tpo -c -o newfstatat-newfstatat.obj `if test -f 'newfstatat.c'; then $(CYGPATH_W) 'newfstatat.c'; else $(CYGPATH_W) '$(srcdir)/newfstatat.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/newfstatat-newfstatat.Tpo $(DEPDIR)/newfstatat-newfstatat.Po
+# $(AM_V_CC)source='newfstatat.c' object='newfstatat-newfstatat.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o newfstatat-newfstatat.obj `if test -f 'newfstatat.c'; then $(CYGPATH_W) 'newfstatat.c'; else $(CYGPATH_W) '$(srcdir)/newfstatat.c'; fi`
+
+pread64_pwrite64-pread64-pwrite64.o: pread64-pwrite64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pread64_pwrite64-pread64-pwrite64.o -MD -MP -MF $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo -c -o pread64_pwrite64-pread64-pwrite64.o `test -f 'pread64-pwrite64.c' || echo '$(srcdir)/'`pread64-pwrite64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po
+# $(AM_V_CC)source='pread64-pwrite64.c' object='pread64_pwrite64-pread64-pwrite64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pread64_pwrite64-pread64-pwrite64.o `test -f 'pread64-pwrite64.c' || echo '$(srcdir)/'`pread64-pwrite64.c
+
+pread64_pwrite64-pread64-pwrite64.obj: pread64-pwrite64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pread64_pwrite64-pread64-pwrite64.obj -MD -MP -MF $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo -c -o pread64_pwrite64-pread64-pwrite64.obj `if test -f 'pread64-pwrite64.c'; then $(CYGPATH_W) 'pread64-pwrite64.c'; else $(CYGPATH_W) '$(srcdir)/pread64-pwrite64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po
+# $(AM_V_CC)source='pread64-pwrite64.c' object='pread64_pwrite64-pread64-pwrite64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pread64_pwrite64-pread64-pwrite64.obj `if test -f 'pread64-pwrite64.c'; then $(CYGPATH_W) 'pread64-pwrite64.c'; else $(CYGPATH_W) '$(srcdir)/pread64-pwrite64.c'; fi`
+
+preadv-preadv.o: preadv.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv-preadv.o -MD -MP -MF $(DEPDIR)/preadv-preadv.Tpo -c -o preadv-preadv.o `test -f 'preadv.c' || echo '$(srcdir)/'`preadv.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv-preadv.Tpo $(DEPDIR)/preadv-preadv.Po
+# $(AM_V_CC)source='preadv.c' object='preadv-preadv.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv-preadv.o `test -f 'preadv.c' || echo '$(srcdir)/'`preadv.c
+
+preadv-preadv.obj: preadv.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv-preadv.obj -MD -MP -MF $(DEPDIR)/preadv-preadv.Tpo -c -o preadv-preadv.obj `if test -f 'preadv.c'; then $(CYGPATH_W) 'preadv.c'; else $(CYGPATH_W) '$(srcdir)/preadv.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv-preadv.Tpo $(DEPDIR)/preadv-preadv.Po
+# $(AM_V_CC)source='preadv.c' object='preadv-preadv.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv-preadv.obj `if test -f 'preadv.c'; then $(CYGPATH_W) 'preadv.c'; else $(CYGPATH_W) '$(srcdir)/preadv.c'; fi`
+
+preadv_pwritev-preadv-pwritev.o: preadv-pwritev.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv_pwritev-preadv-pwritev.o -MD -MP -MF $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo -c -o preadv_pwritev-preadv-pwritev.o `test -f 'preadv-pwritev.c' || echo '$(srcdir)/'`preadv-pwritev.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo $(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
+# $(AM_V_CC)source='preadv-pwritev.c' object='preadv_pwritev-preadv-pwritev.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv_pwritev-preadv-pwritev.o `test -f 'preadv-pwritev.c' || echo '$(srcdir)/'`preadv-pwritev.c
+
+preadv_pwritev-preadv-pwritev.obj: preadv-pwritev.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv_pwritev-preadv-pwritev.obj -MD -MP -MF $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo -c -o preadv_pwritev-preadv-pwritev.obj `if test -f 'preadv-pwritev.c'; then $(CYGPATH_W) 'preadv-pwritev.c'; else $(CYGPATH_W) '$(srcdir)/preadv-pwritev.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo $(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
+# $(AM_V_CC)source='preadv-pwritev.c' object='preadv_pwritev-preadv-pwritev.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv_pwritev-preadv-pwritev.obj `if test -f 'preadv-pwritev.c'; then $(CYGPATH_W) 'preadv-pwritev.c'; else $(CYGPATH_W) '$(srcdir)/preadv-pwritev.c'; fi`
+
+pwritev-pwritev.o: pwritev.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pwritev-pwritev.o -MD -MP -MF $(DEPDIR)/pwritev-pwritev.Tpo -c -o pwritev-pwritev.o `test -f 'pwritev.c' || echo '$(srcdir)/'`pwritev.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/pwritev-pwritev.Tpo $(DEPDIR)/pwritev-pwritev.Po
+# $(AM_V_CC)source='pwritev.c' object='pwritev-pwritev.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pwritev-pwritev.o `test -f 'pwritev.c' || echo '$(srcdir)/'`pwritev.c
+
+pwritev-pwritev.obj: pwritev.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pwritev-pwritev.obj -MD -MP -MF $(DEPDIR)/pwritev-pwritev.Tpo -c -o pwritev-pwritev.obj `if test -f 'pwritev.c'; then $(CYGPATH_W) 'pwritev.c'; else $(CYGPATH_W) '$(srcdir)/pwritev.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/pwritev-pwritev.Tpo $(DEPDIR)/pwritev-pwritev.Po
+# $(AM_V_CC)source='pwritev.c' object='pwritev-pwritev.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pwritev-pwritev.obj `if test -f 'pwritev.c'; then $(CYGPATH_W) 'pwritev.c'; else $(CYGPATH_W) '$(srcdir)/pwritev.c'; fi`
+
+stat64-stat64.o: stat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stat64-stat64.o -MD -MP -MF $(DEPDIR)/stat64-stat64.Tpo -c -o stat64-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/stat64-stat64.Tpo $(DEPDIR)/stat64-stat64.Po
+# $(AM_V_CC)source='stat64.c' object='stat64-stat64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stat64-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+
+stat64-stat64.obj: stat64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stat64-stat64.obj -MD -MP -MF $(DEPDIR)/stat64-stat64.Tpo -c -o stat64-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/stat64-stat64.Tpo $(DEPDIR)/stat64-stat64.Po
+# $(AM_V_CC)source='stat64.c' object='stat64-stat64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stat64-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+
+statfs-statfs.o: statfs.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT statfs-statfs.o -MD -MP -MF $(DEPDIR)/statfs-statfs.Tpo -c -o statfs-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/statfs-statfs.Tpo $(DEPDIR)/statfs-statfs.Po
+# $(AM_V_CC)source='statfs.c' object='statfs-statfs.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+
+statfs-statfs.obj: statfs.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT statfs-statfs.obj -MD -MP -MF $(DEPDIR)/statfs-statfs.Tpo -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/statfs-statfs.Tpo $(DEPDIR)/statfs-statfs.Po
+# $(AM_V_CC)source='statfs.c' object='statfs-statfs.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+
+truncate64-truncate64.o: truncate64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
+# $(AM_V_CC)source='truncate64.c' object='truncate64-truncate64.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
+
+truncate64-truncate64.obj: truncate64.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.obj -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.obj `if test -f 'truncate64.c'; then $(CYGPATH_W) 'truncate64.c'; else $(CYGPATH_W) '$(srcdir)/truncate64.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
+# $(AM_V_CC)source='truncate64.c' object='truncate64-truncate64.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o truncate64-truncate64.obj `if test -f 'truncate64.c'; then $(CYGPATH_W) 'truncate64.c'; else $(CYGPATH_W) '$(srcdir)/truncate64.c'; fi`
+
+uio-uio.o: uio.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_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_V_at)$(am__mv) $(DEPDIR)/uio-uio.Tpo $(DEPDIR)/uio-uio.Po
+# $(AM_V_CC)source='uio.c' object='uio-uio.o' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o uio-uio.o `test -f 'uio.c' || echo '$(srcdir)/'`uio.c
+
+uio-uio.obj: uio.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_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_V_at)$(am__mv) $(DEPDIR)/uio-uio.Tpo $(DEPDIR)/uio-uio.Po
+# $(AM_V_CC)source='uio.c' object='uio-uio.obj' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o uio-uio.obj `if test -f 'uio.c'; then $(CYGPATH_W) 'uio.c'; else $(CYGPATH_W) '$(srcdir)/uio.c'; fi`
+check-valgrind-local:
+
+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`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+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
+
+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
+
+# 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; \
+ 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 \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ 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_LIBRARIES) $(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)
+#.test$(EXEEXT).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)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "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)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+check-valgrind: check-valgrind-am
+
+check-valgrind-am: check-valgrind-local
+
+clean: clean-am
+
+clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
+ check-valgrind-am check-valgrind-local clean \
+ clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am
+
+
+
+# Valgrind check
+#
+# Optional:
+# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions
+# files to load. (Default: empty)
+# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools.
+# (Default: --num-callers=30)
+# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of:
+# memcheck, helgrind, drd, sgcheck). (Default: various)
+
+# Optional variables
+VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES))
+VALGRIND_FLAGS ?= --num-callers=30
+VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no
+VALGRIND_helgrind_FLAGS ?= --history-level=approx
+VALGRIND_drd_FLAGS ?=
+VALGRIND_sgcheck_FLAGS ?=
+
+# Internal use
+valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools)))
+
+valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS)
+valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS)
+valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS)
+valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS)
+
+valgrind_quiet = $(valgrind_quiet_$(V))
+valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY))
+valgrind_quiet_0 = --quiet
+valgrind_v_use = $(valgrind_v_use_$(V))
+valgrind_v_use_ = $(valgrind_v_use_$(AM_DEFAULT_VERBOSITY))
+valgrind_v_use_0 = @echo " USE " $(patsubst check-valgrind-%,%,$@):;
+
+# Support running with and without libtool.
+ifneq ($(LIBTOOL),)
+valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute
+else
+valgrind_lt =
+endif
+
+# Use recursive makes in order to ignore errors during check
+check-valgrind:
+ifeq ($(VALGRIND_ENABLED),yes)
+ -$(AM_V_at)$(foreach tool,$(valgrind_enabled_tools), \
+ $(MAKE) $(AM_MAKEFLAGS) -k check-valgrind-$(tool); \
+ )
+else
+ @echo "Need to reconfigure with --enable-valgrind"
+endif
+
+# Valgrind running
+VALGRIND_TESTS_ENVIRONMENT = \
+ $(TESTS_ENVIRONMENT) \
+ env VALGRIND=$(VALGRIND) \
+ G_SLICE=always-malloc,debug-blocks \
+ G_DEBUG=fatal-warnings,fatal-criticals,gc-friendly
+
+VALGRIND_LOG_COMPILER = \
+ $(valgrind_lt) \
+ $(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS)
+
+define valgrind_tool_rule =
+check-valgrind-$(1): $$(BUILT_SOURCES)
+ifeq ($$(VALGRIND_ENABLED)-$$(ENABLE_VALGRIND_$(1)),yes-yes)
+ $$(valgrind_v_use)$$(MAKE) $$(AM_MAKEFLAGS) check-am \
+ TESTS_ENVIRONMENT="$$(VALGRIND_TESTS_ENVIRONMENT)" \
+ LOG_COMPILER="$$(VALGRIND_LOG_COMPILER)" \
+ LOG_FLAGS="$$(valgrind_$(1)_flags)" \
+ TEST_SUITE_LOG=test-suite-$(1).log
+else ifeq ($$(VALGRIND_ENABLED),yes)
+ @echo "Need to reconfigure with --enable-valgrind-$(1)"
+else
+ @echo "Need to reconfigure with --enable-valgrind"
+endif
+endef
+
+$(foreach tool,$(valgrind_tools),$(eval $(call valgrind_tool_rule,$(tool))))
+
+AM_DISTCHECK_CONFIGURE_FLAGS ?=
+AM_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind
+
+MOSTLYCLEANFILES ?=
+MOSTLYCLEANFILES += $(valgrind_log_files)
+
+.PHONY: check-valgrind $(add-prefix check-valgrind-,$(valgrind_tools))
+
+
+ksysent.h: $(srcdir)/ksysent.sed
+ echo '#include <asm/unistd.h>' | \
+ $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > [email protected]
+ LC_COLLATE=C sed -r -n -f $(srcdir)/ksysent.sed < [email protected] > [email protected]
+ mv -f [email protected] $@
+ rm -f [email protected]
+
+ksysent.$(OBJEXT): ksysent.h
+$(objects): scno.h
+
+syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
+ $(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
+
+scno.h: $(top_srcdir)/scno.head syscallent.i
+ echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
+ cat $< >> $@-t
+ LC_ALL=C sed -n '$(SCNO_SED)' $(filter-out $<,$^) >> $@-t
+ mv $@-t $@
+
+# 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.
+.NOEXPORT:
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 0c24969..311d3bb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -43,6 +43,7 @@
libtests_a_SOURCES = \
errno2name.c \
error_msg.c \
+ fill_memory.c \
get_page_size.c \
hexdump_strdup.c \
hexquote_strndup.c \
@@ -50,6 +51,7 @@
libmmsg.c \
libsocketcall.c \
overflowuid.c \
+ pipe_maxfd.c \
print_quoted_string.c \
printflags.c \
printxval.c \
@@ -73,13 +75,16 @@
adjtimex \
aio \
alarm \
+ answer \
attach-f-p \
+ attach-f-p-cmd \
attach-p-cmd-cmd \
attach-p-cmd-p \
bpf \
brk \
btrfs \
caps \
+ caps-abbrev \
chmod \
chown \
chown32 \
@@ -90,6 +95,7 @@
copy_file_range \
count-f \
creat \
+ delete_module \
dup \
dup2 \
dup3 \
@@ -98,6 +104,7 @@
epoll_ctl \
epoll_pwait \
epoll_wait \
+ erestartsys \
eventfd \
execve \
execve-v \
@@ -107,6 +114,7 @@
fadvise64 \
fadvise64_64 \
fallocate \
+ fanotify_init \
fanotify_mark \
fchdir \
fchmod \
@@ -120,6 +128,7 @@
file_handle \
file_ioctl \
filter-unavailable \
+ finit_module \
flock \
fork-f \
fstat \
@@ -160,23 +169,39 @@
getuid32 \
getxxid \
inet-cmsg \
+ init_module \
+ inotify \
+ inotify_init1 \
ioctl \
ioctl_block \
+ ioctl_dm \
+ ioctl_dm-v \
ioctl_evdev \
ioctl_evdev-v \
+ ioctl_loop \
+ ioctl_loop-nv \
+ ioctl_loop-v \
ioctl_mtd \
ioctl_rtc \
ioctl_rtc-v \
+ ioctl_scsi \
+ ioctl_sg_io_v3 \
+ ioctl_sg_io_v4 \
+ ioctl_sock_gifconf \
ioctl_uffdio \
ioctl_v4l2 \
ioperm \
iopl \
+ ioprio \
ip_mreq \
ipc \
ipc_msg \
ipc_msgbuf \
ipc_sem \
ipc_shm \
+ kcmp \
+ kexec_file_load \
+ kexec_load \
keyctl \
kill \
ksysent \
@@ -185,6 +210,7 @@
link \
linkat \
llseek \
+ lookup_dcookie \
lseek \
lstat \
lstat64 \
@@ -209,6 +235,9 @@
mount \
move_pages \
mq \
+ mq_sendrecv \
+ mq_sendrecv-read \
+ mq_sendrecv-write \
msg_control \
msg_control-v \
msg_name \
@@ -228,26 +257,52 @@
newfstatat \
nsyscalls \
old_mmap \
+ oldfstat \
+ oldlstat \
oldselect \
+ oldstat \
open \
openat \
pause \
pc \
perf_event_open \
+ perf_event_open_nonverbose \
+ perf_event_open_unabbrev \
personality \
pipe \
+ pipe2 \
+ pkey_alloc \
+ pkey_free \
+ pkey_mprotect \
poll \
ppoll \
+ prctl-arg2-intptr \
+ prctl-dumpable \
+ prctl-name \
+ prctl-no-args \
+ prctl-pdeathsig \
prctl-seccomp-filter-v \
prctl-seccomp-strict \
+ prctl-securebits \
+ prctl-tid_address \
+ prctl-tsc \
pread64-pwrite64 \
preadv \
preadv-pwritev \
preadv2-pwritev2 \
+ print_maxfd \
+ printstr \
prlimit64 \
+ process_vm_readv \
+ process_vm_writev \
pselect6 \
ptrace \
pwritev \
+ qual_fault \
+ qual_inject-error-signal \
+ qual_inject-retval \
+ qual_inject-signal \
+ qual_signal \
quotactl \
quotactl-v \
quotactl-xfs \
@@ -303,6 +358,7 @@
setgroups \
setgroups32 \
sethostname \
+ setns \
setregid \
setregid32 \
setresgid \
@@ -339,6 +395,7 @@
sysinfo \
syslog \
tee \
+ threads-execve \
time \
timer_create \
timer_xettime \
@@ -352,7 +409,9 @@
umask \
umount \
umount2 \
+ umoven-illptr \
umovestr \
+ umovestr-illptr \
umovestr2 \
umovestr3 \
uname \
@@ -360,7 +419,9 @@
unix-pair-sendto-recvfrom \
unlink \
unlinkat \
+ unshare \
userfaultfd \
+ ustat \
utime \
utimensat \
utimes \
@@ -373,6 +434,7 @@
waitid-v \
waitpid \
xattr \
+ xattr-strings \
xet_robust_list \
xetitimer \
xetpgid \
@@ -390,6 +452,9 @@
lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
mq_LDADD = -lrt $(LDADD)
+mq_sendrecv_LDADD = -lrt $(LDADD)
+mq_sendrecv_read_LDADD = -lrt $(LDADD)
+mq_sendrecv_write_LDADD = -lrt $(LDADD)
newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
pc_LDADD = $(dl_LIBS) $(LDADD)
pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -398,6 +463,7 @@
pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+threads_execve_LDADD = -lrt -lpthread $(LDADD)
times_LDADD = -lrt $(LDADD)
truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -423,10 +489,11 @@
alarm.test \
bpf.test \
brk.test \
- btrfs.test \
btrfs-v.test \
- btrfs-w.test \
btrfs-vw.test \
+ btrfs-w.test \
+ btrfs.test \
+ caps-abbrev.test \
caps.test \
chmod.test \
chown.test \
@@ -437,6 +504,7 @@
clock_xettime.test \
copy_file_range.test \
creat.test \
+ delete_module.test \
dup.test \
dup2.test \
dup3.test \
@@ -445,6 +513,7 @@
epoll_ctl.test \
epoll_pwait.test \
epoll_wait.test \
+ erestartsys.test \
eventfd.test \
execve-v.test \
execve.test \
@@ -454,6 +523,7 @@
fadvise64.test \
fadvise64_64.test \
fallocate.test \
+ fanotify_init.test \
fanotify_mark.test \
fchdir.test \
fchmod.test \
@@ -466,6 +536,7 @@
fdatasync.test \
file_handle.test \
file_ioctl.test \
+ finit_module.test \
flock.test \
fstat.test \
fstat64.test \
@@ -505,23 +576,39 @@
getuid32.test \
getxxid.test \
inet-cmsg.test \
+ init_module.test \
+ inotify.test \
+ inotify_init1.test \
ioctl.test \
ioctl_block.test \
- ioctl_evdev.test \
+ ioctl_dm-v.test \
+ ioctl_dm.test \
ioctl_evdev-v.test \
+ ioctl_evdev.test \
+ ioctl_loop-nv.test \
+ ioctl_loop-v.test \
+ ioctl_loop.test \
ioctl_mtd.test \
- ioctl_rtc.test \
ioctl_rtc-v.test \
+ ioctl_rtc.test \
+ ioctl_scsi.test \
+ ioctl_sg_io_v3.test \
+ ioctl_sg_io_v4.test \
+ ioctl_sock_gifconf.test \
ioctl_uffdio.test \
ioctl_v4l2.test \
ioperm.test \
iopl.test \
+ ioprio.test \
ip_mreq.test \
ipc.test \
ipc_msg.test \
ipc_msgbuf.test \
ipc_sem.test \
ipc_shm.test \
+ kcmp.test \
+ kexec_file_load.test \
+ kexec_load.test \
keyctl.test \
kill.test \
lchown.test \
@@ -529,6 +616,7 @@
link.test \
linkat.test \
llseek.test \
+ lookup_dcookie.test \
lseek.test \
lstat.test \
lstat64.test \
@@ -546,15 +634,18 @@
mlockall.test \
mmap.test \
mmap64.test \
- mmsg.test \
mmsg-silent.test \
- mmsg_name.test \
+ mmsg.test \
mmsg_name-v.test \
+ mmsg_name.test \
mount.test \
move_pages.test \
mq.test \
- msg_control.test \
+ mq_sendrecv-read.test \
+ mq_sendrecv-write.test \
+ mq_sendrecv.test \
msg_control-v.test \
+ msg_control.test \
msg_name.test \
munlockall.test \
nanosleep.test \
@@ -569,29 +660,50 @@
newfstatat.test \
nsyscalls.test \
old_mmap.test \
+ oldfstat.test \
+ oldlstat.test \
oldselect.test \
+ oldstat.test \
open.test \
openat.test \
pause.test \
perf_event_open.test \
+ perf_event_open_nonverbose.test \
+ perf_event_open_unabbrev.test \
personality.test \
pipe.test \
+ pipe2.test \
+ pkey_alloc.test \
+ pkey_free.test \
+ pkey_mprotect.test \
poll.test \
ppoll.test \
+ prctl-arg2-intptr.test \
+ prctl-dumpable.test \
+ prctl-name.test \
+ prctl-no-args.test \
+ prctl-pdeathsig.test \
prctl-seccomp-filter-v.test \
prctl-seccomp-strict.test \
+ prctl-securebits.test \
+ prctl-tid_address.test \
+ prctl-tsc.test \
pread64-pwrite64.test \
preadv-pwritev.test \
- preadv2-pwritev2.test \
preadv.test \
+ preadv2-pwritev2.test \
+ printstr.test \
prlimit64.test \
+ process_vm_readv.test \
+ process_vm_writev.test \
pselect6.test \
ptrace.test \
pwritev.test \
- quotactl.test \
+ qual_fault-exit_group.test \
quotactl-v.test \
- quotactl-xfs.test \
quotactl-xfs-v.test \
+ quotactl-xfs.test \
+ quotactl.test \
read-write.test \
readahead.test \
readdir.test \
@@ -640,6 +752,7 @@
setgroups.test \
setgroups32.test \
sethostname.test \
+ setns.test \
setregid.test \
setregid32.test \
setresgid.test \
@@ -687,6 +800,8 @@
umask.test \
umount.test \
umount2.test \
+ umoven-illptr.test \
+ umovestr-illptr.test \
umovestr.test \
umovestr2.test \
umovestr3.test \
@@ -695,17 +810,20 @@
unix-pair-sendto-recvfrom.test \
unlink.test \
unlinkat.test \
+ unshare.test \
userfaultfd.test \
+ ustat.test \
utime.test \
utimensat.test \
utimes.test \
vhangup.test \
vmsplice.test \
- wait4.test \
wait4-v.test \
- waitid.test \
+ wait4.test \
waitid-v.test \
+ waitid.test \
waitpid.test \
+ xattr-strings.test \
xattr.test \
xet_robust_list.test \
xetitimer.test \
@@ -727,12 +845,21 @@
fork-f.test \
ksysent.test \
opipe.test \
+ options-syntax.test \
pc.test \
+ qual_fault-syntax.test \
+ qual_fault.test \
+ qual_inject-error-signal.test \
+ qual_inject-retval.test \
+ qual_inject-signal.test \
+ qual_inject-syntax.test \
+ qual_signal.test \
qual_syscall.test \
- redirect.test \
redirect-fds.test \
+ redirect.test \
restart_syscall.test \
signal_receive.test \
+ strace-C.test \
strace-E.test \
strace-S.test \
strace-T.test \
@@ -742,6 +869,7 @@
strace-t.test \
strace-tt.test \
strace-ttt.test \
+ threads-execve.test \
vfork-f.test \
# end of MISC_TESTS
@@ -755,7 +883,12 @@
TEST_LOG_COMPILER = env
AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+@VALGRIND_CHECK_RULES@
+VALGRIND_FLAGS = --quiet
+VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
+
EXTRA_DIST = init.sh run.sh match.awk \
+ caps-abbrev.awk \
caps.awk \
count-f.expected \
eventfd.expected \
@@ -764,31 +897,38 @@
fstatat.c \
fstatx.c \
getresugid.c \
+ init_delete_module.h \
ipc.sh \
ipc_msgbuf.expected \
ksysent.sed \
lstatx.c \
- mq.expected \
net.expected \
oldselect.expected \
pipe.expected \
- ppoll.expected \
ppoll-v.expected \
+ ppoll.expected \
+ process_vm_readv_writev.c \
+ qual_fault-exit_group.expected \
+ qual_inject-error-signal.expected \
+ qual_inject-signal.expected \
quotactl.h \
+ scno_tampering.sh \
setfsugid.c \
- setreugid.c \
setresugid.c \
+ setreugid.c \
setugid.c \
sigaction.awk \
sigaltstack.expected \
sockname.c \
statfs.expected \
statx.sh \
+ strace-C.expected \
strace-E.expected \
strace-T.expected \
strace-ff.expected \
strace-k.test \
strace-r.expected \
+ strace.supp \
struct_flock.c \
sun_path.expected \
uio.expected \
@@ -812,5 +952,11 @@
mv -f [email protected] $@
rm -f [email protected]
-BUILT_SOURCES = ksysent.h
+ksysent.$(OBJEXT): ksysent.h
+
+objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
+$(objects): scno.h
+
CLEANFILES = ksysent.h $(TESTS:=.tmp)
+
+include ../scno.am
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644
index 0000000..3a4d792
--- /dev/null
+++ b/tests/Makefile.in
@@ -0,0 +1,5714 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Automake input for strace tests.
+#
+# Copyright (c) 2011-2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# scno.h make rules for strace.
+#
+# Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+# 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.
+VPATH = @srcdir@
+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 \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ 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@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+ access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+ adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
+ attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+ attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
+ brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
+ chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+ clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+ clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
+ count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
+ dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
+ epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
+ epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
+ execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
+ execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+ fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+ fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+ fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+ fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+ fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+ file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
+ finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
+ fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+ fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+ ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+ futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+ getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+ getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+ geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+ getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+ getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
+ getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
+ getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
+ getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
+ getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
+ inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
+ ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
+ ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+ ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
+ ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
+ ioctl_rtc-v$(EXEEXT) ioctl_scsi$(EXEEXT) \
+ ioctl_sg_io_v3$(EXEEXT) ioctl_sg_io_v4$(EXEEXT) \
+ ioctl_sock_gifconf$(EXEEXT) ioctl_uffdio$(EXEEXT) \
+ ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) iopl$(EXEEXT) \
+ ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) ipc_msg$(EXEEXT) \
+ ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+ kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+ keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
+ lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+ llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+ lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
+ membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+ migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
+ mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
+ mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
+ mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
+ mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
+ move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
+ mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
+ msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
+ munlockall$(EXEEXT) nanosleep$(EXEEXT) \
+ net-accept-connect$(EXEEXT) net-icmp_filter$(EXEEXT) \
+ net-sockaddr$(EXEEXT) net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+ net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+ netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+ netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
+ newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
+ oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
+ oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
+ pc$(EXEEXT) perf_event_open$(EXEEXT) \
+ perf_event_open_nonverbose$(EXEEXT) \
+ perf_event_open_unabbrev$(EXEEXT) personality$(EXEEXT) \
+ pipe$(EXEEXT) pipe2$(EXEEXT) pkey_alloc$(EXEEXT) \
+ pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) poll$(EXEEXT) \
+ ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
+ prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
+ prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
+ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+ prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
+ prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+ preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+ print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
+ process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
+ pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
+ qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
+ qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
+ qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
+ quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+ read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+ readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
+ reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
+ recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
+ remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
+ renameat2$(EXEEXT) request_key$(EXEEXT) \
+ restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
+ rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
+ rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+ rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+ sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+ sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+ sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+ scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
+ seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
+ select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
+ sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+ set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
+ setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
+ setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
+ setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
+ setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
+ setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
+ setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
+ setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
+ shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
+ sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
+ signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
+ socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
+ stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
+ statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
+ symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
+ sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
+ tee$(EXEEXT) threads-execve$(EXEEXT) time$(EXEEXT) \
+ timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+ timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+ truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
+ uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
+ umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
+ umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
+ uname$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+ unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
+ unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
+ ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
+ utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
+ vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
+ waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
+ xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+ xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+ xettimeofday$(EXEEXT)
+TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
+DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
+ $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
+ $(top_srcdir)/m4/ax_valgrind_check.m4 \
+ $(top_srcdir)/m4/mpers.m4 \
+ $(top_srcdir)/m4/st_save_restore_var.m4 \
+ $(top_srcdir)/m4/st_warn_cflags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libtests_a_AR = $(AR) $(ARFLAGS)
+libtests_a_LIBADD =
+am_libtests_a_OBJECTS = libtests_a-errno2name.$(OBJEXT) \
+ libtests_a-error_msg.$(OBJEXT) \
+ libtests_a-fill_memory.$(OBJEXT) \
+ libtests_a-get_page_size.$(OBJEXT) \
+ libtests_a-hexdump_strdup.$(OBJEXT) \
+ libtests_a-hexquote_strndup.$(OBJEXT) \
+ libtests_a-inode_of_sockfd.$(OBJEXT) \
+ libtests_a-libmmsg.$(OBJEXT) \
+ libtests_a-libsocketcall.$(OBJEXT) \
+ libtests_a-overflowuid.$(OBJEXT) \
+ libtests_a-pipe_maxfd.$(OBJEXT) \
+ libtests_a-print_quoted_string.$(OBJEXT) \
+ libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
+ libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
+ libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+_newselect_SOURCES = _newselect.c
+_newselect_OBJECTS = _newselect.$(OBJEXT)
+_newselect_LDADD = $(LDADD)
+_newselect_DEPENDENCIES = libtests.a
+accept_SOURCES = accept.c
+accept_OBJECTS = accept.$(OBJEXT)
+accept_LDADD = $(LDADD)
+accept_DEPENDENCIES = libtests.a
+accept4_SOURCES = accept4.c
+accept4_OBJECTS = accept4.$(OBJEXT)
+accept4_LDADD = $(LDADD)
+accept4_DEPENDENCIES = libtests.a
+access_SOURCES = access.c
+access_OBJECTS = access.$(OBJEXT)
+access_LDADD = $(LDADD)
+access_DEPENDENCIES = libtests.a
+acct_SOURCES = acct.c
+acct_OBJECTS = acct.$(OBJEXT)
+acct_LDADD = $(LDADD)
+acct_DEPENDENCIES = libtests.a
+add_key_SOURCES = add_key.c
+add_key_OBJECTS = add_key.$(OBJEXT)
+add_key_LDADD = $(LDADD)
+add_key_DEPENDENCIES = libtests.a
+adjtimex_SOURCES = adjtimex.c
+adjtimex_OBJECTS = adjtimex.$(OBJEXT)
+adjtimex_LDADD = $(LDADD)
+adjtimex_DEPENDENCIES = libtests.a
+aio_SOURCES = aio.c
+aio_OBJECTS = aio.$(OBJEXT)
+aio_LDADD = $(LDADD)
+aio_DEPENDENCIES = libtests.a
+alarm_SOURCES = alarm.c
+alarm_OBJECTS = alarm.$(OBJEXT)
+alarm_LDADD = $(LDADD)
+alarm_DEPENDENCIES = libtests.a
+answer_SOURCES = answer.c
+answer_OBJECTS = answer.$(OBJEXT)
+answer_LDADD = $(LDADD)
+answer_DEPENDENCIES = libtests.a
+attach_f_p_SOURCES = attach-f-p.c
+attach_f_p_OBJECTS = attach-f-p.$(OBJEXT)
+attach_f_p_DEPENDENCIES = $(LDADD)
+attach_f_p_cmd_SOURCES = attach-f-p-cmd.c
+attach_f_p_cmd_OBJECTS = attach-f-p-cmd.$(OBJEXT)
+attach_f_p_cmd_LDADD = $(LDADD)
+attach_f_p_cmd_DEPENDENCIES = libtests.a
+attach_p_cmd_cmd_SOURCES = attach-p-cmd-cmd.c
+attach_p_cmd_cmd_OBJECTS = attach-p-cmd-cmd.$(OBJEXT)
+attach_p_cmd_cmd_LDADD = $(LDADD)
+attach_p_cmd_cmd_DEPENDENCIES = libtests.a
+attach_p_cmd_p_SOURCES = attach-p-cmd-p.c
+attach_p_cmd_p_OBJECTS = attach-p-cmd-p.$(OBJEXT)
+attach_p_cmd_p_LDADD = $(LDADD)
+attach_p_cmd_p_DEPENDENCIES = libtests.a
+bpf_SOURCES = bpf.c
+bpf_OBJECTS = bpf.$(OBJEXT)
+bpf_LDADD = $(LDADD)
+bpf_DEPENDENCIES = libtests.a
+brk_SOURCES = brk.c
+brk_OBJECTS = brk.$(OBJEXT)
+brk_LDADD = $(LDADD)
+brk_DEPENDENCIES = libtests.a
+btrfs_SOURCES = btrfs.c
+btrfs_OBJECTS = btrfs.$(OBJEXT)
+btrfs_LDADD = $(LDADD)
+btrfs_DEPENDENCIES = libtests.a
+caps_SOURCES = caps.c
+caps_OBJECTS = caps.$(OBJEXT)
+caps_LDADD = $(LDADD)
+caps_DEPENDENCIES = libtests.a
+caps_abbrev_SOURCES = caps-abbrev.c
+caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT)
+caps_abbrev_LDADD = $(LDADD)
+caps_abbrev_DEPENDENCIES = libtests.a
+chmod_SOURCES = chmod.c
+chmod_OBJECTS = chmod.$(OBJEXT)
+chmod_LDADD = $(LDADD)
+chmod_DEPENDENCIES = libtests.a
+chown_SOURCES = chown.c
+chown_OBJECTS = chown.$(OBJEXT)
+chown_LDADD = $(LDADD)
+chown_DEPENDENCIES = libtests.a
+chown32_SOURCES = chown32.c
+chown32_OBJECTS = chown32.$(OBJEXT)
+chown32_LDADD = $(LDADD)
+chown32_DEPENDENCIES = libtests.a
+chroot_SOURCES = chroot.c
+chroot_OBJECTS = chroot.$(OBJEXT)
+chroot_LDADD = $(LDADD)
+chroot_DEPENDENCIES = libtests.a
+clock_adjtime_SOURCES = clock_adjtime.c
+clock_adjtime_OBJECTS = clock_adjtime.$(OBJEXT)
+clock_adjtime_LDADD = $(LDADD)
+clock_adjtime_DEPENDENCIES = libtests.a
+clock_nanosleep_SOURCES = clock_nanosleep.c
+clock_nanosleep_OBJECTS = clock_nanosleep.$(OBJEXT)
+clock_nanosleep_LDADD = $(LDADD)
+clock_nanosleep_DEPENDENCIES = libtests.a
+clock_xettime_SOURCES = clock_xettime.c
+clock_xettime_OBJECTS = clock_xettime.$(OBJEXT)
+clock_xettime_DEPENDENCIES = $(LDADD)
+copy_file_range_SOURCES = copy_file_range.c
+copy_file_range_OBJECTS = copy_file_range.$(OBJEXT)
+copy_file_range_LDADD = $(LDADD)
+copy_file_range_DEPENDENCIES = libtests.a
+count_f_SOURCES = count-f.c
+count_f_OBJECTS = count-f.$(OBJEXT)
+count_f_DEPENDENCIES = $(LDADD)
+creat_SOURCES = creat.c
+creat_OBJECTS = creat.$(OBJEXT)
+creat_LDADD = $(LDADD)
+creat_DEPENDENCIES = libtests.a
+delete_module_SOURCES = delete_module.c
+delete_module_OBJECTS = delete_module.$(OBJEXT)
+delete_module_LDADD = $(LDADD)
+delete_module_DEPENDENCIES = libtests.a
+dup_SOURCES = dup.c
+dup_OBJECTS = dup.$(OBJEXT)
+dup_LDADD = $(LDADD)
+dup_DEPENDENCIES = libtests.a
+dup2_SOURCES = dup2.c
+dup2_OBJECTS = dup2.$(OBJEXT)
+dup2_LDADD = $(LDADD)
+dup2_DEPENDENCIES = libtests.a
+dup3_SOURCES = dup3.c
+dup3_OBJECTS = dup3.$(OBJEXT)
+dup3_LDADD = $(LDADD)
+dup3_DEPENDENCIES = libtests.a
+epoll_create_SOURCES = epoll_create.c
+epoll_create_OBJECTS = epoll_create.$(OBJEXT)
+epoll_create_LDADD = $(LDADD)
+epoll_create_DEPENDENCIES = libtests.a
+epoll_create1_SOURCES = epoll_create1.c
+epoll_create1_OBJECTS = epoll_create1.$(OBJEXT)
+epoll_create1_LDADD = $(LDADD)
+epoll_create1_DEPENDENCIES = libtests.a
+epoll_ctl_SOURCES = epoll_ctl.c
+epoll_ctl_OBJECTS = epoll_ctl.$(OBJEXT)
+epoll_ctl_LDADD = $(LDADD)
+epoll_ctl_DEPENDENCIES = libtests.a
+epoll_pwait_SOURCES = epoll_pwait.c
+epoll_pwait_OBJECTS = epoll_pwait.$(OBJEXT)
+epoll_pwait_LDADD = $(LDADD)
+epoll_pwait_DEPENDENCIES = libtests.a
+epoll_wait_SOURCES = epoll_wait.c
+epoll_wait_OBJECTS = epoll_wait.$(OBJEXT)
+epoll_wait_LDADD = $(LDADD)
+epoll_wait_DEPENDENCIES = libtests.a
+erestartsys_SOURCES = erestartsys.c
+erestartsys_OBJECTS = erestartsys.$(OBJEXT)
+erestartsys_LDADD = $(LDADD)
+erestartsys_DEPENDENCIES = libtests.a
+eventfd_SOURCES = eventfd.c
+eventfd_OBJECTS = eventfd.$(OBJEXT)
+eventfd_LDADD = $(LDADD)
+eventfd_DEPENDENCIES = libtests.a
+execve_SOURCES = execve.c
+execve_OBJECTS = execve.$(OBJEXT)
+execve_LDADD = $(LDADD)
+execve_DEPENDENCIES = libtests.a
+execve_v_SOURCES = execve-v.c
+execve_v_OBJECTS = execve-v.$(OBJEXT)
+execve_v_LDADD = $(LDADD)
+execve_v_DEPENDENCIES = libtests.a
+execveat_SOURCES = execveat.c
+execveat_OBJECTS = execveat.$(OBJEXT)
+execveat_LDADD = $(LDADD)
+execveat_DEPENDENCIES = libtests.a
+execveat_v_SOURCES = execveat-v.c
+execveat_v_OBJECTS = execveat-v.$(OBJEXT)
+execveat_v_LDADD = $(LDADD)
+execveat_v_DEPENDENCIES = libtests.a
+faccessat_SOURCES = faccessat.c
+faccessat_OBJECTS = faccessat.$(OBJEXT)
+faccessat_LDADD = $(LDADD)
+faccessat_DEPENDENCIES = libtests.a
+fadvise64_SOURCES = fadvise64.c
+fadvise64_OBJECTS = fadvise64.$(OBJEXT)
+fadvise64_LDADD = $(LDADD)
+fadvise64_DEPENDENCIES = libtests.a
+fadvise64_64_SOURCES = fadvise64_64.c
+fadvise64_64_OBJECTS = fadvise64_64.$(OBJEXT)
+fadvise64_64_LDADD = $(LDADD)
+fadvise64_64_DEPENDENCIES = libtests.a
+fallocate_SOURCES = fallocate.c
+fallocate_OBJECTS = fallocate.$(OBJEXT)
+fallocate_LDADD = $(LDADD)
+fallocate_DEPENDENCIES = libtests.a
+fanotify_init_SOURCES = fanotify_init.c
+fanotify_init_OBJECTS = fanotify_init.$(OBJEXT)
+fanotify_init_LDADD = $(LDADD)
+fanotify_init_DEPENDENCIES = libtests.a
+fanotify_mark_SOURCES = fanotify_mark.c
+fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT)
+fanotify_mark_LDADD = $(LDADD)
+fanotify_mark_DEPENDENCIES = libtests.a
+fchdir_SOURCES = fchdir.c
+fchdir_OBJECTS = fchdir.$(OBJEXT)
+fchdir_LDADD = $(LDADD)
+fchdir_DEPENDENCIES = libtests.a
+fchmod_SOURCES = fchmod.c
+fchmod_OBJECTS = fchmod.$(OBJEXT)
+fchmod_LDADD = $(LDADD)
+fchmod_DEPENDENCIES = libtests.a
+fchmodat_SOURCES = fchmodat.c
+fchmodat_OBJECTS = fchmodat.$(OBJEXT)
+fchmodat_LDADD = $(LDADD)
+fchmodat_DEPENDENCIES = libtests.a
+fchown_SOURCES = fchown.c
+fchown_OBJECTS = fchown.$(OBJEXT)
+fchown_LDADD = $(LDADD)
+fchown_DEPENDENCIES = libtests.a
+fchown32_SOURCES = fchown32.c
+fchown32_OBJECTS = fchown32.$(OBJEXT)
+fchown32_LDADD = $(LDADD)
+fchown32_DEPENDENCIES = libtests.a
+fchownat_SOURCES = fchownat.c
+fchownat_OBJECTS = fchownat.$(OBJEXT)
+fchownat_LDADD = $(LDADD)
+fchownat_DEPENDENCIES = libtests.a
+fcntl_SOURCES = fcntl.c
+fcntl_OBJECTS = fcntl.$(OBJEXT)
+fcntl_LDADD = $(LDADD)
+fcntl_DEPENDENCIES = libtests.a
+fcntl64_SOURCES = fcntl64.c
+fcntl64_OBJECTS = fcntl64.$(OBJEXT)
+fcntl64_LDADD = $(LDADD)
+fcntl64_DEPENDENCIES = libtests.a
+fdatasync_SOURCES = fdatasync.c
+fdatasync_OBJECTS = fdatasync.$(OBJEXT)
+fdatasync_LDADD = $(LDADD)
+fdatasync_DEPENDENCIES = libtests.a
+file_handle_SOURCES = file_handle.c
+file_handle_OBJECTS = file_handle.$(OBJEXT)
+file_handle_LDADD = $(LDADD)
+file_handle_DEPENDENCIES = libtests.a
+file_ioctl_SOURCES = file_ioctl.c
+file_ioctl_OBJECTS = file_ioctl.$(OBJEXT)
+file_ioctl_LDADD = $(LDADD)
+file_ioctl_DEPENDENCIES = libtests.a
+filter_unavailable_SOURCES = filter-unavailable.c
+filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT)
+filter_unavailable_DEPENDENCIES = $(LDADD)
+finit_module_SOURCES = finit_module.c
+finit_module_OBJECTS = finit_module.$(OBJEXT)
+finit_module_LDADD = $(LDADD)
+finit_module_DEPENDENCIES = libtests.a
+flock_SOURCES = flock.c
+flock_OBJECTS = flock.$(OBJEXT)
+flock_LDADD = $(LDADD)
+flock_DEPENDENCIES = libtests.a
+fork_f_SOURCES = fork-f.c
+fork_f_OBJECTS = fork-f.$(OBJEXT)
+fork_f_LDADD = $(LDADD)
+fork_f_DEPENDENCIES = libtests.a
+fstat_SOURCES = fstat.c
+fstat_OBJECTS = fstat.$(OBJEXT)
+fstat_LDADD = $(LDADD)
+fstat_DEPENDENCIES = libtests.a
+fstat64_SOURCES = fstat64.c
+fstat64_OBJECTS = fstat64-fstat64.$(OBJEXT)
+fstat64_LDADD = $(LDADD)
+fstat64_DEPENDENCIES = libtests.a
+fstatat64_SOURCES = fstatat64.c
+fstatat64_OBJECTS = fstatat64-fstatat64.$(OBJEXT)
+fstatat64_LDADD = $(LDADD)
+fstatat64_DEPENDENCIES = libtests.a
+fstatfs_SOURCES = fstatfs.c
+fstatfs_OBJECTS = fstatfs.$(OBJEXT)
+fstatfs_LDADD = $(LDADD)
+fstatfs_DEPENDENCIES = libtests.a
+fstatfs64_SOURCES = fstatfs64.c
+fstatfs64_OBJECTS = fstatfs64.$(OBJEXT)
+fstatfs64_LDADD = $(LDADD)
+fstatfs64_DEPENDENCIES = libtests.a
+fsync_SOURCES = fsync.c
+fsync_OBJECTS = fsync.$(OBJEXT)
+fsync_LDADD = $(LDADD)
+fsync_DEPENDENCIES = libtests.a
+ftruncate_SOURCES = ftruncate.c
+ftruncate_OBJECTS = ftruncate.$(OBJEXT)
+ftruncate_LDADD = $(LDADD)
+ftruncate_DEPENDENCIES = libtests.a
+ftruncate64_SOURCES = ftruncate64.c
+ftruncate64_OBJECTS = ftruncate64-ftruncate64.$(OBJEXT)
+ftruncate64_LDADD = $(LDADD)
+ftruncate64_DEPENDENCIES = libtests.a
+futex_SOURCES = futex.c
+futex_OBJECTS = futex.$(OBJEXT)
+futex_LDADD = $(LDADD)
+futex_DEPENDENCIES = libtests.a
+futimesat_SOURCES = futimesat.c
+futimesat_OBJECTS = futimesat.$(OBJEXT)
+futimesat_LDADD = $(LDADD)
+futimesat_DEPENDENCIES = libtests.a
+get_mempolicy_SOURCES = get_mempolicy.c
+get_mempolicy_OBJECTS = get_mempolicy.$(OBJEXT)
+get_mempolicy_LDADD = $(LDADD)
+get_mempolicy_DEPENDENCIES = libtests.a
+getcpu_SOURCES = getcpu.c
+getcpu_OBJECTS = getcpu.$(OBJEXT)
+getcpu_LDADD = $(LDADD)
+getcpu_DEPENDENCIES = libtests.a
+getcwd_SOURCES = getcwd.c
+getcwd_OBJECTS = getcwd.$(OBJEXT)
+getcwd_LDADD = $(LDADD)
+getcwd_DEPENDENCIES = libtests.a
+getdents_SOURCES = getdents.c
+getdents_OBJECTS = getdents.$(OBJEXT)
+getdents_LDADD = $(LDADD)
+getdents_DEPENDENCIES = libtests.a
+getdents64_SOURCES = getdents64.c
+getdents64_OBJECTS = getdents64.$(OBJEXT)
+getdents64_LDADD = $(LDADD)
+getdents64_DEPENDENCIES = libtests.a
+getegid_SOURCES = getegid.c
+getegid_OBJECTS = getegid.$(OBJEXT)
+getegid_LDADD = $(LDADD)
+getegid_DEPENDENCIES = libtests.a
+getegid32_SOURCES = getegid32.c
+getegid32_OBJECTS = getegid32.$(OBJEXT)
+getegid32_LDADD = $(LDADD)
+getegid32_DEPENDENCIES = libtests.a
+geteuid_SOURCES = geteuid.c
+geteuid_OBJECTS = geteuid.$(OBJEXT)
+geteuid_LDADD = $(LDADD)
+geteuid_DEPENDENCIES = libtests.a
+geteuid32_SOURCES = geteuid32.c
+geteuid32_OBJECTS = geteuid32.$(OBJEXT)
+geteuid32_LDADD = $(LDADD)
+geteuid32_DEPENDENCIES = libtests.a
+getgid_SOURCES = getgid.c
+getgid_OBJECTS = getgid.$(OBJEXT)
+getgid_LDADD = $(LDADD)
+getgid_DEPENDENCIES = libtests.a
+getgid32_SOURCES = getgid32.c
+getgid32_OBJECTS = getgid32.$(OBJEXT)
+getgid32_LDADD = $(LDADD)
+getgid32_DEPENDENCIES = libtests.a
+getgroups_SOURCES = getgroups.c
+getgroups_OBJECTS = getgroups.$(OBJEXT)
+getgroups_LDADD = $(LDADD)
+getgroups_DEPENDENCIES = libtests.a
+getgroups32_SOURCES = getgroups32.c
+getgroups32_OBJECTS = getgroups32.$(OBJEXT)
+getgroups32_LDADD = $(LDADD)
+getgroups32_DEPENDENCIES = libtests.a
+getpeername_SOURCES = getpeername.c
+getpeername_OBJECTS = getpeername.$(OBJEXT)
+getpeername_LDADD = $(LDADD)
+getpeername_DEPENDENCIES = libtests.a
+getpgrp_SOURCES = getpgrp.c
+getpgrp_OBJECTS = getpgrp.$(OBJEXT)
+getpgrp_LDADD = $(LDADD)
+getpgrp_DEPENDENCIES = libtests.a
+getrandom_SOURCES = getrandom.c
+getrandom_OBJECTS = getrandom.$(OBJEXT)
+getrandom_LDADD = $(LDADD)
+getrandom_DEPENDENCIES = libtests.a
+getresgid_SOURCES = getresgid.c
+getresgid_OBJECTS = getresgid.$(OBJEXT)
+getresgid_LDADD = $(LDADD)
+getresgid_DEPENDENCIES = libtests.a
+getresgid32_SOURCES = getresgid32.c
+getresgid32_OBJECTS = getresgid32.$(OBJEXT)
+getresgid32_LDADD = $(LDADD)
+getresgid32_DEPENDENCIES = libtests.a
+getresuid_SOURCES = getresuid.c
+getresuid_OBJECTS = getresuid.$(OBJEXT)
+getresuid_LDADD = $(LDADD)
+getresuid_DEPENDENCIES = libtests.a
+getresuid32_SOURCES = getresuid32.c
+getresuid32_OBJECTS = getresuid32.$(OBJEXT)
+getresuid32_LDADD = $(LDADD)
+getresuid32_DEPENDENCIES = libtests.a
+getrlimit_SOURCES = getrlimit.c
+getrlimit_OBJECTS = getrlimit.$(OBJEXT)
+getrlimit_LDADD = $(LDADD)
+getrlimit_DEPENDENCIES = libtests.a
+getrusage_SOURCES = getrusage.c
+getrusage_OBJECTS = getrusage.$(OBJEXT)
+getrusage_LDADD = $(LDADD)
+getrusage_DEPENDENCIES = libtests.a
+getsid_SOURCES = getsid.c
+getsid_OBJECTS = getsid.$(OBJEXT)
+getsid_LDADD = $(LDADD)
+getsid_DEPENDENCIES = libtests.a
+getsockname_SOURCES = getsockname.c
+getsockname_OBJECTS = getsockname.$(OBJEXT)
+getsockname_LDADD = $(LDADD)
+getsockname_DEPENDENCIES = libtests.a
+getuid_SOURCES = getuid.c
+getuid_OBJECTS = getuid.$(OBJEXT)
+getuid_LDADD = $(LDADD)
+getuid_DEPENDENCIES = libtests.a
+getuid32_SOURCES = getuid32.c
+getuid32_OBJECTS = getuid32.$(OBJEXT)
+getuid32_LDADD = $(LDADD)
+getuid32_DEPENDENCIES = libtests.a
+getxxid_SOURCES = getxxid.c
+getxxid_OBJECTS = getxxid.$(OBJEXT)
+getxxid_LDADD = $(LDADD)
+getxxid_DEPENDENCIES = libtests.a
+inet_cmsg_SOURCES = inet-cmsg.c
+inet_cmsg_OBJECTS = inet-cmsg.$(OBJEXT)
+inet_cmsg_LDADD = $(LDADD)
+inet_cmsg_DEPENDENCIES = libtests.a
+init_module_SOURCES = init_module.c
+init_module_OBJECTS = init_module.$(OBJEXT)
+init_module_LDADD = $(LDADD)
+init_module_DEPENDENCIES = libtests.a
+inotify_SOURCES = inotify.c
+inotify_OBJECTS = inotify.$(OBJEXT)
+inotify_LDADD = $(LDADD)
+inotify_DEPENDENCIES = libtests.a
+inotify_init1_SOURCES = inotify_init1.c
+inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
+inotify_init1_LDADD = $(LDADD)
+inotify_init1_DEPENDENCIES = libtests.a
+ioctl_SOURCES = ioctl.c
+ioctl_OBJECTS = ioctl.$(OBJEXT)
+ioctl_LDADD = $(LDADD)
+ioctl_DEPENDENCIES = libtests.a
+ioctl_block_SOURCES = ioctl_block.c
+ioctl_block_OBJECTS = ioctl_block.$(OBJEXT)
+ioctl_block_LDADD = $(LDADD)
+ioctl_block_DEPENDENCIES = libtests.a
+ioctl_dm_SOURCES = ioctl_dm.c
+ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT)
+ioctl_dm_LDADD = $(LDADD)
+ioctl_dm_DEPENDENCIES = libtests.a
+ioctl_dm_v_SOURCES = ioctl_dm-v.c
+ioctl_dm_v_OBJECTS = ioctl_dm-v.$(OBJEXT)
+ioctl_dm_v_LDADD = $(LDADD)
+ioctl_dm_v_DEPENDENCIES = libtests.a
+ioctl_evdev_SOURCES = ioctl_evdev.c
+ioctl_evdev_OBJECTS = ioctl_evdev.$(OBJEXT)
+ioctl_evdev_LDADD = $(LDADD)
+ioctl_evdev_DEPENDENCIES = libtests.a
+ioctl_evdev_v_SOURCES = ioctl_evdev-v.c
+ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
+ioctl_evdev_v_LDADD = $(LDADD)
+ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_loop_SOURCES = ioctl_loop.c
+ioctl_loop_OBJECTS = ioctl_loop.$(OBJEXT)
+ioctl_loop_LDADD = $(LDADD)
+ioctl_loop_DEPENDENCIES = libtests.a
+ioctl_loop_nv_SOURCES = ioctl_loop-nv.c
+ioctl_loop_nv_OBJECTS = ioctl_loop-nv.$(OBJEXT)
+ioctl_loop_nv_LDADD = $(LDADD)
+ioctl_loop_nv_DEPENDENCIES = libtests.a
+ioctl_loop_v_SOURCES = ioctl_loop-v.c
+ioctl_loop_v_OBJECTS = ioctl_loop-v.$(OBJEXT)
+ioctl_loop_v_LDADD = $(LDADD)
+ioctl_loop_v_DEPENDENCIES = libtests.a
+ioctl_mtd_SOURCES = ioctl_mtd.c
+ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
+ioctl_mtd_LDADD = $(LDADD)
+ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_rtc_SOURCES = ioctl_rtc.c
+ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
+ioctl_rtc_LDADD = $(LDADD)
+ioctl_rtc_DEPENDENCIES = libtests.a
+ioctl_rtc_v_SOURCES = ioctl_rtc-v.c
+ioctl_rtc_v_OBJECTS = ioctl_rtc-v.$(OBJEXT)
+ioctl_rtc_v_LDADD = $(LDADD)
+ioctl_rtc_v_DEPENDENCIES = libtests.a
+ioctl_scsi_SOURCES = ioctl_scsi.c
+ioctl_scsi_OBJECTS = ioctl_scsi.$(OBJEXT)
+ioctl_scsi_LDADD = $(LDADD)
+ioctl_scsi_DEPENDENCIES = libtests.a
+ioctl_sg_io_v3_SOURCES = ioctl_sg_io_v3.c
+ioctl_sg_io_v3_OBJECTS = ioctl_sg_io_v3.$(OBJEXT)
+ioctl_sg_io_v3_LDADD = $(LDADD)
+ioctl_sg_io_v3_DEPENDENCIES = libtests.a
+ioctl_sg_io_v4_SOURCES = ioctl_sg_io_v4.c
+ioctl_sg_io_v4_OBJECTS = ioctl_sg_io_v4.$(OBJEXT)
+ioctl_sg_io_v4_LDADD = $(LDADD)
+ioctl_sg_io_v4_DEPENDENCIES = libtests.a
+ioctl_sock_gifconf_SOURCES = ioctl_sock_gifconf.c
+ioctl_sock_gifconf_OBJECTS = ioctl_sock_gifconf.$(OBJEXT)
+ioctl_sock_gifconf_LDADD = $(LDADD)
+ioctl_sock_gifconf_DEPENDENCIES = libtests.a
+ioctl_uffdio_SOURCES = ioctl_uffdio.c
+ioctl_uffdio_OBJECTS = ioctl_uffdio.$(OBJEXT)
+ioctl_uffdio_LDADD = $(LDADD)
+ioctl_uffdio_DEPENDENCIES = libtests.a
+ioctl_v4l2_SOURCES = ioctl_v4l2.c
+ioctl_v4l2_OBJECTS = ioctl_v4l2.$(OBJEXT)
+ioctl_v4l2_LDADD = $(LDADD)
+ioctl_v4l2_DEPENDENCIES = libtests.a
+ioperm_SOURCES = ioperm.c
+ioperm_OBJECTS = ioperm.$(OBJEXT)
+ioperm_LDADD = $(LDADD)
+ioperm_DEPENDENCIES = libtests.a
+iopl_SOURCES = iopl.c
+iopl_OBJECTS = iopl.$(OBJEXT)
+iopl_LDADD = $(LDADD)
+iopl_DEPENDENCIES = libtests.a
+ioprio_SOURCES = ioprio.c
+ioprio_OBJECTS = ioprio.$(OBJEXT)
+ioprio_LDADD = $(LDADD)
+ioprio_DEPENDENCIES = libtests.a
+ip_mreq_SOURCES = ip_mreq.c
+ip_mreq_OBJECTS = ip_mreq.$(OBJEXT)
+ip_mreq_LDADD = $(LDADD)
+ip_mreq_DEPENDENCIES = libtests.a
+ipc_SOURCES = ipc.c
+ipc_OBJECTS = ipc.$(OBJEXT)
+ipc_LDADD = $(LDADD)
+ipc_DEPENDENCIES = libtests.a
+ipc_msg_SOURCES = ipc_msg.c
+ipc_msg_OBJECTS = ipc_msg.$(OBJEXT)
+ipc_msg_LDADD = $(LDADD)
+ipc_msg_DEPENDENCIES = libtests.a
+ipc_msgbuf_SOURCES = ipc_msgbuf.c
+ipc_msgbuf_OBJECTS = ipc_msgbuf.$(OBJEXT)
+ipc_msgbuf_LDADD = $(LDADD)
+ipc_msgbuf_DEPENDENCIES = libtests.a
+ipc_sem_SOURCES = ipc_sem.c
+ipc_sem_OBJECTS = ipc_sem.$(OBJEXT)
+ipc_sem_LDADD = $(LDADD)
+ipc_sem_DEPENDENCIES = libtests.a
+ipc_shm_SOURCES = ipc_shm.c
+ipc_shm_OBJECTS = ipc_shm.$(OBJEXT)
+ipc_shm_LDADD = $(LDADD)
+ipc_shm_DEPENDENCIES = libtests.a
+kcmp_SOURCES = kcmp.c
+kcmp_OBJECTS = kcmp.$(OBJEXT)
+kcmp_LDADD = $(LDADD)
+kcmp_DEPENDENCIES = libtests.a
+kexec_file_load_SOURCES = kexec_file_load.c
+kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT)
+kexec_file_load_LDADD = $(LDADD)
+kexec_file_load_DEPENDENCIES = libtests.a
+kexec_load_SOURCES = kexec_load.c
+kexec_load_OBJECTS = kexec_load.$(OBJEXT)
+kexec_load_LDADD = $(LDADD)
+kexec_load_DEPENDENCIES = libtests.a
+keyctl_SOURCES = keyctl.c
+keyctl_OBJECTS = keyctl.$(OBJEXT)
+keyctl_LDADD = $(LDADD)
+keyctl_DEPENDENCIES = libtests.a
+kill_SOURCES = kill.c
+kill_OBJECTS = kill.$(OBJEXT)
+kill_LDADD = $(LDADD)
+kill_DEPENDENCIES = libtests.a
+ksysent_SOURCES = ksysent.c
+ksysent_OBJECTS = ksysent.$(OBJEXT)
+ksysent_LDADD = $(LDADD)
+ksysent_DEPENDENCIES = libtests.a
+lchown_SOURCES = lchown.c
+lchown_OBJECTS = lchown.$(OBJEXT)
+lchown_LDADD = $(LDADD)
+lchown_DEPENDENCIES = libtests.a
+lchown32_SOURCES = lchown32.c
+lchown32_OBJECTS = lchown32.$(OBJEXT)
+lchown32_LDADD = $(LDADD)
+lchown32_DEPENDENCIES = libtests.a
+link_SOURCES = link.c
+link_OBJECTS = link.$(OBJEXT)
+link_LDADD = $(LDADD)
+link_DEPENDENCIES = libtests.a
+linkat_SOURCES = linkat.c
+linkat_OBJECTS = linkat.$(OBJEXT)
+linkat_LDADD = $(LDADD)
+linkat_DEPENDENCIES = libtests.a
+llseek_SOURCES = llseek.c
+llseek_OBJECTS = llseek.$(OBJEXT)
+llseek_LDADD = $(LDADD)
+llseek_DEPENDENCIES = libtests.a
+lookup_dcookie_SOURCES = lookup_dcookie.c
+lookup_dcookie_OBJECTS = lookup_dcookie.$(OBJEXT)
+lookup_dcookie_LDADD = $(LDADD)
+lookup_dcookie_DEPENDENCIES = libtests.a
+lseek_SOURCES = lseek.c
+lseek_OBJECTS = lseek.$(OBJEXT)
+lseek_LDADD = $(LDADD)
+lseek_DEPENDENCIES = libtests.a
+lstat_SOURCES = lstat.c
+lstat_OBJECTS = lstat.$(OBJEXT)
+lstat_LDADD = $(LDADD)
+lstat_DEPENDENCIES = libtests.a
+lstat64_SOURCES = lstat64.c
+lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
+lstat64_LDADD = $(LDADD)
+lstat64_DEPENDENCIES = libtests.a
+mbind_SOURCES = mbind.c
+mbind_OBJECTS = mbind.$(OBJEXT)
+mbind_LDADD = $(LDADD)
+mbind_DEPENDENCIES = libtests.a
+membarrier_SOURCES = membarrier.c
+membarrier_OBJECTS = membarrier.$(OBJEXT)
+membarrier_LDADD = $(LDADD)
+membarrier_DEPENDENCIES = libtests.a
+memfd_create_SOURCES = memfd_create.c
+memfd_create_OBJECTS = memfd_create.$(OBJEXT)
+memfd_create_LDADD = $(LDADD)
+memfd_create_DEPENDENCIES = libtests.a
+migrate_pages_SOURCES = migrate_pages.c
+migrate_pages_OBJECTS = migrate_pages.$(OBJEXT)
+migrate_pages_LDADD = $(LDADD)
+migrate_pages_DEPENDENCIES = libtests.a
+mincore_SOURCES = mincore.c
+mincore_OBJECTS = mincore.$(OBJEXT)
+mincore_LDADD = $(LDADD)
+mincore_DEPENDENCIES = libtests.a
+mkdir_SOURCES = mkdir.c
+mkdir_OBJECTS = mkdir.$(OBJEXT)
+mkdir_LDADD = $(LDADD)
+mkdir_DEPENDENCIES = libtests.a
+mkdirat_SOURCES = mkdirat.c
+mkdirat_OBJECTS = mkdirat.$(OBJEXT)
+mkdirat_LDADD = $(LDADD)
+mkdirat_DEPENDENCIES = libtests.a
+mknod_SOURCES = mknod.c
+mknod_OBJECTS = mknod.$(OBJEXT)
+mknod_LDADD = $(LDADD)
+mknod_DEPENDENCIES = libtests.a
+mknodat_SOURCES = mknodat.c
+mknodat_OBJECTS = mknodat.$(OBJEXT)
+mknodat_LDADD = $(LDADD)
+mknodat_DEPENDENCIES = libtests.a
+mlock_SOURCES = mlock.c
+mlock_OBJECTS = mlock.$(OBJEXT)
+mlock_LDADD = $(LDADD)
+mlock_DEPENDENCIES = libtests.a
+mlock2_SOURCES = mlock2.c
+mlock2_OBJECTS = mlock2.$(OBJEXT)
+mlock2_LDADD = $(LDADD)
+mlock2_DEPENDENCIES = libtests.a
+mlockall_SOURCES = mlockall.c
+mlockall_OBJECTS = mlockall.$(OBJEXT)
+mlockall_LDADD = $(LDADD)
+mlockall_DEPENDENCIES = libtests.a
+mmap_SOURCES = mmap.c
+mmap_OBJECTS = mmap.$(OBJEXT)
+mmap_LDADD = $(LDADD)
+mmap_DEPENDENCIES = libtests.a
+mmap64_SOURCES = mmap64.c
+mmap64_OBJECTS = mmap64-mmap64.$(OBJEXT)
+mmap64_LDADD = $(LDADD)
+mmap64_DEPENDENCIES = libtests.a
+mmsg_SOURCES = mmsg.c
+mmsg_OBJECTS = mmsg.$(OBJEXT)
+mmsg_LDADD = $(LDADD)
+mmsg_DEPENDENCIES = libtests.a
+mmsg_silent_SOURCES = mmsg-silent.c
+mmsg_silent_OBJECTS = mmsg-silent.$(OBJEXT)
+mmsg_silent_LDADD = $(LDADD)
+mmsg_silent_DEPENDENCIES = libtests.a
+mmsg_name_SOURCES = mmsg_name.c
+mmsg_name_OBJECTS = mmsg_name.$(OBJEXT)
+mmsg_name_LDADD = $(LDADD)
+mmsg_name_DEPENDENCIES = libtests.a
+mmsg_name_v_SOURCES = mmsg_name-v.c
+mmsg_name_v_OBJECTS = mmsg_name-v.$(OBJEXT)
+mmsg_name_v_LDADD = $(LDADD)
+mmsg_name_v_DEPENDENCIES = libtests.a
+mount_SOURCES = mount.c
+mount_OBJECTS = mount.$(OBJEXT)
+mount_LDADD = $(LDADD)
+mount_DEPENDENCIES = libtests.a
+move_pages_SOURCES = move_pages.c
+move_pages_OBJECTS = move_pages.$(OBJEXT)
+move_pages_LDADD = $(LDADD)
+move_pages_DEPENDENCIES = libtests.a
+mq_SOURCES = mq.c
+mq_OBJECTS = mq.$(OBJEXT)
+mq_DEPENDENCIES = $(LDADD)
+mq_sendrecv_SOURCES = mq_sendrecv.c
+mq_sendrecv_OBJECTS = mq_sendrecv.$(OBJEXT)
+mq_sendrecv_DEPENDENCIES = $(LDADD)
+mq_sendrecv_read_SOURCES = mq_sendrecv-read.c
+mq_sendrecv_read_OBJECTS = mq_sendrecv-read.$(OBJEXT)
+mq_sendrecv_read_DEPENDENCIES = $(LDADD)
+mq_sendrecv_write_SOURCES = mq_sendrecv-write.c
+mq_sendrecv_write_OBJECTS = mq_sendrecv-write.$(OBJEXT)
+mq_sendrecv_write_DEPENDENCIES = $(LDADD)
+msg_control_SOURCES = msg_control.c
+msg_control_OBJECTS = msg_control.$(OBJEXT)
+msg_control_LDADD = $(LDADD)
+msg_control_DEPENDENCIES = libtests.a
+msg_control_v_SOURCES = msg_control-v.c
+msg_control_v_OBJECTS = msg_control-v.$(OBJEXT)
+msg_control_v_LDADD = $(LDADD)
+msg_control_v_DEPENDENCIES = libtests.a
+msg_name_SOURCES = msg_name.c
+msg_name_OBJECTS = msg_name.$(OBJEXT)
+msg_name_LDADD = $(LDADD)
+msg_name_DEPENDENCIES = libtests.a
+munlockall_SOURCES = munlockall.c
+munlockall_OBJECTS = munlockall.$(OBJEXT)
+munlockall_LDADD = $(LDADD)
+munlockall_DEPENDENCIES = libtests.a
+nanosleep_SOURCES = nanosleep.c
+nanosleep_OBJECTS = nanosleep.$(OBJEXT)
+nanosleep_LDADD = $(LDADD)
+nanosleep_DEPENDENCIES = libtests.a
+net_accept_connect_SOURCES = net-accept-connect.c
+net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT)
+net_accept_connect_LDADD = $(LDADD)
+net_accept_connect_DEPENDENCIES = libtests.a
+net_icmp_filter_SOURCES = net-icmp_filter.c
+net_icmp_filter_OBJECTS = net-icmp_filter.$(OBJEXT)
+net_icmp_filter_LDADD = $(LDADD)
+net_icmp_filter_DEPENDENCIES = libtests.a
+net_sockaddr_SOURCES = net-sockaddr.c
+net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT)
+net_sockaddr_LDADD = $(LDADD)
+net_sockaddr_DEPENDENCIES = libtests.a
+net_y_unix_SOURCES = net-y-unix.c
+net_y_unix_OBJECTS = net-y-unix.$(OBJEXT)
+net_y_unix_LDADD = $(LDADD)
+net_y_unix_DEPENDENCIES = libtests.a
+net_yy_inet_SOURCES = net-yy-inet.c
+net_yy_inet_OBJECTS = net-yy-inet.$(OBJEXT)
+net_yy_inet_LDADD = $(LDADD)
+net_yy_inet_DEPENDENCIES = libtests.a
+net_yy_netlink_SOURCES = net-yy-netlink.c
+net_yy_netlink_OBJECTS = net-yy-netlink.$(OBJEXT)
+net_yy_netlink_LDADD = $(LDADD)
+net_yy_netlink_DEPENDENCIES = libtests.a
+net_yy_unix_SOURCES = net-yy-unix.c
+net_yy_unix_OBJECTS = net-yy-unix.$(OBJEXT)
+net_yy_unix_LDADD = $(LDADD)
+net_yy_unix_DEPENDENCIES = libtests.a
+netlink_inet_diag_SOURCES = netlink_inet_diag.c
+netlink_inet_diag_OBJECTS = netlink_inet_diag.$(OBJEXT)
+netlink_inet_diag_LDADD = $(LDADD)
+netlink_inet_diag_DEPENDENCIES = libtests.a
+netlink_netlink_diag_SOURCES = netlink_netlink_diag.c
+netlink_netlink_diag_OBJECTS = netlink_netlink_diag.$(OBJEXT)
+netlink_netlink_diag_LDADD = $(LDADD)
+netlink_netlink_diag_DEPENDENCIES = libtests.a
+netlink_protocol_SOURCES = netlink_protocol.c
+netlink_protocol_OBJECTS = netlink_protocol.$(OBJEXT)
+netlink_protocol_LDADD = $(LDADD)
+netlink_protocol_DEPENDENCIES = libtests.a
+netlink_unix_diag_SOURCES = netlink_unix_diag.c
+netlink_unix_diag_OBJECTS = netlink_unix_diag.$(OBJEXT)
+netlink_unix_diag_LDADD = $(LDADD)
+netlink_unix_diag_DEPENDENCIES = libtests.a
+newfstatat_SOURCES = newfstatat.c
+newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT)
+newfstatat_LDADD = $(LDADD)
+newfstatat_DEPENDENCIES = libtests.a
+nsyscalls_SOURCES = nsyscalls.c
+nsyscalls_OBJECTS = nsyscalls.$(OBJEXT)
+nsyscalls_LDADD = $(LDADD)
+nsyscalls_DEPENDENCIES = libtests.a
+old_mmap_SOURCES = old_mmap.c
+old_mmap_OBJECTS = old_mmap.$(OBJEXT)
+old_mmap_LDADD = $(LDADD)
+old_mmap_DEPENDENCIES = libtests.a
+oldfstat_SOURCES = oldfstat.c
+oldfstat_OBJECTS = oldfstat.$(OBJEXT)
+oldfstat_LDADD = $(LDADD)
+oldfstat_DEPENDENCIES = libtests.a
+oldlstat_SOURCES = oldlstat.c
+oldlstat_OBJECTS = oldlstat.$(OBJEXT)
+oldlstat_LDADD = $(LDADD)
+oldlstat_DEPENDENCIES = libtests.a
+oldselect_SOURCES = oldselect.c
+oldselect_OBJECTS = oldselect.$(OBJEXT)
+oldselect_LDADD = $(LDADD)
+oldselect_DEPENDENCIES = libtests.a
+oldstat_SOURCES = oldstat.c
+oldstat_OBJECTS = oldstat.$(OBJEXT)
+oldstat_LDADD = $(LDADD)
+oldstat_DEPENDENCIES = libtests.a
+open_SOURCES = open.c
+open_OBJECTS = open.$(OBJEXT)
+open_LDADD = $(LDADD)
+open_DEPENDENCIES = libtests.a
+openat_SOURCES = openat.c
+openat_OBJECTS = openat.$(OBJEXT)
+openat_LDADD = $(LDADD)
+openat_DEPENDENCIES = libtests.a
+pause_SOURCES = pause.c
+pause_OBJECTS = pause.$(OBJEXT)
+pause_LDADD = $(LDADD)
+pause_DEPENDENCIES = libtests.a
+pc_SOURCES = pc.c
+pc_OBJECTS = pc.$(OBJEXT)
+am__DEPENDENCIES_1 =
+pc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+perf_event_open_SOURCES = perf_event_open.c
+perf_event_open_OBJECTS = perf_event_open.$(OBJEXT)
+perf_event_open_LDADD = $(LDADD)
+perf_event_open_DEPENDENCIES = libtests.a
+perf_event_open_nonverbose_SOURCES = perf_event_open_nonverbose.c
+perf_event_open_nonverbose_OBJECTS = \
+ perf_event_open_nonverbose.$(OBJEXT)
+perf_event_open_nonverbose_LDADD = $(LDADD)
+perf_event_open_nonverbose_DEPENDENCIES = libtests.a
+perf_event_open_unabbrev_SOURCES = perf_event_open_unabbrev.c
+perf_event_open_unabbrev_OBJECTS = perf_event_open_unabbrev.$(OBJEXT)
+perf_event_open_unabbrev_LDADD = $(LDADD)
+perf_event_open_unabbrev_DEPENDENCIES = libtests.a
+personality_SOURCES = personality.c
+personality_OBJECTS = personality.$(OBJEXT)
+personality_LDADD = $(LDADD)
+personality_DEPENDENCIES = libtests.a
+pipe_SOURCES = pipe.c
+pipe_OBJECTS = pipe.$(OBJEXT)
+pipe_LDADD = $(LDADD)
+pipe_DEPENDENCIES = libtests.a
+pipe2_SOURCES = pipe2.c
+pipe2_OBJECTS = pipe2.$(OBJEXT)
+pipe2_LDADD = $(LDADD)
+pipe2_DEPENDENCIES = libtests.a
+pkey_alloc_SOURCES = pkey_alloc.c
+pkey_alloc_OBJECTS = pkey_alloc.$(OBJEXT)
+pkey_alloc_LDADD = $(LDADD)
+pkey_alloc_DEPENDENCIES = libtests.a
+pkey_free_SOURCES = pkey_free.c
+pkey_free_OBJECTS = pkey_free.$(OBJEXT)
+pkey_free_LDADD = $(LDADD)
+pkey_free_DEPENDENCIES = libtests.a
+pkey_mprotect_SOURCES = pkey_mprotect.c
+pkey_mprotect_OBJECTS = pkey_mprotect.$(OBJEXT)
+pkey_mprotect_LDADD = $(LDADD)
+pkey_mprotect_DEPENDENCIES = libtests.a
+poll_SOURCES = poll.c
+poll_OBJECTS = poll.$(OBJEXT)
+poll_LDADD = $(LDADD)
+poll_DEPENDENCIES = libtests.a
+ppoll_SOURCES = ppoll.c
+ppoll_OBJECTS = ppoll.$(OBJEXT)
+ppoll_LDADD = $(LDADD)
+ppoll_DEPENDENCIES = libtests.a
+prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
+prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
+prctl_arg2_intptr_LDADD = $(LDADD)
+prctl_arg2_intptr_DEPENDENCIES = libtests.a
+prctl_dumpable_SOURCES = prctl-dumpable.c
+prctl_dumpable_OBJECTS = prctl-dumpable.$(OBJEXT)
+prctl_dumpable_LDADD = $(LDADD)
+prctl_dumpable_DEPENDENCIES = libtests.a
+prctl_name_SOURCES = prctl-name.c
+prctl_name_OBJECTS = prctl-name.$(OBJEXT)
+prctl_name_LDADD = $(LDADD)
+prctl_name_DEPENDENCIES = libtests.a
+prctl_no_args_SOURCES = prctl-no-args.c
+prctl_no_args_OBJECTS = prctl-no-args.$(OBJEXT)
+prctl_no_args_LDADD = $(LDADD)
+prctl_no_args_DEPENDENCIES = libtests.a
+prctl_pdeathsig_SOURCES = prctl-pdeathsig.c
+prctl_pdeathsig_OBJECTS = prctl-pdeathsig.$(OBJEXT)
+prctl_pdeathsig_LDADD = $(LDADD)
+prctl_pdeathsig_DEPENDENCIES = libtests.a
+prctl_seccomp_filter_v_SOURCES = prctl-seccomp-filter-v.c
+prctl_seccomp_filter_v_OBJECTS = prctl-seccomp-filter-v.$(OBJEXT)
+prctl_seccomp_filter_v_LDADD = $(LDADD)
+prctl_seccomp_filter_v_DEPENDENCIES = libtests.a
+prctl_seccomp_strict_SOURCES = prctl-seccomp-strict.c
+prctl_seccomp_strict_OBJECTS = prctl-seccomp-strict.$(OBJEXT)
+prctl_seccomp_strict_LDADD = $(LDADD)
+prctl_seccomp_strict_DEPENDENCIES = libtests.a
+prctl_securebits_SOURCES = prctl-securebits.c
+prctl_securebits_OBJECTS = prctl-securebits.$(OBJEXT)
+prctl_securebits_LDADD = $(LDADD)
+prctl_securebits_DEPENDENCIES = libtests.a
+prctl_tid_address_SOURCES = prctl-tid_address.c
+prctl_tid_address_OBJECTS = prctl-tid_address.$(OBJEXT)
+prctl_tid_address_LDADD = $(LDADD)
+prctl_tid_address_DEPENDENCIES = libtests.a
+prctl_tsc_SOURCES = prctl-tsc.c
+prctl_tsc_OBJECTS = prctl-tsc.$(OBJEXT)
+prctl_tsc_LDADD = $(LDADD)
+prctl_tsc_DEPENDENCIES = libtests.a
+pread64_pwrite64_SOURCES = pread64-pwrite64.c
+pread64_pwrite64_OBJECTS = \
+ pread64_pwrite64-pread64-pwrite64.$(OBJEXT)
+pread64_pwrite64_LDADD = $(LDADD)
+pread64_pwrite64_DEPENDENCIES = libtests.a
+preadv_SOURCES = preadv.c
+preadv_OBJECTS = preadv-preadv.$(OBJEXT)
+preadv_LDADD = $(LDADD)
+preadv_DEPENDENCIES = libtests.a
+preadv_pwritev_SOURCES = preadv-pwritev.c
+preadv_pwritev_OBJECTS = preadv_pwritev-preadv-pwritev.$(OBJEXT)
+preadv_pwritev_LDADD = $(LDADD)
+preadv_pwritev_DEPENDENCIES = libtests.a
+preadv2_pwritev2_SOURCES = preadv2-pwritev2.c
+preadv2_pwritev2_OBJECTS = preadv2-pwritev2.$(OBJEXT)
+preadv2_pwritev2_LDADD = $(LDADD)
+preadv2_pwritev2_DEPENDENCIES = libtests.a
+print_maxfd_SOURCES = print_maxfd.c
+print_maxfd_OBJECTS = print_maxfd.$(OBJEXT)
+print_maxfd_LDADD = $(LDADD)
+print_maxfd_DEPENDENCIES = libtests.a
+printstr_SOURCES = printstr.c
+printstr_OBJECTS = printstr.$(OBJEXT)
+printstr_LDADD = $(LDADD)
+printstr_DEPENDENCIES = libtests.a
+prlimit64_SOURCES = prlimit64.c
+prlimit64_OBJECTS = prlimit64.$(OBJEXT)
+prlimit64_LDADD = $(LDADD)
+prlimit64_DEPENDENCIES = libtests.a
+process_vm_readv_SOURCES = process_vm_readv.c
+process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT)
+process_vm_readv_LDADD = $(LDADD)
+process_vm_readv_DEPENDENCIES = libtests.a
+process_vm_writev_SOURCES = process_vm_writev.c
+process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT)
+process_vm_writev_LDADD = $(LDADD)
+process_vm_writev_DEPENDENCIES = libtests.a
+pselect6_SOURCES = pselect6.c
+pselect6_OBJECTS = pselect6.$(OBJEXT)
+pselect6_LDADD = $(LDADD)
+pselect6_DEPENDENCIES = libtests.a
+ptrace_SOURCES = ptrace.c
+ptrace_OBJECTS = ptrace.$(OBJEXT)
+ptrace_LDADD = $(LDADD)
+ptrace_DEPENDENCIES = libtests.a
+pwritev_SOURCES = pwritev.c
+pwritev_OBJECTS = pwritev-pwritev.$(OBJEXT)
+pwritev_LDADD = $(LDADD)
+pwritev_DEPENDENCIES = libtests.a
+qual_fault_SOURCES = qual_fault.c
+qual_fault_OBJECTS = qual_fault.$(OBJEXT)
+qual_fault_LDADD = $(LDADD)
+qual_fault_DEPENDENCIES = libtests.a
+qual_inject_error_signal_SOURCES = qual_inject-error-signal.c
+qual_inject_error_signal_OBJECTS = qual_inject-error-signal.$(OBJEXT)
+qual_inject_error_signal_LDADD = $(LDADD)
+qual_inject_error_signal_DEPENDENCIES = libtests.a
+qual_inject_retval_SOURCES = qual_inject-retval.c
+qual_inject_retval_OBJECTS = qual_inject-retval.$(OBJEXT)
+qual_inject_retval_LDADD = $(LDADD)
+qual_inject_retval_DEPENDENCIES = libtests.a
+qual_inject_signal_SOURCES = qual_inject-signal.c
+qual_inject_signal_OBJECTS = qual_inject-signal.$(OBJEXT)
+qual_inject_signal_LDADD = $(LDADD)
+qual_inject_signal_DEPENDENCIES = libtests.a
+qual_signal_SOURCES = qual_signal.c
+qual_signal_OBJECTS = qual_signal.$(OBJEXT)
+qual_signal_LDADD = $(LDADD)
+qual_signal_DEPENDENCIES = libtests.a
+quotactl_SOURCES = quotactl.c
+quotactl_OBJECTS = quotactl.$(OBJEXT)
+quotactl_LDADD = $(LDADD)
+quotactl_DEPENDENCIES = libtests.a
+quotactl_v_SOURCES = quotactl-v.c
+quotactl_v_OBJECTS = quotactl-v.$(OBJEXT)
+quotactl_v_LDADD = $(LDADD)
+quotactl_v_DEPENDENCIES = libtests.a
+quotactl_xfs_SOURCES = quotactl-xfs.c
+quotactl_xfs_OBJECTS = quotactl-xfs.$(OBJEXT)
+quotactl_xfs_LDADD = $(LDADD)
+quotactl_xfs_DEPENDENCIES = libtests.a
+quotactl_xfs_v_SOURCES = quotactl-xfs-v.c
+quotactl_xfs_v_OBJECTS = quotactl-xfs-v.$(OBJEXT)
+quotactl_xfs_v_LDADD = $(LDADD)
+quotactl_xfs_v_DEPENDENCIES = libtests.a
+read_write_SOURCES = read-write.c
+read_write_OBJECTS = read-write.$(OBJEXT)
+read_write_LDADD = $(LDADD)
+read_write_DEPENDENCIES = libtests.a
+readahead_SOURCES = readahead.c
+readahead_OBJECTS = readahead.$(OBJEXT)
+readahead_LDADD = $(LDADD)
+readahead_DEPENDENCIES = libtests.a
+readdir_SOURCES = readdir.c
+readdir_OBJECTS = readdir.$(OBJEXT)
+readdir_LDADD = $(LDADD)
+readdir_DEPENDENCIES = libtests.a
+readlink_SOURCES = readlink.c
+readlink_OBJECTS = readlink.$(OBJEXT)
+readlink_LDADD = $(LDADD)
+readlink_DEPENDENCIES = libtests.a
+readlinkat_SOURCES = readlinkat.c
+readlinkat_OBJECTS = readlinkat.$(OBJEXT)
+readlinkat_LDADD = $(LDADD)
+readlinkat_DEPENDENCIES = libtests.a
+readv_SOURCES = readv.c
+readv_OBJECTS = readv.$(OBJEXT)
+readv_LDADD = $(LDADD)
+readv_DEPENDENCIES = libtests.a
+reboot_SOURCES = reboot.c
+reboot_OBJECTS = reboot.$(OBJEXT)
+reboot_LDADD = $(LDADD)
+reboot_DEPENDENCIES = libtests.a
+recvfrom_SOURCES = recvfrom.c
+recvfrom_OBJECTS = recvfrom.$(OBJEXT)
+recvfrom_LDADD = $(LDADD)
+recvfrom_DEPENDENCIES = libtests.a
+recvmmsg_timeout_SOURCES = recvmmsg-timeout.c
+recvmmsg_timeout_OBJECTS = recvmmsg-timeout.$(OBJEXT)
+recvmmsg_timeout_LDADD = $(LDADD)
+recvmmsg_timeout_DEPENDENCIES = libtests.a
+recvmsg_SOURCES = recvmsg.c
+recvmsg_OBJECTS = recvmsg.$(OBJEXT)
+recvmsg_LDADD = $(LDADD)
+recvmsg_DEPENDENCIES = libtests.a
+redirect_fds_SOURCES = redirect-fds.c
+redirect_fds_OBJECTS = redirect-fds.$(OBJEXT)
+redirect_fds_LDADD = $(LDADD)
+redirect_fds_DEPENDENCIES = libtests.a
+remap_file_pages_SOURCES = remap_file_pages.c
+remap_file_pages_OBJECTS = remap_file_pages.$(OBJEXT)
+remap_file_pages_LDADD = $(LDADD)
+remap_file_pages_DEPENDENCIES = libtests.a
+rename_SOURCES = rename.c
+rename_OBJECTS = rename.$(OBJEXT)
+rename_LDADD = $(LDADD)
+rename_DEPENDENCIES = libtests.a
+renameat_SOURCES = renameat.c
+renameat_OBJECTS = renameat.$(OBJEXT)
+renameat_LDADD = $(LDADD)
+renameat_DEPENDENCIES = libtests.a
+renameat2_SOURCES = renameat2.c
+renameat2_OBJECTS = renameat2.$(OBJEXT)
+renameat2_LDADD = $(LDADD)
+renameat2_DEPENDENCIES = libtests.a
+request_key_SOURCES = request_key.c
+request_key_OBJECTS = request_key.$(OBJEXT)
+request_key_LDADD = $(LDADD)
+request_key_DEPENDENCIES = libtests.a
+restart_syscall_SOURCES = restart_syscall.c
+restart_syscall_OBJECTS = restart_syscall.$(OBJEXT)
+restart_syscall_LDADD = $(LDADD)
+restart_syscall_DEPENDENCIES = libtests.a
+rmdir_SOURCES = rmdir.c
+rmdir_OBJECTS = rmdir.$(OBJEXT)
+rmdir_LDADD = $(LDADD)
+rmdir_DEPENDENCIES = libtests.a
+rt_sigpending_SOURCES = rt_sigpending.c
+rt_sigpending_OBJECTS = rt_sigpending.$(OBJEXT)
+rt_sigpending_LDADD = $(LDADD)
+rt_sigpending_DEPENDENCIES = libtests.a
+rt_sigprocmask_SOURCES = rt_sigprocmask.c
+rt_sigprocmask_OBJECTS = rt_sigprocmask.$(OBJEXT)
+rt_sigprocmask_LDADD = $(LDADD)
+rt_sigprocmask_DEPENDENCIES = libtests.a
+rt_sigqueueinfo_SOURCES = rt_sigqueueinfo.c
+rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
+rt_sigqueueinfo_LDADD = $(LDADD)
+rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigsuspend_SOURCES = rt_sigsuspend.c
+rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
+rt_sigsuspend_LDADD = $(LDADD)
+rt_sigsuspend_DEPENDENCIES = libtests.a
+rt_sigtimedwait_SOURCES = rt_sigtimedwait.c
+rt_sigtimedwait_OBJECTS = rt_sigtimedwait.$(OBJEXT)
+rt_sigtimedwait_LDADD = $(LDADD)
+rt_sigtimedwait_DEPENDENCIES = libtests.a
+rt_tgsigqueueinfo_SOURCES = rt_tgsigqueueinfo.c
+rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT)
+rt_tgsigqueueinfo_LDADD = $(LDADD)
+rt_tgsigqueueinfo_DEPENDENCIES = libtests.a
+sched_get_priority_mxx_SOURCES = sched_get_priority_mxx.c
+sched_get_priority_mxx_OBJECTS = sched_get_priority_mxx.$(OBJEXT)
+sched_get_priority_mxx_LDADD = $(LDADD)
+sched_get_priority_mxx_DEPENDENCIES = libtests.a
+sched_rr_get_interval_SOURCES = sched_rr_get_interval.c
+sched_rr_get_interval_OBJECTS = sched_rr_get_interval.$(OBJEXT)
+sched_rr_get_interval_LDADD = $(LDADD)
+sched_rr_get_interval_DEPENDENCIES = libtests.a
+sched_xetaffinity_SOURCES = sched_xetaffinity.c
+sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT)
+sched_xetaffinity_LDADD = $(LDADD)
+sched_xetaffinity_DEPENDENCIES = libtests.a
+sched_xetattr_SOURCES = sched_xetattr.c
+sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT)
+sched_xetattr_LDADD = $(LDADD)
+sched_xetattr_DEPENDENCIES = libtests.a
+sched_xetparam_SOURCES = sched_xetparam.c
+sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT)
+sched_xetparam_LDADD = $(LDADD)
+sched_xetparam_DEPENDENCIES = libtests.a
+sched_xetscheduler_SOURCES = sched_xetscheduler.c
+sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT)
+sched_xetscheduler_LDADD = $(LDADD)
+sched_xetscheduler_DEPENDENCIES = libtests.a
+sched_yield_SOURCES = sched_yield.c
+sched_yield_OBJECTS = sched_yield.$(OBJEXT)
+sched_yield_LDADD = $(LDADD)
+sched_yield_DEPENDENCIES = libtests.a
+scm_rights_SOURCES = scm_rights.c
+scm_rights_OBJECTS = scm_rights.$(OBJEXT)
+scm_rights_LDADD = $(LDADD)
+scm_rights_DEPENDENCIES = libtests.a
+seccomp_filter_SOURCES = seccomp-filter.c
+seccomp_filter_OBJECTS = seccomp-filter.$(OBJEXT)
+seccomp_filter_LDADD = $(LDADD)
+seccomp_filter_DEPENDENCIES = libtests.a
+seccomp_filter_v_SOURCES = seccomp-filter-v.c
+seccomp_filter_v_OBJECTS = seccomp-filter-v.$(OBJEXT)
+seccomp_filter_v_LDADD = $(LDADD)
+seccomp_filter_v_DEPENDENCIES = libtests.a
+seccomp_strict_SOURCES = seccomp-strict.c
+seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT)
+seccomp_strict_LDADD = $(LDADD)
+seccomp_strict_DEPENDENCIES = libtests.a
+select_SOURCES = select.c
+select_OBJECTS = select.$(OBJEXT)
+select_LDADD = $(LDADD)
+select_DEPENDENCIES = libtests.a
+semop_SOURCES = semop.c
+semop_OBJECTS = semop.$(OBJEXT)
+semop_LDADD = $(LDADD)
+semop_DEPENDENCIES = libtests.a
+sendfile_SOURCES = sendfile.c
+sendfile_OBJECTS = sendfile.$(OBJEXT)
+sendfile_LDADD = $(LDADD)
+sendfile_DEPENDENCIES = libtests.a
+sendfile64_SOURCES = sendfile64.c
+sendfile64_OBJECTS = sendfile64.$(OBJEXT)
+sendfile64_LDADD = $(LDADD)
+sendfile64_DEPENDENCIES = libtests.a
+set_mempolicy_SOURCES = set_mempolicy.c
+set_mempolicy_OBJECTS = set_mempolicy.$(OBJEXT)
+set_mempolicy_LDADD = $(LDADD)
+set_mempolicy_DEPENDENCIES = libtests.a
+set_ptracer_any_SOURCES = set_ptracer_any.c
+set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
+set_ptracer_any_LDADD = $(LDADD)
+set_ptracer_any_DEPENDENCIES = libtests.a
+setdomainname_SOURCES = setdomainname.c
+setdomainname_OBJECTS = setdomainname.$(OBJEXT)
+setdomainname_LDADD = $(LDADD)
+setdomainname_DEPENDENCIES = libtests.a
+setfsgid_SOURCES = setfsgid.c
+setfsgid_OBJECTS = setfsgid.$(OBJEXT)
+setfsgid_LDADD = $(LDADD)
+setfsgid_DEPENDENCIES = libtests.a
+setfsgid32_SOURCES = setfsgid32.c
+setfsgid32_OBJECTS = setfsgid32.$(OBJEXT)
+setfsgid32_LDADD = $(LDADD)
+setfsgid32_DEPENDENCIES = libtests.a
+setfsuid_SOURCES = setfsuid.c
+setfsuid_OBJECTS = setfsuid.$(OBJEXT)
+setfsuid_LDADD = $(LDADD)
+setfsuid_DEPENDENCIES = libtests.a
+setfsuid32_SOURCES = setfsuid32.c
+setfsuid32_OBJECTS = setfsuid32.$(OBJEXT)
+setfsuid32_LDADD = $(LDADD)
+setfsuid32_DEPENDENCIES = libtests.a
+setgid_SOURCES = setgid.c
+setgid_OBJECTS = setgid.$(OBJEXT)
+setgid_LDADD = $(LDADD)
+setgid_DEPENDENCIES = libtests.a
+setgid32_SOURCES = setgid32.c
+setgid32_OBJECTS = setgid32.$(OBJEXT)
+setgid32_LDADD = $(LDADD)
+setgid32_DEPENDENCIES = libtests.a
+setgroups_SOURCES = setgroups.c
+setgroups_OBJECTS = setgroups.$(OBJEXT)
+setgroups_LDADD = $(LDADD)
+setgroups_DEPENDENCIES = libtests.a
+setgroups32_SOURCES = setgroups32.c
+setgroups32_OBJECTS = setgroups32.$(OBJEXT)
+setgroups32_LDADD = $(LDADD)
+setgroups32_DEPENDENCIES = libtests.a
+sethostname_SOURCES = sethostname.c
+sethostname_OBJECTS = sethostname.$(OBJEXT)
+sethostname_LDADD = $(LDADD)
+sethostname_DEPENDENCIES = libtests.a
+setns_SOURCES = setns.c
+setns_OBJECTS = setns.$(OBJEXT)
+setns_LDADD = $(LDADD)
+setns_DEPENDENCIES = libtests.a
+setregid_SOURCES = setregid.c
+setregid_OBJECTS = setregid.$(OBJEXT)
+setregid_LDADD = $(LDADD)
+setregid_DEPENDENCIES = libtests.a
+setregid32_SOURCES = setregid32.c
+setregid32_OBJECTS = setregid32.$(OBJEXT)
+setregid32_LDADD = $(LDADD)
+setregid32_DEPENDENCIES = libtests.a
+setresgid_SOURCES = setresgid.c
+setresgid_OBJECTS = setresgid.$(OBJEXT)
+setresgid_LDADD = $(LDADD)
+setresgid_DEPENDENCIES = libtests.a
+setresgid32_SOURCES = setresgid32.c
+setresgid32_OBJECTS = setresgid32.$(OBJEXT)
+setresgid32_LDADD = $(LDADD)
+setresgid32_DEPENDENCIES = libtests.a
+setresuid_SOURCES = setresuid.c
+setresuid_OBJECTS = setresuid.$(OBJEXT)
+setresuid_LDADD = $(LDADD)
+setresuid_DEPENDENCIES = libtests.a
+setresuid32_SOURCES = setresuid32.c
+setresuid32_OBJECTS = setresuid32.$(OBJEXT)
+setresuid32_LDADD = $(LDADD)
+setresuid32_DEPENDENCIES = libtests.a
+setreuid_SOURCES = setreuid.c
+setreuid_OBJECTS = setreuid.$(OBJEXT)
+setreuid_LDADD = $(LDADD)
+setreuid_DEPENDENCIES = libtests.a
+setreuid32_SOURCES = setreuid32.c
+setreuid32_OBJECTS = setreuid32.$(OBJEXT)
+setreuid32_LDADD = $(LDADD)
+setreuid32_DEPENDENCIES = libtests.a
+setrlimit_SOURCES = setrlimit.c
+setrlimit_OBJECTS = setrlimit.$(OBJEXT)
+setrlimit_LDADD = $(LDADD)
+setrlimit_DEPENDENCIES = libtests.a
+setuid_SOURCES = setuid.c
+setuid_OBJECTS = setuid.$(OBJEXT)
+setuid_LDADD = $(LDADD)
+setuid_DEPENDENCIES = libtests.a
+setuid32_SOURCES = setuid32.c
+setuid32_OBJECTS = setuid32.$(OBJEXT)
+setuid32_LDADD = $(LDADD)
+setuid32_DEPENDENCIES = libtests.a
+shmxt_SOURCES = shmxt.c
+shmxt_OBJECTS = shmxt.$(OBJEXT)
+shmxt_LDADD = $(LDADD)
+shmxt_DEPENDENCIES = libtests.a
+shutdown_SOURCES = shutdown.c
+shutdown_OBJECTS = shutdown.$(OBJEXT)
+shutdown_LDADD = $(LDADD)
+shutdown_DEPENDENCIES = libtests.a
+sigaction_SOURCES = sigaction.c
+sigaction_OBJECTS = sigaction.$(OBJEXT)
+sigaction_LDADD = $(LDADD)
+sigaction_DEPENDENCIES = libtests.a
+sigaltstack_SOURCES = sigaltstack.c
+sigaltstack_OBJECTS = sigaltstack.$(OBJEXT)
+sigaltstack_LDADD = $(LDADD)
+sigaltstack_DEPENDENCIES = libtests.a
+siginfo_SOURCES = siginfo.c
+siginfo_OBJECTS = siginfo.$(OBJEXT)
+siginfo_LDADD = $(LDADD)
+siginfo_DEPENDENCIES = libtests.a
+signal_receive_SOURCES = signal_receive.c
+signal_receive_OBJECTS = signal_receive.$(OBJEXT)
+signal_receive_LDADD = $(LDADD)
+signal_receive_DEPENDENCIES = libtests.a
+signalfd4_SOURCES = signalfd4.c
+signalfd4_OBJECTS = signalfd4.$(OBJEXT)
+signalfd4_LDADD = $(LDADD)
+signalfd4_DEPENDENCIES = libtests.a
+sigreturn_SOURCES = sigreturn.c
+sigreturn_OBJECTS = sigreturn.$(OBJEXT)
+sigreturn_LDADD = $(LDADD)
+sigreturn_DEPENDENCIES = libtests.a
+sleep_SOURCES = sleep.c
+sleep_OBJECTS = sleep.$(OBJEXT)
+sleep_LDADD = $(LDADD)
+sleep_DEPENDENCIES = libtests.a
+socketcall_SOURCES = socketcall.c
+socketcall_OBJECTS = socketcall.$(OBJEXT)
+socketcall_LDADD = $(LDADD)
+socketcall_DEPENDENCIES = libtests.a
+splice_SOURCES = splice.c
+splice_OBJECTS = splice.$(OBJEXT)
+splice_LDADD = $(LDADD)
+splice_DEPENDENCIES = libtests.a
+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)
+stack_fcall_DEPENDENCIES = libtests.a
+stat_SOURCES = stat.c
+stat_OBJECTS = stat.$(OBJEXT)
+stat_LDADD = $(LDADD)
+stat_DEPENDENCIES = libtests.a
+stat64_SOURCES = stat64.c
+stat64_OBJECTS = stat64-stat64.$(OBJEXT)
+stat64_LDADD = $(LDADD)
+stat64_DEPENDENCIES = libtests.a
+statfs_SOURCES = statfs.c
+statfs_OBJECTS = statfs-statfs.$(OBJEXT)
+statfs_LDADD = $(LDADD)
+statfs_DEPENDENCIES = libtests.a
+statfs64_SOURCES = statfs64.c
+statfs64_OBJECTS = statfs64.$(OBJEXT)
+statfs64_LDADD = $(LDADD)
+statfs64_DEPENDENCIES = libtests.a
+swap_SOURCES = swap.c
+swap_OBJECTS = swap.$(OBJEXT)
+swap_LDADD = $(LDADD)
+swap_DEPENDENCIES = libtests.a
+symlink_SOURCES = symlink.c
+symlink_OBJECTS = symlink.$(OBJEXT)
+symlink_LDADD = $(LDADD)
+symlink_DEPENDENCIES = libtests.a
+symlinkat_SOURCES = symlinkat.c
+symlinkat_OBJECTS = symlinkat.$(OBJEXT)
+symlinkat_LDADD = $(LDADD)
+symlinkat_DEPENDENCIES = libtests.a
+sync_SOURCES = sync.c
+sync_OBJECTS = sync.$(OBJEXT)
+sync_LDADD = $(LDADD)
+sync_DEPENDENCIES = libtests.a
+sync_file_range_SOURCES = sync_file_range.c
+sync_file_range_OBJECTS = sync_file_range.$(OBJEXT)
+sync_file_range_LDADD = $(LDADD)
+sync_file_range_DEPENDENCIES = libtests.a
+sync_file_range2_SOURCES = sync_file_range2.c
+sync_file_range2_OBJECTS = sync_file_range2.$(OBJEXT)
+sync_file_range2_LDADD = $(LDADD)
+sync_file_range2_DEPENDENCIES = libtests.a
+sysinfo_SOURCES = sysinfo.c
+sysinfo_OBJECTS = sysinfo.$(OBJEXT)
+sysinfo_LDADD = $(LDADD)
+sysinfo_DEPENDENCIES = libtests.a
+syslog_SOURCES = syslog.c
+syslog_OBJECTS = syslog.$(OBJEXT)
+syslog_LDADD = $(LDADD)
+syslog_DEPENDENCIES = libtests.a
+tee_SOURCES = tee.c
+tee_OBJECTS = tee.$(OBJEXT)
+tee_LDADD = $(LDADD)
+tee_DEPENDENCIES = libtests.a
+threads_execve_SOURCES = threads-execve.c
+threads_execve_OBJECTS = threads-execve.$(OBJEXT)
+threads_execve_DEPENDENCIES = $(LDADD)
+time_SOURCES = time.c
+time_OBJECTS = time.$(OBJEXT)
+time_LDADD = $(LDADD)
+time_DEPENDENCIES = libtests.a
+timer_create_SOURCES = timer_create.c
+timer_create_OBJECTS = timer_create.$(OBJEXT)
+timer_create_LDADD = $(LDADD)
+timer_create_DEPENDENCIES = libtests.a
+timer_xettime_SOURCES = timer_xettime.c
+timer_xettime_OBJECTS = timer_xettime.$(OBJEXT)
+timer_xettime_LDADD = $(LDADD)
+timer_xettime_DEPENDENCIES = libtests.a
+timerfd_xettime_SOURCES = timerfd_xettime.c
+timerfd_xettime_OBJECTS = timerfd_xettime.$(OBJEXT)
+timerfd_xettime_LDADD = $(LDADD)
+timerfd_xettime_DEPENDENCIES = libtests.a
+times_SOURCES = times.c
+times_OBJECTS = times.$(OBJEXT)
+times_DEPENDENCIES = $(LDADD)
+times_fail_SOURCES = times-fail.c
+times_fail_OBJECTS = times-fail.$(OBJEXT)
+times_fail_LDADD = $(LDADD)
+times_fail_DEPENDENCIES = libtests.a
+truncate_SOURCES = truncate.c
+truncate_OBJECTS = truncate.$(OBJEXT)
+truncate_LDADD = $(LDADD)
+truncate_DEPENDENCIES = libtests.a
+truncate64_SOURCES = truncate64.c
+truncate64_OBJECTS = truncate64-truncate64.$(OBJEXT)
+truncate64_LDADD = $(LDADD)
+truncate64_DEPENDENCIES = libtests.a
+ugetrlimit_SOURCES = ugetrlimit.c
+ugetrlimit_OBJECTS = ugetrlimit.$(OBJEXT)
+ugetrlimit_LDADD = $(LDADD)
+ugetrlimit_DEPENDENCIES = libtests.a
+uio_SOURCES = uio.c
+uio_OBJECTS = uio-uio.$(OBJEXT)
+uio_LDADD = $(LDADD)
+uio_DEPENDENCIES = libtests.a
+umask_SOURCES = umask.c
+umask_OBJECTS = umask.$(OBJEXT)
+umask_LDADD = $(LDADD)
+umask_DEPENDENCIES = libtests.a
+umount_SOURCES = umount.c
+umount_OBJECTS = umount.$(OBJEXT)
+umount_LDADD = $(LDADD)
+umount_DEPENDENCIES = libtests.a
+umount2_SOURCES = umount2.c
+umount2_OBJECTS = umount2.$(OBJEXT)
+umount2_LDADD = $(LDADD)
+umount2_DEPENDENCIES = libtests.a
+umoven_illptr_SOURCES = umoven-illptr.c
+umoven_illptr_OBJECTS = umoven-illptr.$(OBJEXT)
+umoven_illptr_LDADD = $(LDADD)
+umoven_illptr_DEPENDENCIES = libtests.a
+umovestr_SOURCES = umovestr.c
+umovestr_OBJECTS = umovestr.$(OBJEXT)
+umovestr_LDADD = $(LDADD)
+umovestr_DEPENDENCIES = libtests.a
+umovestr_illptr_SOURCES = umovestr-illptr.c
+umovestr_illptr_OBJECTS = umovestr-illptr.$(OBJEXT)
+umovestr_illptr_LDADD = $(LDADD)
+umovestr_illptr_DEPENDENCIES = libtests.a
+umovestr2_SOURCES = umovestr2.c
+umovestr2_OBJECTS = umovestr2.$(OBJEXT)
+umovestr2_LDADD = $(LDADD)
+umovestr2_DEPENDENCIES = libtests.a
+umovestr3_SOURCES = umovestr3.c
+umovestr3_OBJECTS = umovestr3.$(OBJEXT)
+umovestr3_LDADD = $(LDADD)
+umovestr3_DEPENDENCIES = libtests.a
+uname_SOURCES = uname.c
+uname_OBJECTS = uname.$(OBJEXT)
+uname_LDADD = $(LDADD)
+uname_DEPENDENCIES = libtests.a
+unix_pair_send_recv_SOURCES = unix-pair-send-recv.c
+unix_pair_send_recv_OBJECTS = unix-pair-send-recv.$(OBJEXT)
+unix_pair_send_recv_LDADD = $(LDADD)
+unix_pair_send_recv_DEPENDENCIES = libtests.a
+unix_pair_sendto_recvfrom_SOURCES = unix-pair-sendto-recvfrom.c
+unix_pair_sendto_recvfrom_OBJECTS = \
+ unix-pair-sendto-recvfrom.$(OBJEXT)
+unix_pair_sendto_recvfrom_LDADD = $(LDADD)
+unix_pair_sendto_recvfrom_DEPENDENCIES = libtests.a
+unlink_SOURCES = unlink.c
+unlink_OBJECTS = unlink.$(OBJEXT)
+unlink_LDADD = $(LDADD)
+unlink_DEPENDENCIES = libtests.a
+unlinkat_SOURCES = unlinkat.c
+unlinkat_OBJECTS = unlinkat.$(OBJEXT)
+unlinkat_LDADD = $(LDADD)
+unlinkat_DEPENDENCIES = libtests.a
+unshare_SOURCES = unshare.c
+unshare_OBJECTS = unshare.$(OBJEXT)
+unshare_LDADD = $(LDADD)
+unshare_DEPENDENCIES = libtests.a
+userfaultfd_SOURCES = userfaultfd.c
+userfaultfd_OBJECTS = userfaultfd.$(OBJEXT)
+userfaultfd_LDADD = $(LDADD)
+userfaultfd_DEPENDENCIES = libtests.a
+ustat_SOURCES = ustat.c
+ustat_OBJECTS = ustat.$(OBJEXT)
+ustat_LDADD = $(LDADD)
+ustat_DEPENDENCIES = libtests.a
+utime_SOURCES = utime.c
+utime_OBJECTS = utime.$(OBJEXT)
+utime_LDADD = $(LDADD)
+utime_DEPENDENCIES = libtests.a
+utimensat_SOURCES = utimensat.c
+utimensat_OBJECTS = utimensat.$(OBJEXT)
+utimensat_LDADD = $(LDADD)
+utimensat_DEPENDENCIES = libtests.a
+utimes_SOURCES = utimes.c
+utimes_OBJECTS = utimes.$(OBJEXT)
+utimes_LDADD = $(LDADD)
+utimes_DEPENDENCIES = libtests.a
+vfork_f_SOURCES = vfork-f.c
+vfork_f_OBJECTS = vfork-f.$(OBJEXT)
+vfork_f_LDADD = $(LDADD)
+vfork_f_DEPENDENCIES = libtests.a
+vhangup_SOURCES = vhangup.c
+vhangup_OBJECTS = vhangup.$(OBJEXT)
+vhangup_LDADD = $(LDADD)
+vhangup_DEPENDENCIES = libtests.a
+vmsplice_SOURCES = vmsplice.c
+vmsplice_OBJECTS = vmsplice.$(OBJEXT)
+vmsplice_LDADD = $(LDADD)
+vmsplice_DEPENDENCIES = libtests.a
+wait4_SOURCES = wait4.c
+wait4_OBJECTS = wait4.$(OBJEXT)
+wait4_LDADD = $(LDADD)
+wait4_DEPENDENCIES = libtests.a
+wait4_v_SOURCES = wait4-v.c
+wait4_v_OBJECTS = wait4-v.$(OBJEXT)
+wait4_v_LDADD = $(LDADD)
+wait4_v_DEPENDENCIES = libtests.a
+waitid_SOURCES = waitid.c
+waitid_OBJECTS = waitid.$(OBJEXT)
+waitid_LDADD = $(LDADD)
+waitid_DEPENDENCIES = libtests.a
+waitid_v_SOURCES = waitid-v.c
+waitid_v_OBJECTS = waitid-v.$(OBJEXT)
+waitid_v_LDADD = $(LDADD)
+waitid_v_DEPENDENCIES = libtests.a
+waitpid_SOURCES = waitpid.c
+waitpid_OBJECTS = waitpid.$(OBJEXT)
+waitpid_LDADD = $(LDADD)
+waitpid_DEPENDENCIES = libtests.a
+xattr_SOURCES = xattr.c
+xattr_OBJECTS = xattr.$(OBJEXT)
+xattr_LDADD = $(LDADD)
+xattr_DEPENDENCIES = libtests.a
+xattr_strings_SOURCES = xattr-strings.c
+xattr_strings_OBJECTS = xattr-strings.$(OBJEXT)
+xattr_strings_LDADD = $(LDADD)
+xattr_strings_DEPENDENCIES = libtests.a
+xet_robust_list_SOURCES = xet_robust_list.c
+xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
+xet_robust_list_LDADD = $(LDADD)
+xet_robust_list_DEPENDENCIES = libtests.a
+xetitimer_SOURCES = xetitimer.c
+xetitimer_OBJECTS = xetitimer.$(OBJEXT)
+xetitimer_LDADD = $(LDADD)
+xetitimer_DEPENDENCIES = libtests.a
+xetpgid_SOURCES = xetpgid.c
+xetpgid_OBJECTS = xetpgid.$(OBJEXT)
+xetpgid_LDADD = $(LDADD)
+xetpgid_DEPENDENCIES = libtests.a
+xetpriority_SOURCES = xetpriority.c
+xetpriority_OBJECTS = xetpriority.$(OBJEXT)
+xetpriority_LDADD = $(LDADD)
+xetpriority_DEPENDENCIES = libtests.a
+xettimeofday_SOURCES = xettimeofday.c
+xettimeofday_OBJECTS = xettimeofday.$(OBJEXT)
+xettimeofday_LDADD = $(LDADD)
+xettimeofday_DEPENDENCIES = libtests.a
+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 =
+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_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_CCLD_1 =
+SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
+ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
+ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+ attach-p-cmd-p.c bpf.c brk.c btrfs.c caps.c caps-abbrev.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c copy_file_range.c count-f.c \
+ creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
+ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
+ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
+ fallocate.c fanotify_init.c fanotify_mark.c fchdir.c fchmod.c \
+ fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c fcntl64.c \
+ fdatasync.c file_handle.c file_ioctl.c filter-unavailable.c \
+ finit_module.c flock.c fork-f.c fstat.c fstat64.c fstatat64.c \
+ fstatfs.c fstatfs64.c fsync.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
+ getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+ getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
+ getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
+ getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
+ init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+ ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-v.c \
+ ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
+ ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c \
+ ioctl_sg_io_v4.c ioctl_sock_gifconf.c ioctl_uffdio.c \
+ ioctl_v4l2.c ioperm.c iopl.c ioprio.c ip_mreq.c ipc.c \
+ ipc_msg.c ipc_msgbuf.c ipc_sem.c ipc_shm.c kcmp.c \
+ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
+ lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
+ lseek.c lstat.c lstat64.c mbind.c membarrier.c memfd_create.c \
+ migrate_pages.c mincore.c mkdir.c mkdirat.c mknod.c mknodat.c \
+ mlock.c mlock2.c mlockall.c mmap.c mmap64.c mmsg.c \
+ mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c move_pages.c \
+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+ msg_control.c msg_control-v.c msg_name.c munlockall.c \
+ nanosleep.c net-accept-connect.c net-icmp_filter.c \
+ net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+ net-yy-unix.c netlink_inet_diag.c netlink_netlink_diag.c \
+ netlink_protocol.c netlink_unix_diag.c newfstatat.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+ pkey_mprotect.c poll.c ppoll.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
+ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
+ preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
+ process_vm_readv.c process_vm_writev.c pselect6.c ptrace.c \
+ pwritev.c qual_fault.c qual_inject-error-signal.c \
+ qual_inject-retval.c qual_inject-signal.c qual_signal.c \
+ quotactl.c quotactl-v.c quotactl-xfs.c quotactl-xfs-v.c \
+ read-write.c readahead.c readdir.c readlink.c readlinkat.c \
+ readv.c reboot.c recvfrom.c recvmmsg-timeout.c recvmsg.c \
+ redirect-fds.c remap_file_pages.c rename.c renameat.c \
+ renameat2.c request_key.c restart_syscall.c rmdir.c \
+ rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+ rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
+ sched_get_priority_mxx.c sched_rr_get_interval.c \
+ sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
+ sched_xetscheduler.c sched_yield.c scm_rights.c \
+ seccomp-filter.c seccomp-filter-v.c seccomp-strict.c select.c \
+ semop.c sendfile.c sendfile64.c set_mempolicy.c \
+ set_ptracer_any.c setdomainname.c setfsgid.c setfsgid32.c \
+ setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \
+ setgroups32.c sethostname.c setns.c setregid.c setregid32.c \
+ setresgid.c setresgid32.c setresuid.c setresuid32.c setreuid.c \
+ setreuid32.c setrlimit.c setuid.c setuid32.c shmxt.c \
+ shutdown.c sigaction.c sigaltstack.c siginfo.c \
+ signal_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
+ splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
+ statfs64.c swap.c symlink.c symlinkat.c sync.c \
+ sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
+ threads-execve.c time.c timer_create.c timer_xettime.c \
+ timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
+ ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
+ umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
+ unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \
+ unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \
+ utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \
+ waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \
+ xet_robust_list.c xetitimer.c xetpgid.c xetpriority.c \
+ xettimeofday.c
+DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
+ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
+ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
+ attach-p-cmd-p.c bpf.c brk.c btrfs.c caps.c caps-abbrev.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c copy_file_range.c count-f.c \
+ creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
+ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
+ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
+ fallocate.c fanotify_init.c fanotify_mark.c fchdir.c fchmod.c \
+ fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c fcntl64.c \
+ fdatasync.c file_handle.c file_ioctl.c filter-unavailable.c \
+ finit_module.c flock.c fork-f.c fstat.c fstat64.c fstatat64.c \
+ fstatfs.c fstatfs64.c fsync.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
+ getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+ getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
+ getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
+ getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
+ init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+ ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-v.c \
+ ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
+ ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c ioctl_sg_io_v3.c \
+ ioctl_sg_io_v4.c ioctl_sock_gifconf.c ioctl_uffdio.c \
+ ioctl_v4l2.c ioperm.c iopl.c ioprio.c ip_mreq.c ipc.c \
+ ipc_msg.c ipc_msgbuf.c ipc_sem.c ipc_shm.c kcmp.c \
+ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
+ lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
+ lseek.c lstat.c lstat64.c mbind.c membarrier.c memfd_create.c \
+ migrate_pages.c mincore.c mkdir.c mkdirat.c mknod.c mknodat.c \
+ mlock.c mlock2.c mlockall.c mmap.c mmap64.c mmsg.c \
+ mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c move_pages.c \
+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \
+ msg_control.c msg_control-v.c msg_name.c munlockall.c \
+ nanosleep.c net-accept-connect.c net-icmp_filter.c \
+ net-sockaddr.c net-y-unix.c net-yy-inet.c net-yy-netlink.c \
+ net-yy-unix.c netlink_inet_diag.c netlink_netlink_diag.c \
+ netlink_protocol.c netlink_unix_diag.c newfstatat.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+ pkey_mprotect.c poll.c ppoll.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
+ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
+ preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
+ process_vm_readv.c process_vm_writev.c pselect6.c ptrace.c \
+ pwritev.c qual_fault.c qual_inject-error-signal.c \
+ qual_inject-retval.c qual_inject-signal.c qual_signal.c \
+ quotactl.c quotactl-v.c quotactl-xfs.c quotactl-xfs-v.c \
+ read-write.c readahead.c readdir.c readlink.c readlinkat.c \
+ readv.c reboot.c recvfrom.c recvmmsg-timeout.c recvmsg.c \
+ redirect-fds.c remap_file_pages.c rename.c renameat.c \
+ renameat2.c request_key.c restart_syscall.c rmdir.c \
+ rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
+ rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
+ sched_get_priority_mxx.c sched_rr_get_interval.c \
+ sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
+ sched_xetscheduler.c sched_yield.c scm_rights.c \
+ seccomp-filter.c seccomp-filter-v.c seccomp-strict.c select.c \
+ semop.c sendfile.c sendfile64.c set_mempolicy.c \
+ set_ptracer_any.c setdomainname.c setfsgid.c setfsgid32.c \
+ setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \
+ setgroups32.c sethostname.c setns.c setregid.c setregid32.c \
+ setresgid.c setresgid32.c setresuid.c setresuid32.c setreuid.c \
+ setreuid32.c setrlimit.c setuid.c setuid32.c shmxt.c \
+ shutdown.c sigaction.c sigaltstack.c siginfo.c \
+ signal_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
+ splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
+ statfs64.c swap.c symlink.c symlinkat.c sync.c \
+ sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
+ threads-execve.c time.c timer_create.c timer_xettime.c \
+ timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
+ ugetrlimit.c uio.c umask.c umount.c umount2.c umoven-illptr.c \
+ umovestr.c umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
+ unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \
+ unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \
+ utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \
+ waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \
+ xet_robust_list.c xetitimer.c xetpgid.c xetpriority.c \
+ xettimeofday.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__extra_recursive_targets = check-valgrind-recursive
+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_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='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[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
+@USE_LIBUNWIND_TRUE@am__EXEEXT_1 = strace-k.test
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@[email protected]=.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@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_EXEEXT = @BUILD_EXEEXT@
+BUILD_OBJEXT = @BUILD_OBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
+CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+CPP_FOR_BUILD = @CPP_FOR_BUILD@
+CYGPATH_W = @CYGPATH_W@
+DEB_CHANGELOGTIME = @DEB_CHANGELOGTIME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@
+ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@
+ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@
+ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@
+EXEEXT = @EXEEXT@
+GCOV = @GCOV@
+GENHTML = @GENHTML@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCOV = @LCOV@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MIPS_ABI = @MIPS_ABI@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+RANLIB = @RANLIB@
+RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VALGRIND = @VALGRIND@
+VALGRIND_ENABLED = @VALGRIND_ENABLED@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+arch = @arch@
+arch_m32 = @arch_m32@
+arch_mx32 = @arch_mx32@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+dl_LIBS = @dl_LIBS@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+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@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+valgrind_enabled_tools = @valgrind_enabled_tools@
+valgrind_tools = @valgrind_tools@
+OS = linux
+ARCH = @arch@
+MPERS_NAME =
+ARCH_MFLAGS =
+AM_CFLAGS = $(WARN_CFLAGS)
+AM_CPPFLAGS = $(ARCH_MFLAGS) \
+ -I$(builddir) \
+ -I$(top_builddir)/$(OS)/$(ARCH) \
+ -I$(top_srcdir)/$(OS)/$(ARCH) \
+ -I$(top_builddir)/$(OS) \
+ -I$(top_srcdir)/$(OS) \
+ -I$(top_builddir) \
+ -I$(top_srcdir)
+
+AM_LDFLAGS = $(ARCH_MFLAGS)
+libtests_a_SOURCES = \
+ errno2name.c \
+ error_msg.c \
+ fill_memory.c \
+ get_page_size.c \
+ hexdump_strdup.c \
+ hexquote_strndup.c \
+ inode_of_sockfd.c \
+ libmmsg.c \
+ libsocketcall.c \
+ overflowuid.c \
+ pipe_maxfd.c \
+ print_quoted_string.c \
+ printflags.c \
+ printxval.c \
+ signal2name.c \
+ sprintrc.c \
+ tail_alloc.c \
+ tests.h \
+ tprintf.c \
+ # end of libtests_a_SOURCES
+
+libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+check_LIBRARIES = libtests.a
+LDADD = libtests.a
+attach_f_p_LDADD = -lrt -lpthread $(LDADD)
+clock_xettime_LDADD = -lrt $(LDADD)
+count_f_LDADD = -lpthread $(LDADD)
+filter_unavailable_LDADD = -lpthread $(LDADD)
+fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+mq_LDADD = -lrt $(LDADD)
+mq_sendrecv_LDADD = -lrt $(LDADD)
+mq_sendrecv_read_LDADD = -lrt $(LDADD)
+mq_sendrecv_write_LDADD = -lrt $(LDADD)
+newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+pc_LDADD = $(dl_LIBS) $(LDADD)
+pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+preadv_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+threads_execve_LDADD = -lrt -lpthread $(LDADD)
+times_LDADD = -lrt $(LDADD)
+truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+stack_fcall_SOURCES = stack-fcall.c \
+ stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
+@USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS =
+@USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
+DECODER_TESTS = \
+ _newselect.test \
+ accept.test \
+ accept4.test \
+ access.test \
+ acct.test \
+ add_key.test \
+ adjtimex.test \
+ aio.test \
+ alarm.test \
+ bpf.test \
+ brk.test \
+ btrfs-v.test \
+ btrfs-vw.test \
+ btrfs-w.test \
+ btrfs.test \
+ caps-abbrev.test \
+ caps.test \
+ chmod.test \
+ chown.test \
+ chown32.test \
+ chroot.test \
+ clock_adjtime.test \
+ clock_nanosleep.test \
+ clock_xettime.test \
+ copy_file_range.test \
+ creat.test \
+ delete_module.test \
+ dup.test \
+ dup2.test \
+ dup3.test \
+ epoll_create.test \
+ epoll_create1.test \
+ epoll_ctl.test \
+ epoll_pwait.test \
+ epoll_wait.test \
+ erestartsys.test \
+ eventfd.test \
+ execve-v.test \
+ execve.test \
+ execveat-v.test \
+ execveat.test \
+ faccessat.test \
+ fadvise64.test \
+ fadvise64_64.test \
+ fallocate.test \
+ fanotify_init.test \
+ fanotify_mark.test \
+ fchdir.test \
+ fchmod.test \
+ fchmodat.test \
+ fchown.test \
+ fchown32.test \
+ fchownat.test \
+ fcntl.test \
+ fcntl64.test \
+ fdatasync.test \
+ file_handle.test \
+ file_ioctl.test \
+ finit_module.test \
+ flock.test \
+ fstat.test \
+ fstat64.test \
+ fstatat64.test \
+ fstatfs.test \
+ fstatfs64.test \
+ fsync.test \
+ ftruncate.test \
+ ftruncate64.test \
+ futex.test \
+ futimesat.test \
+ get_mempolicy.test \
+ getcpu.test \
+ getcwd.test \
+ getdents.test \
+ getdents64.test \
+ getegid.test \
+ getegid32.test \
+ geteuid.test \
+ geteuid32.test \
+ getgid.test \
+ getgid32.test \
+ getgroups.test \
+ getgroups32.test \
+ getpeername.test \
+ getpgrp.test \
+ getrandom.test \
+ getresgid.test \
+ getresgid32.test \
+ getresuid.test \
+ getresuid32.test \
+ getrlimit.test \
+ getrusage.test \
+ getsid.test \
+ getsockname.test \
+ getuid.test \
+ getuid32.test \
+ getxxid.test \
+ inet-cmsg.test \
+ init_module.test \
+ inotify.test \
+ inotify_init1.test \
+ ioctl.test \
+ ioctl_block.test \
+ ioctl_dm-v.test \
+ ioctl_dm.test \
+ ioctl_evdev-v.test \
+ ioctl_evdev.test \
+ ioctl_loop-nv.test \
+ ioctl_loop-v.test \
+ ioctl_loop.test \
+ ioctl_mtd.test \
+ ioctl_rtc-v.test \
+ ioctl_rtc.test \
+ ioctl_scsi.test \
+ ioctl_sg_io_v3.test \
+ ioctl_sg_io_v4.test \
+ ioctl_sock_gifconf.test \
+ ioctl_uffdio.test \
+ ioctl_v4l2.test \
+ ioperm.test \
+ iopl.test \
+ ioprio.test \
+ ip_mreq.test \
+ ipc.test \
+ ipc_msg.test \
+ ipc_msgbuf.test \
+ ipc_sem.test \
+ ipc_shm.test \
+ kcmp.test \
+ kexec_file_load.test \
+ kexec_load.test \
+ keyctl.test \
+ kill.test \
+ lchown.test \
+ lchown32.test \
+ link.test \
+ linkat.test \
+ llseek.test \
+ lookup_dcookie.test \
+ lseek.test \
+ lstat.test \
+ lstat64.test \
+ mbind.test \
+ membarrier.test \
+ memfd_create.test \
+ migrate_pages.test \
+ mincore.test \
+ mkdir.test \
+ mkdirat.test \
+ mknod.test \
+ mknodat.test \
+ mlock.test \
+ mlock2.test \
+ mlockall.test \
+ mmap.test \
+ mmap64.test \
+ mmsg-silent.test \
+ mmsg.test \
+ mmsg_name-v.test \
+ mmsg_name.test \
+ mount.test \
+ move_pages.test \
+ mq.test \
+ mq_sendrecv-read.test \
+ mq_sendrecv-write.test \
+ mq_sendrecv.test \
+ msg_control-v.test \
+ msg_control.test \
+ msg_name.test \
+ munlockall.test \
+ nanosleep.test \
+ net-icmp_filter.test \
+ net-sockaddr.test \
+ net-y-unix.test \
+ net-yy-inet.test \
+ net-yy-netlink.test \
+ net-yy-unix.test \
+ net.test \
+ netlink_protocol.test \
+ newfstatat.test \
+ nsyscalls.test \
+ old_mmap.test \
+ oldfstat.test \
+ oldlstat.test \
+ oldselect.test \
+ oldstat.test \
+ open.test \
+ openat.test \
+ pause.test \
+ perf_event_open.test \
+ perf_event_open_nonverbose.test \
+ perf_event_open_unabbrev.test \
+ personality.test \
+ pipe.test \
+ pipe2.test \
+ pkey_alloc.test \
+ pkey_free.test \
+ pkey_mprotect.test \
+ poll.test \
+ ppoll.test \
+ prctl-arg2-intptr.test \
+ prctl-dumpable.test \
+ prctl-name.test \
+ prctl-no-args.test \
+ prctl-pdeathsig.test \
+ prctl-seccomp-filter-v.test \
+ prctl-seccomp-strict.test \
+ prctl-securebits.test \
+ prctl-tid_address.test \
+ prctl-tsc.test \
+ pread64-pwrite64.test \
+ preadv-pwritev.test \
+ preadv.test \
+ preadv2-pwritev2.test \
+ printstr.test \
+ prlimit64.test \
+ process_vm_readv.test \
+ process_vm_writev.test \
+ pselect6.test \
+ ptrace.test \
+ pwritev.test \
+ qual_fault-exit_group.test \
+ quotactl-v.test \
+ quotactl-xfs-v.test \
+ quotactl-xfs.test \
+ quotactl.test \
+ read-write.test \
+ readahead.test \
+ readdir.test \
+ readlink.test \
+ readlinkat.test \
+ readv.test \
+ reboot.test \
+ recvfrom.test \
+ recvmmsg-timeout.test \
+ recvmsg.test \
+ remap_file_pages.test \
+ rename.test \
+ renameat.test \
+ renameat2.test \
+ request_key.test \
+ rmdir.test \
+ rt_sigpending.test \
+ rt_sigprocmask.test \
+ rt_sigqueueinfo.test \
+ rt_sigsuspend.test \
+ rt_sigtimedwait.test \
+ rt_tgsigqueueinfo.test \
+ sched_get_priority_mxx.test \
+ sched_rr_get_interval.test \
+ sched_xetaffinity.test \
+ sched_xetattr.test \
+ sched_xetparam.test \
+ sched_xetscheduler.test \
+ sched_yield.test \
+ scm_rights-fd.test \
+ seccomp-filter-v.test \
+ seccomp-filter.test \
+ seccomp-strict.test \
+ select.test \
+ semop.test \
+ sendfile.test \
+ sendfile64.test \
+ set_mempolicy.test \
+ setdomainname.test \
+ setfsgid.test \
+ setfsgid32.test \
+ setfsuid.test \
+ setfsuid32.test \
+ setgid.test \
+ setgid32.test \
+ setgroups.test \
+ setgroups32.test \
+ sethostname.test \
+ setns.test \
+ setregid.test \
+ setregid32.test \
+ setresgid.test \
+ setresgid32.test \
+ setresuid.test \
+ setresuid32.test \
+ setreuid.test \
+ setreuid32.test \
+ setrlimit.test \
+ setuid.test \
+ setuid32.test \
+ shmxt.test \
+ shutdown.test \
+ sigaction.test \
+ sigaltstack.test \
+ siginfo.test \
+ signalfd4.test \
+ sigreturn.test \
+ socketcall.test \
+ splice.test \
+ stat.test \
+ stat64.test \
+ statfs.test \
+ statfs64.test \
+ sun_path.test \
+ swap.test \
+ symlink.test \
+ symlinkat.test \
+ sync.test \
+ sync_file_range.test \
+ sync_file_range2.test \
+ sysinfo.test \
+ syslog.test \
+ tee.test \
+ time.test \
+ timer_create.test \
+ timer_xettime.test \
+ timerfd_xettime.test \
+ times-fail.test \
+ times.test \
+ truncate.test \
+ truncate64.test \
+ ugetrlimit.test \
+ uio.test \
+ umask.test \
+ umount.test \
+ umount2.test \
+ umoven-illptr.test \
+ umovestr-illptr.test \
+ umovestr.test \
+ umovestr2.test \
+ umovestr3.test \
+ uname.test \
+ unix-pair-send-recv.test \
+ unix-pair-sendto-recvfrom.test \
+ unlink.test \
+ unlinkat.test \
+ unshare.test \
+ userfaultfd.test \
+ ustat.test \
+ utime.test \
+ utimensat.test \
+ utimes.test \
+ vhangup.test \
+ vmsplice.test \
+ wait4-v.test \
+ wait4.test \
+ waitid-v.test \
+ waitid.test \
+ waitpid.test \
+ xattr-strings.test \
+ xattr.test \
+ xet_robust_list.test \
+ xetitimer.test \
+ xetpgid.test \
+ xetpriority.test \
+ xettimeofday.test \
+ # end of DECODER_TESTS
+
+MISC_TESTS = \
+ attach-f-p.test \
+ attach-p-cmd.test \
+ bexecve.test \
+ count-f.test \
+ count.test \
+ detach-running.test \
+ detach-sleeping.test \
+ detach-stopped.test \
+ filter-unavailable.test \
+ fork-f.test \
+ ksysent.test \
+ opipe.test \
+ options-syntax.test \
+ pc.test \
+ qual_fault-syntax.test \
+ qual_fault.test \
+ qual_inject-error-signal.test \
+ qual_inject-retval.test \
+ qual_inject-signal.test \
+ qual_inject-syntax.test \
+ qual_signal.test \
+ qual_syscall.test \
+ redirect-fds.test \
+ redirect.test \
+ restart_syscall.test \
+ signal_receive.test \
+ strace-C.test \
+ strace-E.test \
+ strace-S.test \
+ strace-T.test \
+ strace-V.test \
+ strace-ff.test \
+ strace-r.test \
+ strace-t.test \
+ strace-tt.test \
+ strace-ttt.test \
+ threads-execve.test \
+ vfork-f.test \
+ # end of MISC_TESTS
+
+XFAIL_TESTS_ =
+XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
+XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
+XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+TEST_LOG_COMPILER = env
+AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
+VALGRIND_FLAGS = --quiet
+VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
+EXTRA_DIST = init.sh run.sh match.awk \
+ caps-abbrev.awk \
+ caps.awk \
+ count-f.expected \
+ eventfd.expected \
+ fadvise.h \
+ filter-unavailable.expected \
+ fstatat.c \
+ fstatx.c \
+ getresugid.c \
+ init_delete_module.h \
+ ipc.sh \
+ ipc_msgbuf.expected \
+ ksysent.sed \
+ lstatx.c \
+ net.expected \
+ oldselect.expected \
+ pipe.expected \
+ ppoll-v.expected \
+ ppoll.expected \
+ process_vm_readv_writev.c \
+ qual_fault-exit_group.expected \
+ qual_inject-error-signal.expected \
+ qual_inject-signal.expected \
+ quotactl.h \
+ scno_tampering.sh \
+ setfsugid.c \
+ setresugid.c \
+ setreugid.c \
+ setugid.c \
+ sigaction.awk \
+ sigaltstack.expected \
+ sockname.c \
+ statfs.expected \
+ statx.sh \
+ strace-C.expected \
+ strace-E.expected \
+ strace-T.expected \
+ strace-ff.expected \
+ strace-k.test \
+ strace-r.expected \
+ strace.supp \
+ struct_flock.c \
+ sun_path.expected \
+ uio.expected \
+ umode_t.c \
+ umovestr.expected \
+ unix-pair-send-recv.expected \
+ unix-pair-sendto-recvfrom.expected \
+ xchownx.c \
+ xgetrlimit.c \
+ xselect.c \
+ xstatfs.c \
+ xstatfs64.c \
+ xstatfsx.c \
+ xstatx.c \
+ $(TESTS)
+
+objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
+CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
+
+digits = [[:digit:]][[:digit:]]*
+al_nums = [[:alnum:]_][[:alnum:]_]*
+SCNO_SED = /TRACE_INDIRECT_SUBCALL/d; s/^\[[[:space:]]*\($(digits)\)\][[:space:]]*=[[:space:]]*{[^,]*,[^,]*,[^,]*,[[:space:]]*"\($(al_nums)\)"[[:space:]]*},.*/\#ifndef __NR_\2\n\# define __NR_\2 (SYSCALL_BIT | \1)\n\#endif/p
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(srcdir)/../scno.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkLIBRARIES:
+ -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
+
+libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES) $(EXTRA_libtests_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libtests.a
+ $(AM_V_AR)$(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libtests.a
+
+clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+_newselect$(EXEEXT): $(_newselect_OBJECTS) $(_newselect_DEPENDENCIES) $(EXTRA__newselect_DEPENDENCIES)
+ @rm -f _newselect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(_newselect_OBJECTS) $(_newselect_LDADD) $(LIBS)
+
+accept$(EXEEXT): $(accept_OBJECTS) $(accept_DEPENDENCIES) $(EXTRA_accept_DEPENDENCIES)
+ @rm -f accept$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(accept_OBJECTS) $(accept_LDADD) $(LIBS)
+
+accept4$(EXEEXT): $(accept4_OBJECTS) $(accept4_DEPENDENCIES) $(EXTRA_accept4_DEPENDENCIES)
+ @rm -f accept4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(accept4_OBJECTS) $(accept4_LDADD) $(LIBS)
+
+access$(EXEEXT): $(access_OBJECTS) $(access_DEPENDENCIES) $(EXTRA_access_DEPENDENCIES)
+ @rm -f access$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS)
+
+acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES)
+ @rm -f acct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS)
+
+add_key$(EXEEXT): $(add_key_OBJECTS) $(add_key_DEPENDENCIES) $(EXTRA_add_key_DEPENDENCIES)
+ @rm -f add_key$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(add_key_OBJECTS) $(add_key_LDADD) $(LIBS)
+
+adjtimex$(EXEEXT): $(adjtimex_OBJECTS) $(adjtimex_DEPENDENCIES) $(EXTRA_adjtimex_DEPENDENCIES)
+ @rm -f adjtimex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(adjtimex_OBJECTS) $(adjtimex_LDADD) $(LIBS)
+
+aio$(EXEEXT): $(aio_OBJECTS) $(aio_DEPENDENCIES) $(EXTRA_aio_DEPENDENCIES)
+ @rm -f aio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(aio_OBJECTS) $(aio_LDADD) $(LIBS)
+
+alarm$(EXEEXT): $(alarm_OBJECTS) $(alarm_DEPENDENCIES) $(EXTRA_alarm_DEPENDENCIES)
+ @rm -f alarm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(alarm_OBJECTS) $(alarm_LDADD) $(LIBS)
+
+answer$(EXEEXT): $(answer_OBJECTS) $(answer_DEPENDENCIES) $(EXTRA_answer_DEPENDENCIES)
+ @rm -f answer$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(answer_OBJECTS) $(answer_LDADD) $(LIBS)
+
+attach-f-p$(EXEEXT): $(attach_f_p_OBJECTS) $(attach_f_p_DEPENDENCIES) $(EXTRA_attach_f_p_DEPENDENCIES)
+ @rm -f attach-f-p$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_f_p_OBJECTS) $(attach_f_p_LDADD) $(LIBS)
+
+attach-f-p-cmd$(EXEEXT): $(attach_f_p_cmd_OBJECTS) $(attach_f_p_cmd_DEPENDENCIES) $(EXTRA_attach_f_p_cmd_DEPENDENCIES)
+ @rm -f attach-f-p-cmd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_f_p_cmd_OBJECTS) $(attach_f_p_cmd_LDADD) $(LIBS)
+
+attach-p-cmd-cmd$(EXEEXT): $(attach_p_cmd_cmd_OBJECTS) $(attach_p_cmd_cmd_DEPENDENCIES) $(EXTRA_attach_p_cmd_cmd_DEPENDENCIES)
+ @rm -f attach-p-cmd-cmd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_p_cmd_cmd_OBJECTS) $(attach_p_cmd_cmd_LDADD) $(LIBS)
+
+attach-p-cmd-p$(EXEEXT): $(attach_p_cmd_p_OBJECTS) $(attach_p_cmd_p_DEPENDENCIES) $(EXTRA_attach_p_cmd_p_DEPENDENCIES)
+ @rm -f attach-p-cmd-p$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(attach_p_cmd_p_OBJECTS) $(attach_p_cmd_p_LDADD) $(LIBS)
+
+bpf$(EXEEXT): $(bpf_OBJECTS) $(bpf_DEPENDENCIES) $(EXTRA_bpf_DEPENDENCIES)
+ @rm -f bpf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bpf_OBJECTS) $(bpf_LDADD) $(LIBS)
+
+brk$(EXEEXT): $(brk_OBJECTS) $(brk_DEPENDENCIES) $(EXTRA_brk_DEPENDENCIES)
+ @rm -f brk$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(brk_OBJECTS) $(brk_LDADD) $(LIBS)
+
+btrfs$(EXEEXT): $(btrfs_OBJECTS) $(btrfs_DEPENDENCIES) $(EXTRA_btrfs_DEPENDENCIES)
+ @rm -f btrfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(btrfs_OBJECTS) $(btrfs_LDADD) $(LIBS)
+
+caps$(EXEEXT): $(caps_OBJECTS) $(caps_DEPENDENCIES) $(EXTRA_caps_DEPENDENCIES)
+ @rm -f caps$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(caps_OBJECTS) $(caps_LDADD) $(LIBS)
+
+caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA_caps_abbrev_DEPENDENCIES)
+ @rm -f caps-abbrev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS)
+
+chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES)
+ @rm -f chmod$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
+
+chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES)
+ @rm -f chown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS)
+
+chown32$(EXEEXT): $(chown32_OBJECTS) $(chown32_DEPENDENCIES) $(EXTRA_chown32_DEPENDENCIES)
+ @rm -f chown32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chown32_OBJECTS) $(chown32_LDADD) $(LIBS)
+
+chroot$(EXEEXT): $(chroot_OBJECTS) $(chroot_DEPENDENCIES) $(EXTRA_chroot_DEPENDENCIES)
+ @rm -f chroot$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chroot_OBJECTS) $(chroot_LDADD) $(LIBS)
+
+clock_adjtime$(EXEEXT): $(clock_adjtime_OBJECTS) $(clock_adjtime_DEPENDENCIES) $(EXTRA_clock_adjtime_DEPENDENCIES)
+ @rm -f clock_adjtime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(clock_adjtime_OBJECTS) $(clock_adjtime_LDADD) $(LIBS)
+
+clock_nanosleep$(EXEEXT): $(clock_nanosleep_OBJECTS) $(clock_nanosleep_DEPENDENCIES) $(EXTRA_clock_nanosleep_DEPENDENCIES)
+ @rm -f clock_nanosleep$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(clock_nanosleep_OBJECTS) $(clock_nanosleep_LDADD) $(LIBS)
+
+clock_xettime$(EXEEXT): $(clock_xettime_OBJECTS) $(clock_xettime_DEPENDENCIES) $(EXTRA_clock_xettime_DEPENDENCIES)
+ @rm -f clock_xettime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(clock_xettime_OBJECTS) $(clock_xettime_LDADD) $(LIBS)
+
+copy_file_range$(EXEEXT): $(copy_file_range_OBJECTS) $(copy_file_range_DEPENDENCIES) $(EXTRA_copy_file_range_DEPENDENCIES)
+ @rm -f copy_file_range$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(copy_file_range_OBJECTS) $(copy_file_range_LDADD) $(LIBS)
+
+count-f$(EXEEXT): $(count_f_OBJECTS) $(count_f_DEPENDENCIES) $(EXTRA_count_f_DEPENDENCIES)
+ @rm -f count-f$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(count_f_OBJECTS) $(count_f_LDADD) $(LIBS)
+
+creat$(EXEEXT): $(creat_OBJECTS) $(creat_DEPENDENCIES) $(EXTRA_creat_DEPENDENCIES)
+ @rm -f creat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(creat_OBJECTS) $(creat_LDADD) $(LIBS)
+
+delete_module$(EXEEXT): $(delete_module_OBJECTS) $(delete_module_DEPENDENCIES) $(EXTRA_delete_module_DEPENDENCIES)
+ @rm -f delete_module$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(delete_module_OBJECTS) $(delete_module_LDADD) $(LIBS)
+
+dup$(EXEEXT): $(dup_OBJECTS) $(dup_DEPENDENCIES) $(EXTRA_dup_DEPENDENCIES)
+ @rm -f dup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dup_OBJECTS) $(dup_LDADD) $(LIBS)
+
+dup2$(EXEEXT): $(dup2_OBJECTS) $(dup2_DEPENDENCIES) $(EXTRA_dup2_DEPENDENCIES)
+ @rm -f dup2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dup2_OBJECTS) $(dup2_LDADD) $(LIBS)
+
+dup3$(EXEEXT): $(dup3_OBJECTS) $(dup3_DEPENDENCIES) $(EXTRA_dup3_DEPENDENCIES)
+ @rm -f dup3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(dup3_OBJECTS) $(dup3_LDADD) $(LIBS)
+
+epoll_create$(EXEEXT): $(epoll_create_OBJECTS) $(epoll_create_DEPENDENCIES) $(EXTRA_epoll_create_DEPENDENCIES)
+ @rm -f epoll_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_create_OBJECTS) $(epoll_create_LDADD) $(LIBS)
+
+epoll_create1$(EXEEXT): $(epoll_create1_OBJECTS) $(epoll_create1_DEPENDENCIES) $(EXTRA_epoll_create1_DEPENDENCIES)
+ @rm -f epoll_create1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_create1_OBJECTS) $(epoll_create1_LDADD) $(LIBS)
+
+epoll_ctl$(EXEEXT): $(epoll_ctl_OBJECTS) $(epoll_ctl_DEPENDENCIES) $(EXTRA_epoll_ctl_DEPENDENCIES)
+ @rm -f epoll_ctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_ctl_OBJECTS) $(epoll_ctl_LDADD) $(LIBS)
+
+epoll_pwait$(EXEEXT): $(epoll_pwait_OBJECTS) $(epoll_pwait_DEPENDENCIES) $(EXTRA_epoll_pwait_DEPENDENCIES)
+ @rm -f epoll_pwait$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_pwait_OBJECTS) $(epoll_pwait_LDADD) $(LIBS)
+
+epoll_wait$(EXEEXT): $(epoll_wait_OBJECTS) $(epoll_wait_DEPENDENCIES) $(EXTRA_epoll_wait_DEPENDENCIES)
+ @rm -f epoll_wait$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(epoll_wait_OBJECTS) $(epoll_wait_LDADD) $(LIBS)
+
+erestartsys$(EXEEXT): $(erestartsys_OBJECTS) $(erestartsys_DEPENDENCIES) $(EXTRA_erestartsys_DEPENDENCIES)
+ @rm -f erestartsys$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(erestartsys_OBJECTS) $(erestartsys_LDADD) $(LIBS)
+
+eventfd$(EXEEXT): $(eventfd_OBJECTS) $(eventfd_DEPENDENCIES) $(EXTRA_eventfd_DEPENDENCIES)
+ @rm -f eventfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(eventfd_OBJECTS) $(eventfd_LDADD) $(LIBS)
+
+execve$(EXEEXT): $(execve_OBJECTS) $(execve_DEPENDENCIES) $(EXTRA_execve_DEPENDENCIES)
+ @rm -f execve$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS)
+
+execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES)
+ @rm -f execve-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS)
+
+execveat$(EXEEXT): $(execveat_OBJECTS) $(execveat_DEPENDENCIES) $(EXTRA_execveat_DEPENDENCIES)
+ @rm -f execveat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS)
+
+execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES)
+ @rm -f execveat-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS)
+
+faccessat$(EXEEXT): $(faccessat_OBJECTS) $(faccessat_DEPENDENCIES) $(EXTRA_faccessat_DEPENDENCIES)
+ @rm -f faccessat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
+
+fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES)
+ @rm -f fadvise64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
+
+fadvise64_64$(EXEEXT): $(fadvise64_64_OBJECTS) $(fadvise64_64_DEPENDENCIES) $(EXTRA_fadvise64_64_DEPENDENCIES)
+ @rm -f fadvise64_64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fadvise64_64_OBJECTS) $(fadvise64_64_LDADD) $(LIBS)
+
+fallocate$(EXEEXT): $(fallocate_OBJECTS) $(fallocate_DEPENDENCIES) $(EXTRA_fallocate_DEPENDENCIES)
+ @rm -f fallocate$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fallocate_OBJECTS) $(fallocate_LDADD) $(LIBS)
+
+fanotify_init$(EXEEXT): $(fanotify_init_OBJECTS) $(fanotify_init_DEPENDENCIES) $(EXTRA_fanotify_init_DEPENDENCIES)
+ @rm -f fanotify_init$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_init_OBJECTS) $(fanotify_init_LDADD) $(LIBS)
+
+fanotify_mark$(EXEEXT): $(fanotify_mark_OBJECTS) $(fanotify_mark_DEPENDENCIES) $(EXTRA_fanotify_mark_DEPENDENCIES)
+ @rm -f fanotify_mark$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS)
+
+fchdir$(EXEEXT): $(fchdir_OBJECTS) $(fchdir_DEPENDENCIES) $(EXTRA_fchdir_DEPENDENCIES)
+ @rm -f fchdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchdir_OBJECTS) $(fchdir_LDADD) $(LIBS)
+
+fchmod$(EXEEXT): $(fchmod_OBJECTS) $(fchmod_DEPENDENCIES) $(EXTRA_fchmod_DEPENDENCIES)
+ @rm -f fchmod$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
+
+fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES)
+ @rm -f fchmodat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
+
+fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES)
+ @rm -f fchown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS)
+
+fchown32$(EXEEXT): $(fchown32_OBJECTS) $(fchown32_DEPENDENCIES) $(EXTRA_fchown32_DEPENDENCIES)
+ @rm -f fchown32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchown32_OBJECTS) $(fchown32_LDADD) $(LIBS)
+
+fchownat$(EXEEXT): $(fchownat_OBJECTS) $(fchownat_DEPENDENCIES) $(EXTRA_fchownat_DEPENDENCIES)
+ @rm -f fchownat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS)
+
+fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES)
+ @rm -f fcntl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
+
+fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES)
+ @rm -f fcntl64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS)
+
+fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES)
+ @rm -f fdatasync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS)
+
+file_handle$(EXEEXT): $(file_handle_OBJECTS) $(file_handle_DEPENDENCIES) $(EXTRA_file_handle_DEPENDENCIES)
+ @rm -f file_handle$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS)
+
+file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES)
+ @rm -f file_ioctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS)
+
+filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_DEPENDENCIES) $(EXTRA_filter_unavailable_DEPENDENCIES)
+ @rm -f filter-unavailable$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS)
+
+finit_module$(EXEEXT): $(finit_module_OBJECTS) $(finit_module_DEPENDENCIES) $(EXTRA_finit_module_DEPENDENCIES)
+ @rm -f finit_module$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(finit_module_OBJECTS) $(finit_module_LDADD) $(LIBS)
+
+flock$(EXEEXT): $(flock_OBJECTS) $(flock_DEPENDENCIES) $(EXTRA_flock_DEPENDENCIES)
+ @rm -f flock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS)
+
+fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES)
+ @rm -f fork-f$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS)
+
+fstat$(EXEEXT): $(fstat_OBJECTS) $(fstat_DEPENDENCIES) $(EXTRA_fstat_DEPENDENCIES)
+ @rm -f fstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstat_OBJECTS) $(fstat_LDADD) $(LIBS)
+
+fstat64$(EXEEXT): $(fstat64_OBJECTS) $(fstat64_DEPENDENCIES) $(EXTRA_fstat64_DEPENDENCIES)
+ @rm -f fstat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstat64_OBJECTS) $(fstat64_LDADD) $(LIBS)
+
+fstatat64$(EXEEXT): $(fstatat64_OBJECTS) $(fstatat64_DEPENDENCIES) $(EXTRA_fstatat64_DEPENDENCIES)
+ @rm -f fstatat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstatat64_OBJECTS) $(fstatat64_LDADD) $(LIBS)
+
+fstatfs$(EXEEXT): $(fstatfs_OBJECTS) $(fstatfs_DEPENDENCIES) $(EXTRA_fstatfs_DEPENDENCIES)
+ @rm -f fstatfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstatfs_OBJECTS) $(fstatfs_LDADD) $(LIBS)
+
+fstatfs64$(EXEEXT): $(fstatfs64_OBJECTS) $(fstatfs64_DEPENDENCIES) $(EXTRA_fstatfs64_DEPENDENCIES)
+ @rm -f fstatfs64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fstatfs64_OBJECTS) $(fstatfs64_LDADD) $(LIBS)
+
+fsync$(EXEEXT): $(fsync_OBJECTS) $(fsync_DEPENDENCIES) $(EXTRA_fsync_DEPENDENCIES)
+ @rm -f fsync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fsync_OBJECTS) $(fsync_LDADD) $(LIBS)
+
+ftruncate$(EXEEXT): $(ftruncate_OBJECTS) $(ftruncate_DEPENDENCIES) $(EXTRA_ftruncate_DEPENDENCIES)
+ @rm -f ftruncate$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ftruncate_OBJECTS) $(ftruncate_LDADD) $(LIBS)
+
+ftruncate64$(EXEEXT): $(ftruncate64_OBJECTS) $(ftruncate64_DEPENDENCIES) $(EXTRA_ftruncate64_DEPENDENCIES)
+ @rm -f ftruncate64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ftruncate64_OBJECTS) $(ftruncate64_LDADD) $(LIBS)
+
+futex$(EXEEXT): $(futex_OBJECTS) $(futex_DEPENDENCIES) $(EXTRA_futex_DEPENDENCIES)
+ @rm -f futex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(futex_OBJECTS) $(futex_LDADD) $(LIBS)
+
+futimesat$(EXEEXT): $(futimesat_OBJECTS) $(futimesat_DEPENDENCIES) $(EXTRA_futimesat_DEPENDENCIES)
+ @rm -f futimesat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(futimesat_OBJECTS) $(futimesat_LDADD) $(LIBS)
+
+get_mempolicy$(EXEEXT): $(get_mempolicy_OBJECTS) $(get_mempolicy_DEPENDENCIES) $(EXTRA_get_mempolicy_DEPENDENCIES)
+ @rm -f get_mempolicy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(get_mempolicy_OBJECTS) $(get_mempolicy_LDADD) $(LIBS)
+
+getcpu$(EXEEXT): $(getcpu_OBJECTS) $(getcpu_DEPENDENCIES) $(EXTRA_getcpu_DEPENDENCIES)
+ @rm -f getcpu$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getcpu_OBJECTS) $(getcpu_LDADD) $(LIBS)
+
+getcwd$(EXEEXT): $(getcwd_OBJECTS) $(getcwd_DEPENDENCIES) $(EXTRA_getcwd_DEPENDENCIES)
+ @rm -f getcwd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getcwd_OBJECTS) $(getcwd_LDADD) $(LIBS)
+
+getdents$(EXEEXT): $(getdents_OBJECTS) $(getdents_DEPENDENCIES) $(EXTRA_getdents_DEPENDENCIES)
+ @rm -f getdents$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getdents_OBJECTS) $(getdents_LDADD) $(LIBS)
+
+getdents64$(EXEEXT): $(getdents64_OBJECTS) $(getdents64_DEPENDENCIES) $(EXTRA_getdents64_DEPENDENCIES)
+ @rm -f getdents64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getdents64_OBJECTS) $(getdents64_LDADD) $(LIBS)
+
+getegid$(EXEEXT): $(getegid_OBJECTS) $(getegid_DEPENDENCIES) $(EXTRA_getegid_DEPENDENCIES)
+ @rm -f getegid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getegid_OBJECTS) $(getegid_LDADD) $(LIBS)
+
+getegid32$(EXEEXT): $(getegid32_OBJECTS) $(getegid32_DEPENDENCIES) $(EXTRA_getegid32_DEPENDENCIES)
+ @rm -f getegid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getegid32_OBJECTS) $(getegid32_LDADD) $(LIBS)
+
+geteuid$(EXEEXT): $(geteuid_OBJECTS) $(geteuid_DEPENDENCIES) $(EXTRA_geteuid_DEPENDENCIES)
+ @rm -f geteuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(geteuid_OBJECTS) $(geteuid_LDADD) $(LIBS)
+
+geteuid32$(EXEEXT): $(geteuid32_OBJECTS) $(geteuid32_DEPENDENCIES) $(EXTRA_geteuid32_DEPENDENCIES)
+ @rm -f geteuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(geteuid32_OBJECTS) $(geteuid32_LDADD) $(LIBS)
+
+getgid$(EXEEXT): $(getgid_OBJECTS) $(getgid_DEPENDENCIES) $(EXTRA_getgid_DEPENDENCIES)
+ @rm -f getgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgid_OBJECTS) $(getgid_LDADD) $(LIBS)
+
+getgid32$(EXEEXT): $(getgid32_OBJECTS) $(getgid32_DEPENDENCIES) $(EXTRA_getgid32_DEPENDENCIES)
+ @rm -f getgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgid32_OBJECTS) $(getgid32_LDADD) $(LIBS)
+
+getgroups$(EXEEXT): $(getgroups_OBJECTS) $(getgroups_DEPENDENCIES) $(EXTRA_getgroups_DEPENDENCIES)
+ @rm -f getgroups$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgroups_OBJECTS) $(getgroups_LDADD) $(LIBS)
+
+getgroups32$(EXEEXT): $(getgroups32_OBJECTS) $(getgroups32_DEPENDENCIES) $(EXTRA_getgroups32_DEPENDENCIES)
+ @rm -f getgroups32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getgroups32_OBJECTS) $(getgroups32_LDADD) $(LIBS)
+
+getpeername$(EXEEXT): $(getpeername_OBJECTS) $(getpeername_DEPENDENCIES) $(EXTRA_getpeername_DEPENDENCIES)
+ @rm -f getpeername$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getpeername_OBJECTS) $(getpeername_LDADD) $(LIBS)
+
+getpgrp$(EXEEXT): $(getpgrp_OBJECTS) $(getpgrp_DEPENDENCIES) $(EXTRA_getpgrp_DEPENDENCIES)
+ @rm -f getpgrp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
+
+getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES)
+ @rm -f getrandom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
+
+getresgid$(EXEEXT): $(getresgid_OBJECTS) $(getresgid_DEPENDENCIES) $(EXTRA_getresgid_DEPENDENCIES)
+ @rm -f getresgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresgid_OBJECTS) $(getresgid_LDADD) $(LIBS)
+
+getresgid32$(EXEEXT): $(getresgid32_OBJECTS) $(getresgid32_DEPENDENCIES) $(EXTRA_getresgid32_DEPENDENCIES)
+ @rm -f getresgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresgid32_OBJECTS) $(getresgid32_LDADD) $(LIBS)
+
+getresuid$(EXEEXT): $(getresuid_OBJECTS) $(getresuid_DEPENDENCIES) $(EXTRA_getresuid_DEPENDENCIES)
+ @rm -f getresuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresuid_OBJECTS) $(getresuid_LDADD) $(LIBS)
+
+getresuid32$(EXEEXT): $(getresuid32_OBJECTS) $(getresuid32_DEPENDENCIES) $(EXTRA_getresuid32_DEPENDENCIES)
+ @rm -f getresuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getresuid32_OBJECTS) $(getresuid32_LDADD) $(LIBS)
+
+getrlimit$(EXEEXT): $(getrlimit_OBJECTS) $(getrlimit_DEPENDENCIES) $(EXTRA_getrlimit_DEPENDENCIES)
+ @rm -f getrlimit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getrlimit_OBJECTS) $(getrlimit_LDADD) $(LIBS)
+
+getrusage$(EXEEXT): $(getrusage_OBJECTS) $(getrusage_DEPENDENCIES) $(EXTRA_getrusage_DEPENDENCIES)
+ @rm -f getrusage$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getrusage_OBJECTS) $(getrusage_LDADD) $(LIBS)
+
+getsid$(EXEEXT): $(getsid_OBJECTS) $(getsid_DEPENDENCIES) $(EXTRA_getsid_DEPENDENCIES)
+ @rm -f getsid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS)
+
+getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES)
+ @rm -f getsockname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
+
+getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES)
+ @rm -f getuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
+
+getuid32$(EXEEXT): $(getuid32_OBJECTS) $(getuid32_DEPENDENCIES) $(EXTRA_getuid32_DEPENDENCIES)
+ @rm -f getuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getuid32_OBJECTS) $(getuid32_LDADD) $(LIBS)
+
+getxxid$(EXEEXT): $(getxxid_OBJECTS) $(getxxid_DEPENDENCIES) $(EXTRA_getxxid_DEPENDENCIES)
+ @rm -f getxxid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getxxid_OBJECTS) $(getxxid_LDADD) $(LIBS)
+
+inet-cmsg$(EXEEXT): $(inet_cmsg_OBJECTS) $(inet_cmsg_DEPENDENCIES) $(EXTRA_inet_cmsg_DEPENDENCIES)
+ @rm -f inet-cmsg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inet_cmsg_OBJECTS) $(inet_cmsg_LDADD) $(LIBS)
+
+init_module$(EXEEXT): $(init_module_OBJECTS) $(init_module_DEPENDENCIES) $(EXTRA_init_module_DEPENDENCIES)
+ @rm -f init_module$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(init_module_OBJECTS) $(init_module_LDADD) $(LIBS)
+
+inotify$(EXEEXT): $(inotify_OBJECTS) $(inotify_DEPENDENCIES) $(EXTRA_inotify_DEPENDENCIES)
+ @rm -f inotify$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inotify_OBJECTS) $(inotify_LDADD) $(LIBS)
+
+inotify_init1$(EXEEXT): $(inotify_init1_OBJECTS) $(inotify_init1_DEPENDENCIES) $(EXTRA_inotify_init1_DEPENDENCIES)
+ @rm -f inotify_init1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
+
+ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES)
+ @rm -f ioctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
+
+ioctl_block$(EXEEXT): $(ioctl_block_OBJECTS) $(ioctl_block_DEPENDENCIES) $(EXTRA_ioctl_block_DEPENDENCIES)
+ @rm -f ioctl_block$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS)
+
+ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES)
+ @rm -f ioctl_dm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS)
+
+ioctl_dm-v$(EXEEXT): $(ioctl_dm_v_OBJECTS) $(ioctl_dm_v_DEPENDENCIES) $(EXTRA_ioctl_dm_v_DEPENDENCIES)
+ @rm -f ioctl_dm-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_dm_v_OBJECTS) $(ioctl_dm_v_LDADD) $(LIBS)
+
+ioctl_evdev$(EXEEXT): $(ioctl_evdev_OBJECTS) $(ioctl_evdev_DEPENDENCIES) $(EXTRA_ioctl_evdev_DEPENDENCIES)
+ @rm -f ioctl_evdev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_evdev_OBJECTS) $(ioctl_evdev_LDADD) $(LIBS)
+
+ioctl_evdev-v$(EXEEXT): $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_DEPENDENCIES)
+ @rm -f ioctl_evdev-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
+
+ioctl_loop$(EXEEXT): $(ioctl_loop_OBJECTS) $(ioctl_loop_DEPENDENCIES) $(EXTRA_ioctl_loop_DEPENDENCIES)
+ @rm -f ioctl_loop$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_loop_OBJECTS) $(ioctl_loop_LDADD) $(LIBS)
+
+ioctl_loop-nv$(EXEEXT): $(ioctl_loop_nv_OBJECTS) $(ioctl_loop_nv_DEPENDENCIES) $(EXTRA_ioctl_loop_nv_DEPENDENCIES)
+ @rm -f ioctl_loop-nv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_loop_nv_OBJECTS) $(ioctl_loop_nv_LDADD) $(LIBS)
+
+ioctl_loop-v$(EXEEXT): $(ioctl_loop_v_OBJECTS) $(ioctl_loop_v_DEPENDENCIES) $(EXTRA_ioctl_loop_v_DEPENDENCIES)
+ @rm -f ioctl_loop-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_loop_v_OBJECTS) $(ioctl_loop_v_LDADD) $(LIBS)
+
+ioctl_mtd$(EXEEXT): $(ioctl_mtd_OBJECTS) $(ioctl_mtd_DEPENDENCIES) $(EXTRA_ioctl_mtd_DEPENDENCIES)
+ @rm -f ioctl_mtd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
+
+ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES)
+ @rm -f ioctl_rtc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
+
+ioctl_rtc-v$(EXEEXT): $(ioctl_rtc_v_OBJECTS) $(ioctl_rtc_v_DEPENDENCIES) $(EXTRA_ioctl_rtc_v_DEPENDENCIES)
+ @rm -f ioctl_rtc-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_rtc_v_OBJECTS) $(ioctl_rtc_v_LDADD) $(LIBS)
+
+ioctl_scsi$(EXEEXT): $(ioctl_scsi_OBJECTS) $(ioctl_scsi_DEPENDENCIES) $(EXTRA_ioctl_scsi_DEPENDENCIES)
+ @rm -f ioctl_scsi$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_scsi_OBJECTS) $(ioctl_scsi_LDADD) $(LIBS)
+
+ioctl_sg_io_v3$(EXEEXT): $(ioctl_sg_io_v3_OBJECTS) $(ioctl_sg_io_v3_DEPENDENCIES) $(EXTRA_ioctl_sg_io_v3_DEPENDENCIES)
+ @rm -f ioctl_sg_io_v3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_sg_io_v3_OBJECTS) $(ioctl_sg_io_v3_LDADD) $(LIBS)
+
+ioctl_sg_io_v4$(EXEEXT): $(ioctl_sg_io_v4_OBJECTS) $(ioctl_sg_io_v4_DEPENDENCIES) $(EXTRA_ioctl_sg_io_v4_DEPENDENCIES)
+ @rm -f ioctl_sg_io_v4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_sg_io_v4_OBJECTS) $(ioctl_sg_io_v4_LDADD) $(LIBS)
+
+ioctl_sock_gifconf$(EXEEXT): $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_DEPENDENCIES) $(EXTRA_ioctl_sock_gifconf_DEPENDENCIES)
+ @rm -f ioctl_sock_gifconf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_LDADD) $(LIBS)
+
+ioctl_uffdio$(EXEEXT): $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_DEPENDENCIES) $(EXTRA_ioctl_uffdio_DEPENDENCIES)
+ @rm -f ioctl_uffdio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_LDADD) $(LIBS)
+
+ioctl_v4l2$(EXEEXT): $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_DEPENDENCIES) $(EXTRA_ioctl_v4l2_DEPENDENCIES)
+ @rm -f ioctl_v4l2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_LDADD) $(LIBS)
+
+ioperm$(EXEEXT): $(ioperm_OBJECTS) $(ioperm_DEPENDENCIES) $(EXTRA_ioperm_DEPENDENCIES)
+ @rm -f ioperm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioperm_OBJECTS) $(ioperm_LDADD) $(LIBS)
+
+iopl$(EXEEXT): $(iopl_OBJECTS) $(iopl_DEPENDENCIES) $(EXTRA_iopl_DEPENDENCIES)
+ @rm -f iopl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(iopl_OBJECTS) $(iopl_LDADD) $(LIBS)
+
+ioprio$(EXEEXT): $(ioprio_OBJECTS) $(ioprio_DEPENDENCIES) $(EXTRA_ioprio_DEPENDENCIES)
+ @rm -f ioprio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS)
+
+ip_mreq$(EXEEXT): $(ip_mreq_OBJECTS) $(ip_mreq_DEPENDENCIES) $(EXTRA_ip_mreq_DEPENDENCIES)
+ @rm -f ip_mreq$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ip_mreq_OBJECTS) $(ip_mreq_LDADD) $(LIBS)
+
+ipc$(EXEEXT): $(ipc_OBJECTS) $(ipc_DEPENDENCIES) $(EXTRA_ipc_DEPENDENCIES)
+ @rm -f ipc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_OBJECTS) $(ipc_LDADD) $(LIBS)
+
+ipc_msg$(EXEEXT): $(ipc_msg_OBJECTS) $(ipc_msg_DEPENDENCIES) $(EXTRA_ipc_msg_DEPENDENCIES)
+ @rm -f ipc_msg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_msg_OBJECTS) $(ipc_msg_LDADD) $(LIBS)
+
+ipc_msgbuf$(EXEEXT): $(ipc_msgbuf_OBJECTS) $(ipc_msgbuf_DEPENDENCIES) $(EXTRA_ipc_msgbuf_DEPENDENCIES)
+ @rm -f ipc_msgbuf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_msgbuf_OBJECTS) $(ipc_msgbuf_LDADD) $(LIBS)
+
+ipc_sem$(EXEEXT): $(ipc_sem_OBJECTS) $(ipc_sem_DEPENDENCIES) $(EXTRA_ipc_sem_DEPENDENCIES)
+ @rm -f ipc_sem$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_sem_OBJECTS) $(ipc_sem_LDADD) $(LIBS)
+
+ipc_shm$(EXEEXT): $(ipc_shm_OBJECTS) $(ipc_shm_DEPENDENCIES) $(EXTRA_ipc_shm_DEPENDENCIES)
+ @rm -f ipc_shm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ipc_shm_OBJECTS) $(ipc_shm_LDADD) $(LIBS)
+
+kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES)
+ @rm -f kcmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS)
+
+kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES)
+ @rm -f kexec_file_load$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS)
+
+kexec_load$(EXEEXT): $(kexec_load_OBJECTS) $(kexec_load_DEPENDENCIES) $(EXTRA_kexec_load_DEPENDENCIES)
+ @rm -f kexec_load$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kexec_load_OBJECTS) $(kexec_load_LDADD) $(LIBS)
+
+keyctl$(EXEEXT): $(keyctl_OBJECTS) $(keyctl_DEPENDENCIES) $(EXTRA_keyctl_DEPENDENCIES)
+ @rm -f keyctl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(keyctl_OBJECTS) $(keyctl_LDADD) $(LIBS)
+
+kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES) $(EXTRA_kill_DEPENDENCIES)
+ @rm -f kill$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
+
+ksysent$(EXEEXT): $(ksysent_OBJECTS) $(ksysent_DEPENDENCIES) $(EXTRA_ksysent_DEPENDENCIES)
+ @rm -f ksysent$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ksysent_OBJECTS) $(ksysent_LDADD) $(LIBS)
+
+lchown$(EXEEXT): $(lchown_OBJECTS) $(lchown_DEPENDENCIES) $(EXTRA_lchown_DEPENDENCIES)
+ @rm -f lchown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lchown_OBJECTS) $(lchown_LDADD) $(LIBS)
+
+lchown32$(EXEEXT): $(lchown32_OBJECTS) $(lchown32_DEPENDENCIES) $(EXTRA_lchown32_DEPENDENCIES)
+ @rm -f lchown32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lchown32_OBJECTS) $(lchown32_LDADD) $(LIBS)
+
+link$(EXEEXT): $(link_OBJECTS) $(link_DEPENDENCIES) $(EXTRA_link_DEPENDENCIES)
+ @rm -f link$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(link_OBJECTS) $(link_LDADD) $(LIBS)
+
+linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDENCIES)
+ @rm -f linkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+
+llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES)
+ @rm -f llseek$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS)
+
+lookup_dcookie$(EXEEXT): $(lookup_dcookie_OBJECTS) $(lookup_dcookie_DEPENDENCIES) $(EXTRA_lookup_dcookie_DEPENDENCIES)
+ @rm -f lookup_dcookie$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lookup_dcookie_OBJECTS) $(lookup_dcookie_LDADD) $(LIBS)
+
+lseek$(EXEEXT): $(lseek_OBJECTS) $(lseek_DEPENDENCIES) $(EXTRA_lseek_DEPENDENCIES)
+ @rm -f lseek$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lseek_OBJECTS) $(lseek_LDADD) $(LIBS)
+
+lstat$(EXEEXT): $(lstat_OBJECTS) $(lstat_DEPENDENCIES) $(EXTRA_lstat_DEPENDENCIES)
+ @rm -f lstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lstat_OBJECTS) $(lstat_LDADD) $(LIBS)
+
+lstat64$(EXEEXT): $(lstat64_OBJECTS) $(lstat64_DEPENDENCIES) $(EXTRA_lstat64_DEPENDENCIES)
+ @rm -f lstat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
+
+mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES)
+ @rm -f mbind$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
+
+membarrier$(EXEEXT): $(membarrier_OBJECTS) $(membarrier_DEPENDENCIES) $(EXTRA_membarrier_DEPENDENCIES)
+ @rm -f membarrier$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(membarrier_OBJECTS) $(membarrier_LDADD) $(LIBS)
+
+memfd_create$(EXEEXT): $(memfd_create_OBJECTS) $(memfd_create_DEPENDENCIES) $(EXTRA_memfd_create_DEPENDENCIES)
+ @rm -f memfd_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(memfd_create_OBJECTS) $(memfd_create_LDADD) $(LIBS)
+
+migrate_pages$(EXEEXT): $(migrate_pages_OBJECTS) $(migrate_pages_DEPENDENCIES) $(EXTRA_migrate_pages_DEPENDENCIES)
+ @rm -f migrate_pages$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS)
+
+mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES)
+ @rm -f mincore$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS)
+
+mkdir$(EXEEXT): $(mkdir_OBJECTS) $(mkdir_DEPENDENCIES) $(EXTRA_mkdir_DEPENDENCIES)
+ @rm -f mkdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mkdir_OBJECTS) $(mkdir_LDADD) $(LIBS)
+
+mkdirat$(EXEEXT): $(mkdirat_OBJECTS) $(mkdirat_DEPENDENCIES) $(EXTRA_mkdirat_DEPENDENCIES)
+ @rm -f mkdirat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mkdirat_OBJECTS) $(mkdirat_LDADD) $(LIBS)
+
+mknod$(EXEEXT): $(mknod_OBJECTS) $(mknod_DEPENDENCIES) $(EXTRA_mknod_DEPENDENCIES)
+ @rm -f mknod$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mknod_OBJECTS) $(mknod_LDADD) $(LIBS)
+
+mknodat$(EXEEXT): $(mknodat_OBJECTS) $(mknodat_DEPENDENCIES) $(EXTRA_mknodat_DEPENDENCIES)
+ @rm -f mknodat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mknodat_OBJECTS) $(mknodat_LDADD) $(LIBS)
+
+mlock$(EXEEXT): $(mlock_OBJECTS) $(mlock_DEPENDENCIES) $(EXTRA_mlock_DEPENDENCIES)
+ @rm -f mlock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mlock_OBJECTS) $(mlock_LDADD) $(LIBS)
+
+mlock2$(EXEEXT): $(mlock2_OBJECTS) $(mlock2_DEPENDENCIES) $(EXTRA_mlock2_DEPENDENCIES)
+ @rm -f mlock2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mlock2_OBJECTS) $(mlock2_LDADD) $(LIBS)
+
+mlockall$(EXEEXT): $(mlockall_OBJECTS) $(mlockall_DEPENDENCIES) $(EXTRA_mlockall_DEPENDENCIES)
+ @rm -f mlockall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mlockall_OBJECTS) $(mlockall_LDADD) $(LIBS)
+
+mmap$(EXEEXT): $(mmap_OBJECTS) $(mmap_DEPENDENCIES) $(EXTRA_mmap_DEPENDENCIES)
+ @rm -f mmap$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmap_OBJECTS) $(mmap_LDADD) $(LIBS)
+
+mmap64$(EXEEXT): $(mmap64_OBJECTS) $(mmap64_DEPENDENCIES) $(EXTRA_mmap64_DEPENDENCIES)
+ @rm -f mmap64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmap64_OBJECTS) $(mmap64_LDADD) $(LIBS)
+
+mmsg$(EXEEXT): $(mmsg_OBJECTS) $(mmsg_DEPENDENCIES) $(EXTRA_mmsg_DEPENDENCIES)
+ @rm -f mmsg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_OBJECTS) $(mmsg_LDADD) $(LIBS)
+
+mmsg-silent$(EXEEXT): $(mmsg_silent_OBJECTS) $(mmsg_silent_DEPENDENCIES) $(EXTRA_mmsg_silent_DEPENDENCIES)
+ @rm -f mmsg-silent$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_silent_OBJECTS) $(mmsg_silent_LDADD) $(LIBS)
+
+mmsg_name$(EXEEXT): $(mmsg_name_OBJECTS) $(mmsg_name_DEPENDENCIES) $(EXTRA_mmsg_name_DEPENDENCIES)
+ @rm -f mmsg_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_name_OBJECTS) $(mmsg_name_LDADD) $(LIBS)
+
+mmsg_name-v$(EXEEXT): $(mmsg_name_v_OBJECTS) $(mmsg_name_v_DEPENDENCIES) $(EXTRA_mmsg_name_v_DEPENDENCIES)
+ @rm -f mmsg_name-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mmsg_name_v_OBJECTS) $(mmsg_name_v_LDADD) $(LIBS)
+
+mount$(EXEEXT): $(mount_OBJECTS) $(mount_DEPENDENCIES) $(EXTRA_mount_DEPENDENCIES)
+ @rm -f mount$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mount_OBJECTS) $(mount_LDADD) $(LIBS)
+
+move_pages$(EXEEXT): $(move_pages_OBJECTS) $(move_pages_DEPENDENCIES) $(EXTRA_move_pages_DEPENDENCIES)
+ @rm -f move_pages$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS)
+
+mq$(EXEEXT): $(mq_OBJECTS) $(mq_DEPENDENCIES) $(EXTRA_mq_DEPENDENCIES)
+ @rm -f mq$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_OBJECTS) $(mq_LDADD) $(LIBS)
+
+mq_sendrecv$(EXEEXT): $(mq_sendrecv_OBJECTS) $(mq_sendrecv_DEPENDENCIES) $(EXTRA_mq_sendrecv_DEPENDENCIES)
+ @rm -f mq_sendrecv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_sendrecv_OBJECTS) $(mq_sendrecv_LDADD) $(LIBS)
+
+mq_sendrecv-read$(EXEEXT): $(mq_sendrecv_read_OBJECTS) $(mq_sendrecv_read_DEPENDENCIES) $(EXTRA_mq_sendrecv_read_DEPENDENCIES)
+ @rm -f mq_sendrecv-read$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_sendrecv_read_OBJECTS) $(mq_sendrecv_read_LDADD) $(LIBS)
+
+mq_sendrecv-write$(EXEEXT): $(mq_sendrecv_write_OBJECTS) $(mq_sendrecv_write_DEPENDENCIES) $(EXTRA_mq_sendrecv_write_DEPENDENCIES)
+ @rm -f mq_sendrecv-write$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(mq_sendrecv_write_OBJECTS) $(mq_sendrecv_write_LDADD) $(LIBS)
+
+msg_control$(EXEEXT): $(msg_control_OBJECTS) $(msg_control_DEPENDENCIES) $(EXTRA_msg_control_DEPENDENCIES)
+ @rm -f msg_control$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(msg_control_OBJECTS) $(msg_control_LDADD) $(LIBS)
+
+msg_control-v$(EXEEXT): $(msg_control_v_OBJECTS) $(msg_control_v_DEPENDENCIES) $(EXTRA_msg_control_v_DEPENDENCIES)
+ @rm -f msg_control-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(msg_control_v_OBJECTS) $(msg_control_v_LDADD) $(LIBS)
+
+msg_name$(EXEEXT): $(msg_name_OBJECTS) $(msg_name_DEPENDENCIES) $(EXTRA_msg_name_DEPENDENCIES)
+ @rm -f msg_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(msg_name_OBJECTS) $(msg_name_LDADD) $(LIBS)
+
+munlockall$(EXEEXT): $(munlockall_OBJECTS) $(munlockall_DEPENDENCIES) $(EXTRA_munlockall_DEPENDENCIES)
+ @rm -f munlockall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(munlockall_OBJECTS) $(munlockall_LDADD) $(LIBS)
+
+nanosleep$(EXEEXT): $(nanosleep_OBJECTS) $(nanosleep_DEPENDENCIES) $(EXTRA_nanosleep_DEPENDENCIES)
+ @rm -f nanosleep$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nanosleep_OBJECTS) $(nanosleep_LDADD) $(LIBS)
+
+net-accept-connect$(EXEEXT): $(net_accept_connect_OBJECTS) $(net_accept_connect_DEPENDENCIES) $(EXTRA_net_accept_connect_DEPENDENCIES)
+ @rm -f net-accept-connect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_accept_connect_OBJECTS) $(net_accept_connect_LDADD) $(LIBS)
+
+net-icmp_filter$(EXEEXT): $(net_icmp_filter_OBJECTS) $(net_icmp_filter_DEPENDENCIES) $(EXTRA_net_icmp_filter_DEPENDENCIES)
+ @rm -f net-icmp_filter$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_icmp_filter_OBJECTS) $(net_icmp_filter_LDADD) $(LIBS)
+
+net-sockaddr$(EXEEXT): $(net_sockaddr_OBJECTS) $(net_sockaddr_DEPENDENCIES) $(EXTRA_net_sockaddr_DEPENDENCIES)
+ @rm -f net-sockaddr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS)
+
+net-y-unix$(EXEEXT): $(net_y_unix_OBJECTS) $(net_y_unix_DEPENDENCIES) $(EXTRA_net_y_unix_DEPENDENCIES)
+ @rm -f net-y-unix$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_y_unix_OBJECTS) $(net_y_unix_LDADD) $(LIBS)
+
+net-yy-inet$(EXEEXT): $(net_yy_inet_OBJECTS) $(net_yy_inet_DEPENDENCIES) $(EXTRA_net_yy_inet_DEPENDENCIES)
+ @rm -f net-yy-inet$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_yy_inet_OBJECTS) $(net_yy_inet_LDADD) $(LIBS)
+
+net-yy-netlink$(EXEEXT): $(net_yy_netlink_OBJECTS) $(net_yy_netlink_DEPENDENCIES) $(EXTRA_net_yy_netlink_DEPENDENCIES)
+ @rm -f net-yy-netlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_yy_netlink_OBJECTS) $(net_yy_netlink_LDADD) $(LIBS)
+
+net-yy-unix$(EXEEXT): $(net_yy_unix_OBJECTS) $(net_yy_unix_DEPENDENCIES) $(EXTRA_net_yy_unix_DEPENDENCIES)
+ @rm -f net-yy-unix$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(net_yy_unix_OBJECTS) $(net_yy_unix_LDADD) $(LIBS)
+
+netlink_inet_diag$(EXEEXT): $(netlink_inet_diag_OBJECTS) $(netlink_inet_diag_DEPENDENCIES) $(EXTRA_netlink_inet_diag_DEPENDENCIES)
+ @rm -f netlink_inet_diag$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_inet_diag_OBJECTS) $(netlink_inet_diag_LDADD) $(LIBS)
+
+netlink_netlink_diag$(EXEEXT): $(netlink_netlink_diag_OBJECTS) $(netlink_netlink_diag_DEPENDENCIES) $(EXTRA_netlink_netlink_diag_DEPENDENCIES)
+ @rm -f netlink_netlink_diag$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_netlink_diag_OBJECTS) $(netlink_netlink_diag_LDADD) $(LIBS)
+
+netlink_protocol$(EXEEXT): $(netlink_protocol_OBJECTS) $(netlink_protocol_DEPENDENCIES) $(EXTRA_netlink_protocol_DEPENDENCIES)
+ @rm -f netlink_protocol$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_protocol_OBJECTS) $(netlink_protocol_LDADD) $(LIBS)
+
+netlink_unix_diag$(EXEEXT): $(netlink_unix_diag_OBJECTS) $(netlink_unix_diag_DEPENDENCIES) $(EXTRA_netlink_unix_diag_DEPENDENCIES)
+ @rm -f netlink_unix_diag$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(netlink_unix_diag_OBJECTS) $(netlink_unix_diag_LDADD) $(LIBS)
+
+newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_newfstatat_DEPENDENCIES)
+ @rm -f newfstatat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS)
+
+nsyscalls$(EXEEXT): $(nsyscalls_OBJECTS) $(nsyscalls_DEPENDENCIES) $(EXTRA_nsyscalls_DEPENDENCIES)
+ @rm -f nsyscalls$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nsyscalls_OBJECTS) $(nsyscalls_LDADD) $(LIBS)
+
+old_mmap$(EXEEXT): $(old_mmap_OBJECTS) $(old_mmap_DEPENDENCIES) $(EXTRA_old_mmap_DEPENDENCIES)
+ @rm -f old_mmap$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(old_mmap_OBJECTS) $(old_mmap_LDADD) $(LIBS)
+
+oldfstat$(EXEEXT): $(oldfstat_OBJECTS) $(oldfstat_DEPENDENCIES) $(EXTRA_oldfstat_DEPENDENCIES)
+ @rm -f oldfstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldfstat_OBJECTS) $(oldfstat_LDADD) $(LIBS)
+
+oldlstat$(EXEEXT): $(oldlstat_OBJECTS) $(oldlstat_DEPENDENCIES) $(EXTRA_oldlstat_DEPENDENCIES)
+ @rm -f oldlstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldlstat_OBJECTS) $(oldlstat_LDADD) $(LIBS)
+
+oldselect$(EXEEXT): $(oldselect_OBJECTS) $(oldselect_DEPENDENCIES) $(EXTRA_oldselect_DEPENDENCIES)
+ @rm -f oldselect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldselect_OBJECTS) $(oldselect_LDADD) $(LIBS)
+
+oldstat$(EXEEXT): $(oldstat_OBJECTS) $(oldstat_DEPENDENCIES) $(EXTRA_oldstat_DEPENDENCIES)
+ @rm -f oldstat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(oldstat_OBJECTS) $(oldstat_LDADD) $(LIBS)
+
+open$(EXEEXT): $(open_OBJECTS) $(open_DEPENDENCIES) $(EXTRA_open_DEPENDENCIES)
+ @rm -f open$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
+
+openat$(EXEEXT): $(openat_OBJECTS) $(openat_DEPENDENCIES) $(EXTRA_openat_DEPENDENCIES)
+ @rm -f openat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+
+pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES)
+ @rm -f pause$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
+
+pc$(EXEEXT): $(pc_OBJECTS) $(pc_DEPENDENCIES) $(EXTRA_pc_DEPENDENCIES)
+ @rm -f pc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pc_OBJECTS) $(pc_LDADD) $(LIBS)
+
+perf_event_open$(EXEEXT): $(perf_event_open_OBJECTS) $(perf_event_open_DEPENDENCIES) $(EXTRA_perf_event_open_DEPENDENCIES)
+ @rm -f perf_event_open$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(perf_event_open_OBJECTS) $(perf_event_open_LDADD) $(LIBS)
+
+perf_event_open_nonverbose$(EXEEXT): $(perf_event_open_nonverbose_OBJECTS) $(perf_event_open_nonverbose_DEPENDENCIES) $(EXTRA_perf_event_open_nonverbose_DEPENDENCIES)
+ @rm -f perf_event_open_nonverbose$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(perf_event_open_nonverbose_OBJECTS) $(perf_event_open_nonverbose_LDADD) $(LIBS)
+
+perf_event_open_unabbrev$(EXEEXT): $(perf_event_open_unabbrev_OBJECTS) $(perf_event_open_unabbrev_DEPENDENCIES) $(EXTRA_perf_event_open_unabbrev_DEPENDENCIES)
+ @rm -f perf_event_open_unabbrev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(perf_event_open_unabbrev_OBJECTS) $(perf_event_open_unabbrev_LDADD) $(LIBS)
+
+personality$(EXEEXT): $(personality_OBJECTS) $(personality_DEPENDENCIES) $(EXTRA_personality_DEPENDENCIES)
+ @rm -f personality$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(personality_OBJECTS) $(personality_LDADD) $(LIBS)
+
+pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES)
+ @rm -f pipe$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS)
+
+pipe2$(EXEEXT): $(pipe2_OBJECTS) $(pipe2_DEPENDENCIES) $(EXTRA_pipe2_DEPENDENCIES)
+ @rm -f pipe2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pipe2_OBJECTS) $(pipe2_LDADD) $(LIBS)
+
+pkey_alloc$(EXEEXT): $(pkey_alloc_OBJECTS) $(pkey_alloc_DEPENDENCIES) $(EXTRA_pkey_alloc_DEPENDENCIES)
+ @rm -f pkey_alloc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pkey_alloc_OBJECTS) $(pkey_alloc_LDADD) $(LIBS)
+
+pkey_free$(EXEEXT): $(pkey_free_OBJECTS) $(pkey_free_DEPENDENCIES) $(EXTRA_pkey_free_DEPENDENCIES)
+ @rm -f pkey_free$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pkey_free_OBJECTS) $(pkey_free_LDADD) $(LIBS)
+
+pkey_mprotect$(EXEEXT): $(pkey_mprotect_OBJECTS) $(pkey_mprotect_DEPENDENCIES) $(EXTRA_pkey_mprotect_DEPENDENCIES)
+ @rm -f pkey_mprotect$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pkey_mprotect_OBJECTS) $(pkey_mprotect_LDADD) $(LIBS)
+
+poll$(EXEEXT): $(poll_OBJECTS) $(poll_DEPENDENCIES) $(EXTRA_poll_DEPENDENCIES)
+ @rm -f poll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(poll_OBJECTS) $(poll_LDADD) $(LIBS)
+
+ppoll$(EXEEXT): $(ppoll_OBJECTS) $(ppoll_DEPENDENCIES) $(EXTRA_ppoll_DEPENDENCIES)
+ @rm -f ppoll$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
+
+prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES)
+ @rm -f prctl-arg2-intptr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
+
+prctl-dumpable$(EXEEXT): $(prctl_dumpable_OBJECTS) $(prctl_dumpable_DEPENDENCIES) $(EXTRA_prctl_dumpable_DEPENDENCIES)
+ @rm -f prctl-dumpable$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_dumpable_OBJECTS) $(prctl_dumpable_LDADD) $(LIBS)
+
+prctl-name$(EXEEXT): $(prctl_name_OBJECTS) $(prctl_name_DEPENDENCIES) $(EXTRA_prctl_name_DEPENDENCIES)
+ @rm -f prctl-name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_name_OBJECTS) $(prctl_name_LDADD) $(LIBS)
+
+prctl-no-args$(EXEEXT): $(prctl_no_args_OBJECTS) $(prctl_no_args_DEPENDENCIES) $(EXTRA_prctl_no_args_DEPENDENCIES)
+ @rm -f prctl-no-args$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_no_args_OBJECTS) $(prctl_no_args_LDADD) $(LIBS)
+
+prctl-pdeathsig$(EXEEXT): $(prctl_pdeathsig_OBJECTS) $(prctl_pdeathsig_DEPENDENCIES) $(EXTRA_prctl_pdeathsig_DEPENDENCIES)
+ @rm -f prctl-pdeathsig$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_pdeathsig_OBJECTS) $(prctl_pdeathsig_LDADD) $(LIBS)
+
+prctl-seccomp-filter-v$(EXEEXT): $(prctl_seccomp_filter_v_OBJECTS) $(prctl_seccomp_filter_v_DEPENDENCIES) $(EXTRA_prctl_seccomp_filter_v_DEPENDENCIES)
+ @rm -f prctl-seccomp-filter-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_seccomp_filter_v_OBJECTS) $(prctl_seccomp_filter_v_LDADD) $(LIBS)
+
+prctl-seccomp-strict$(EXEEXT): $(prctl_seccomp_strict_OBJECTS) $(prctl_seccomp_strict_DEPENDENCIES) $(EXTRA_prctl_seccomp_strict_DEPENDENCIES)
+ @rm -f prctl-seccomp-strict$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_seccomp_strict_OBJECTS) $(prctl_seccomp_strict_LDADD) $(LIBS)
+
+prctl-securebits$(EXEEXT): $(prctl_securebits_OBJECTS) $(prctl_securebits_DEPENDENCIES) $(EXTRA_prctl_securebits_DEPENDENCIES)
+ @rm -f prctl-securebits$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_securebits_OBJECTS) $(prctl_securebits_LDADD) $(LIBS)
+
+prctl-tid_address$(EXEEXT): $(prctl_tid_address_OBJECTS) $(prctl_tid_address_DEPENDENCIES) $(EXTRA_prctl_tid_address_DEPENDENCIES)
+ @rm -f prctl-tid_address$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_tid_address_OBJECTS) $(prctl_tid_address_LDADD) $(LIBS)
+
+prctl-tsc$(EXEEXT): $(prctl_tsc_OBJECTS) $(prctl_tsc_DEPENDENCIES) $(EXTRA_prctl_tsc_DEPENDENCIES)
+ @rm -f prctl-tsc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prctl_tsc_OBJECTS) $(prctl_tsc_LDADD) $(LIBS)
+
+pread64-pwrite64$(EXEEXT): $(pread64_pwrite64_OBJECTS) $(pread64_pwrite64_DEPENDENCIES) $(EXTRA_pread64_pwrite64_DEPENDENCIES)
+ @rm -f pread64-pwrite64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pread64_pwrite64_OBJECTS) $(pread64_pwrite64_LDADD) $(LIBS)
+
+preadv$(EXEEXT): $(preadv_OBJECTS) $(preadv_DEPENDENCIES) $(EXTRA_preadv_DEPENDENCIES)
+ @rm -f preadv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(preadv_OBJECTS) $(preadv_LDADD) $(LIBS)
+
+preadv-pwritev$(EXEEXT): $(preadv_pwritev_OBJECTS) $(preadv_pwritev_DEPENDENCIES) $(EXTRA_preadv_pwritev_DEPENDENCIES)
+ @rm -f preadv-pwritev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(preadv_pwritev_OBJECTS) $(preadv_pwritev_LDADD) $(LIBS)
+
+preadv2-pwritev2$(EXEEXT): $(preadv2_pwritev2_OBJECTS) $(preadv2_pwritev2_DEPENDENCIES) $(EXTRA_preadv2_pwritev2_DEPENDENCIES)
+ @rm -f preadv2-pwritev2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(preadv2_pwritev2_OBJECTS) $(preadv2_pwritev2_LDADD) $(LIBS)
+
+print_maxfd$(EXEEXT): $(print_maxfd_OBJECTS) $(print_maxfd_DEPENDENCIES) $(EXTRA_print_maxfd_DEPENDENCIES)
+ @rm -f print_maxfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(print_maxfd_OBJECTS) $(print_maxfd_LDADD) $(LIBS)
+
+printstr$(EXEEXT): $(printstr_OBJECTS) $(printstr_DEPENDENCIES) $(EXTRA_printstr_DEPENDENCIES)
+ @rm -f printstr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(printstr_OBJECTS) $(printstr_LDADD) $(LIBS)
+
+prlimit64$(EXEEXT): $(prlimit64_OBJECTS) $(prlimit64_DEPENDENCIES) $(EXTRA_prlimit64_DEPENDENCIES)
+ @rm -f prlimit64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS)
+
+process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES)
+ @rm -f process_vm_readv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS)
+
+process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES)
+ @rm -f process_vm_writev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS)
+
+pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES)
+ @rm -f pselect6$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS)
+
+ptrace$(EXEEXT): $(ptrace_OBJECTS) $(ptrace_DEPENDENCIES) $(EXTRA_ptrace_DEPENDENCIES)
+ @rm -f ptrace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ptrace_OBJECTS) $(ptrace_LDADD) $(LIBS)
+
+pwritev$(EXEEXT): $(pwritev_OBJECTS) $(pwritev_DEPENDENCIES) $(EXTRA_pwritev_DEPENDENCIES)
+ @rm -f pwritev$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pwritev_OBJECTS) $(pwritev_LDADD) $(LIBS)
+
+qual_fault$(EXEEXT): $(qual_fault_OBJECTS) $(qual_fault_DEPENDENCIES) $(EXTRA_qual_fault_DEPENDENCIES)
+ @rm -f qual_fault$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_fault_OBJECTS) $(qual_fault_LDADD) $(LIBS)
+
+qual_inject-error-signal$(EXEEXT): $(qual_inject_error_signal_OBJECTS) $(qual_inject_error_signal_DEPENDENCIES) $(EXTRA_qual_inject_error_signal_DEPENDENCIES)
+ @rm -f qual_inject-error-signal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_inject_error_signal_OBJECTS) $(qual_inject_error_signal_LDADD) $(LIBS)
+
+qual_inject-retval$(EXEEXT): $(qual_inject_retval_OBJECTS) $(qual_inject_retval_DEPENDENCIES) $(EXTRA_qual_inject_retval_DEPENDENCIES)
+ @rm -f qual_inject-retval$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_inject_retval_OBJECTS) $(qual_inject_retval_LDADD) $(LIBS)
+
+qual_inject-signal$(EXEEXT): $(qual_inject_signal_OBJECTS) $(qual_inject_signal_DEPENDENCIES) $(EXTRA_qual_inject_signal_DEPENDENCIES)
+ @rm -f qual_inject-signal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_inject_signal_OBJECTS) $(qual_inject_signal_LDADD) $(LIBS)
+
+qual_signal$(EXEEXT): $(qual_signal_OBJECTS) $(qual_signal_DEPENDENCIES) $(EXTRA_qual_signal_DEPENDENCIES)
+ @rm -f qual_signal$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(qual_signal_OBJECTS) $(qual_signal_LDADD) $(LIBS)
+
+quotactl$(EXEEXT): $(quotactl_OBJECTS) $(quotactl_DEPENDENCIES) $(EXTRA_quotactl_DEPENDENCIES)
+ @rm -f quotactl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_OBJECTS) $(quotactl_LDADD) $(LIBS)
+
+quotactl-v$(EXEEXT): $(quotactl_v_OBJECTS) $(quotactl_v_DEPENDENCIES) $(EXTRA_quotactl_v_DEPENDENCIES)
+ @rm -f quotactl-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_v_OBJECTS) $(quotactl_v_LDADD) $(LIBS)
+
+quotactl-xfs$(EXEEXT): $(quotactl_xfs_OBJECTS) $(quotactl_xfs_DEPENDENCIES) $(EXTRA_quotactl_xfs_DEPENDENCIES)
+ @rm -f quotactl-xfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_xfs_OBJECTS) $(quotactl_xfs_LDADD) $(LIBS)
+
+quotactl-xfs-v$(EXEEXT): $(quotactl_xfs_v_OBJECTS) $(quotactl_xfs_v_DEPENDENCIES) $(EXTRA_quotactl_xfs_v_DEPENDENCIES)
+ @rm -f quotactl-xfs-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quotactl_xfs_v_OBJECTS) $(quotactl_xfs_v_LDADD) $(LIBS)
+
+read-write$(EXEEXT): $(read_write_OBJECTS) $(read_write_DEPENDENCIES) $(EXTRA_read_write_DEPENDENCIES)
+ @rm -f read-write$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(read_write_OBJECTS) $(read_write_LDADD) $(LIBS)
+
+readahead$(EXEEXT): $(readahead_OBJECTS) $(readahead_DEPENDENCIES) $(EXTRA_readahead_DEPENDENCIES)
+ @rm -f readahead$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readahead_OBJECTS) $(readahead_LDADD) $(LIBS)
+
+readdir$(EXEEXT): $(readdir_OBJECTS) $(readdir_DEPENDENCIES) $(EXTRA_readdir_DEPENDENCIES)
+ @rm -f readdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readdir_OBJECTS) $(readdir_LDADD) $(LIBS)
+
+readlink$(EXEEXT): $(readlink_OBJECTS) $(readlink_DEPENDENCIES) $(EXTRA_readlink_DEPENDENCIES)
+ @rm -f readlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readlink_OBJECTS) $(readlink_LDADD) $(LIBS)
+
+readlinkat$(EXEEXT): $(readlinkat_OBJECTS) $(readlinkat_DEPENDENCIES) $(EXTRA_readlinkat_DEPENDENCIES)
+ @rm -f readlinkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readlinkat_OBJECTS) $(readlinkat_LDADD) $(LIBS)
+
+readv$(EXEEXT): $(readv_OBJECTS) $(readv_DEPENDENCIES) $(EXTRA_readv_DEPENDENCIES)
+ @rm -f readv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(readv_OBJECTS) $(readv_LDADD) $(LIBS)
+
+reboot$(EXEEXT): $(reboot_OBJECTS) $(reboot_DEPENDENCIES) $(EXTRA_reboot_DEPENDENCIES)
+ @rm -f reboot$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(reboot_OBJECTS) $(reboot_LDADD) $(LIBS)
+
+recvfrom$(EXEEXT): $(recvfrom_OBJECTS) $(recvfrom_DEPENDENCIES) $(EXTRA_recvfrom_DEPENDENCIES)
+ @rm -f recvfrom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(recvfrom_OBJECTS) $(recvfrom_LDADD) $(LIBS)
+
+recvmmsg-timeout$(EXEEXT): $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_DEPENDENCIES) $(EXTRA_recvmmsg_timeout_DEPENDENCIES)
+ @rm -f recvmmsg-timeout$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_LDADD) $(LIBS)
+
+recvmsg$(EXEEXT): $(recvmsg_OBJECTS) $(recvmsg_DEPENDENCIES) $(EXTRA_recvmsg_DEPENDENCIES)
+ @rm -f recvmsg$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(recvmsg_OBJECTS) $(recvmsg_LDADD) $(LIBS)
+
+redirect-fds$(EXEEXT): $(redirect_fds_OBJECTS) $(redirect_fds_DEPENDENCIES) $(EXTRA_redirect_fds_DEPENDENCIES)
+ @rm -f redirect-fds$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(redirect_fds_OBJECTS) $(redirect_fds_LDADD) $(LIBS)
+
+remap_file_pages$(EXEEXT): $(remap_file_pages_OBJECTS) $(remap_file_pages_DEPENDENCIES) $(EXTRA_remap_file_pages_DEPENDENCIES)
+ @rm -f remap_file_pages$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(remap_file_pages_OBJECTS) $(remap_file_pages_LDADD) $(LIBS)
+
+rename$(EXEEXT): $(rename_OBJECTS) $(rename_DEPENDENCIES) $(EXTRA_rename_DEPENDENCIES)
+ @rm -f rename$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rename_OBJECTS) $(rename_LDADD) $(LIBS)
+
+renameat$(EXEEXT): $(renameat_OBJECTS) $(renameat_DEPENDENCIES) $(EXTRA_renameat_DEPENDENCIES)
+ @rm -f renameat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(renameat_OBJECTS) $(renameat_LDADD) $(LIBS)
+
+renameat2$(EXEEXT): $(renameat2_OBJECTS) $(renameat2_DEPENDENCIES) $(EXTRA_renameat2_DEPENDENCIES)
+ @rm -f renameat2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(renameat2_OBJECTS) $(renameat2_LDADD) $(LIBS)
+
+request_key$(EXEEXT): $(request_key_OBJECTS) $(request_key_DEPENDENCIES) $(EXTRA_request_key_DEPENDENCIES)
+ @rm -f request_key$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(request_key_OBJECTS) $(request_key_LDADD) $(LIBS)
+
+restart_syscall$(EXEEXT): $(restart_syscall_OBJECTS) $(restart_syscall_DEPENDENCIES) $(EXTRA_restart_syscall_DEPENDENCIES)
+ @rm -f restart_syscall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(restart_syscall_OBJECTS) $(restart_syscall_LDADD) $(LIBS)
+
+rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES) $(EXTRA_rmdir_DEPENDENCIES)
+ @rm -f rmdir$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS)
+
+rt_sigpending$(EXEEXT): $(rt_sigpending_OBJECTS) $(rt_sigpending_DEPENDENCIES) $(EXTRA_rt_sigpending_DEPENDENCIES)
+ @rm -f rt_sigpending$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigpending_OBJECTS) $(rt_sigpending_LDADD) $(LIBS)
+
+rt_sigprocmask$(EXEEXT): $(rt_sigprocmask_OBJECTS) $(rt_sigprocmask_DEPENDENCIES) $(EXTRA_rt_sigprocmask_DEPENDENCIES)
+ @rm -f rt_sigprocmask$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigprocmask_OBJECTS) $(rt_sigprocmask_LDADD) $(LIBS)
+
+rt_sigqueueinfo$(EXEEXT): $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo_DEPENDENCIES)
+ @rm -f rt_sigqueueinfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
+
+rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES)
+ @rm -f rt_sigsuspend$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
+
+rt_sigtimedwait$(EXEEXT): $(rt_sigtimedwait_OBJECTS) $(rt_sigtimedwait_DEPENDENCIES) $(EXTRA_rt_sigtimedwait_DEPENDENCIES)
+ @rm -f rt_sigtimedwait$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigtimedwait_OBJECTS) $(rt_sigtimedwait_LDADD) $(LIBS)
+
+rt_tgsigqueueinfo$(EXEEXT): $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo_DEPENDENCIES)
+ @rm -f rt_tgsigqueueinfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS)
+
+sched_get_priority_mxx$(EXEEXT): $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_DEPENDENCIES) $(EXTRA_sched_get_priority_mxx_DEPENDENCIES)
+ @rm -f sched_get_priority_mxx$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_get_priority_mxx_OBJECTS) $(sched_get_priority_mxx_LDADD) $(LIBS)
+
+sched_rr_get_interval$(EXEEXT): $(sched_rr_get_interval_OBJECTS) $(sched_rr_get_interval_DEPENDENCIES) $(EXTRA_sched_rr_get_interval_DEPENDENCIES)
+ @rm -f sched_rr_get_interval$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_rr_get_interval_OBJECTS) $(sched_rr_get_interval_LDADD) $(LIBS)
+
+sched_xetaffinity$(EXEEXT): $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_DEPENDENCIES) $(EXTRA_sched_xetaffinity_DEPENDENCIES)
+ @rm -f sched_xetaffinity$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS)
+
+sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES)
+ @rm -f sched_xetattr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS)
+
+sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES)
+ @rm -f sched_xetparam$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS)
+
+sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES)
+ @rm -f sched_xetscheduler$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS)
+
+sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES)
+ @rm -f sched_yield$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS)
+
+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)
+
+seccomp-filter$(EXEEXT): $(seccomp_filter_OBJECTS) $(seccomp_filter_DEPENDENCIES) $(EXTRA_seccomp_filter_DEPENDENCIES)
+ @rm -f seccomp-filter$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_filter_OBJECTS) $(seccomp_filter_LDADD) $(LIBS)
+
+seccomp-filter-v$(EXEEXT): $(seccomp_filter_v_OBJECTS) $(seccomp_filter_v_DEPENDENCIES) $(EXTRA_seccomp_filter_v_DEPENDENCIES)
+ @rm -f seccomp-filter-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_filter_v_OBJECTS) $(seccomp_filter_v_LDADD) $(LIBS)
+
+seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES) $(EXTRA_seccomp_strict_DEPENDENCIES)
+ @rm -f seccomp-strict$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS)
+
+select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES)
+ @rm -f select$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
+
+semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIES)
+ @rm -f semop$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
+
+sendfile$(EXEEXT): $(sendfile_OBJECTS) $(sendfile_DEPENDENCIES) $(EXTRA_sendfile_DEPENDENCIES)
+ @rm -f sendfile$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sendfile_OBJECTS) $(sendfile_LDADD) $(LIBS)
+
+sendfile64$(EXEEXT): $(sendfile64_OBJECTS) $(sendfile64_DEPENDENCIES) $(EXTRA_sendfile64_DEPENDENCIES)
+ @rm -f sendfile64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sendfile64_OBJECTS) $(sendfile64_LDADD) $(LIBS)
+
+set_mempolicy$(EXEEXT): $(set_mempolicy_OBJECTS) $(set_mempolicy_DEPENDENCIES) $(EXTRA_set_mempolicy_DEPENDENCIES)
+ @rm -f set_mempolicy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_mempolicy_OBJECTS) $(set_mempolicy_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)
+
+setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES)
+ @rm -f setdomainname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS)
+
+setfsgid$(EXEEXT): $(setfsgid_OBJECTS) $(setfsgid_DEPENDENCIES) $(EXTRA_setfsgid_DEPENDENCIES)
+ @rm -f setfsgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsgid_OBJECTS) $(setfsgid_LDADD) $(LIBS)
+
+setfsgid32$(EXEEXT): $(setfsgid32_OBJECTS) $(setfsgid32_DEPENDENCIES) $(EXTRA_setfsgid32_DEPENDENCIES)
+ @rm -f setfsgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsgid32_OBJECTS) $(setfsgid32_LDADD) $(LIBS)
+
+setfsuid$(EXEEXT): $(setfsuid_OBJECTS) $(setfsuid_DEPENDENCIES) $(EXTRA_setfsuid_DEPENDENCIES)
+ @rm -f setfsuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsuid_OBJECTS) $(setfsuid_LDADD) $(LIBS)
+
+setfsuid32$(EXEEXT): $(setfsuid32_OBJECTS) $(setfsuid32_DEPENDENCIES) $(EXTRA_setfsuid32_DEPENDENCIES)
+ @rm -f setfsuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setfsuid32_OBJECTS) $(setfsuid32_LDADD) $(LIBS)
+
+setgid$(EXEEXT): $(setgid_OBJECTS) $(setgid_DEPENDENCIES) $(EXTRA_setgid_DEPENDENCIES)
+ @rm -f setgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgid_OBJECTS) $(setgid_LDADD) $(LIBS)
+
+setgid32$(EXEEXT): $(setgid32_OBJECTS) $(setgid32_DEPENDENCIES) $(EXTRA_setgid32_DEPENDENCIES)
+ @rm -f setgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgid32_OBJECTS) $(setgid32_LDADD) $(LIBS)
+
+setgroups$(EXEEXT): $(setgroups_OBJECTS) $(setgroups_DEPENDENCIES) $(EXTRA_setgroups_DEPENDENCIES)
+ @rm -f setgroups$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgroups_OBJECTS) $(setgroups_LDADD) $(LIBS)
+
+setgroups32$(EXEEXT): $(setgroups32_OBJECTS) $(setgroups32_DEPENDENCIES) $(EXTRA_setgroups32_DEPENDENCIES)
+ @rm -f setgroups32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setgroups32_OBJECTS) $(setgroups32_LDADD) $(LIBS)
+
+sethostname$(EXEEXT): $(sethostname_OBJECTS) $(sethostname_DEPENDENCIES) $(EXTRA_sethostname_DEPENDENCIES)
+ @rm -f sethostname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sethostname_OBJECTS) $(sethostname_LDADD) $(LIBS)
+
+setns$(EXEEXT): $(setns_OBJECTS) $(setns_DEPENDENCIES) $(EXTRA_setns_DEPENDENCIES)
+ @rm -f setns$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setns_OBJECTS) $(setns_LDADD) $(LIBS)
+
+setregid$(EXEEXT): $(setregid_OBJECTS) $(setregid_DEPENDENCIES) $(EXTRA_setregid_DEPENDENCIES)
+ @rm -f setregid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setregid_OBJECTS) $(setregid_LDADD) $(LIBS)
+
+setregid32$(EXEEXT): $(setregid32_OBJECTS) $(setregid32_DEPENDENCIES) $(EXTRA_setregid32_DEPENDENCIES)
+ @rm -f setregid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setregid32_OBJECTS) $(setregid32_LDADD) $(LIBS)
+
+setresgid$(EXEEXT): $(setresgid_OBJECTS) $(setresgid_DEPENDENCIES) $(EXTRA_setresgid_DEPENDENCIES)
+ @rm -f setresgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresgid_OBJECTS) $(setresgid_LDADD) $(LIBS)
+
+setresgid32$(EXEEXT): $(setresgid32_OBJECTS) $(setresgid32_DEPENDENCIES) $(EXTRA_setresgid32_DEPENDENCIES)
+ @rm -f setresgid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresgid32_OBJECTS) $(setresgid32_LDADD) $(LIBS)
+
+setresuid$(EXEEXT): $(setresuid_OBJECTS) $(setresuid_DEPENDENCIES) $(EXTRA_setresuid_DEPENDENCIES)
+ @rm -f setresuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresuid_OBJECTS) $(setresuid_LDADD) $(LIBS)
+
+setresuid32$(EXEEXT): $(setresuid32_OBJECTS) $(setresuid32_DEPENDENCIES) $(EXTRA_setresuid32_DEPENDENCIES)
+ @rm -f setresuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setresuid32_OBJECTS) $(setresuid32_LDADD) $(LIBS)
+
+setreuid$(EXEEXT): $(setreuid_OBJECTS) $(setreuid_DEPENDENCIES) $(EXTRA_setreuid_DEPENDENCIES)
+ @rm -f setreuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setreuid_OBJECTS) $(setreuid_LDADD) $(LIBS)
+
+setreuid32$(EXEEXT): $(setreuid32_OBJECTS) $(setreuid32_DEPENDENCIES) $(EXTRA_setreuid32_DEPENDENCIES)
+ @rm -f setreuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setreuid32_OBJECTS) $(setreuid32_LDADD) $(LIBS)
+
+setrlimit$(EXEEXT): $(setrlimit_OBJECTS) $(setrlimit_DEPENDENCIES) $(EXTRA_setrlimit_DEPENDENCIES)
+ @rm -f setrlimit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setrlimit_OBJECTS) $(setrlimit_LDADD) $(LIBS)
+
+setuid$(EXEEXT): $(setuid_OBJECTS) $(setuid_DEPENDENCIES) $(EXTRA_setuid_DEPENDENCIES)
+ @rm -f setuid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setuid_OBJECTS) $(setuid_LDADD) $(LIBS)
+
+setuid32$(EXEEXT): $(setuid32_OBJECTS) $(setuid32_DEPENDENCIES) $(EXTRA_setuid32_DEPENDENCIES)
+ @rm -f setuid32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(setuid32_OBJECTS) $(setuid32_LDADD) $(LIBS)
+
+shmxt$(EXEEXT): $(shmxt_OBJECTS) $(shmxt_DEPENDENCIES) $(EXTRA_shmxt_DEPENDENCIES)
+ @rm -f shmxt$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(shmxt_OBJECTS) $(shmxt_LDADD) $(LIBS)
+
+shutdown$(EXEEXT): $(shutdown_OBJECTS) $(shutdown_DEPENDENCIES) $(EXTRA_shutdown_DEPENDENCIES)
+ @rm -f shutdown$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(shutdown_OBJECTS) $(shutdown_LDADD) $(LIBS)
+
+sigaction$(EXEEXT): $(sigaction_OBJECTS) $(sigaction_DEPENDENCIES) $(EXTRA_sigaction_DEPENDENCIES)
+ @rm -f sigaction$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigaction_OBJECTS) $(sigaction_LDADD) $(LIBS)
+
+sigaltstack$(EXEEXT): $(sigaltstack_OBJECTS) $(sigaltstack_DEPENDENCIES) $(EXTRA_sigaltstack_DEPENDENCIES)
+ @rm -f sigaltstack$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigaltstack_OBJECTS) $(sigaltstack_LDADD) $(LIBS)
+
+siginfo$(EXEEXT): $(siginfo_OBJECTS) $(siginfo_DEPENDENCIES) $(EXTRA_siginfo_DEPENDENCIES)
+ @rm -f siginfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(siginfo_OBJECTS) $(siginfo_LDADD) $(LIBS)
+
+signal_receive$(EXEEXT): $(signal_receive_OBJECTS) $(signal_receive_DEPENDENCIES) $(EXTRA_signal_receive_DEPENDENCIES)
+ @rm -f signal_receive$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS)
+
+signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES)
+ @rm -f signalfd4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS)
+
+sigreturn$(EXEEXT): $(sigreturn_OBJECTS) $(sigreturn_DEPENDENCIES) $(EXTRA_sigreturn_DEPENDENCIES)
+ @rm -f sigreturn$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
+
+sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES)
+ @rm -f sleep$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
+
+socketcall$(EXEEXT): $(socketcall_OBJECTS) $(socketcall_DEPENDENCIES) $(EXTRA_socketcall_DEPENDENCIES)
+ @rm -f socketcall$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(socketcall_OBJECTS) $(socketcall_LDADD) $(LIBS)
+
+splice$(EXEEXT): $(splice_OBJECTS) $(splice_DEPENDENCIES) $(EXTRA_splice_DEPENDENCIES)
+ @rm -f splice$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(splice_OBJECTS) $(splice_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)
+
+stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) $(EXTRA_stat_DEPENDENCIES)
+ @rm -f stat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS)
+
+stat64$(EXEEXT): $(stat64_OBJECTS) $(stat64_DEPENDENCIES) $(EXTRA_stat64_DEPENDENCIES)
+ @rm -f stat64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(stat64_OBJECTS) $(stat64_LDADD) $(LIBS)
+
+statfs$(EXEEXT): $(statfs_OBJECTS) $(statfs_DEPENDENCIES) $(EXTRA_statfs_DEPENDENCIES)
+ @rm -f statfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(statfs_OBJECTS) $(statfs_LDADD) $(LIBS)
+
+statfs64$(EXEEXT): $(statfs64_OBJECTS) $(statfs64_DEPENDENCIES) $(EXTRA_statfs64_DEPENDENCIES)
+ @rm -f statfs64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
+
+swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES)
+ @rm -f swap$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
+
+symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES)
+ @rm -f symlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
+
+symlinkat$(EXEEXT): $(symlinkat_OBJECTS) $(symlinkat_DEPENDENCIES) $(EXTRA_symlinkat_DEPENDENCIES)
+ @rm -f symlinkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(symlinkat_OBJECTS) $(symlinkat_LDADD) $(LIBS)
+
+sync$(EXEEXT): $(sync_OBJECTS) $(sync_DEPENDENCIES) $(EXTRA_sync_DEPENDENCIES)
+ @rm -f sync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sync_OBJECTS) $(sync_LDADD) $(LIBS)
+
+sync_file_range$(EXEEXT): $(sync_file_range_OBJECTS) $(sync_file_range_DEPENDENCIES) $(EXTRA_sync_file_range_DEPENDENCIES)
+ @rm -f sync_file_range$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sync_file_range_OBJECTS) $(sync_file_range_LDADD) $(LIBS)
+
+sync_file_range2$(EXEEXT): $(sync_file_range2_OBJECTS) $(sync_file_range2_DEPENDENCIES) $(EXTRA_sync_file_range2_DEPENDENCIES)
+ @rm -f sync_file_range2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sync_file_range2_OBJECTS) $(sync_file_range2_LDADD) $(LIBS)
+
+sysinfo$(EXEEXT): $(sysinfo_OBJECTS) $(sysinfo_DEPENDENCIES) $(EXTRA_sysinfo_DEPENDENCIES)
+ @rm -f sysinfo$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sysinfo_OBJECTS) $(sysinfo_LDADD) $(LIBS)
+
+syslog$(EXEEXT): $(syslog_OBJECTS) $(syslog_DEPENDENCIES) $(EXTRA_syslog_DEPENDENCIES)
+ @rm -f syslog$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(syslog_OBJECTS) $(syslog_LDADD) $(LIBS)
+
+tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES) $(EXTRA_tee_DEPENDENCIES)
+ @rm -f tee$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS)
+
+threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES)
+ @rm -f threads-execve$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS)
+
+time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES)
+ @rm -f time$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
+
+timer_create$(EXEEXT): $(timer_create_OBJECTS) $(timer_create_DEPENDENCIES) $(EXTRA_timer_create_DEPENDENCIES)
+ @rm -f timer_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(timer_create_OBJECTS) $(timer_create_LDADD) $(LIBS)
+
+timer_xettime$(EXEEXT): $(timer_xettime_OBJECTS) $(timer_xettime_DEPENDENCIES) $(EXTRA_timer_xettime_DEPENDENCIES)
+ @rm -f timer_xettime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(timer_xettime_OBJECTS) $(timer_xettime_LDADD) $(LIBS)
+
+timerfd_xettime$(EXEEXT): $(timerfd_xettime_OBJECTS) $(timerfd_xettime_DEPENDENCIES) $(EXTRA_timerfd_xettime_DEPENDENCIES)
+ @rm -f timerfd_xettime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(timerfd_xettime_OBJECTS) $(timerfd_xettime_LDADD) $(LIBS)
+
+times$(EXEEXT): $(times_OBJECTS) $(times_DEPENDENCIES) $(EXTRA_times_DEPENDENCIES)
+ @rm -f times$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(times_OBJECTS) $(times_LDADD) $(LIBS)
+
+times-fail$(EXEEXT): $(times_fail_OBJECTS) $(times_fail_DEPENDENCIES) $(EXTRA_times_fail_DEPENDENCIES)
+ @rm -f times-fail$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS)
+
+truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES)
+ @rm -f truncate$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS)
+
+truncate64$(EXEEXT): $(truncate64_OBJECTS) $(truncate64_DEPENDENCIES) $(EXTRA_truncate64_DEPENDENCIES)
+ @rm -f truncate64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(truncate64_OBJECTS) $(truncate64_LDADD) $(LIBS)
+
+ugetrlimit$(EXEEXT): $(ugetrlimit_OBJECTS) $(ugetrlimit_DEPENDENCIES) $(EXTRA_ugetrlimit_DEPENDENCIES)
+ @rm -f ugetrlimit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ugetrlimit_OBJECTS) $(ugetrlimit_LDADD) $(LIBS)
+
+uio$(EXEEXT): $(uio_OBJECTS) $(uio_DEPENDENCIES) $(EXTRA_uio_DEPENDENCIES)
+ @rm -f uio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(uio_OBJECTS) $(uio_LDADD) $(LIBS)
+
+umask$(EXEEXT): $(umask_OBJECTS) $(umask_DEPENDENCIES) $(EXTRA_umask_DEPENDENCIES)
+ @rm -f umask$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umask_OBJECTS) $(umask_LDADD) $(LIBS)
+
+umount$(EXEEXT): $(umount_OBJECTS) $(umount_DEPENDENCIES) $(EXTRA_umount_DEPENDENCIES)
+ @rm -f umount$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umount_OBJECTS) $(umount_LDADD) $(LIBS)
+
+umount2$(EXEEXT): $(umount2_OBJECTS) $(umount2_DEPENDENCIES) $(EXTRA_umount2_DEPENDENCIES)
+ @rm -f umount2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umount2_OBJECTS) $(umount2_LDADD) $(LIBS)
+
+umoven-illptr$(EXEEXT): $(umoven_illptr_OBJECTS) $(umoven_illptr_DEPENDENCIES) $(EXTRA_umoven_illptr_DEPENDENCIES)
+ @rm -f umoven-illptr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umoven_illptr_OBJECTS) $(umoven_illptr_LDADD) $(LIBS)
+
+umovestr$(EXEEXT): $(umovestr_OBJECTS) $(umovestr_DEPENDENCIES) $(EXTRA_umovestr_DEPENDENCIES)
+ @rm -f umovestr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr_OBJECTS) $(umovestr_LDADD) $(LIBS)
+
+umovestr-illptr$(EXEEXT): $(umovestr_illptr_OBJECTS) $(umovestr_illptr_DEPENDENCIES) $(EXTRA_umovestr_illptr_DEPENDENCIES)
+ @rm -f umovestr-illptr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr_illptr_OBJECTS) $(umovestr_illptr_LDADD) $(LIBS)
+
+umovestr2$(EXEEXT): $(umovestr2_OBJECTS) $(umovestr2_DEPENDENCIES) $(EXTRA_umovestr2_DEPENDENCIES)
+ @rm -f umovestr2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr2_OBJECTS) $(umovestr2_LDADD) $(LIBS)
+
+umovestr3$(EXEEXT): $(umovestr3_OBJECTS) $(umovestr3_DEPENDENCIES) $(EXTRA_umovestr3_DEPENDENCIES)
+ @rm -f umovestr3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(umovestr3_OBJECTS) $(umovestr3_LDADD) $(LIBS)
+
+uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES) $(EXTRA_uname_DEPENDENCIES)
+ @rm -f uname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(uname_OBJECTS) $(uname_LDADD) $(LIBS)
+
+unix-pair-send-recv$(EXEEXT): $(unix_pair_send_recv_OBJECTS) $(unix_pair_send_recv_DEPENDENCIES) $(EXTRA_unix_pair_send_recv_DEPENDENCIES)
+ @rm -f unix-pair-send-recv$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unix_pair_send_recv_OBJECTS) $(unix_pair_send_recv_LDADD) $(LIBS)
+
+unix-pair-sendto-recvfrom$(EXEEXT): $(unix_pair_sendto_recvfrom_OBJECTS) $(unix_pair_sendto_recvfrom_DEPENDENCIES) $(EXTRA_unix_pair_sendto_recvfrom_DEPENDENCIES)
+ @rm -f unix-pair-sendto-recvfrom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unix_pair_sendto_recvfrom_OBJECTS) $(unix_pair_sendto_recvfrom_LDADD) $(LIBS)
+
+unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES) $(EXTRA_unlink_DEPENDENCIES)
+ @rm -f unlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS)
+
+unlinkat$(EXEEXT): $(unlinkat_OBJECTS) $(unlinkat_DEPENDENCIES) $(EXTRA_unlinkat_DEPENDENCIES)
+ @rm -f unlinkat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unlinkat_OBJECTS) $(unlinkat_LDADD) $(LIBS)
+
+unshare$(EXEEXT): $(unshare_OBJECTS) $(unshare_DEPENDENCIES) $(EXTRA_unshare_DEPENDENCIES)
+ @rm -f unshare$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(unshare_OBJECTS) $(unshare_LDADD) $(LIBS)
+
+userfaultfd$(EXEEXT): $(userfaultfd_OBJECTS) $(userfaultfd_DEPENDENCIES) $(EXTRA_userfaultfd_DEPENDENCIES)
+ @rm -f userfaultfd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(userfaultfd_OBJECTS) $(userfaultfd_LDADD) $(LIBS)
+
+ustat$(EXEEXT): $(ustat_OBJECTS) $(ustat_DEPENDENCIES) $(EXTRA_ustat_DEPENDENCIES)
+ @rm -f ustat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ustat_OBJECTS) $(ustat_LDADD) $(LIBS)
+
+utime$(EXEEXT): $(utime_OBJECTS) $(utime_DEPENDENCIES) $(EXTRA_utime_DEPENDENCIES)
+ @rm -f utime$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(utime_OBJECTS) $(utime_LDADD) $(LIBS)
+
+utimensat$(EXEEXT): $(utimensat_OBJECTS) $(utimensat_DEPENDENCIES) $(EXTRA_utimensat_DEPENDENCIES)
+ @rm -f utimensat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(utimensat_OBJECTS) $(utimensat_LDADD) $(LIBS)
+
+utimes$(EXEEXT): $(utimes_OBJECTS) $(utimes_DEPENDENCIES) $(EXTRA_utimes_DEPENDENCIES)
+ @rm -f utimes$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(utimes_OBJECTS) $(utimes_LDADD) $(LIBS)
+
+vfork-f$(EXEEXT): $(vfork_f_OBJECTS) $(vfork_f_DEPENDENCIES) $(EXTRA_vfork_f_DEPENDENCIES)
+ @rm -f vfork-f$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(vfork_f_OBJECTS) $(vfork_f_LDADD) $(LIBS)
+
+vhangup$(EXEEXT): $(vhangup_OBJECTS) $(vhangup_DEPENDENCIES) $(EXTRA_vhangup_DEPENDENCIES)
+ @rm -f vhangup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(vhangup_OBJECTS) $(vhangup_LDADD) $(LIBS)
+
+vmsplice$(EXEEXT): $(vmsplice_OBJECTS) $(vmsplice_DEPENDENCIES) $(EXTRA_vmsplice_DEPENDENCIES)
+ @rm -f vmsplice$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(vmsplice_OBJECTS) $(vmsplice_LDADD) $(LIBS)
+
+wait4$(EXEEXT): $(wait4_OBJECTS) $(wait4_DEPENDENCIES) $(EXTRA_wait4_DEPENDENCIES)
+ @rm -f wait4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(wait4_OBJECTS) $(wait4_LDADD) $(LIBS)
+
+wait4-v$(EXEEXT): $(wait4_v_OBJECTS) $(wait4_v_DEPENDENCIES) $(EXTRA_wait4_v_DEPENDENCIES)
+ @rm -f wait4-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(wait4_v_OBJECTS) $(wait4_v_LDADD) $(LIBS)
+
+waitid$(EXEEXT): $(waitid_OBJECTS) $(waitid_DEPENDENCIES) $(EXTRA_waitid_DEPENDENCIES)
+ @rm -f waitid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(waitid_OBJECTS) $(waitid_LDADD) $(LIBS)
+
+waitid-v$(EXEEXT): $(waitid_v_OBJECTS) $(waitid_v_DEPENDENCIES) $(EXTRA_waitid_v_DEPENDENCIES)
+ @rm -f waitid-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(waitid_v_OBJECTS) $(waitid_v_LDADD) $(LIBS)
+
+waitpid$(EXEEXT): $(waitpid_OBJECTS) $(waitpid_DEPENDENCIES) $(EXTRA_waitpid_DEPENDENCIES)
+ @rm -f waitpid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(waitpid_OBJECTS) $(waitpid_LDADD) $(LIBS)
+
+xattr$(EXEEXT): $(xattr_OBJECTS) $(xattr_DEPENDENCIES) $(EXTRA_xattr_DEPENDENCIES)
+ @rm -f xattr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xattr_OBJECTS) $(xattr_LDADD) $(LIBS)
+
+xattr-strings$(EXEEXT): $(xattr_strings_OBJECTS) $(xattr_strings_DEPENDENCIES) $(EXTRA_xattr_strings_DEPENDENCIES)
+ @rm -f xattr-strings$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xattr_strings_OBJECTS) $(xattr_strings_LDADD) $(LIBS)
+
+xet_robust_list$(EXEEXT): $(xet_robust_list_OBJECTS) $(xet_robust_list_DEPENDENCIES) $(EXTRA_xet_robust_list_DEPENDENCIES)
+ @rm -f xet_robust_list$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
+
+xetitimer$(EXEEXT): $(xetitimer_OBJECTS) $(xetitimer_DEPENDENCIES) $(EXTRA_xetitimer_DEPENDENCIES)
+ @rm -f xetitimer$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xetitimer_OBJECTS) $(xetitimer_LDADD) $(LIBS)
+
+xetpgid$(EXEEXT): $(xetpgid_OBJECTS) $(xetpgid_DEPENDENCIES) $(EXTRA_xetpgid_DEPENDENCIES)
+ @rm -f xetpgid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS)
+
+xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES)
+ @rm -f xetpriority$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS)
+
+xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES)
+ @rm -f xettimeofday$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adjtimex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alarm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/answer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-f-p-cmd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-f-p.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-cmd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-p.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chroot.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_adjtime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_nanosleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_xettime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy_file_range.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count-f.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/creat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delete_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_ctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_pwait.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat64-fstat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatat64-fstatat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatfs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatfs64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsync.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftruncate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftruncate64-ftruncate64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futimesat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_mempolicy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcpu.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geteuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geteuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet-cmsg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-nv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_loop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_scsi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sock_gifconf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_uffdio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ip_mreq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_msgbuf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_page_size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexdump_strdup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdirat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mknod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mknodat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlock2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mlockall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmap64-mmap64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg-silent.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmsg_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq_sendrecv-read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq_sendrecv-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mq_sendrecv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_control-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_control.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/munlockall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanosleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-accept-connect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-icmp_filter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-y-unix.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_inet_diag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_netlink_diag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_protocol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsyscalls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/old_mmap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldfstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldlstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perf_event_open.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perf_event_open_nonverbose.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perf_event_open_unabbrev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_mprotect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/poll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-arg2-intptr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-dumpable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-no-args.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-pdeathsig.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-seccomp-filter-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-seccomp-strict.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-securebits.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-tid_address.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-tsc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv-preadv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv2-pwritev2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_maxfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwritev-pwritev.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qual_fault.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qual_inject-error-signal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qual_inject-retval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qual_inject-signal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qual_signal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotactl-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotactl-xfs-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotactl-xfs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotactl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readahead.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reboot.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmmsg-timeout.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmsg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redirect-fds.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remap_file_pages.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renameat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renameat2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/request_key.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/restart_syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgroups.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgroups32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sethostname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setns.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresgid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setreuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setreuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setrlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setuid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setuid32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shmxt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shutdown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaction.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigreturn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
+@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)/stat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlinkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer_create.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer_xettime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ugetrlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uio-uio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umask.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umount2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umoven-illptr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr-illptr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-pair-send-recv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-pair-sendto-recvfrom.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unshare.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userfaultfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ustat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimensat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vfork-f.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vhangup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmsplice.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wait4-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wait4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitid-v.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.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 -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 -o $@ `$(CYGPATH_W) '$<'`
+
+libtests_a-errno2name.o: errno2name.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='errno2name.c' object='libtests_a-errno2name.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
+
+libtests_a-errno2name.obj: errno2name.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.obj -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.obj `if test -f 'errno2name.c'; then $(CYGPATH_W) 'errno2name.c'; else $(CYGPATH_W) '$(srcdir)/errno2name.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='errno2name.c' object='libtests_a-errno2name.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-errno2name.obj `if test -f 'errno2name.c'; then $(CYGPATH_W) 'errno2name.c'; else $(CYGPATH_W) '$(srcdir)/errno2name.c'; fi`
+
+libtests_a-error_msg.o: error_msg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-error_msg.o -MD -MP -MF $(DEPDIR)/libtests_a-error_msg.Tpo -c -o libtests_a-error_msg.o `test -f 'error_msg.c' || echo '$(srcdir)/'`error_msg.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-error_msg.Tpo $(DEPDIR)/libtests_a-error_msg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error_msg.c' object='libtests_a-error_msg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-error_msg.o `test -f 'error_msg.c' || echo '$(srcdir)/'`error_msg.c
+
+libtests_a-error_msg.obj: error_msg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-error_msg.obj -MD -MP -MF $(DEPDIR)/libtests_a-error_msg.Tpo -c -o libtests_a-error_msg.obj `if test -f 'error_msg.c'; then $(CYGPATH_W) 'error_msg.c'; else $(CYGPATH_W) '$(srcdir)/error_msg.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-error_msg.Tpo $(DEPDIR)/libtests_a-error_msg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error_msg.c' object='libtests_a-error_msg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-error_msg.obj `if test -f 'error_msg.c'; then $(CYGPATH_W) 'error_msg.c'; else $(CYGPATH_W) '$(srcdir)/error_msg.c'; fi`
+
+libtests_a-fill_memory.o: fill_memory.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-fill_memory.o -MD -MP -MF $(DEPDIR)/libtests_a-fill_memory.Tpo -c -o libtests_a-fill_memory.o `test -f 'fill_memory.c' || echo '$(srcdir)/'`fill_memory.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-fill_memory.Tpo $(DEPDIR)/libtests_a-fill_memory.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fill_memory.c' object='libtests_a-fill_memory.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-fill_memory.o `test -f 'fill_memory.c' || echo '$(srcdir)/'`fill_memory.c
+
+libtests_a-fill_memory.obj: fill_memory.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-fill_memory.obj -MD -MP -MF $(DEPDIR)/libtests_a-fill_memory.Tpo -c -o libtests_a-fill_memory.obj `if test -f 'fill_memory.c'; then $(CYGPATH_W) 'fill_memory.c'; else $(CYGPATH_W) '$(srcdir)/fill_memory.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-fill_memory.Tpo $(DEPDIR)/libtests_a-fill_memory.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fill_memory.c' object='libtests_a-fill_memory.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-fill_memory.obj `if test -f 'fill_memory.c'; then $(CYGPATH_W) 'fill_memory.c'; else $(CYGPATH_W) '$(srcdir)/fill_memory.c'; fi`
+
+libtests_a-get_page_size.o: get_page_size.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_page_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_page_size.Tpo -c -o libtests_a-get_page_size.o `test -f 'get_page_size.c' || echo '$(srcdir)/'`get_page_size.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_page_size.Tpo $(DEPDIR)/libtests_a-get_page_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_page_size.c' object='libtests_a-get_page_size.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.o `test -f 'get_page_size.c' || echo '$(srcdir)/'`get_page_size.c
+
+libtests_a-get_page_size.obj: get_page_size.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_page_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_page_size.Tpo -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_page_size.Tpo $(DEPDIR)/libtests_a-get_page_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_page_size.c' object='libtests_a-get_page_size.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
+
+libtests_a-hexdump_strdup.o: hexdump_strdup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hexdump_strdup.c' object='libtests_a-hexdump_strdup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
+
+libtests_a-hexdump_strdup.obj: hexdump_strdup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.obj -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.obj `if test -f 'hexdump_strdup.c'; then $(CYGPATH_W) 'hexdump_strdup.c'; else $(CYGPATH_W) '$(srcdir)/hexdump_strdup.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hexdump_strdup.c' object='libtests_a-hexdump_strdup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexdump_strdup.obj `if test -f 'hexdump_strdup.c'; then $(CYGPATH_W) 'hexdump_strdup.c'; else $(CYGPATH_W) '$(srcdir)/hexdump_strdup.c'; fi`
+
+libtests_a-hexquote_strndup.o: hexquote_strndup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexquote_strndup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexquote_strndup.Tpo -c -o libtests_a-hexquote_strndup.o `test -f 'hexquote_strndup.c' || echo '$(srcdir)/'`hexquote_strndup.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexquote_strndup.Tpo $(DEPDIR)/libtests_a-hexquote_strndup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hexquote_strndup.c' object='libtests_a-hexquote_strndup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexquote_strndup.o `test -f 'hexquote_strndup.c' || echo '$(srcdir)/'`hexquote_strndup.c
+
+libtests_a-hexquote_strndup.obj: hexquote_strndup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexquote_strndup.obj -MD -MP -MF $(DEPDIR)/libtests_a-hexquote_strndup.Tpo -c -o libtests_a-hexquote_strndup.obj `if test -f 'hexquote_strndup.c'; then $(CYGPATH_W) 'hexquote_strndup.c'; else $(CYGPATH_W) '$(srcdir)/hexquote_strndup.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexquote_strndup.Tpo $(DEPDIR)/libtests_a-hexquote_strndup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hexquote_strndup.c' object='libtests_a-hexquote_strndup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-hexquote_strndup.obj `if test -f 'hexquote_strndup.c'; then $(CYGPATH_W) 'hexquote_strndup.c'; else $(CYGPATH_W) '$(srcdir)/hexquote_strndup.c'; fi`
+
+libtests_a-inode_of_sockfd.o: inode_of_sockfd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-inode_of_sockfd.o -MD -MP -MF $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo -c -o libtests_a-inode_of_sockfd.o `test -f 'inode_of_sockfd.c' || echo '$(srcdir)/'`inode_of_sockfd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo $(DEPDIR)/libtests_a-inode_of_sockfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inode_of_sockfd.c' object='libtests_a-inode_of_sockfd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.o `test -f 'inode_of_sockfd.c' || echo '$(srcdir)/'`inode_of_sockfd.c
+
+libtests_a-inode_of_sockfd.obj: inode_of_sockfd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-inode_of_sockfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-inode_of_sockfd.Tpo $(DEPDIR)/libtests_a-inode_of_sockfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inode_of_sockfd.c' object='libtests_a-inode_of_sockfd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi`
+
+libtests_a-libmmsg.o: libmmsg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libmmsg.c' object='libtests_a-libmmsg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c
+
+libtests_a-libmmsg.obj: libmmsg.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.obj -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.obj `if test -f 'libmmsg.c'; then $(CYGPATH_W) 'libmmsg.c'; else $(CYGPATH_W) '$(srcdir)/libmmsg.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libmmsg.c' object='libtests_a-libmmsg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libmmsg.obj `if test -f 'libmmsg.c'; then $(CYGPATH_W) 'libmmsg.c'; else $(CYGPATH_W) '$(srcdir)/libmmsg.c'; fi`
+
+libtests_a-libsocketcall.o: libsocketcall.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libsocketcall.o -MD -MP -MF $(DEPDIR)/libtests_a-libsocketcall.Tpo -c -o libtests_a-libsocketcall.o `test -f 'libsocketcall.c' || echo '$(srcdir)/'`libsocketcall.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libsocketcall.Tpo $(DEPDIR)/libtests_a-libsocketcall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsocketcall.c' object='libtests_a-libsocketcall.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.o `test -f 'libsocketcall.c' || echo '$(srcdir)/'`libsocketcall.c
+
+libtests_a-libsocketcall.obj: libsocketcall.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libsocketcall.obj -MD -MP -MF $(DEPDIR)/libtests_a-libsocketcall.Tpo -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libsocketcall.Tpo $(DEPDIR)/libtests_a-libsocketcall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsocketcall.c' object='libtests_a-libsocketcall.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
+
+libtests_a-overflowuid.o: overflowuid.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.o -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='overflowuid.c' object='libtests_a-overflowuid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
+
+libtests_a-overflowuid.obj: overflowuid.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.obj -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='overflowuid.c' object='libtests_a-overflowuid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
+
+libtests_a-pipe_maxfd.o: pipe_maxfd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipe_maxfd.c' object='libtests_a-pipe_maxfd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
+
+libtests_a-pipe_maxfd.obj: pipe_maxfd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.obj `if test -f 'pipe_maxfd.c'; then $(CYGPATH_W) 'pipe_maxfd.c'; else $(CYGPATH_W) '$(srcdir)/pipe_maxfd.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipe_maxfd.c' object='libtests_a-pipe_maxfd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pipe_maxfd.obj `if test -f 'pipe_maxfd.c'; then $(CYGPATH_W) 'pipe_maxfd.c'; else $(CYGPATH_W) '$(srcdir)/pipe_maxfd.c'; fi`
+
+libtests_a-print_quoted_string.o: print_quoted_string.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_quoted_string.o -MD -MP -MF $(DEPDIR)/libtests_a-print_quoted_string.Tpo -c -o libtests_a-print_quoted_string.o `test -f 'print_quoted_string.c' || echo '$(srcdir)/'`print_quoted_string.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_quoted_string.Tpo $(DEPDIR)/libtests_a-print_quoted_string.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print_quoted_string.c' object='libtests_a-print_quoted_string.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.o `test -f 'print_quoted_string.c' || echo '$(srcdir)/'`print_quoted_string.c
+
+libtests_a-print_quoted_string.obj: print_quoted_string.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_quoted_string.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_quoted_string.Tpo -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_quoted_string.Tpo $(DEPDIR)/libtests_a-print_quoted_string.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print_quoted_string.c' object='libtests_a-print_quoted_string.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
+
+libtests_a-printflags.o: printflags.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printflags.c' object='libtests_a-printflags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
+
+libtests_a-printflags.obj: printflags.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.obj -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printflags.c' object='libtests_a-printflags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
+
+libtests_a-printxval.o: printxval.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+
+libtests_a-printxval.obj: printxval.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+
+libtests_a-signal2name.o: signal2name.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='signal2name.c' object='libtests_a-signal2name.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
+
+libtests_a-signal2name.obj: signal2name.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.obj -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='signal2name.c' object='libtests_a-signal2name.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
+
+libtests_a-sprintrc.o: sprintrc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sprintrc.c' object='libtests_a-sprintrc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
+
+libtests_a-sprintrc.obj: sprintrc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.obj -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sprintrc.c' object='libtests_a-sprintrc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
+
+libtests_a-tail_alloc.o: tail_alloc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tail_alloc.c' object='libtests_a-tail_alloc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
+
+libtests_a-tail_alloc.obj: tail_alloc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.obj -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.obj `if test -f 'tail_alloc.c'; then $(CYGPATH_W) 'tail_alloc.c'; else $(CYGPATH_W) '$(srcdir)/tail_alloc.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tail_alloc.c' object='libtests_a-tail_alloc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tail_alloc.obj `if test -f 'tail_alloc.c'; then $(CYGPATH_W) 'tail_alloc.c'; else $(CYGPATH_W) '$(srcdir)/tail_alloc.c'; fi`
+
+libtests_a-tprintf.o: tprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tprintf.o -MD -MP -MF $(DEPDIR)/libtests_a-tprintf.Tpo -c -o libtests_a-tprintf.o `test -f 'tprintf.c' || echo '$(srcdir)/'`tprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tprintf.Tpo $(DEPDIR)/libtests_a-tprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tprintf.c' object='libtests_a-tprintf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.o `test -f 'tprintf.c' || echo '$(srcdir)/'`tprintf.c
+
+libtests_a-tprintf.obj: tprintf.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tprintf.obj -MD -MP -MF $(DEPDIR)/libtests_a-tprintf.Tpo -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tprintf.Tpo $(DEPDIR)/libtests_a-tprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tprintf.c' object='libtests_a-tprintf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
+
+fstat64-fstat64.o: fstat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstat64.c' object='fstat64-fstat64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
+
+fstat64-fstat64.obj: fstat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.obj -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.obj `if test -f 'fstat64.c'; then $(CYGPATH_W) 'fstat64.c'; else $(CYGPATH_W) '$(srcdir)/fstat64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstat64.c' object='fstat64-fstat64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstat64-fstat64.obj `if test -f 'fstat64.c'; then $(CYGPATH_W) 'fstat64.c'; else $(CYGPATH_W) '$(srcdir)/fstat64.c'; fi`
+
+fstatat64-fstatat64.o: fstatat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstatat64-fstatat64.o -MD -MP -MF $(DEPDIR)/fstatat64-fstatat64.Tpo -c -o fstatat64-fstatat64.o `test -f 'fstatat64.c' || echo '$(srcdir)/'`fstatat64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstatat64-fstatat64.Tpo $(DEPDIR)/fstatat64-fstatat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstatat64.c' object='fstatat64-fstatat64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstatat64-fstatat64.o `test -f 'fstatat64.c' || echo '$(srcdir)/'`fstatat64.c
+
+fstatat64-fstatat64.obj: fstatat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstatat64-fstatat64.obj -MD -MP -MF $(DEPDIR)/fstatat64-fstatat64.Tpo -c -o fstatat64-fstatat64.obj `if test -f 'fstatat64.c'; then $(CYGPATH_W) 'fstatat64.c'; else $(CYGPATH_W) '$(srcdir)/fstatat64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstatat64-fstatat64.Tpo $(DEPDIR)/fstatat64-fstatat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstatat64.c' object='fstatat64-fstatat64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstatat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fstatat64-fstatat64.obj `if test -f 'fstatat64.c'; then $(CYGPATH_W) 'fstatat64.c'; else $(CYGPATH_W) '$(srcdir)/fstatat64.c'; fi`
+
+ftruncate64-ftruncate64.o: ftruncate64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ftruncate64-ftruncate64.o -MD -MP -MF $(DEPDIR)/ftruncate64-ftruncate64.Tpo -c -o ftruncate64-ftruncate64.o `test -f 'ftruncate64.c' || echo '$(srcdir)/'`ftruncate64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ftruncate64-ftruncate64.Tpo $(DEPDIR)/ftruncate64-ftruncate64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ftruncate64.c' object='ftruncate64-ftruncate64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ftruncate64-ftruncate64.o `test -f 'ftruncate64.c' || echo '$(srcdir)/'`ftruncate64.c
+
+ftruncate64-ftruncate64.obj: ftruncate64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ftruncate64-ftruncate64.obj -MD -MP -MF $(DEPDIR)/ftruncate64-ftruncate64.Tpo -c -o ftruncate64-ftruncate64.obj `if test -f 'ftruncate64.c'; then $(CYGPATH_W) 'ftruncate64.c'; else $(CYGPATH_W) '$(srcdir)/ftruncate64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ftruncate64-ftruncate64.Tpo $(DEPDIR)/ftruncate64-ftruncate64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ftruncate64.c' object='ftruncate64-ftruncate64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ftruncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ftruncate64-ftruncate64.obj `if test -f 'ftruncate64.c'; then $(CYGPATH_W) 'ftruncate64.c'; else $(CYGPATH_W) '$(srcdir)/ftruncate64.c'; fi`
+
+lstat64-lstat64.o: lstat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lstat64-lstat64.o -MD -MP -MF $(DEPDIR)/lstat64-lstat64.Tpo -c -o lstat64-lstat64.o `test -f 'lstat64.c' || echo '$(srcdir)/'`lstat64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lstat64-lstat64.Tpo $(DEPDIR)/lstat64-lstat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lstat64.c' object='lstat64-lstat64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lstat64-lstat64.o `test -f 'lstat64.c' || echo '$(srcdir)/'`lstat64.c
+
+lstat64-lstat64.obj: lstat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lstat64-lstat64.obj -MD -MP -MF $(DEPDIR)/lstat64-lstat64.Tpo -c -o lstat64-lstat64.obj `if test -f 'lstat64.c'; then $(CYGPATH_W) 'lstat64.c'; else $(CYGPATH_W) '$(srcdir)/lstat64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lstat64-lstat64.Tpo $(DEPDIR)/lstat64-lstat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lstat64.c' object='lstat64-lstat64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lstat64-lstat64.obj `if test -f 'lstat64.c'; then $(CYGPATH_W) 'lstat64.c'; else $(CYGPATH_W) '$(srcdir)/lstat64.c'; fi`
+
+mmap64-mmap64.o: mmap64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mmap64-mmap64.o -MD -MP -MF $(DEPDIR)/mmap64-mmap64.Tpo -c -o mmap64-mmap64.o `test -f 'mmap64.c' || echo '$(srcdir)/'`mmap64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mmap64-mmap64.Tpo $(DEPDIR)/mmap64-mmap64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mmap64.c' object='mmap64-mmap64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mmap64-mmap64.o `test -f 'mmap64.c' || echo '$(srcdir)/'`mmap64.c
+
+mmap64-mmap64.obj: mmap64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mmap64-mmap64.obj -MD -MP -MF $(DEPDIR)/mmap64-mmap64.Tpo -c -o mmap64-mmap64.obj `if test -f 'mmap64.c'; then $(CYGPATH_W) 'mmap64.c'; else $(CYGPATH_W) '$(srcdir)/mmap64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mmap64-mmap64.Tpo $(DEPDIR)/mmap64-mmap64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mmap64.c' object='mmap64-mmap64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mmap64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mmap64-mmap64.obj `if test -f 'mmap64.c'; then $(CYGPATH_W) 'mmap64.c'; else $(CYGPATH_W) '$(srcdir)/mmap64.c'; fi`
+
+newfstatat-newfstatat.o: newfstatat.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT newfstatat-newfstatat.o -MD -MP -MF $(DEPDIR)/newfstatat-newfstatat.Tpo -c -o newfstatat-newfstatat.o `test -f 'newfstatat.c' || echo '$(srcdir)/'`newfstatat.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/newfstatat-newfstatat.Tpo $(DEPDIR)/newfstatat-newfstatat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newfstatat.c' object='newfstatat-newfstatat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o newfstatat-newfstatat.o `test -f 'newfstatat.c' || echo '$(srcdir)/'`newfstatat.c
+
+newfstatat-newfstatat.obj: newfstatat.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT newfstatat-newfstatat.obj -MD -MP -MF $(DEPDIR)/newfstatat-newfstatat.Tpo -c -o newfstatat-newfstatat.obj `if test -f 'newfstatat.c'; then $(CYGPATH_W) 'newfstatat.c'; else $(CYGPATH_W) '$(srcdir)/newfstatat.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/newfstatat-newfstatat.Tpo $(DEPDIR)/newfstatat-newfstatat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='newfstatat.c' object='newfstatat-newfstatat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(newfstatat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o newfstatat-newfstatat.obj `if test -f 'newfstatat.c'; then $(CYGPATH_W) 'newfstatat.c'; else $(CYGPATH_W) '$(srcdir)/newfstatat.c'; fi`
+
+pread64_pwrite64-pread64-pwrite64.o: pread64-pwrite64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pread64_pwrite64-pread64-pwrite64.o -MD -MP -MF $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo -c -o pread64_pwrite64-pread64-pwrite64.o `test -f 'pread64-pwrite64.c' || echo '$(srcdir)/'`pread64-pwrite64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pread64-pwrite64.c' object='pread64_pwrite64-pread64-pwrite64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pread64_pwrite64-pread64-pwrite64.o `test -f 'pread64-pwrite64.c' || echo '$(srcdir)/'`pread64-pwrite64.c
+
+pread64_pwrite64-pread64-pwrite64.obj: pread64-pwrite64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pread64_pwrite64-pread64-pwrite64.obj -MD -MP -MF $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo -c -o pread64_pwrite64-pread64-pwrite64.obj `if test -f 'pread64-pwrite64.c'; then $(CYGPATH_W) 'pread64-pwrite64.c'; else $(CYGPATH_W) '$(srcdir)/pread64-pwrite64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Tpo $(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pread64-pwrite64.c' object='pread64_pwrite64-pread64-pwrite64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pread64_pwrite64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pread64_pwrite64-pread64-pwrite64.obj `if test -f 'pread64-pwrite64.c'; then $(CYGPATH_W) 'pread64-pwrite64.c'; else $(CYGPATH_W) '$(srcdir)/pread64-pwrite64.c'; fi`
+
+preadv-preadv.o: preadv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv-preadv.o -MD -MP -MF $(DEPDIR)/preadv-preadv.Tpo -c -o preadv-preadv.o `test -f 'preadv.c' || echo '$(srcdir)/'`preadv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv-preadv.Tpo $(DEPDIR)/preadv-preadv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preadv.c' object='preadv-preadv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv-preadv.o `test -f 'preadv.c' || echo '$(srcdir)/'`preadv.c
+
+preadv-preadv.obj: preadv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv-preadv.obj -MD -MP -MF $(DEPDIR)/preadv-preadv.Tpo -c -o preadv-preadv.obj `if test -f 'preadv.c'; then $(CYGPATH_W) 'preadv.c'; else $(CYGPATH_W) '$(srcdir)/preadv.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv-preadv.Tpo $(DEPDIR)/preadv-preadv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preadv.c' object='preadv-preadv.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv-preadv.obj `if test -f 'preadv.c'; then $(CYGPATH_W) 'preadv.c'; else $(CYGPATH_W) '$(srcdir)/preadv.c'; fi`
+
+preadv_pwritev-preadv-pwritev.o: preadv-pwritev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv_pwritev-preadv-pwritev.o -MD -MP -MF $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo -c -o preadv_pwritev-preadv-pwritev.o `test -f 'preadv-pwritev.c' || echo '$(srcdir)/'`preadv-pwritev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo $(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preadv-pwritev.c' object='preadv_pwritev-preadv-pwritev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv_pwritev-preadv-pwritev.o `test -f 'preadv-pwritev.c' || echo '$(srcdir)/'`preadv-pwritev.c
+
+preadv_pwritev-preadv-pwritev.obj: preadv-pwritev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT preadv_pwritev-preadv-pwritev.obj -MD -MP -MF $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo -c -o preadv_pwritev-preadv-pwritev.obj `if test -f 'preadv-pwritev.c'; then $(CYGPATH_W) 'preadv-pwritev.c'; else $(CYGPATH_W) '$(srcdir)/preadv-pwritev.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/preadv_pwritev-preadv-pwritev.Tpo $(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='preadv-pwritev.c' object='preadv_pwritev-preadv-pwritev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(preadv_pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o preadv_pwritev-preadv-pwritev.obj `if test -f 'preadv-pwritev.c'; then $(CYGPATH_W) 'preadv-pwritev.c'; else $(CYGPATH_W) '$(srcdir)/preadv-pwritev.c'; fi`
+
+pwritev-pwritev.o: pwritev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pwritev-pwritev.o -MD -MP -MF $(DEPDIR)/pwritev-pwritev.Tpo -c -o pwritev-pwritev.o `test -f 'pwritev.c' || echo '$(srcdir)/'`pwritev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pwritev-pwritev.Tpo $(DEPDIR)/pwritev-pwritev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwritev.c' object='pwritev-pwritev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pwritev-pwritev.o `test -f 'pwritev.c' || echo '$(srcdir)/'`pwritev.c
+
+pwritev-pwritev.obj: pwritev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pwritev-pwritev.obj -MD -MP -MF $(DEPDIR)/pwritev-pwritev.Tpo -c -o pwritev-pwritev.obj `if test -f 'pwritev.c'; then $(CYGPATH_W) 'pwritev.c'; else $(CYGPATH_W) '$(srcdir)/pwritev.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pwritev-pwritev.Tpo $(DEPDIR)/pwritev-pwritev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwritev.c' object='pwritev-pwritev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pwritev_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pwritev-pwritev.obj `if test -f 'pwritev.c'; then $(CYGPATH_W) 'pwritev.c'; else $(CYGPATH_W) '$(srcdir)/pwritev.c'; fi`
+
+stat64-stat64.o: stat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stat64-stat64.o -MD -MP -MF $(DEPDIR)/stat64-stat64.Tpo -c -o stat64-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stat64-stat64.Tpo $(DEPDIR)/stat64-stat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stat64.c' object='stat64-stat64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stat64-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+
+stat64-stat64.obj: stat64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stat64-stat64.obj -MD -MP -MF $(DEPDIR)/stat64-stat64.Tpo -c -o stat64-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/stat64-stat64.Tpo $(DEPDIR)/stat64-stat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stat64.c' object='stat64-stat64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(stat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o stat64-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+
+statfs-statfs.o: statfs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT statfs-statfs.o -MD -MP -MF $(DEPDIR)/statfs-statfs.Tpo -c -o statfs-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/statfs-statfs.Tpo $(DEPDIR)/statfs-statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='statfs.c' object='statfs-statfs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+
+statfs-statfs.obj: statfs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT statfs-statfs.obj -MD -MP -MF $(DEPDIR)/statfs-statfs.Tpo -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/statfs-statfs.Tpo $(DEPDIR)/statfs-statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='statfs.c' object='statfs-statfs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+
+truncate64-truncate64.o: truncate64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='truncate64.c' object='truncate64-truncate64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
+
+truncate64-truncate64.obj: truncate64.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.obj -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.obj `if test -f 'truncate64.c'; then $(CYGPATH_W) 'truncate64.c'; else $(CYGPATH_W) '$(srcdir)/truncate64.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='truncate64.c' object='truncate64-truncate64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o truncate64-truncate64.obj `if test -f 'truncate64.c'; then $(CYGPATH_W) 'truncate64.c'; else $(CYGPATH_W) '$(srcdir)/truncate64.c'; fi`
+
+uio-uio.o: uio.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_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) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_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) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_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) $(uio_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o uio-uio.obj `if test -f 'uio.c'; then $(CYGPATH_W) 'uio.c'; else $(CYGPATH_W) '$(srcdir)/uio.c'; fi`
+check-valgrind-local:
+
+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`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+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
+
+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
+
+# 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; \
+ 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 \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ 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_LIBRARIES) $(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)
+@[email protected]$(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'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "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)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+check-valgrind: check-valgrind-am
+
+check-valgrind-am: check-valgrind-local
+
+clean: clean-am
+
+clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
+ check-valgrind-am check-valgrind-local clean \
+ clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am
+
+
+@VALGRIND_CHECK_RULES@
+
+ksysent.h: $(srcdir)/ksysent.sed
+ echo '#include <asm/unistd.h>' | \
+ $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > [email protected]
+ LC_COLLATE=C sed -r -n -f $(srcdir)/ksysent.sed < [email protected] > [email protected]
+ mv -f [email protected] $@
+ rm -f [email protected]
+
+ksysent.$(OBJEXT): ksysent.h
+$(objects): scno.h
+
+syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
+ $(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
+
+scno.h: $(top_srcdir)/scno.head syscallent.i
+ echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
+ cat $< >> $@-t
+ LC_ALL=C sed -n '$(SCNO_SED)' $(filter-out $<,$^) >> $@-t
+ mv $@-t $@
+
+# 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.
+.NOEXPORT:
diff --git a/tests/add_key.c b/tests/add_key.c
index 62f4be3..d2696f9 100644
--- a/tests/add_key.c
+++ b/tests/add_key.c
@@ -1,7 +1,7 @@
/*
* Check decoding of add_key syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -28,8 +28,8 @@
*/
#include "tests.h"
-
#include <asm/unistd.h>
+#include "scno.h"
#ifdef __NR_add_key
@@ -65,9 +65,6 @@
printf(") = %s\n", errstr);
}
-# define _STR(_arg) #_arg
-# define ARG_STR(_arg) (_arg), #_arg
-
int
main(void)
{
@@ -90,7 +87,7 @@
const char *str;
} types[] = {
{ ARG_STR(NULL) },
- { (const char *) 0xfffffee1fffffbadULL, NULL },
+ { bogus_type + sizeof(unterminated1), NULL },
{ bogus_type, NULL },
{ ARG_STR("\20\21\22\23\24") },
{ ARG_STR("user") },
@@ -101,7 +98,7 @@
const char *str;
} descs[] = {
{ ARG_STR(NULL) },
- { (const char *) 0xfffff00dfffffca7ULL, NULL },
+ { bogus_desc + sizeof(unterminated2), NULL },
{ bogus_desc, NULL },
{ ARG_STR("\25\26\27\30\31") },
{ ARG_STR("desc") },
@@ -114,7 +111,7 @@
size_t plen;
} payloads[] = {
{ ARG_STR(NULL), 0 },
- { (const char *) 0xfffffacefffff157ULL, NULL,
+ { bogus_payload + sizeof(unterminated3), NULL,
(size_t) 0xdeadbeefbadc0dedULL },
{ bogus_payload, _STR(""), 0 },
{ bogus_payload, _STR("\16\17\20\21\22"), 5 },
diff --git a/tests/adjtimex.c b/tests/adjtimex.c
index 9507fbe..1638b53 100644
--- a/tests/adjtimex.c
+++ b/tests/adjtimex.c
@@ -48,9 +48,9 @@
printf("adjtimex\\(\\{modes=0, offset=%jd, freq=%jd, maxerror=%jd"
", esterror=%jd, status=%s, constant=%jd, precision=%jd"
- ", tolerance=%jd, time=\\{%jd, %jd\\}, tick=%jd, ppsfreq=%jd"
- ", jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd, calcnt=%jd"
- ", errcnt=%jd, stbcnt=%jd"
+ ", tolerance=%jd, time=\\{tv_sec=%jd, tv_usec=%jd\\}, tick=%jd, "
+ "ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd, "
+ "calcnt=%jd, errcnt=%jd, stbcnt=%jd"
#ifdef HAVE_STRUCT_TIMEX_TAI
", tai=%d"
#endif
diff --git a/tests/aio.c b/tests/aio.c
index 8717f4f..0766d23 100644
--- a/tests/aio.c
+++ b/tests/aio.c
@@ -159,7 +159,7 @@
.aio_fildes = 0xdefaced1,
.aio_buf = (unsigned long)data2,
.aio_nbytes = sizeof(data2),
- .aio_offset = 0xdeadda7abadc0ded,
+ .aio_offset = 0xdeadda7abadc0dedULL,
},
{
.aio_data = 0,
@@ -267,7 +267,7 @@
printf("io_getevents(%#lx, %ld, %ld, ["
"{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}, "
"{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}"
- "], {0, 123456789}) = %s\n",
+ "], {tv_sec=0, tv_nsec=123456789}) = %s\n",
*ctx, (long) nr, (long) (nr + 1),
cb[0].aio_data, &cb[0], sizeof_data0,
cb[1].aio_data, &cb[1], sizeof_data1,
@@ -301,7 +301,7 @@
"{key=%u, pwrite, reqprio=%hd, fildes=%d, str=NULL"
", nbytes=%" PRI__u64 ", offset=%" PRI__d64
# ifdef IOCB_FLAG_RESFD
- ", resfd=%d, flags=%x"
+ ", resfd=%d, flags=%#x"
# endif
"}, "
"{key=%u, pwrite, reqprio=%hd, fildes=%d, buf=%#" PRI__x64
diff --git a/tests/alarm.c b/tests/alarm.c
index f954dcf..291b26a 100644
--- a/tests/alarm.c
+++ b/tests/alarm.c
@@ -38,7 +38,7 @@
int
main(void)
{
- int rc = syscall(__NR_alarm, (unsigned long) 0xffffffff0000002a);
+ int rc = syscall(__NR_alarm, (unsigned long) 0xffffffff0000002aULL);
printf("alarm(%u) = %d\n", 42, rc);
puts("+++ exited with 0 +++");
diff --git a/tests/answer.c b/tests/answer.c
new file mode 100644
index 0000000..ae3059a
--- /dev/null
+++ b/tests/answer.c
@@ -0,0 +1,44 @@
+/*
+ * Check decoding of fault injected exit_group syscall.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t answer =
+ (kernel_ulong_t) 0xbadc0ded0000002aULL;
+
+ syscall(__NR_exit_group, answer);
+ syscall(__NR_exit, answer);
+
+ return 1;
+}
diff --git a/tests/attach-f-p-cmd.c b/tests/attach-f-p-cmd.c
new file mode 100644
index 0000000..77594be
--- /dev/null
+++ b/tests/attach-f-p-cmd.c
@@ -0,0 +1,46 @@
+/*
+ * This file is part of attach-f-p strace test.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+ static const char dir[] = "attach-f-p.test cmd";
+ pid_t pid = getpid();
+ int rc = chdir(dir);
+
+ printf("%-5d chdir(\"%s\") = %s\n"
+ "%-5d +++ exited with 0 +++\n",
+ pid, dir, sprintrc(rc), pid);
+
+ return 0;
+}
diff --git a/tests/attach-f-p.c b/tests/attach-f-p.c
index c75deb6..3f9a7e3 100644
--- a/tests/attach-f-p.c
+++ b/tests/attach-f-p.c
@@ -33,6 +33,7 @@
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
+#include <sys/stat.h>
#include <asm/unistd.h>
#include <unistd.h>
@@ -71,7 +72,7 @@
pthread_t t[N];
unsigned int i;
- if (write(3, "", 0) != 0)
+ if (write(1, "", 0) != 0)
perror_msg_and_fail("write");
for (i = 0; i < N; ++i) {
@@ -83,9 +84,18 @@
perror_msg_and_fail("pthread_create");
}
- if (write(3, "\n", 1) != 1)
+ if (write(1, "\n", 1) != 1)
perror_msg_and_fail("write");
+ /* wait for the peer to write to stdout */
+ struct stat st;
+ for (;;) {
+ if (fstat(1, &st))
+ perror_msg_and_fail("fstat");
+ if (st.st_size >= 103)
+ break;
+ }
+
for (i = 0; i < N; ++i) {
/* sleep a bit to let the tracer catch up */
sleep(1);
@@ -96,9 +106,9 @@
if (errno)
perror_msg_and_fail("pthread_join");
errno = ENOENT;
- printf("%-5d chdir(\"%s\") = -1 ENOENT (%m)\n"
+ printf("%-5d chdir(\"%s\") = %s\n"
"%-5d +++ exited with 0 +++\n",
- retval.pid, child[i], retval.pid);
+ retval.pid, child[i], sprintrc(-1), retval.pid);
}
/* sleep a bit more to let the tracer catch up */
diff --git a/tests/attach-f-p.test b/tests/attach-f-p.test
index 030659a..f417074 100755
--- a/tests/attach-f-p.test
+++ b/tests/attach-f-p.test
@@ -34,16 +34,17 @@
framework_skip_ '/proc/self/task/ is not available'
run_prog_skip_if_failed \
kill -0 $$
-run_prog ./attach-f-p > /dev/null 3>&1
+run_prog ./attach-f-p-cmd > /dev/null
-./set_ptracer_any sh -c "exec ./attach-f-p > $EXP 3> $OUT" > /dev/null &
+rm -f "$OUT"
+./set_ptracer_any sh -c "exec ./attach-f-p >> $OUT" > /dev/null &
tracee_pid=$!
while ! [ -s "$OUT" ]; do
kill -0 $tracee_pid 2> /dev/null ||
- fail_ 'set_ptracer_any sleep failed'
+ fail_ 'set_ptracer_any sh failed'
done
-run_strace -a32 -f -echdir -p $tracee_pid
-match_diff "$LOG" "$EXP"
-rm -f "$EXP" "$OUT"
+run_strace -a32 -f -echdir -p $tracee_pid ./attach-f-p-cmd > "$OUT"
+match_diff "$LOG" "$OUT"
+rm -f "$OUT"
diff --git a/tests/attach-p-cmd-cmd.c b/tests/attach-p-cmd-cmd.c
index edfff20..d0f824e 100644
--- a/tests/attach-p-cmd-cmd.c
+++ b/tests/attach-p-cmd-cmd.c
@@ -28,19 +28,28 @@
*/
#include "tests.h"
+#include <errno.h>
#include <stdio.h>
+#include <sys/stat.h>
#include <unistd.h>
int
main(void)
{
+ static const char lockdir[] = "attach-p-cmd.test-lock";
+ /* wait for the lock directory to be created by peer */
+ while (rmdir(lockdir)) {
+ if (ENOENT != errno)
+ perror_msg_and_fail("rmdir: %s", lockdir);
+ }
+
static const char dir[] = "attach-p-cmd.test cmd";
pid_t pid = getpid();
int rc = chdir(dir);
- printf("%-5d chdir(\"%s\") = %d %s (%m)\n"
+ printf("%-5d chdir(\"%s\") = %s\n"
"%-5d +++ exited with 0 +++\n",
- pid, dir, rc, errno2name(), pid);
+ pid, dir, sprintrc(rc), pid);
return 0;
}
diff --git a/tests/attach-p-cmd-p.c b/tests/attach-p-cmd-p.c
index d63371d..254d19a 100644
--- a/tests/attach-p-cmd-p.c
+++ b/tests/attach-p-cmd-p.c
@@ -28,9 +28,11 @@
*/
#include "tests.h"
+#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
+#include <sys/stat.h>
#include <unistd.h>
static void
@@ -43,12 +45,27 @@
{
const struct sigaction act = { .sa_handler = handler };
if (sigaction(SIGALRM, &act, NULL))
- perror_msg_and_skip("sigaction");
+ perror_msg_and_fail("sigaction");
sigset_t mask = {};
sigaddset(&mask, SIGALRM);
if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
- perror_msg_and_skip("sigprocmask");
+ perror_msg_and_fail("sigprocmask");
+
+ static const char lockdir[] = "attach-p-cmd.test-lock";
+ /* create a lock directory */
+ if (mkdir(lockdir, 0700))
+ perror_msg_and_fail("mkdir: %s", lockdir);
+
+ /* wait for the lock directory to be removed by peer */
+ while (mkdir(lockdir, 0700)) {
+ if (EEXIST != errno)
+ perror_msg_and_fail("mkdir: %s", lockdir);
+ }
+
+ /* remove the lock directory */
+ if (rmdir(lockdir))
+ perror_msg_and_fail("rmdir: %s", lockdir);
alarm(1);
pause();
diff --git a/tests/attach-p-cmd.test b/tests/attach-p-cmd.test
index 2779719..2068cf1 100755
--- a/tests/attach-p-cmd.test
+++ b/tests/attach-p-cmd.test
@@ -31,16 +31,15 @@
run_prog_skip_if_failed \
kill -0 $$
-run_prog ./attach-p-cmd-cmd > /dev/null
-run_prog ./attach-p-cmd-p > /dev/null
+rm -rf attach-p-cmd.test-lock
rm -f "$OUT"
./set_ptracer_any ./attach-p-cmd-p >> "$OUT" &
tracee_pid=$!
while ! [ -s "$OUT" ]; do
kill -0 $tracee_pid 2> /dev/null ||
- fail_ 'set_ptracer_any sleep failed'
+ fail_ 'set_ptracer_any ./attach-p-cmd-p failed'
done
run_strace -a30 -echdir -p $tracee_pid ./attach-p-cmd-cmd > "$OUT"
diff --git a/tests/bpf.c b/tests/bpf.c
index 5a1fcdc..7ef16c9 100644
--- a/tests/bpf.c
+++ b/tests/bpf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,20 +26,29 @@
*/
#include "tests.h"
-#include <stdio.h>
-#include <stdint.h>
-#include <unistd.h>
#include <asm/unistd.h>
#if defined HAVE_UNION_BPF_ATTR_LOG_BUF && defined __NR_bpf
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
# include <linux/bpf.h>
static const struct bpf_insn insns[] = {
{ .code = BPF_JMP | BPF_EXIT }
};
+static const char *errstr;
static char log_buf[4096];
+static long
+sys_bpf(kernel_ulong_t cmd, kernel_ulong_t attr, kernel_ulong_t size)
+{
+ long rc = syscall(__NR_bpf, cmd, attr, size);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
static int
map_create(void)
{
@@ -48,7 +57,8 @@
.value_size = 8,
.max_entries = 256
};
- return syscall(__NR_bpf, BPF_MAP_CREATE, &attr, sizeof(attr));
+ void *const t_attr = tail_memdup(&attr, sizeof(attr));
+ return sys_bpf(BPF_MAP_CREATE, (unsigned long) t_attr, sizeof(attr));
}
static int
@@ -59,7 +69,8 @@
.key = 0xdeadbeef,
.value = 0xbadc0ded
};
- return syscall(__NR_bpf, cmd, &attr, sizeof(attr));
+ void *const t_attr = tail_memdup(&attr, sizeof(attr));
+ return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
}
static int
@@ -73,52 +84,146 @@
.log_size = sizeof(log_buf),
.log_buf = (unsigned long) log_buf
};
- return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr));
+ void *const t_attr = tail_memdup(&attr, sizeof(attr));
+ return sys_bpf(BPF_PROG_LOAD, (unsigned long) t_attr, sizeof(attr));
}
+/*
+ * bpf() syscall and its first six commands were introduced in Linux kernel
+ * 3.18. Some additional commands were added afterwards, so we need to take
+ * precautions to make sure the tests compile.
+ *
+ * BPF_OBJ_PIN and BPF_OBJ_GET commands appear in kernel 4.4.
+ */
+# ifdef HAVE_UNION_BPF_ATTR_BPF_FD
+static int
+obj_manage(int cmd)
+{
+ union bpf_attr attr = {
+ .pathname = (unsigned long) "/sys/fs/bpf/foo/bar",
+ .bpf_fd = -1
+ };
+ void *const t_attr = tail_memdup(&attr, sizeof(attr));
+ return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
+}
+# endif
+
+/* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+static int
+prog_cgroup(int cmd)
+{
+ union bpf_attr attr = {
+ .target_fd = -1,
+ .attach_bpf_fd = -1,
+ .attach_type = 0
+ };
+ void *const t_attr = tail_memdup(&attr, sizeof(attr));
+ return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
+}
+# endif
+
+static unsigned long efault;
+
+static void
+bogus_bpf(int cmd, const char *name)
+{
+ const unsigned long bogus_size = 1024;
+ const unsigned long bogus_addr = efault - bogus_size;
+
+ sys_bpf(cmd, efault, 4);
+ printf("bpf(%s, %#lx, %lu) = %s\n",
+ name, efault, 4UL, errstr);
+
+ sys_bpf(cmd, efault, bogus_size);
+ printf("bpf(%s, %#lx, %lu) = %s\n",
+ name, efault, bogus_size, errstr);
+
+ sys_bpf(cmd, bogus_addr, 0);
+ printf("bpf(%s, %#lx, %lu) = %s\n",
+ name, bogus_addr, 0UL, errstr);
+}
+
+#define BOGUS_BPF(cmd) bogus_bpf(cmd, #cmd)
+
int
main(void)
{
- if (!map_create())
- perror_msg_and_skip("BPF_MAP_CREATE");
- printf("bpf\\(BPF_MAP_CREATE, "
- "\\{map_type=BPF_MAP_TYPE_UNSPEC, key_size=4, value_size=8, max_entries=256\\}, "
- "%u\\) += -1 .*\n",
- (unsigned) sizeof(union bpf_attr));
+ efault = (unsigned long) tail_alloc(1) + 1;
- if (!map_any(BPF_MAP_LOOKUP_ELEM))
- perror_msg_and_skip("BPF_MAP_LOOKUP_ELEM");
- printf("bpf\\(BPF_MAP_LOOKUP_ELEM, "
- "\\{map_fd=-1, key=0xdeadbeef\\}, %u\\) += -1 .*\n",
- (unsigned) sizeof(union bpf_attr));
+ map_create();
+ printf("bpf(BPF_MAP_CREATE"
+ ", {map_type=BPF_MAP_TYPE_UNSPEC, key_size=4"
+ ", value_size=8, max_entries=256}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_MAP_CREATE);
- if (!map_any(BPF_MAP_UPDATE_ELEM))
- perror_msg_and_skip("BPF_MAP_UPDATE_ELEM");
- printf("bpf\\(BPF_MAP_UPDATE_ELEM, "
- "\\{map_fd=-1, key=0xdeadbeef, value=0xbadc0ded, flags=BPF_ANY\\}, "
- "%u\\) += -1 .*\n",
- (unsigned) sizeof(union bpf_attr));
+ map_any(BPF_MAP_LOOKUP_ELEM);
+ printf("bpf(BPF_MAP_LOOKUP_ELEM"
+ ", {map_fd=-1, key=0xdeadbeef}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_MAP_LOOKUP_ELEM);
- if (!map_any(BPF_MAP_DELETE_ELEM))
- perror_msg_and_skip("BPF_MAP_DELETE_ELEM");
- printf("bpf\\(BPF_MAP_DELETE_ELEM, "
- "\\{map_fd=-1, key=0xdeadbeef\\}, %u\\) += -1 .*\n",
- (unsigned) sizeof(union bpf_attr));
+ map_any(BPF_MAP_UPDATE_ELEM);
+ printf("bpf(BPF_MAP_UPDATE_ELEM"
+ ", {map_fd=-1, key=0xdeadbeef"
+ ", value=0xbadc0ded, flags=BPF_ANY}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_MAP_UPDATE_ELEM);
- if (!map_any(BPF_MAP_GET_NEXT_KEY))
- perror_msg_and_skip("BPF_MAP_GET_NEXT_KEY");
- printf("bpf\\(BPF_MAP_GET_NEXT_KEY, "
- "\\{map_fd=-1, key=0xdeadbeef\\}, %u\\) += -1 .*\n",
- (unsigned) sizeof(union bpf_attr));
+ map_any(BPF_MAP_DELETE_ELEM);
+ printf("bpf(BPF_MAP_DELETE_ELEM"
+ ", {map_fd=-1, key=0xdeadbeef}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_MAP_DELETE_ELEM);
- if (!prog_load())
- perror_msg_and_skip("BPF_PROG_LOAD");
- printf("bpf\\(BPF_PROG_LOAD, "
- "\\{prog_type=BPF_PROG_TYPE_UNSPEC, insn_cnt=1, insns=%p, "
- "license=\"GPL\", log_level=42, log_size=4096, log_buf=%p, "
- "kern_version=0\\}, %u\\) += -1 .*\n",
- insns, log_buf, (unsigned) sizeof(union bpf_attr));
+ map_any(BPF_MAP_GET_NEXT_KEY);
+ printf("bpf(BPF_MAP_GET_NEXT_KEY"
+ ", {map_fd=-1, key=0xdeadbeef}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_MAP_GET_NEXT_KEY);
+ prog_load();
+ printf("bpf(BPF_PROG_LOAD"
+ ", {prog_type=BPF_PROG_TYPE_UNSPEC, insn_cnt=1, insns=%p"
+ ", license=\"GPL\", log_level=42, log_size=4096, log_buf=%p"
+ ", kern_version=0}, %u) = %s\n",
+ insns, log_buf, (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_PROG_LOAD);
+
+# ifdef HAVE_UNION_BPF_ATTR_BPF_FD
+ obj_manage(BPF_OBJ_PIN);
+ printf("bpf(BPF_OBJ_PIN"
+ ", {pathname=\"/sys/fs/bpf/foo/bar\", bpf_fd=-1}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_OBJ_PIN);
+
+ obj_manage(BPF_OBJ_GET);
+ printf("bpf(BPF_OBJ_GET"
+ ", {pathname=\"/sys/fs/bpf/foo/bar\", bpf_fd=-1}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_OBJ_GET);
+# endif
+
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+ prog_cgroup(BPF_PROG_ATTACH);
+ printf("bpf(BPF_PROG_ATTACH"
+ ", {target_fd=-1, attach_bpf_fd=-1"
+ ", attach_type=BPF_CGROUP_INET_INGRESS}, %u) = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_PROG_ATTACH);
+
+ prog_cgroup(BPF_PROG_DETACH);
+ printf("bpf(BPF_PROG_DETACH"
+ ", {target_fd=-1, attach_type=BPF_CGROUP_INET_INGRESS}, %u)"
+ " = %s\n",
+ (unsigned) sizeof(union bpf_attr), errstr);
+ BOGUS_BPF(BPF_PROG_DETACH);
+# endif
+
+ bogus_bpf(0xfacefeed, "0xfacefeed /* BPF_??? */");
+
+ puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/bpf.test b/tests/bpf.test
index 6c77ae1..adf0d57 100755
--- a/tests/bpf.test
+++ b/tests/bpf.test
@@ -1,12 +1,6 @@
#!/bin/sh
# Check bpf syscall decoding.
-
. "${srcdir=.}/init.sh"
-run_prog > /dev/null
-run_strace -ebpf $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace_match_diff -a20
diff --git a/tests/btrfs.c b/tests/btrfs.c
index d600534..b3e23f8 100644
--- a/tests/btrfs.c
+++ b/tests/btrfs.c
@@ -199,7 +199,7 @@
static void
btrfs_test_sync_ioctls(void)
{
- uint64_t u64val = 0xdeadbeefbadc0ded;
+ uint64_t u64val = 0xdeadbeefbadc0dedULL;
ioctl(-1, BTRFS_IOC_SYNC, NULL);
printf("ioctl(-1, BTRFS_IOC_SYNC) = -1 EBADF (%m)\n");
@@ -286,8 +286,8 @@
{
const char *subvol_name = "subvol-name";
char *long_subvol_name;
- void *bad_pointer = (void *) (unsigned long) 0xdeadbeeffffffeed;
- uint64_t u64val = 0xdeadbeefbadc0ded;
+ void *bad_pointer = (void *) (unsigned long) 0xdeadbeeffffffeedULL;
+ uint64_t u64val = 0xdeadbeefbadc0dedULL;
struct btrfs_ioctl_vol_args vol_args = {};
struct btrfs_ioctl_vol_args_v2 vol_args_v2 = {
.fd = 2,
@@ -1567,8 +1567,8 @@
{
struct btrfs_ioctl_dev_replace_args args = {
.cmd = BTRFS_IOCTL_DEV_REPLACE_CMD_START,
- .start.srcdevid = 1
};
+ args.start.srcdevid = 1;
strcpy((char *)args.start.srcdev_name, "/dev/sda1");
strcpy((char *)args.start.tgtdev_name, "/dev/sdb1");
diff --git a/tests/caps-abbrev.awk b/tests/caps-abbrev.awk
new file mode 100644
index 0000000..86de7f2
--- /dev/null
+++ b/tests/caps-abbrev.awk
@@ -0,0 +1,52 @@
+#!/bin/gawk
+#
+# This file is part of caps strace test.
+#
+# Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+# 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.
+
+BEGIN {
+ cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+ s_efault = "-1 EFAULT (Bad address)"
+ r_efault = "-1 EFAULT \\(Bad address\\)"
+ r_einval = "-1 EINVAL \\(Invalid argument\\)"
+ r_eperm = "-1 EPERM \\(Operation not permitted\\)"
+ r_addr = "0x[[:xdigit:]]+"
+ s[1] = "capget(NULL, NULL) = " s_efault
+ r[2] = r[3] = "^capget\\(" r_addr ", " r_addr "\\) = " r_efault
+ r[4] = "^capget\\(" r_addr ", " r_addr "\\) = 0"
+
+ s[5] = "capset(NULL, NULL) = " s_efault
+ r[6] = "^capset\\(" r_addr ", " r_addr "\\) = " r_efault
+ r[7] = "^capset\\(" r_addr ", " r_addr "\\) = " r_einval
+ r[8] = "^capset\\(" r_addr ", " r_addr "\\) = " r_efault
+ r[9] = r[10] = r[11] = "^capset\\(" r_addr ", " r_addr "\\) = " r_eperm
+ s[12] = "+++ exited with 0 +++"
+
+ lines = 12
+ fail = 0
+}
+
+@include "match.awk"
diff --git a/tests/caps-abbrev.c b/tests/caps-abbrev.c
new file mode 100644
index 0000000..b4aeb37
--- /dev/null
+++ b/tests/caps-abbrev.c
@@ -0,0 +1 @@
+#include "caps.c"
diff --git a/tests/caps-abbrev.test b/tests/caps-abbrev.test
new file mode 100755
index 0000000..ca223f9
--- /dev/null
+++ b/tests/caps-abbrev.test
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Check capget/capset syscalls decoding.
+
+. "${srcdir=.}/init.sh"
+
+run_prog
+run_strace -a 19 -e trace=capget,capset -e verbose=\!capget,capset $args
+match_awk
+
+exit 0
diff --git a/tests/caps.awk b/tests/caps.awk
index 67003ac..c6e31ef 100644
--- a/tests/caps.awk
+++ b/tests/caps.awk
@@ -31,16 +31,26 @@
cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
s_efault = "-1 EFAULT (Bad address)"
r_efault = "-1 EFAULT \\(Bad address\\)"
+ r_einval = "-1 EINVAL \\(Invalid argument\\)"
r_addr = "0x[[:xdigit:]]+"
s[1] = "capget(NULL, NULL) = " s_efault
r[2] = "^capget\\(" r_addr ", " r_addr "\\) = " r_efault
- r[3] = "^capget\\(\\{_LINUX_CAPABILITY_VERSION_3, 0\\}, " r_addr "\\) = " r_efault
- r[4] = "^capget\\(\\{_LINUX_CAPABILITY_VERSION_3, 0\\}, \\{" cap ", " cap ", " cap "\\}\\) = 0$"
- capset_data = "{1<<CAP_DAC_OVERRIDE|1<<CAP_WAKE_ALARM, 1<<CAP_DAC_READ_SEARCH|1<<CAP_BLOCK_SUSPEND, 0}"
- s[5] = "capset({_LINUX_CAPABILITY_VERSION_3, 0}, " capset_data ") = -1 EPERM (Operation not permitted)"
- s[6] = "+++ exited with 0 +++"
+ r[3] = "^capget\\(\\{version=_LINUX_CAPABILITY_VERSION_3, pid=0\\}, " r_addr "\\) = " r_efault
+ r[4] = "^capget\\(\\{version=_LINUX_CAPABILITY_VERSION_3, pid=0\\}, \\{effective=" cap ", permitted=" cap ", inheritable=" cap "\\}\\) = 0$"
- lines = 6
+ capset_v1_data = "{effective=1<<CAP_DAC_OVERRIDE, permitted=1<<CAP_DAC_READ_SEARCH, inheritable=0}"
+ capset_v3hi_data = "{effective=1<<CAP_WAKE_ALARM, permitted=1<<CAP_BLOCK_SUSPEND, inheritable=0}"
+ capset_data = "{effective=1<<CAP_DAC_OVERRIDE|1<<CAP_WAKE_ALARM, permitted=1<<CAP_DAC_READ_SEARCH|1<<CAP_BLOCK_SUSPEND, inheritable=0}"
+ s[5] = "capset(NULL, NULL) = " s_efault
+ r[6] = "^capset\\(" r_addr ", " r_addr "\\) = " r_efault
+ r[7] = "^capset\\(\\{version=0xbadc0ded /\\* _LINUX_CAPABILITY_VERSION_\\?\\?\\? \\*/, pid=-1576685468\\}, " r_addr "\\) = " r_einval
+ r[8] = "^capset\\(\\{version=_LINUX_CAPABILITY_VERSION_2, pid=0\\}, " r_addr "\\) = " r_efault
+ s[9] = "capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, " capset_data ") = -1 EPERM (Operation not permitted)"
+ s[10] = "capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, " capset_v3hi_data ") = -1 EPERM (Operation not permitted)"
+ s[11] = "capset({version=_LINUX_CAPABILITY_VERSION_1, pid=0}, " capset_v1_data ") = -1 EPERM (Operation not permitted)"
+ s[12] = "+++ exited with 0 +++"
+
+ lines = 12
fail = 0
}
diff --git a/tests/caps.c b/tests/caps.c
index 17e1077..9f33a39 100644
--- a/tests/caps.c
+++ b/tests/caps.c
@@ -38,6 +38,8 @@
main(void)
{
const int data[] = { 2, 4, 0, 8, 16, 0 };
+ const int v1 = 0x19980330;
+ const int v2 = 0x20071026;
const int v3 = 0x20080522;
int * const head = tail_alloc(sizeof(int) * 2);
@@ -55,7 +57,31 @@
error_msg_and_skip("capget: v3 expected");
memcpy(tail_data, data, sizeof(data));
- if (capset(head, data) == 0 || errno != EPERM)
+
+ capset(NULL, NULL);
+ capset(head + 2, tail_data);
+
+ head[0] = 0xbadc0ded;
+ head[1] = 2718281828U;
+ capset(head, tail_data + ARRAY_SIZE(data) - 2);
+
+ head[0] = v2;
+ head[1] = 0;
+ capset(head, tail_data + ARRAY_SIZE(data) - 5);
+
+ memcpy(tail_data, data, sizeof(data));
+ head[0] = v3;
+ if (capset(head, tail_data) == 0 || errno != EPERM)
+ perror_msg_and_skip("capset");
+
+ memset(tail_data, 0, sizeof(data) / 2);
+ if (capset(head, tail_data) == 0 || errno != EPERM)
+ perror_msg_and_skip("capset");
+
+ memcpy(tail_data + ARRAY_SIZE(data) / 2, data, sizeof(data) / 2);
+ head[0] = v1;
+ if (capset(head, tail_data + ARRAY_SIZE(data) / 2) == 0 ||
+ errno != EPERM)
perror_msg_and_skip("capset");
return 0;
diff --git a/tests/clock_nanosleep.c b/tests/clock_nanosleep.c
index d9b68fd..98407d7 100644
--- a/tests/clock_nanosleep.c
+++ b/tests/clock_nanosleep.c
@@ -62,7 +62,8 @@
if (syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0, &req.ts, NULL))
perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
- printf("clock_nanosleep(CLOCK_REALTIME, 0, {%jd, %jd}, NULL) = 0\n",
+ printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
+ "NULL) = 0\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
@@ -72,14 +73,15 @@
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
&req.ts, &rem.ts) == 0);
- printf("clock_nanosleep(CLOCK_REALTIME, 0, {%jd, %jd}, %p) = 0\n",
+ printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
+ "%p) = 0\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
req.ts.tv_nsec = 999999999 + 1;
assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
&req.ts, &rem.ts) == -1);
printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
- ", {%jd, %jd}, %p) = -1 EINVAL (%m)\n",
+ ", {tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
assert(sigaction(SIGALRM, &act, NULL) == 0);
@@ -87,8 +89,8 @@
if (setitimer(ITIMER_REAL, &itv, NULL))
perror_msg_and_skip("setitimer");
- printf("setitimer(ITIMER_REAL, {it_interval={%jd, %jd}"
- ", it_value={%jd, %jd}}, NULL) = 0\n",
+ printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
+ ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
(intmax_t) itv.it_interval.tv_sec,
(intmax_t) itv.it_interval.tv_usec,
(intmax_t) itv.it_value.tv_sec,
@@ -97,14 +99,15 @@
--req.ts.tv_nsec;
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
&req.ts, &rem.ts) == -1);
- printf("clock_nanosleep(CLOCK_REALTIME, 0, {%jd, %jd}, {%jd, %jd})"
+ printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
+ "{tv_sec=%jd, tv_nsec=%jd})"
" = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
(intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
assert(syscall(__NR_clock_gettime, CLOCK_REALTIME, &req.ts) == 0);
- printf("clock_gettime(CLOCK_REALTIME, {%jd, %jd}) = 0\n",
+ printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
++req.ts.tv_sec;
@@ -112,7 +115,8 @@
rem.ts.tv_nsec = 0xc0de5;
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, TIMER_ABSTIME,
&req.ts, &rem.ts) == -1);
- printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, {%jd, %jd}, %p)"
+ printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, {tv_sec=%jd, "
+ "tv_nsec=%jd}, %p)"
" = ? ERESTARTNOHAND (To be restarted if no handler)\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
diff --git a/tests/clock_xettime.c b/tests/clock_xettime.c
index 04dddf6..3ef5695 100644
--- a/tests/clock_xettime.c
+++ b/tests/clock_xettime.c
@@ -48,13 +48,14 @@
if (syscall(__NR_clock_getres, CLOCK_REALTIME, &t.ts))
perror_msg_and_skip("clock_getres CLOCK_REALTIME");
- printf("clock_getres(CLOCK_REALTIME, {%jd, %jd}) = 0\n",
+ printf("clock_getres(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
(intmax_t) t.ts.tv_sec,
(intmax_t) t.ts.tv_nsec);
if (syscall(__NR_clock_gettime, CLOCK_PROCESS_CPUTIME_ID, &t.ts))
perror_msg_and_skip("clock_gettime CLOCK_PROCESS_CPUTIME_ID");
- printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {%jd, %jd}) = 0\n",
+ printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, "
+ "{tv_sec=%jd, tv_nsec=%jd}) = 0\n",
(intmax_t) t.ts.tv_sec,
(intmax_t) t.ts.tv_nsec);
@@ -63,8 +64,8 @@
if (!syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts))
error_msg_and_skip("clock_settime CLOCK_THREAD_CPUTIME_ID:"
" EINVAL expected");
- printf("clock_settime(CLOCK_THREAD_CPUTIME_ID, {%jd, %jd})"
- " = -1 EINVAL (%m)\n",
+ printf("clock_settime(CLOCK_THREAD_CPUTIME_ID, {tv_sec=%jd, "
+ "tv_nsec=%jd}) = -1 EINVAL (%m)\n",
(intmax_t) t.ts.tv_sec,
(intmax_t) t.ts.tv_nsec);
diff --git a/tests/copy_file_range.c b/tests/copy_file_range.c
index f3ec5b4..085010a 100644
--- a/tests/copy_file_range.c
+++ b/tests/copy_file_range.c
@@ -29,6 +29,7 @@
#include "tests.h"
#include <asm/unistd.h>
+#include "scno.h"
#if defined __NR_copy_file_range
diff --git a/tests/delete_module.c b/tests/delete_module.c
new file mode 100644
index 0000000..5a31760
--- /dev/null
+++ b/tests/delete_module.c
@@ -0,0 +1,115 @@
+/*
+ * Check decoding of delete_module syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_delete_module)
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "init_delete_module.h"
+
+int
+main(void)
+{
+ static const struct {
+ kernel_ulong_t val;
+ const char *str;
+ unsigned int val_prefix, val_suffix;
+ } flags[] = {
+ { ARG_STR(0), 0, 0 },
+ { (kernel_ulong_t) 0xffffffff00000000ULL | O_NONBLOCK,
+ "O_NONBLOCK", 0, 0 },
+ { (kernel_ulong_t) 0xbadc0dedfacef157ULL & ~(O_NONBLOCK | O_TRUNC),
+ " /* O_??? */", 0xfacef157U & ~(O_NONBLOCK | O_TRUNC), 0},
+ { (kernel_ulong_t) (0xfacef157deade71cULL & ~O_NONBLOCK) | O_TRUNC,
+ "O_TRUNC", 0, 0xdeade71c & ~(O_NONBLOCK | O_TRUNC)},
+ { -1LL, "O_NONBLOCK|O_TRUNC", 0, -1U & ~(O_NONBLOCK | O_TRUNC)},
+ };
+
+ long rc;
+ char *bogus_param1 = tail_alloc(PARAM1_LEN);
+ char *bogus_param2 = tail_alloc(PARAM2_LEN);
+ const char *errstr;
+
+ fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
+ fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
+
+ rc = syscall(__NR_delete_module, NULL, bogus_zero);
+ printf("delete_module(NULL, 0) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_delete_module, bogus_param1, flags[0].val);
+ errstr = sprintrc(rc);
+
+ printf("delete_module(\"");
+ print_str(PARAM1_BASE, MAX_STRLEN, false);
+ printf("\"..., %s) = %s\n", flags[0].str, errstr);
+
+ bogus_param1[PARAM1_LEN - 1] = '\0';
+
+ rc = syscall(__NR_delete_module, bogus_param1, flags[1].val);
+ errstr = sprintrc(rc);
+
+ printf("delete_module(\"");
+ print_str(PARAM1_BASE, MAX_STRLEN, false);
+ printf("\", %s) = %s\n", flags[1].str, errstr);
+
+ rc = syscall(__NR_delete_module, bogus_param2 + PARAM2_LEN,
+ flags[2].val);
+ printf("delete_module(%p, %#x%s) = %s\n",
+ bogus_param2 + PARAM2_LEN, flags[2].val_prefix,
+ flags[2].str, sprintrc(rc));
+
+ rc = syscall(__NR_delete_module, bogus_param2, flags[3].val);
+ printf("delete_module(%p, %s|%#x) = %s\n",
+ bogus_param2, flags[3].str, flags[3].val_suffix, sprintrc(rc));
+
+ bogus_param2[PARAM2_LEN - 1] = '\0';
+
+ rc = syscall(__NR_delete_module, bogus_param2, flags[4].val);
+ errstr = sprintrc(rc);
+
+ printf("delete_module(\"");
+ print_str(PARAM2_BASE, PARAM2_LEN - 1, true);
+ printf("\", %s|%#x) = %s\n", flags[4].str, flags[4].val_suffix, errstr);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_delete_module");
+
+#endif
diff --git a/tests/delete_module.test b/tests/delete_module.test
new file mode 100755
index 0000000..fb86ec9
--- /dev/null
+++ b/tests/delete_module.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of delete_module syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23
diff --git a/tests/detach-running.test b/tests/detach-running.test
index b77dc51..006efb8 100755
--- a/tests/detach-running.test
+++ b/tests/detach-running.test
@@ -79,8 +79,8 @@
cleanup
dump_log_and_fail_with 'tracee died after detach'
}
- grep '^State:.*R (running)' < /proc/$tracee_pid/status > /dev/null || {
- grep '^State:' < /proc/$tracee_pid/status
+ grep_pid_status "$tracee_pid" '^State:.*R (running)' > /dev/null || {
+ grep_pid_status "$tracee_pid" '^State:'
cleanup
dump_log_and_fail_with 'tracee is not running after detach'
}
diff --git a/tests/detach-sleeping.test b/tests/detach-sleeping.test
index 546c21d..54304f3 100755
--- a/tests/detach-sleeping.test
+++ b/tests/detach-sleeping.test
@@ -80,8 +80,8 @@
cleanup
dump_log_and_fail_with 'tracee died after detach'
}
- grep '^State:.*S (sleeping)' < /proc/$tracee_pid/status > /dev/null || {
- grep '^State:' < /proc/$tracee_pid/status
+ grep_pid_status "$tracee_pid" '^State:.*S (sleeping)' > /dev/null || {
+ grep_pid_status "$tracee_pid" '^State:'
cleanup
dump_log_and_fail_with 'tracee is not sleeping after detach'
}
diff --git a/tests/detach-stopped.test b/tests/detach-stopped.test
index ca4d4e9..8f480e7 100755
--- a/tests/detach-stopped.test
+++ b/tests/detach-stopped.test
@@ -95,8 +95,8 @@
cleanup
dump_log_and_fail_with 'tracee died after detach'
}
- grep '^State:.*T (stopped)' < /proc/$tracee_pid/status > /dev/null || {
- grep '^State:' < /proc/$tracee_pid/status
+ grep_pid_status "$tracee_pid" '^State:.*T (stopped)' > /dev/null || {
+ grep_pid_status "$tracee_pid" '^State:'
cleanup
dump_log_and_fail_with 'tracee is not group-stopped after detach'
}
diff --git a/tests/dup2.c b/tests/dup2.c
index 04a261c..9f3addf 100644
--- a/tests/dup2.c
+++ b/tests/dup2.c
@@ -9,8 +9,8 @@
int
main(void)
{
- const long int fd_old = (long int) 0xdeadbeefffffffff;
- const long int fd_new = (long int) 0xdeadbeeffffffffe;
+ const long int fd_old = (long int) 0xdeadbeefffffffffULL;
+ const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
long rc = syscall(__NR_dup2, fd_old, fd_new);
printf("dup2(%d, %d) = %ld %s (%m)\n",
diff --git a/tests/dup3.c b/tests/dup3.c
index 2611dd8..252e846 100644
--- a/tests/dup3.c
+++ b/tests/dup3.c
@@ -10,8 +10,8 @@
int
main(void)
{
- const long int fd_old = (long int) 0xdeadbeefffffffff;
- const long int fd_new = (long int) 0xdeadbeeffffffffe;
+ const long int fd_old = (long int) 0xdeadbeefffffffffULL;
+ const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
long rc = syscall(__NR_dup3, fd_old, fd_new, O_CLOEXEC);
printf("dup3(%d, %d, O_CLOEXEC) = %ld %s (%m)\n",
diff --git a/tests/epoll_create.c b/tests/epoll_create.c
index 1f24852..44262c7 100644
--- a/tests/epoll_create.c
+++ b/tests/epoll_create.c
@@ -9,7 +9,7 @@
int
main(void)
{
- const long int size = (long int) 0xdeadbeefffffffff;
+ const long int size = (long int) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_epoll_create, size);
printf("epoll_create(%d) = %ld %s (%m)\n",
diff --git a/tests/epoll_ctl.c b/tests/epoll_ctl.c
index 8b46f4e..e666055 100644
--- a/tests/epoll_ctl.c
+++ b/tests/epoll_ctl.c
@@ -11,7 +11,7 @@
static long
invoke_syscall(unsigned long epfd, unsigned long op, unsigned long fd, void *ev)
{
- op |= (unsigned long) 0xffffffff00000000;
+ op |= (unsigned long) 0xffffffff00000000ULL;
return syscall(__NR_epoll_ctl, epfd, op, fd, (unsigned long) ev);
}
diff --git a/tests/epoll_pwait.c b/tests/epoll_pwait.c
index 27337ec..eaaa34d 100644
--- a/tests/epoll_pwait.c
+++ b/tests/epoll_pwait.c
@@ -8,8 +8,6 @@
# include <sys/epoll.h>
# include <unistd.h>
-# include "kernel_types.h"
-
int
main(void)
{
diff --git a/tests/erestartsys.c b/tests/erestartsys.c
new file mode 100644
index 0000000..97c9699
--- /dev/null
+++ b/tests/erestartsys.c
@@ -0,0 +1,81 @@
+/*
+ * Check decoding of ERESTARTSYS error code.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <signal.h>
+#include <stdio.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+static int sv[2];
+
+static void
+handler(int sig)
+{
+ close(sv[1]);
+ sv[1] = -1;
+}
+
+int
+main(void)
+{
+ if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv))
+ perror_msg_and_skip("socketpair");
+
+ const struct sigaction act = {
+ .sa_handler = handler,
+ .sa_flags = SA_RESTART
+ };
+ if (sigaction(SIGALRM, &act, NULL))
+ perror_msg_and_fail("sigaction");
+
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGALRM);
+ if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ const struct itimerval itv = { .it_value.tv_usec = 123456 };
+ if (setitimer(ITIMER_REAL, &itv, NULL))
+ perror_msg_and_fail("setitimer");
+
+ if (recvfrom(sv[0], &sv[1], sizeof(sv[1]), 0, NULL, NULL))
+ perror_msg_and_fail("recvfrom");
+
+ printf("recvfrom(%d, %p, %d, 0, NULL, NULL) = ? ERESTARTSYS"
+ " (To be restarted if SA_RESTART is set)\n",
+ sv[0], &sv[1], (int) sizeof(sv[1]));
+ printf("recvfrom(%d, \"\", %d, 0, NULL, NULL) = 0\n",
+ sv[0], (int) sizeof(sv[1]));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/erestartsys.test b/tests/erestartsys.test
new file mode 100755
index 0000000..91f711f
--- /dev/null
+++ b/tests/erestartsys.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of ERESTARTSYS error code.
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests/execveat.c b/tests/execveat.c
index 4e444a2..9083830 100644
--- a/tests/execveat.c
+++ b/tests/execveat.c
@@ -28,12 +28,14 @@
*/
#include "tests.h"
-#include <stdio.h>
-#include <unistd.h>
#include <asm/unistd.h>
+#include "scno.h"
#ifdef __NR_execveat
+# include <stdio.h>
+# include <unistd.h>
+
# define FILENAME "test.execveat\nfilename"
# define Q_FILENAME "test.execveat\\nfilename"
diff --git a/tests/faccessat.c b/tests/faccessat.c
index c21039d..ce81349 100644
--- a/tests/faccessat.c
+++ b/tests/faccessat.c
@@ -10,7 +10,7 @@
main(void)
{
static const char sample[] = "faccessat.sample";
- const long int fd = (long int) 0xdeadbeefffffffff;
+ const long int fd = (long int) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_faccessat, fd, sample, F_OK);
printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n",
diff --git a/tests/fadvise.h b/tests/fadvise.h
index bc79091..7a75f73 100644
--- a/tests/fadvise.h
+++ b/tests/fadvise.h
@@ -1,7 +1,7 @@
/*
* Common definitions for fadvise64 and fadvise64_64 tests.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
@@ -38,13 +38,6 @@
# include "xlat.h"
# include "xlat/advise.h"
-# if WORDS_BIGENDIAN
-# define LL_PAIR(HI, LO) (HI), (LO)
-# else
-# define LL_PAIR(HI, LO) (LO), (HI)
-# endif
-# define LL_VAL_TO_PAIR(llval) LL_PAIR((long) ((llval) >> 32), (long) (llval))
-
static void do_fadvise(long fd, long long offset, long long llen, long advice);
int
diff --git a/tests/fadvise64.c b/tests/fadvise64.c
index 02d7394..930680b 100644
--- a/tests/fadvise64.c
+++ b/tests/fadvise64.c
@@ -1,7 +1,7 @@
/*
* Check decoding of fadvise64 syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
diff --git a/tests/fadvise64_64.c b/tests/fadvise64_64.c
index 69b1c7f..c23df97 100644
--- a/tests/fadvise64_64.c
+++ b/tests/fadvise64_64.c
@@ -1,7 +1,7 @@
/*
* Check decoding of fadvise64_64 syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
diff --git a/tests/fallocate.c b/tests/fallocate.c
index 40ac244..a31711b 100644
--- a/tests/fallocate.c
+++ b/tests/fallocate.c
@@ -1,7 +1,7 @@
/*
* Check decoding of fallocate syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/fanotify_init.c b/tests/fanotify_init.c
new file mode 100644
index 0000000..c14b413
--- /dev/null
+++ b/tests/fanotify_init.c
@@ -0,0 +1,95 @@
+/*
+ * Check decoding of fanotify_init syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined __NR_fanotify_init
+
+# include <limits.h>
+# include <stdio.h>
+# include <unistd.h>
+
+/* Performs fanotify_init call via the syscall interface. */
+static void
+do_call(kernel_ulong_t flags, const char *flags_str,
+ kernel_ulong_t event_f_flags, const char *event_f_flags_str)
+{
+ long rc;
+
+ rc = syscall(__NR_fanotify_init, flags, event_f_flags);
+
+ printf("fanotify_init(%s, %s) = %s\n",
+ flags_str, event_f_flags_str, sprintrc(rc));
+}
+
+struct strval {
+ kernel_ulong_t val;
+ const char *str;
+};
+
+
+int
+main(void)
+{
+ static const struct strval flags[] = {
+ { (kernel_ulong_t) 0xffffffff00000000ULL, "FAN_CLASS_NOTIF" },
+ { (kernel_ulong_t) 0xffffffff0000000cULL,
+ "0xc /* FAN_CLASS_??? */" },
+ { (kernel_ulong_t) 0xdec0deddefaced04ULL,
+ "FAN_CLASS_CONTENT|0xefaced00 /* FAN_??? */" },
+ { (kernel_ulong_t) 0xffffffffffffffffULL,
+ "0xc /* FAN_CLASS_??? */|FAN_CLOEXEC|FAN_NONBLOCK|"
+ "FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|0xffffffc0" },
+ };
+ static const struct strval event_f_flags[] = {
+ { (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+ { (kernel_ulong_t) 0xdeadbeef80000001ULL,
+ "O_WRONLY|0x80000000" }
+ };
+
+ unsigned int i;
+ unsigned int j;
+
+
+ for (i = 0; i < ARRAY_SIZE(flags); i++)
+ for (j = 0; j < ARRAY_SIZE(event_f_flags); j++)
+ do_call(flags[i].val, flags[i].str,
+ event_f_flags[j].val, event_f_flags[j].str);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fanotify_init")
+
+#endif
diff --git a/tests/fanotify_init.test b/tests/fanotify_init.test
new file mode 100755
index 0000000..8d26af4
--- /dev/null
+++ b/tests/fanotify_init.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of fanotify_init syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/fanotify_mark.c b/tests/fanotify_mark.c
index 9cac5ef..43f285d 100644
--- a/tests/fanotify_mark.c
+++ b/tests/fanotify_mark.c
@@ -1,17 +1,174 @@
+/*
+ * Check decoding of fanotify_mark syscall.
+ *
+ * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
#include "tests.h"
-#if defined HAVE_SYS_FANOTIFY_H && defined HAVE_FANOTIFY_MARK
+#include <asm/unistd.h>
+#if defined HAVE_SYS_FANOTIFY_H && defined HAVE_FANOTIFY_MARK && \
+ defined __NR_fanotify_mark
+
+# include <limits.h>
# include <stdio.h>
+# include <unistd.h>
# include <sys/fanotify.h>
+/* Performs fanotify_mark call via the syscall interface. */
+static void
+do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str,
+ uint64_t mask, const char *mask_str, kernel_ulong_t dirfd,
+ const char *dirfd_str, kernel_ulong_t path, const char *path_str)
+{
+ long rc;
+
+ rc = syscall(__NR_fanotify_mark, fd, flags,
+# if (LONG_MAX > INT_MAX) \
+ || (defined __x86_64__ && defined __ILP32__) \
+ || defined LINUX_MIPSN32
+ mask,
+# else
+/* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */
+# ifdef HPPA
+ LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)),
+# else
+ LL_VAL_TO_PAIR(mask),
+# endif
+# endif
+ dirfd, path);
+
+ printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n",
+ (int) fd, flags_str, mask_str, dirfd_str, path_str,
+ sprintrc(rc));
+}
+
+struct strval {
+ kernel_ulong_t val;
+ const char *str;
+};
+
+struct strval64 {
+ uint64_t val;
+ const char *str;
+};
+
+#define STR16 "0123456789abcdef"
+#define STR64 STR16 STR16 STR16 STR16
+
int
main(void)
{
- int rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ enum {
+ PATH1_SIZE = 64,
+ };
+
+ static const kernel_ulong_t fds[] = {
+ (kernel_ulong_t) 0xdeadfeed12345678ULL,
+ (kernel_ulong_t) 0xffffffff00000000ULL,
+ (kernel_ulong_t) 0xdeb0d1edffffffffULL,
+ };
+ static const struct strval flags[] = {
+ { (kernel_ulong_t) 0xffffffff00000000ULL, "0" },
+ { (kernel_ulong_t) 0xdec0deddefaced00ULL,
+ "0xefaced00 /* FAN_MARK_??? */" },
+ { (kernel_ulong_t) 0xda7a105700000040ULL,
+ "FAN_MARK_IGNORED_SURV_MODIFY" },
+ { (kernel_ulong_t) 0xbadc0deddeadfeedULL,
+ "FAN_MARK_ADD|FAN_MARK_DONT_FOLLOW|FAN_MARK_ONLYDIR|"
+ "FAN_MARK_IGNORED_MASK|FAN_MARK_IGNORED_SURV_MODIFY|"
+ "FAN_MARK_FLUSH|0xdeadfe00" },
+ };
+ static const struct strval64 masks[] = {
+ { ARG_ULL_STR(0) },
+ { 0xdeadfeedfacebeefULL,
+ "FAN_ACCESS|FAN_MODIFY|FAN_CLOSE_WRITE|FAN_OPEN|"
+ "FAN_ACCESS_PERM|FAN_ONDIR|FAN_EVENT_ON_CHILD|"
+ "0xdeadfeedb2ccbec4" },
+ { ARG_ULL_STR(0xffffffffb7fcbfc4) " /* FAN_??? */" },
+ };
+ static const struct strval dirfds[] = {
+ { (kernel_ulong_t) 0xfacefeed00000001ULL, "1" },
+ { (kernel_ulong_t) 0xdec0ded0ffffffffULL, "FAN_NOFD" },
+ { (kernel_ulong_t) 0xbadfacedffffff9cULL, "AT_FDCWD" },
+ { (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" },
+ };
+ static const char str64[] = STR64;
+
+ static char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2];
+ static char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2];
+
+ char *bogus_path1 = tail_memdup(str64, PATH1_SIZE);
+ char *bogus_path2 = tail_memdup(str64, sizeof(str64));
+
+ struct strval paths[] = {
+ { (kernel_ulong_t) 0, "NULL" },
+ { (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE),
+ bogus_path1_after_addr },
+ { (kernel_ulong_t) (uintptr_t) bogus_path1, bogus_path1_addr },
+ { (kernel_ulong_t) (uintptr_t) bogus_path2, "\"" STR64 "\"" },
+ };
+
+ unsigned int i;
+ unsigned int j;
+ unsigned int k;
+ unsigned int l;
+ unsigned int m;
+ int rc;
+
+
+ snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1);
+ snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
+ bogus_path1 + PATH1_SIZE);
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
-100, ".");
printf("fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY|FAN_ONDIR"
- ", AT_FDCWD, \".\") = %d %s (%m)\n", rc, errno2name());
+ ", AT_FDCWD, \".\") = %s\n", sprintrc(rc));
+
+ for (i = 0; i < ARRAY_SIZE(fds); i++) {
+ for (j = 0; j < ARRAY_SIZE(flags); j++) {
+ for (k = 0; k < ARRAY_SIZE(masks); k++) {
+ for (l = 0; l < ARRAY_SIZE(dirfds); l++) {
+ for (m = 0; m < ARRAY_SIZE(paths); m++)
+ do_call(fds[i],
+ flags[j].val,
+ flags[j].str,
+ masks[k].val,
+ masks[k].str,
+ dirfds[l].val,
+ dirfds[l].str,
+ paths[m].val,
+ paths[m].str);
+ }
+ }
+ }
+ }
puts("+++ exited with 0 +++");
return 0;
@@ -19,6 +176,7 @@
#else
-SKIP_MAIN_UNDEFINED("HAVE_SYS_FANOTIFY_H && HAVE_FANOTIFY_MARK")
+SKIP_MAIN_UNDEFINED("HAVE_SYS_FANOTIFY_H && HAVE_FANOTIFY_MARK && "
+ "__NR_fanotify_mark")
#endif
diff --git a/tests/fanotify_mark.test b/tests/fanotify_mark.test
index 84b3c83..fd67138 100755
--- a/tests/fanotify_mark.test
+++ b/tests/fanotify_mark.test
@@ -3,4 +3,4 @@
# Check decoding of fanotify_mark syscall.
. "${srcdir=.}/init.sh"
-run_strace_match_diff
+run_strace_match_diff -a32
diff --git a/tests/fchdir.c b/tests/fchdir.c
index 5808872..3cde5e6 100644
--- a/tests/fchdir.c
+++ b/tests/fchdir.c
@@ -9,7 +9,7 @@
int
main(void)
{
- const long int fd = (long int) 0xdeadbeefffffffff;
+ const long int fd = (long int) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_fchdir, fd);
printf("fchdir(%d) = %ld %s (%m)\n",
diff --git a/tests/fcntl.c b/tests/fcntl.c
index 4ae5beb..f060cdf 100644
--- a/tests/fcntl.c
+++ b/tests/fcntl.c
@@ -41,8 +41,8 @@
{
struct_kernel_flock64 fl = {
.l_type = F_RDLCK,
- .l_start = 0xdefaced1facefeed,
- .l_len = 0xdefaced2cafef00d
+ .l_start = 0xdefaced1facefeedULL,
+ .l_len = 0xdefaced2cafef00dULL
};
invoke_test_syscall(cmd, &fl);
printf("%s(0, %s, %p) = %s\n",
diff --git a/tests/fcntl64.c b/tests/fcntl64.c
index ff6a531..5ecd6eb 100644
--- a/tests/fcntl64.c
+++ b/tests/fcntl64.c
@@ -41,8 +41,8 @@
{
struct_kernel_flock64 fl = {
.l_type = F_RDLCK,
- .l_start = 0xdefaced1facefeed,
- .l_len = 0xdefaced2cafef00d
+ .l_start = 0xdefaced1facefeedULL,
+ .l_len = 0xdefaced2cafef00dULL
};
invoke_test_syscall(cmd, &fl);
printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
diff --git a/tests/fdatasync.c b/tests/fdatasync.c
index c47a0bf..fc82ade 100644
--- a/tests/fdatasync.c
+++ b/tests/fdatasync.c
@@ -9,7 +9,7 @@
int
main(void)
{
- const long int fd = (long int) 0xdeadbeefffffffff;
+ const long int fd = (long int) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_fdatasync, fd);
printf("fdatasync(%d) = %ld %s (%m)\n", (int) fd, rc, errno2name());
diff --git a/tests/file_handle.c b/tests/file_handle.c
index ac2b358..a5ad6c7 100644
--- a/tests/file_handle.c
+++ b/tests/file_handle.c
@@ -1,5 +1,8 @@
/*
+ * Check decoding of name_to_handle_at and open_by_handle_at syscalls.
+ *
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,41 +29,271 @@
*/
#include "tests.h"
-#include <fcntl.h>
+#include <asm/unistd.h>
-#ifdef MAX_HANDLE_SZ
+#if defined __NR_name_to_handle_at && defined __NR_open_by_handle_at
-# include <alloca.h>
# include <assert.h>
# include <errno.h>
+# include <inttypes.h>
+# include <fcntl.h>
# include <stdio.h>
+# include <stdbool.h>
+# include <unistd.h>
+
+enum assert_rc {
+ ASSERT_NONE,
+ ASSERT_SUCCESS,
+ ASSERT_ERROR,
+};
+
+# ifndef MAX_HANDLE_SZ
+
+# define MAX_HANDLE_SZ 128
+
+struct file_handle {
+ unsigned int handle_bytes;
+ int handle_type;
+ unsigned char f_handle[0];
+};
+# endif /* !MAX_HANDLE_SZ */
+
+
+void
+print_handle_data(unsigned char *bytes, unsigned int size)
+{
+ unsigned int i;
+
+ if (size > MAX_HANDLE_SZ)
+ size = MAX_HANDLE_SZ;
+
+ printf("0x");
+ for (i = 0; i < size; ++i)
+ printf("%02x", bytes[i]);
+}
+
+void
+do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str,
+ kernel_ulong_t pathname, const char *pathname_str,
+ kernel_ulong_t handle, const char *handle_str,
+ kernel_ulong_t mount_id,
+ kernel_ulong_t flags, const char *flags_str,
+ enum assert_rc assert_rc, long assert_errno)
+{
+ long rc;
+ const char *errstr;
+
+ rc = syscall(__NR_name_to_handle_at, dirfd, pathname, handle, mount_id,
+ flags);
+ errstr = sprintrc(rc);
+
+ if (assert_rc != ASSERT_NONE)
+ assert(rc == (assert_rc == ASSERT_SUCCESS ? 0 : -1));
+ if (assert_errno)
+ assert(errno != assert_errno);
+
+ printf("name_to_handle_at(%s, %s, %s",
+ dirfd_str, pathname_str, handle_str);
+
+ if (rc != -1) {
+ struct file_handle *fh =
+ (struct file_handle *) (uintptr_t) handle;
+ int *mount_id_ptr = (int *) (uintptr_t) mount_id;
+
+ printf(" => %u, handle_type=%d, f_handle=",
+ fh->handle_bytes, fh->handle_type);
+ print_handle_data((unsigned char *) fh +
+ sizeof(struct file_handle),
+ fh->handle_bytes);
+ printf("}, [%d]", *mount_id_ptr);
+ } else {
+ if (mount_id)
+ printf(", %#llx", (unsigned long long) mount_id);
+ else
+ printf(", NULL");
+ }
+
+ printf(", %s) = %s\n", flags_str, errstr);
+}
+
+void
+do_open_by_handle_at(kernel_ulong_t mount_fd,
+ kernel_ulong_t handle, bool valid_handle, bool valid_data,
+ kernel_ulong_t flags, const char *flags_str)
+{
+ long rc;
+
+ printf("open_by_handle_at(%d, ", (int) mount_fd);
+ if (valid_handle) {
+ struct file_handle *fh =
+ (struct file_handle *) (uintptr_t) handle;
+
+ printf("{handle_bytes=%u, handle_type=%d", fh->handle_bytes,
+ fh->handle_type);
+
+ if (valid_data) {
+ printf(", f_handle=");
+ print_handle_data((unsigned char *) fh +
+ sizeof(struct file_handle),
+ fh->handle_bytes);
+ }
+
+ printf("}");
+ } else {
+ if (handle)
+ printf("%#llx", (unsigned long long) handle);
+ else
+ printf("NULL");
+ }
+ printf(", %s) = ", flags_str);
+
+ rc = syscall(__NR_open_by_handle_at, mount_fd, handle, flags);
+
+ printf("%s\n", sprintrc(rc));
+}
+
+struct strval {
+ kernel_ulong_t val;
+ const char *str;
+};
+
+#define STR16 "0123456789abcdef"
+#define STR64 STR16 STR16 STR16 STR16
int
main(void)
{
+ enum {
+ PATH1_SIZE = 64,
+ };
+
+ static const kernel_ulong_t fdcwd =
+ (kernel_ulong_t) 0x87654321ffffff9cULL;
+ static const struct strval dirfds[] = {
+ { (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" },
+ { (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" },
+ };
+ static const struct strval name_flags[] = {
+ { (kernel_ulong_t) 0xdeadf15700000000ULL, "0" },
+ { (kernel_ulong_t) 0xbadc0ded00001000ULL,
+ "AT_EMPTY_PATH" },
+ { (kernel_ulong_t) 0xdeadc0deda7a1457ULL,
+ "AT_SYMLINK_FOLLOW|AT_EMPTY_PATH|0xda7a0057" },
+ { (kernel_ulong_t) 0xdefaced1ffffebffULL,
+ "0xffffebff /* AT_??? */" },
+ };
+ static const kernel_ulong_t mount_fds[] = {
+ (kernel_ulong_t) 0xdeadca5701234567ULL,
+ (kernel_ulong_t) 0x12345678ffffff9cULL,
+ };
+ static const struct strval open_flags[] = {
+ { (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+ { (kernel_ulong_t) 0xdeadbeef80000001ULL,
+ "O_WRONLY|0x80000000" }
+ };
+
+ static const char str64[] = STR64;
+
+
+ char *bogus_path1 = tail_memdup(str64, PATH1_SIZE);
+ char *bogus_path2 = tail_memdup(str64, sizeof(str64));
+
struct file_handle *handle =
- alloca(sizeof(struct file_handle) + MAX_HANDLE_SZ);
- const int dirfd = AT_FDCWD;
- const int flags = AT_SYMLINK_FOLLOW;
+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
+ struct file_handle *handle_0 =
+ tail_alloc(sizeof(struct file_handle) + 0);
+ struct file_handle *handle_8 =
+ tail_alloc(sizeof(struct file_handle) + 8);
+ struct file_handle *handle_128 =
+ tail_alloc(sizeof(struct file_handle) + 128);
+ struct file_handle *handle_256 =
+ tail_alloc(sizeof(struct file_handle) + 256);
+ int *bogus_mount_id = tail_alloc(sizeof(*bogus_mount_id));
+
+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
+
+ char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2];
+ char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2];
+
+
+ struct strval paths[] = {
+ { (kernel_ulong_t) 0, "NULL" },
+ { (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE),
+ bogus_path1_after_addr },
+ { (kernel_ulong_t) (uintptr_t) bogus_path1, bogus_path1_addr },
+ { (kernel_ulong_t) (uintptr_t) bogus_path2, "\"" STR64 "\"" },
+ };
+ struct strval name_handles[] = {
+ { (uintptr_t) (handle_0 + sizeof(struct file_handle)),
+ handle_0_addr },
+ { (uintptr_t) handle_0, "{handle_bytes=256}" },
+ { (uintptr_t) handle_8, "{handle_bytes=0}" },
+ { (uintptr_t) handle_128, "{handle_bytes=128}" },
+ { (uintptr_t) handle_256, "{handle_bytes=256}" },
+ };
+ struct {
+ kernel_ulong_t addr;
+ bool valid;
+ bool valid_data;
+ } open_handles[] = {
+ { 0, false, false },
+ { (uintptr_t) (handle_0 + sizeof(struct file_handle)),
+ false, false },
+ { (uintptr_t) handle_0 + 4, false, false },
+ { (uintptr_t) handle_0, true, false },
+ { (uintptr_t) handle_8, true, true },
+ { (uintptr_t) handle_128, true, true },
+ { (uintptr_t) handle_256, true, true },
+ };
+ kernel_ulong_t mount_ids[] = {
+ 0,
+ (kernel_ulong_t) (uintptr_t) (bogus_mount_id + 1),
+ (kernel_ulong_t) (uintptr_t) bogus_mount_id,
+ };
+
+ const int flags = 0x400;
int mount_id;
unsigned int i;
+ unsigned int j;
+ unsigned int k;
+ unsigned int l;
+ unsigned int m;
+
+
+ snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1);
+ snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
+ bogus_path1 + PATH1_SIZE);
+
+ handle_0->handle_bytes = 256;
+ handle_8->handle_bytes = 0;
+ handle_128->handle_bytes = 128;
+ handle_256->handle_bytes = 256;
+
+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
+
+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
+ handle_0 + sizeof(struct file_handle));
handle->handle_bytes = 0;
- assert(name_to_handle_at(dirfd, ".", handle, &mount_id, flags | 1) == -1);
+ assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
+ flags | 1) == -1);
if (EINVAL != errno)
perror_msg_and_skip("name_to_handle_at");
printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p"
", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id);
- assert(name_to_handle_at(dirfd, ".", handle, &mount_id, flags) == -1);
+ assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
+ flags) == -1);
if (EOVERFLOW != errno)
perror_msg_and_skip("name_to_handle_at");
printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}"
", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
handle->handle_bytes, &mount_id);
- assert(name_to_handle_at(dirfd, ".", handle, &mount_id, flags) == 0);
+ assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
+ flags) == 0);
printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u"
", handle_type=%d, f_handle=0x",
handle->handle_bytes, handle->handle_type);
@@ -72,15 +305,52 @@
", f_handle=0x", handle->handle_bytes, handle->handle_type);
for (i = 0; i < handle->handle_bytes; ++i)
printf("%02x", handle->f_handle[i]);
- int rc = open_by_handle_at(-1, handle, O_RDONLY | O_DIRECTORY);
+ int rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
+ for (i = 0; i < ARRAY_SIZE(dirfds); i++) {
+ for (j = 0; j < ARRAY_SIZE(paths); j++) {
+ for (k = 0; k < ARRAY_SIZE(name_handles); k++) {
+ for (l = 0; l < ARRAY_SIZE(mount_ids); l++) {
+ for (m = 0; m < ARRAY_SIZE(name_flags);
+ m++) {
+ do_name_to_handle_at(
+ dirfds[i].val,
+ dirfds[i].str,
+ paths[j].val,
+ paths[j].str,
+ name_handles[k].val,
+ name_handles[k].str,
+ mount_ids[l],
+ name_flags[m].val,
+ name_flags[m].str,
+ ASSERT_ERROR, 0);
+ }
+ }
+ }
+ }
+ }
+
+ for (i = 0; i < ARRAY_SIZE(mount_fds); i++) {
+ for (j = 0; j < ARRAY_SIZE(open_handles); j++) {
+ for (k = 0; k < ARRAY_SIZE(open_flags); k++) {
+ do_open_by_handle_at(mount_fds[i],
+ open_handles[j].addr,
+ open_handles[j].valid,
+ open_handles[j].valid_data,
+ open_flags[k].val,
+ open_flags[k].str);
+ }
+ }
+ }
+
puts("+++ exited with 0 +++");
return 0;
}
#else
-SKIP_MAIN_UNDEFINED("MAX_HANDLE_SZ")
+SKIP_MAIN_UNDEFINED("__NR_name_to_handle_at && __NR_open_by_handle_at")
#endif
diff --git a/tests/fill_memory.c b/tests/fill_memory.c
new file mode 100644
index 0000000..a0aeccb
--- /dev/null
+++ b/tests/fill_memory.c
@@ -0,0 +1,19 @@
+#include "tests.h"
+
+void
+fill_memory_ex(void *ptr, size_t size, unsigned char start,
+ unsigned char period)
+{
+ unsigned char *p = ptr;
+ size_t i;
+
+ for (i = 0; i < size; i++) {
+ p[i] = start + i % period;
+ }
+}
+
+void
+fill_memory(void *ptr, size_t size)
+{
+ fill_memory_ex(ptr, size, 0x80, 0x80);
+}
diff --git a/tests/finit_module.c b/tests/finit_module.c
new file mode 100644
index 0000000..3f0178f
--- /dev/null
+++ b/tests/finit_module.c
@@ -0,0 +1,118 @@
+/*
+ * Check decoding of finit_module syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+#include "scno.h"
+
+#if defined(__NR_finit_module)
+
+# include <stdio.h>
+# include <unistd.h>
+
+# include "init_delete_module.h"
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_fd =
+ (kernel_ulong_t) 0xdeb0d1edbeeff00dULL;
+
+ static const struct {
+ kernel_ulong_t val;
+ const char *str;
+ } flags[] = {
+ { ARG_STR(0) },
+ { (kernel_ulong_t) 0xffffffff00000002ULL,
+ "MODULE_INIT_IGNORE_VERMAGIC" },
+ { (kernel_ulong_t) 0xbadc0deddefaced0ULL,
+ "0xdefaced0 /* MODULE_INIT_??? */" },
+ { (kernel_ulong_t) 0xfacef157dec0ded1ULL,
+ "MODULE_INIT_IGNORE_MODVERSIONS|0xdec0ded0" },
+ { -1LL, "MODULE_INIT_IGNORE_MODVERSIONS|"
+ "MODULE_INIT_IGNORE_VERMAGIC|0xfffffffc" },
+ };
+
+ long rc;
+ char *bogus_param1 = tail_alloc(PARAM1_LEN);
+ char *bogus_param2 = tail_alloc(PARAM2_LEN);
+ const char *errstr;
+
+ fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
+ fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
+
+ rc = syscall(__NR_finit_module, bogus_zero, NULL, bogus_zero);
+ printf("finit_module(0, NULL, 0) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_finit_module, bogus_fd, bogus_param1, flags[0].val);
+ errstr = sprintrc(rc);
+
+ printf("finit_module(%d, \"", (int) bogus_fd);
+ print_str(PARAM1_BASE, MAX_STRLEN, false);
+ printf("\"..., %s) = %s\n", flags[0].str, errstr);
+
+ bogus_param1[PARAM1_LEN - 1] = '\0';
+
+ rc = syscall(__NR_finit_module, bogus_fd, bogus_param1, flags[1].val);
+ errstr = sprintrc(rc);
+
+ printf("finit_module(%d, \"", (int) bogus_fd);
+ print_str(PARAM1_BASE, MAX_STRLEN, false);
+ printf("\", %s) = %s\n", flags[1].str, errstr);
+
+ rc = syscall(__NR_finit_module, bogus_fd, bogus_param2 + PARAM2_LEN,
+ flags[2].val);
+ printf("finit_module(%d, %p, %s) = %s\n",
+ (int) bogus_fd, bogus_param2 + PARAM2_LEN, flags[2].str,
+ sprintrc(rc));
+
+ rc = syscall(__NR_finit_module, bogus_fd, bogus_param2, flags[3].val);
+ printf("finit_module(%d, %p, %s) = %s\n",
+ (int) bogus_fd, bogus_param2, flags[3].str, sprintrc(rc));
+
+ bogus_param2[PARAM2_LEN - 1] = '\0';
+
+ rc = syscall(__NR_finit_module, bogus_fd, bogus_param2, flags[4].val);
+ errstr = sprintrc(rc);
+
+ printf("finit_module(%d, \"", (int) bogus_fd);
+ print_str(PARAM2_BASE, PARAM2_LEN - 1, true);
+ printf("\", %s) = %s\n", flags[4].str, errstr);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_finit_module");
+
+#endif
diff --git a/tests/finit_module.test b/tests/finit_module.test
new file mode 100755
index 0000000..bd644f3
--- /dev/null
+++ b/tests/finit_module.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of finit_module syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/flock.c b/tests/flock.c
index cb231d5..c154e43 100644
--- a/tests/flock.c
+++ b/tests/flock.c
@@ -10,7 +10,7 @@
int
main(void)
{
- const unsigned long fd = (long int) 0xdeadbeefffffffff;
+ const unsigned long fd = (long int) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_flock, fd, LOCK_SH);
printf("flock(%d, LOCK_SH) = %ld %s (%m)\n",
diff --git a/tests/fstat.c b/tests/fstat.c
index 9ddc811..12df3e1 100644
--- a/tests/fstat.c
+++ b/tests/fstat.c
@@ -32,7 +32,7 @@
# define TEST_SYSCALL_NR __NR_fstat
# define TEST_SYSCALL_STR "fstat"
-# define SAMPLE_SIZE ((kernel_ulong_t) 43147718418)
+# define SAMPLE_SIZE ((libc_off_t) (kernel_ulong_t) 43147718418ULL)
# include "fstatx.c"
#else
diff --git a/tests/fstat.test b/tests/fstat.test
index 506b440..2ba0fba 100755
--- a/tests/fstat.test
+++ b/tests/fstat.test
@@ -12,7 +12,7 @@
run_prog > /dev/null
sample=$syscall.sample
> "$sample"
-run_strace -ve$syscall -P$sample $args > "$OUT"
+run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
match_diff "$LOG" "$OUT"
rm -f "$OUT"
diff --git a/tests/fstat64.c b/tests/fstat64.c
index cf147df..a9c2e07 100644
--- a/tests/fstat64.c
+++ b/tests/fstat64.c
@@ -35,7 +35,6 @@
# define STRUCT_STAT struct stat64
# define STRUCT_STAT_STR "struct stat64"
# define STRUCT_STAT_IS_STAT64 1
-# define SAMPLE_SIZE ((libc_off_t) 43147718418)
# include "fstatx.c"
#else
diff --git a/tests/fstatat.c b/tests/fstatat.c
index ff47601..66138c2 100644
--- a/tests/fstatat.c
+++ b/tests/fstatat.c
@@ -28,11 +28,15 @@
#ifdef HAVE_FSTATAT
# define TEST_SYSCALL_INVOKE(sample, pst) \
- fstatat(AT_FDCWD, sample, pst, AT_SYMLINK_NOFOLLOW)
+ syscall(TEST_SYSCALL_NR, AT_FDCWD, sample, pst, AT_SYMLINK_NOFOLLOW)
# define PRINT_SYSCALL_HEADER(sample) \
- printf("%s(AT_FDCWD, \"%s\", ", TEST_SYSCALL_STR, sample)
-# define PRINT_SYSCALL_FOOTER \
- puts(", AT_SYMLINK_NOFOLLOW) = 0")
+ do { \
+ int saved_errno = errno; \
+ printf("%s(AT_FDCWD, \"%s\", ", TEST_SYSCALL_STR, sample)
+# define PRINT_SYSCALL_FOOTER(rc) \
+ errno = saved_errno; \
+ printf(", AT_SYMLINK_NOFOLLOW) = %s\n", sprintrc(rc)); \
+ } while (0)
# include "xstatx.c"
diff --git a/tests/fstatat64.c b/tests/fstatat64.c
index fa8992d..03082a8 100644
--- a/tests/fstatat64.c
+++ b/tests/fstatat64.c
@@ -32,6 +32,9 @@
# define TEST_SYSCALL_NR __NR_fstatat64
# define TEST_SYSCALL_STR "fstatat64"
+# define STRUCT_STAT struct stat64
+# define STRUCT_STAT_STR "struct stat64"
+# define STRUCT_STAT_IS_STAT64 1
# include "fstatat.c"
#else
diff --git a/tests/fstatx.c b/tests/fstatx.c
index 890e30d..f88d9a9 100644
--- a/tests/fstatx.c
+++ b/tests/fstatx.c
@@ -25,13 +25,16 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#define IS_FSTAT 1
#define TEST_SYSCALL_INVOKE(sample, pst) \
syscall(TEST_SYSCALL_NR, 0, pst)
#define PRINT_SYSCALL_HEADER(sample) \
- printf("%s(0, ", TEST_SYSCALL_STR)
-#define PRINT_SYSCALL_FOOTER \
- puts(") = 0")
-
-#define USE_ASM_STAT
+ do { \
+ int saved_errno = errno; \
+ printf("%s(0, ", TEST_SYSCALL_STR)
+#define PRINT_SYSCALL_FOOTER(rc) \
+ errno = saved_errno; \
+ printf(") = %s\n", sprintrc(rc)); \
+ } while (0)
#include "xstatx.c"
diff --git a/tests/fsync.c b/tests/fsync.c
index 42aa5c7..2f50410 100644
--- a/tests/fsync.c
+++ b/tests/fsync.c
@@ -9,7 +9,7 @@
int
main(void)
{
- const long int fd = (long int) 0xdeadbeefffffffff;
+ const long int fd = (long int) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_fsync, fd);
printf("fsync(%d) = %ld %s (%m)\n", (int) fd, rc, errno2name());
diff --git a/tests/ftruncate.c b/tests/ftruncate.c
index 315f7bf..ee17455 100644
--- a/tests/ftruncate.c
+++ b/tests/ftruncate.c
@@ -33,8 +33,6 @@
# include <stdio.h>
# include <unistd.h>
-# include "kernel_types.h"
-
int
main(void)
{
diff --git a/tests/ftruncate64.c b/tests/ftruncate64.c
index 7530e70..90d9938 100644
--- a/tests/ftruncate64.c
+++ b/tests/ftruncate64.c
@@ -36,7 +36,7 @@
int
main(void)
{
- const off_t len = 0xdefaceddeadbeef;
+ const off_t len = 0xdefaceddeadbeefULL;
int rc = ftruncate(-1, len);
printf("ftruncate64(-1, %llu) = %d %s (%m)\n",
diff --git a/tests/futex.c b/tests/futex.c
index 7cc6cc4..586b95d 100644
--- a/tests/futex.c
+++ b/tests/futex.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -189,14 +189,14 @@
/* uaddr is NULL */
CHECK_FUTEX(NULL, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
(rc == -1) && (errno == EFAULT));
- printf("futex(NULL, FUTEX_WAIT, %u, {%jd, %jd}) = %s\n",
+ printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
VAL_PR, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
sprintrc(rc));
/* uaddr is faulty */
CHECK_FUTEX(uaddr + 1, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
(rc == -1) && (errno == EFAULT));
- printf("futex(%p, FUTEX_WAIT, %u, {%jd, %jd}) = %s\n",
+ printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
uaddr + 1, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, sprintrc(rc));
@@ -209,14 +209,15 @@
/* uaddr is not as provided; uaddr2 is faulty but ignored */
CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2 + 1, VAL3,
(rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT, %u, {%jd, %jd}) = %s\n",
+ printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, sprintrc(rc));
/* uaddr is not as provided; uaddr2 is faulty but ignored */
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT, VAL, tmout,
uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {%jd, %jd}) = %s\n",
+ printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
+ "%s\n",
uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, sprintrc(rc));
@@ -227,7 +228,7 @@
FUTEX_CLOCK_REALTIME | FUTEX_WAIT,
VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u, "
- "{%jd, %jd}) = %s\n", uaddr, VAL_PR,
+ "{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
sprintrc(rc));
@@ -235,7 +236,7 @@
FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG | FUTEX_WAIT ,
VAL, tmout, uaddr2, 0, (rc == -1) && (errno == EAGAIN));
printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
- "{%jd, %jd}) = %s\n", uaddr, VAL_PR,
+ "{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
sprintrc(rc));
@@ -253,21 +254,24 @@
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1,
VAL3, (rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_BITSET, %u, {%jd, %jd}, %#x) = %s\n",
+ printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
+ "%#x) = %s\n",
uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
/* val3 of 0 is invalid */
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, 0,
(rc == -1) && (errno == EINVAL));
- printf("futex(%p, FUTEX_WAIT_BITSET, %u, {%jd, %jd}, %#x) = %s\n",
+ printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
+ "%#x) = %s\n",
uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, 0, sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_BITSET, VAL,
tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u, {%jd, %jd}, %#x) = "
- "%s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
+ printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u, "
+ "{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n",
+ uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
/* Next 3 tests are with CLOCKRT bit set */
@@ -275,7 +279,7 @@
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
- "{%jd, %jd}, %#x) = %s\n", uaddr, VAL_PR,
+ "{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
sprintrc(rc));
@@ -283,7 +287,7 @@
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
tmout, uaddr2 + 1, 0, (rc == -1) && (errno == EINVAL));
printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
- "{%jd, %jd}, %#x) = %s\n", uaddr, VAL_PR,
+ "{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, 0,
sprintrc(rc));
@@ -291,7 +295,7 @@
FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, VAL3,
(rc == -1) && (errno == EAGAIN));
printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
- "{%jd, %jd}, %#x) = %s\n", uaddr, VAL_PR,
+ "{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
sprintrc(rc));
@@ -470,42 +474,47 @@
int err;
const char *errstr;
} wake_ops[] = {
- { 0x00000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 0}" },
- { 0x00fff000, "{FUTEX_OP_SET, 4095, FUTEX_OP_CMP_EQ, 0}" },
- { 0x00000fff, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 4095}" },
- { 0x00ffffff, "{FUTEX_OP_SET, 4095, FUTEX_OP_CMP_EQ, 4095}" },
- { 0x10000000, "{FUTEX_OP_ADD, 0, FUTEX_OP_CMP_EQ, 0}" },
- { 0x20000000, "{FUTEX_OP_OR, 0, FUTEX_OP_CMP_EQ, 0}" },
- { 0x30000000, "{FUTEX_OP_ANDN, 0, FUTEX_OP_CMP_EQ, 0}" },
- { 0x40000000, "{FUTEX_OP_XOR, 0, FUTEX_OP_CMP_EQ, 0}" },
- { 0x50000000, "{0x5 /* FUTEX_OP_??? */, 0, FUTEX_OP_CMP_EQ, 0}",
+ { 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
+ { 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|"
+ "0" },
+ { 0x00000fff, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|"
+ "0xfff" },
+ { 0x00ffffff, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|"
+ "0xfff" },
+ { 0x10000000, "FUTEX_OP_ADD<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
+ { 0x20000000, "FUTEX_OP_OR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
+ { 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
+ { 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
+ { 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|"
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ { 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|"
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ { 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|"
+ "FUTEX_OP_CMP_EQ<<24|0" },
+ { 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|"
+ "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" },
+ { 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" },
+ { 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|"
+ "0x567" },
+ { 0x02000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_LT<<24|0" },
+ { 0x03000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_LE<<24|0" },
+ { 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" },
+ { 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" },
+ { 0x06000000, "FUTEX_OP_SET<<28|0<<12|"
+ "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ { 0x07000000, "FUTEX_OP_SET<<28|0<<12|"
+ "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ { 0x08000000, "FUTEX_OP_SET<<28|0<<12|"
+ "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ { 0x0f000000, "FUTEX_OP_SET<<28|0<<12|"
+ "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ { 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|"
+ "0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced",
ENOSYS, "ENOSYS" },
- { 0x70000000, "{0x7 /* FUTEX_OP_??? */, 0, FUTEX_OP_CMP_EQ, 0}",
+ { 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|"
+ "0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|"
+ "0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff",
ENOSYS, "ENOSYS" },
- { 0x80000000, "{FUTEX_OP_OPARG_SHIFT|FUTEX_OP_SET, 0, "
- "FUTEX_OP_CMP_EQ, 0}" },
- { 0xa0caffee, "{FUTEX_OP_OPARG_SHIFT|FUTEX_OP_OR, 3247, "
- "FUTEX_OP_CMP_EQ, 4078}" },
- { 0x01000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_NE, 0}" },
- { 0x01234567, "{FUTEX_OP_SET, 564, FUTEX_OP_CMP_NE, 1383}" },
- { 0x02000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_LT, 0}" },
- { 0x03000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_LE, 0}" },
- { 0x04000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 0}" },
- { 0x05000000, "{FUTEX_OP_SET, 0, FUTEX_OP_CMP_GE, 0}" },
- { 0x06000000, "{FUTEX_OP_SET, 0, 0x6 /* FUTEX_OP_CMP_??? */, "
- "0}", ENOSYS, "ENOSYS" },
- { 0x07000000, "{FUTEX_OP_SET, 0, 0x7 /* FUTEX_OP_CMP_??? */, "
- "0}", ENOSYS, "ENOSYS" },
- { 0x08000000, "{FUTEX_OP_SET, 0, 0x8 /* FUTEX_OP_CMP_??? */, "
- "0}", ENOSYS, "ENOSYS" },
- { 0x0f000000, "{FUTEX_OP_SET, 0, 0xf /* FUTEX_OP_CMP_??? */, "
- "0}", ENOSYS, "ENOSYS" },
- { 0xbadfaced, "{FUTEX_OP_OPARG_SHIFT|FUTEX_OP_ANDN, "
- "3578, 0xa /* FUTEX_OP_CMP_??? */, 3309}", ENOSYS,
- "ENOSYS" },
- { 0xffffffff, "{FUTEX_OP_OPARG_SHIFT|0x7 /* FUTEX_OP_??? */, "
- "4095, 0xf /* FUTEX_OP_CMP_??? */, 4095}", ENOSYS,
- "ENOSYS" },
};
for (i = 0; i < ARRAY_SIZE(wake_ops); i++) {
@@ -522,8 +531,8 @@
CHECK_INVALID_CLOCKRT(FUTEX_WAKE_OP, ARG3 | ARG4 | ARG5 | ARG6,
"%u", "%u", "%#lx",
/* Decoding of the 0xdeadbee4 value */
- "{FUTEX_OP_OPARG_SHIFT|0x5 /* FUTEX_OP_??? */, 2779, "
- "0xe /* FUTEX_OP_CMP_??? */, 3812}");
+ "FUTEX_OP_OPARG_SHIFT<<28|0x5<<28 /* FUTEX_OP_??? */|0xadb<<12|"
+ "0xe<<24 /* FUTEX_OP_CMP_??? */|0xee4");
/* FUTEX_LOCK_PI - slow path for mutex lock with process inheritance
* support. Expect that futex has 0 in unlocked case and
@@ -543,13 +552,14 @@
CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_LOCK_PI, VAL, tmout, uaddr2 + 1,
VAL3, (rc == -1) && (errno == EFAULT));
- printf("futex(%p, FUTEX_LOCK_PI, {%jd, %jd}) = %s\n",
+ printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_LOCK_PI, VAL,
tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
- printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {%jd, %jd}) = %s\n",
+ printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%jd, tv_nsec=%jd}) = "
+ "%s\n",
uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
sprintrc(rc));
@@ -623,20 +633,22 @@
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2,
VAL3, (rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u, {%jd, %jd}, %p) = %s\n",
+ printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u, "
+ "{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n",
uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_REQUEUE_PI,
VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u, {%jd, %jd}, %p) "
+ printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u, "
+ "{tv_sec=%jd, tv_nsec=%jd}, %p) "
"= %s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_REQUEUE_PI,
VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u, "
- "{%jd, %jd}, %p) = %s\n", uaddr, VAL_PR,
+ "{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
sprintrc(rc));
@@ -644,7 +656,7 @@
FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2, VAL3,
(rc == -1) && (errno == EAGAIN));
printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME, "
- "%u, {%jd, %jd}, %p) = %s\n", uaddr, VAL_PR,
+ "%u, {tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
sprintrc(rc));
diff --git a/tests/futimesat.c b/tests/futimesat.c
index 4e76cc8..c356629 100644
--- a/tests/futimesat.c
+++ b/tests/futimesat.c
@@ -32,14 +32,11 @@
#ifdef __NR_futimesat
+# include <stdint.h>
# include <stdio.h>
# include <sys/time.h>
# include <unistd.h>
-#define CAST_NUM(n) \
- (sizeof(n) == sizeof(long) ? \
- (unsigned long long) (unsigned long) (n) : \
- (unsigned long long) (n))
int
main(void)
@@ -49,30 +46,36 @@
perror_msg_and_fail("gettimeofday");
static const char sample[] = "futimesat_sample";
- unsigned long dirfd = (unsigned long) 0xdeadbeef00000000 | -100U;
+ unsigned long dirfd = (unsigned long) 0xdeadbeef00000000ULL | -100U;
long rc = syscall(__NR_futimesat, dirfd, sample, 0);
printf("futimesat(AT_FDCWD, \"%s\", NULL) = %ld %s (%m)\n",
sample, rc, errno2name());
struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
- dirfd = (unsigned long) 0xdeadbeefffffffff;
-
- rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
- printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
- (int) dirfd, ts + 1, rc, errno2name());
+ dirfd = (unsigned long) 0xdeadbeefffffffffULL;
ts[0].tv_sec = tv.tv_sec;
ts[0].tv_usec = tv.tv_usec;
ts[1].tv_sec = tv.tv_sec - 1;
ts[1].tv_usec = tv.tv_usec + 1;
+ rc = syscall(__NR_futimesat, dirfd, 0, ts + 2);
+ printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
+ (int) dirfd, ts + 2, rc, errno2name());
+
+ rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
+ printf("futimesat(%d, NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
+ "%ld %s (%m)\n", (int) dirfd,
+ (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
+ ts + 2, rc, errno2name());
+
(void) close(0);
rc = syscall(__NR_futimesat, 0, "", ts);
- printf("futimesat(0, \"\", [{%llu, %llu}, {%llu, %llu}])"
- " = %ld %s (%m)\n",
- CAST_NUM(ts[0].tv_sec), CAST_NUM(ts[0].tv_usec),
- CAST_NUM(ts[1].tv_sec), CAST_NUM(ts[1].tv_usec),
+ printf("futimesat(0, \"\", [{tv_sec=%jd, tv_usec=%jd}, "
+ "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
+ (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
+ (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
rc, errno2name());
puts("+++ exited with 0 +++");
diff --git a/tests/get_mempolicy.c b/tests/get_mempolicy.c
index 6be3ef2..03d1bff 100644
--- a/tests/get_mempolicy.c
+++ b/tests/get_mempolicy.c
@@ -81,9 +81,9 @@
puts("get_mempolicy(NULL, NULL, 0, NULL, 0) = 0");
int *mode = (void *) 0xdefaced1baddeed2;
- unsigned long maxnode = (unsigned long) 0xcafef00dbadc0ded;
- const unsigned long *nodemask = (void *) 0xfacedad3bebefed4;
- const unsigned long addr = (unsigned long) 0xfacefeeddeadbeef;
+ unsigned long maxnode = (unsigned long) 0xcafef00dbadc0dedULL;
+ const unsigned long *nodemask = (void *) 0xfacedad3bebefed4ULL;
+ const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
const unsigned long flags = -1U;
rc = syscall(__NR_get_mempolicy, mode, nodemask, maxnode, addr, flags);
printf("get_mempolicy(%p, %p, %lu, %#lx, %s|%#lx) = %ld %s (%m)\n",
diff --git a/tests/getcpu.c b/tests/getcpu.c
index baef1bb..ec671f1 100644
--- a/tests/getcpu.c
+++ b/tests/getcpu.c
@@ -1,7 +1,7 @@
/*
* Check decoding of getcpu syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,12 @@
int
main(void)
{
- static const unsigned *bogus_cpu =
- (unsigned *) (unsigned long) 0xfffffeedfffffaceULL;
- static const unsigned *bogus_node =
- (unsigned *) (unsigned long) 0xfffffca7ffffc0deULL;
- static const unsigned *bogus_tcache =
- (unsigned *) (unsigned long) 0xffffda7affffdeadULL;
+ unsigned *bogus_cpu =
+ (unsigned *) tail_alloc(sizeof(* bogus_cpu)) + 1;
+ unsigned *bogus_node =
+ (unsigned *) tail_alloc(sizeof(* bogus_node)) + 1;
+ unsigned *bogus_tcache =
+ (unsigned *) tail_alloc(sizeof(* bogus_tcache)) + 1;
long res;
unsigned *cpu = tail_alloc(sizeof(*cpu));
diff --git a/tests/getdents.c b/tests/getdents.c
index 5e64234..b787c83 100644
--- a/tests/getdents.c
+++ b/tests/getdents.c
@@ -37,7 +37,6 @@
# include <stdio.h>
# include <sys/stat.h>
# include <unistd.h>
-# include "kernel_types.h"
static const char fname[] =
"A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
@@ -106,12 +105,13 @@
assert(!close(0));
assert(!open(".", O_RDONLY | O_DIRECTORY));
- unsigned long count = (unsigned long) 0xfacefeeddeadbeef;
- long rc = syscall(__NR_getdents, (long) 0xdefacedffffffff, NULL, count);
+ unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
+ long rc = syscall(__NR_getdents, (long) 0xdefacedffffffffULL, NULL,
+ count);
printf("getdents(-1, NULL, %u) = %ld %s (%m)\n",
(unsigned) count, rc, errno2name());
- count = (unsigned long) 0xfacefeed00000000 | sizeof(buf);
+ count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
while ((rc = syscall(__NR_getdents, 0, buf, count))) {
kernel_dirent *d;
long i;
diff --git a/tests/getdents64.c b/tests/getdents64.c
index 2243b84..9da2a23 100644
--- a/tests/getdents64.c
+++ b/tests/getdents64.c
@@ -111,12 +111,13 @@
assert(!close(0));
assert(!open(".", O_RDONLY | O_DIRECTORY));
- unsigned long count = (unsigned long) 0xfacefeeddeadbeef;
- long rc = syscall(__NR_getdents64, (long) 0xdefacedffffffff, NULL, count);
+ unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
+ long rc = syscall(__NR_getdents64, (long) 0xdefacedffffffffULL, NULL,
+ count);
printf("getdents64(-1, NULL, %u) = %ld %s (%m)\n",
(unsigned) count, rc, errno2name());
- count = (unsigned long) 0xfacefeed00000000 | sizeof(buf);
+ count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
while ((rc = syscall(__NR_getdents64, 0, buf, count))) {
kernel_dirent64 *d;
long i;
diff --git a/tests/getgroups.c b/tests/getgroups.c
index 4abcdef..2617303 100644
--- a/tests/getgroups.c
+++ b/tests/getgroups.c
@@ -67,7 +67,7 @@
if (i != ngroups)
perror_msg_and_fail("%s(%#lx, %p)", SYSCALL_NAME, size, g);
- printf("%s(%u, [", SYSCALL_NAME, (unsigned) size);
+ printf("%s(%d, [", SYSCALL_NAME, (int) size);
for (i = 0; i < ngroups; ++i) {
if (i)
printf(", ");
@@ -95,18 +95,18 @@
printf("%s(0, NULL) = %ld\n", SYSCALL_NAME, rc);
rc = syscall(SYSCALL_NR, -1U, 0);
- printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
+ printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
rc = syscall(SYSCALL_NR, -1L, 0);
- printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
+ printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
const unsigned int ngroups_max = sysconf(_SC_NGROUPS_MAX);
rc = syscall(SYSCALL_NR, ngroups_max, 0);
- printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
+ printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL | ngroups_max, 0);
- printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
+ printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
/* check how the second argument is decoded */
GID_TYPE *const g1 =
@@ -120,7 +120,7 @@
if (ngroups) {
rc = syscall(SYSCALL_NR, ngroups, efault);
- printf("%s(%u, %p) = %s\n",
+ printf("%s(%d, %p) = %s\n",
SYSCALL_NAME, (unsigned) ngroups, efault, sprintrc(rc));
}
diff --git a/tests/getrandom.test b/tests/getrandom.test
index e06367c..ad34048 100755
--- a/tests/getrandom.test
+++ b/tests/getrandom.test
@@ -3,4 +3,4 @@
# Check getrandom syscall decoding.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -xx -s3
+run_strace_match_diff -a32 -s3
diff --git a/tests/getrusage.c b/tests/getrusage.c
index 3c09aa6..8b76eff 100644
--- a/tests/getrusage.c
+++ b/tests/getrusage.c
@@ -41,16 +41,16 @@
{
struct rusage *const usage = tail_alloc(sizeof(struct rusage));
int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage);
- printf("getrusage(RUSAGE_SELF, {ru_utime={%ju, %ju}"
- ", ru_stime={%ju, %ju}, ru_maxrss=%lu, ru_ixrss=%lu"
- ", ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
+ printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}"
+ ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu"
+ ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n",
- (uintmax_t) usage->ru_utime.tv_sec,
- (uintmax_t) usage->ru_utime.tv_usec,
- (uintmax_t) usage->ru_stime.tv_sec,
- (uintmax_t) usage->ru_stime.tv_usec,
+ (intmax_t) usage->ru_utime.tv_sec,
+ (intmax_t) usage->ru_utime.tv_usec,
+ (intmax_t) usage->ru_stime.tv_sec,
+ (intmax_t) usage->ru_stime.tv_usec,
usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
diff --git a/tests/init.sh b/tests/init.sh
index 46a08f9..f368b98 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -166,7 +166,7 @@
# dump both files and fail with ERROR_MESSAGE.
match_grep()
{
- local output patterns error pattern failed=
+ local output patterns error pattern cnt failed=
if [ $# -eq 0 ]; then
output="$LOG"
else
@@ -186,14 +186,16 @@
check_prog wc
check_prog grep
+ cnt=1
while read -r pattern; do
LC_ALL=C grep -E -x -e "$pattern" < "$output" > /dev/null || {
test -n "$failed" || {
echo 'Failed patterns of expected output:'
failed=1
}
- printf '%s\n' "$pattern"
+ printf '#%d: %s\n' "$cnt" "$pattern"
}
+ cnt=$(($cnt + 1))
done < "$patterns"
test -z "$failed" || {
echo 'Actual output:'
@@ -214,12 +216,55 @@
rm -f "$EXP"
}
+# Print kernel version code.
+# usage: kernel_version_code $(uname -r)
+kernel_version_code()
+{
+ (
+ set -f
+ IFS=.
+ set -- $1
+ v1="${1%%[!0-9]*}" && [ -n "$v1" ] || v1=0
+ v2="${2%%[!0-9]*}" && [ -n "$v2" ] || v2=0
+ v3="${3%%[!0-9]*}" && [ -n "$v3" ] || v3=0
+ echo "$(($v1 * 65536 + $v2 * 256 + $v3))"
+ )
+}
+
+# Usage: require_min_kernel_version_or_skip 3.0
+require_min_kernel_version_or_skip()
+{
+ local uname_r
+ uname_r="$(uname -r)"
+
+ [ "$(kernel_version_code "$uname_r")" -ge \
+ "$(kernel_version_code "$1")" ] ||
+ skip_ "the kernel release $uname_r is not $1 or newer"
+}
+
+# Usage: grep_pid_status $pid GREP-OPTIONS...
+grep_pid_status()
+{
+ local pid
+ pid=$1; shift
+ cat < "/proc/$pid/status" | grep "$@"
+}
+
check_prog cat
check_prog rm
rm -f "$LOG"
-: "${STRACE:=../strace}"
+[ -n "${STRACE-}" ] || {
+ STRACE=../strace
+ case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
+ *--suppressions=*--error-exitcode=*--tool=*)
+ # add valgrind command prefix
+ STRACE="${LOG_COMPILER-} ${LOG_FLAGS-} $STRACE"
+ ;;
+ esac
+}
+
: "${TIMEOUT_DURATION:=60}"
: "${SLEEP_A_BIT:=sleep 1}"
diff --git a/tests/init_delete_module.h b/tests/init_delete_module.h
new file mode 100644
index 0000000..db550c3
--- /dev/null
+++ b/tests/init_delete_module.h
@@ -0,0 +1,64 @@
+/*
+ * Helper header containing common code for finit_module, init_module,
+ * and delete_module tests.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef STRACE_TESTS_INIT_DELETE_MODULE_H
+#define STRACE_TESTS_INIT_DELETE_MODULE_H
+
+# include <stdbool.h>
+# include <stdio.h>
+
+enum {
+ PARAM1_LEN = 33,
+ PARAM2_LEN = 8,
+ PARAM1_BASE = 0x30,
+ PARAM2_BASE = 0x80,
+ MAX_STRLEN = 32,
+};
+
+static const kernel_ulong_t bogus_zero =
+ (kernel_ulong_t) 0xffffffff00000000ULL;
+
+static void
+print_str(unsigned int base, unsigned int len, bool escape)
+{
+ unsigned int i;
+
+ if (!escape) {
+ for (i = base; i < (base + len); i++)
+ putc(i, stdout);
+
+ return;
+ }
+
+ for (i = base; i < (base + len); i++)
+ printf("\\%u%u%u", (i >> 6) & 0x3, (i >> 3) & 0x7, i & 0x7);
+}
+
+#endif /* !STRACE_TESTS_INIT_DELETE_MODULE_H */
diff --git a/tests/init_module.c b/tests/init_module.c
new file mode 100644
index 0000000..88ef9ec
--- /dev/null
+++ b/tests/init_module.c
@@ -0,0 +1,106 @@
+/*
+ * Check decoding of init_module syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_init_module)
+
+# include <stdio.h>
+# include <unistd.h>
+
+# include "init_delete_module.h"
+
+int
+main(void)
+{
+
+ static const kernel_ulong_t bogus_addr =
+ (kernel_ulong_t) 0xfffffeedfffffaceULL;
+ static const kernel_ulong_t bogus_len =
+ (kernel_ulong_t) 0xfffffca7ffffc0deULL;
+
+ long rc;
+ char *bogus_param1 = tail_alloc(PARAM1_LEN);
+ char *bogus_param2 = tail_alloc(PARAM2_LEN);
+ const char *errstr;
+
+ fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
+ fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
+
+ rc = syscall(__NR_init_module, NULL, bogus_zero, NULL);
+ printf("init_module(NULL, %llu, NULL) = %s\n",
+ (unsigned long long) bogus_zero, sprintrc(rc));
+
+ rc = syscall(__NR_init_module, bogus_addr, 0, bogus_param1);
+ errstr = sprintrc(rc);
+
+ printf("init_module(%#llx, 0, \"", (unsigned long long) bogus_addr);
+ print_str(PARAM1_BASE, MAX_STRLEN, false);
+ printf("\"...) = %s\n", errstr);
+
+ bogus_param1[PARAM1_LEN - 1] = '\0';
+
+ rc = syscall(__NR_init_module, bogus_addr, 0, bogus_param1);
+ errstr = sprintrc(rc);
+
+ printf("init_module(%#llx, 0, \"", (unsigned long long) bogus_addr);
+ print_str(PARAM1_BASE, MAX_STRLEN, false);
+ printf("\") = %s\n", errstr);
+
+ rc = syscall(__NR_init_module, bogus_addr, bogus_len,
+ bogus_param2 + PARAM2_LEN);
+ printf("init_module(%#llx, %llu, %p) = %s\n",
+ (unsigned long long) bogus_addr, (unsigned long long) bogus_len,
+ bogus_param2 + PARAM2_LEN, sprintrc(rc));
+
+ rc = syscall(__NR_init_module, NULL, bogus_len, bogus_param2);
+ printf("init_module(NULL, %llu, %p) = %s\n",
+ (unsigned long long) bogus_len, bogus_param2, sprintrc(rc));
+
+ bogus_param2[PARAM2_LEN - 1] = '\0';
+
+ rc = syscall(__NR_init_module, NULL, bogus_len, bogus_param2);
+ errstr = sprintrc(rc);
+
+ printf("init_module(NULL, %llu, \"", (unsigned long long) bogus_len);
+ print_str(PARAM2_BASE, PARAM2_LEN - 1, true);
+ printf("\") = %s\n", errstr);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_init_module");
+
+#endif
diff --git a/tests/init_module.test b/tests/init_module.test
new file mode 100755
index 0000000..ef7c732
--- /dev/null
+++ b/tests/init_module.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of init_module syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/inotify.c b/tests/inotify.c
new file mode 100644
index 0000000..925d69f
--- /dev/null
+++ b/tests/inotify.c
@@ -0,0 +1,90 @@
+/*
+ * Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_inotify_add_watch) && defined(__NR_inotify_rm_watch)
+
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const struct {
+ const char *path;
+ const char *str;
+ } bogus_path_str = {
+ ARG_STR("/abc\1/def\2/ghi\3/jkl\4/mno\5/pqr\6/stu\7/vwx\10") };
+ static const kernel_ulong_t bogus_fd =
+ (kernel_ulong_t) 0xfffffeedfffffaceULL;
+ static const kernel_ulong_t bogus_mask =
+ (kernel_ulong_t) 0xffffda7affffdeadULL;
+ static const char *bogus_mask_str = "IN_ACCESS|IN_ATTRIB|"
+ "IN_CLOSE_WRITE|IN_OPEN|IN_MOVED_TO|IN_DELETE|IN_DELETE_SELF|"
+ "IN_MOVE_SELF|IN_Q_OVERFLOW|IN_IGNORED|IN_ONLYDIR|"
+ "IN_DONT_FOLLOW|IN_EXCL_UNLINK|IN_MASK_ADD|IN_ISDIR|IN_ONESHOT|"
+ "0x18ff1000";
+
+ long rc;
+ char *bogus_path = tail_memdup(bogus_path_str.path,
+ strlen(bogus_path_str.path) + 1);
+
+ rc = syscall(__NR_inotify_add_watch, 0, NULL, 0);
+ printf("inotify_add_watch(0, NULL, 0) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_inotify_add_watch, bogus_fd, bogus_path + 4096, 0);
+ printf("inotify_add_watch(%d, %p, %u) = %s\n",
+ (int) bogus_fd, bogus_path + 4096, 0, sprintrc(rc));
+
+ rc = syscall(__NR_inotify_add_watch, bogus_fd, bogus_path, bogus_mask);
+ printf("inotify_add_watch(%d, %s, %s) = %s\n",
+ (int) bogus_fd, bogus_path_str.str, bogus_mask_str,
+ sprintrc(rc));
+
+ rc = syscall(__NR_inotify_rm_watch, 0, 0);
+ printf("inotify_rm_watch(0, 0) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_inotify_rm_watch, bogus_fd, bogus_fd);
+ printf("inotify_rm_watch(%d, %d) = %s\n",
+ (int) bogus_fd, (int) bogus_fd, sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_inotify_add_watch && __NR_inotify_rm_watch");
+
+#endif
diff --git a/tests/inotify.test b/tests/inotify.test
new file mode 100755
index 0000000..436f3bc
--- /dev/null
+++ b/tests/inotify.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=inotify_add_watch,inotify_rm_watch -a23
diff --git a/tests/inotify_init1.c b/tests/inotify_init1.c
new file mode 100644
index 0000000..0325150
--- /dev/null
+++ b/tests/inotify_init1.c
@@ -0,0 +1,80 @@
+/*
+ * Check decoding of inotify_init1 syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_inotify_init1)
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# ifdef O_CLOEXEC
+# define cloexec_flag O_CLOEXEC
+# else
+# define cloexec_flag 0
+# endif
+# define all_flags (O_NONBLOCK | cloexec_flag)
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_flags1 =
+ (kernel_ulong_t) 0xfacefeeddeadbeefULL | O_NONBLOCK;
+ static const kernel_ulong_t bogus_flags2 =
+ (kernel_ulong_t) 0x55555550ff96b77bULL & ~all_flags;
+
+ long rc;
+
+ rc = syscall(__NR_inotify_init1, bogus_flags1);
+ printf("inotify_init1(IN_NONBLOCK|%s%#x) = %s\n",
+ bogus_flags1 & cloexec_flag ? "IN_CLOEXEC|" : "",
+ (unsigned int) (bogus_flags1 & ~all_flags),
+ sprintrc(rc));
+
+ rc = syscall(__NR_inotify_init1, bogus_flags2);
+ printf("inotify_init1(%#x /* IN_??? */) = %s\n",
+ (unsigned int) bogus_flags2, sprintrc(rc));
+
+ rc = syscall(__NR_inotify_init1, all_flags);
+ printf("inotify_init1(IN_NONBLOCK%s) = %s\n",
+ all_flags & cloexec_flag ? "|IN_CLOEXEC" : "", sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_inotify_init1");
+
+#endif
diff --git a/tests/inotify_init1.test b/tests/inotify_init1.test
new file mode 100755
index 0000000..1a7c926
--- /dev/null
+++ b/tests/inotify_init1.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of inotify_init1 syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/ioctl.c b/tests/ioctl.c
index f05ff5c..92a3191 100644
--- a/tests/ioctl.c
+++ b/tests/ioctl.c
@@ -88,8 +88,12 @@
printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, [MTD_OTP_OFF])"
" = -1 EBADF (%m)\n");
+ (void) ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), (kernel_ulong_t) -1ULL);
+ printf("ioctl(-1, _IOC(_IOC_WRITE, 0xde, 0, 0), %#lx)"
+ " = -1 EBADF (%m)\n", -1UL);
+
(void) ioctl(-1, _IOR(0xde, 0xad, data), &data);
- printf("ioctl(-1, _IOC(_IOC_READ, 0xde, 0xad, 0x08), %p)"
+ printf("ioctl(-1, _IOC(_IOC_READ, 0xde, 0xad, 0x8), %p)"
" = -1 EBADF (%m)\n", &data);
puts("+++ exited with 0 +++");
diff --git a/tests/ioctl_block.c b/tests/ioctl_block.c
index 07e7d34..f62b0b3 100644
--- a/tests/ioctl_block.c
+++ b/tests/ioctl_block.c
@@ -41,17 +41,7 @@
#include "xlat.h"
static const unsigned int magic = 0xdeadbeef;
-static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0ded;
-
-static void
-init_magic(void *addr, const unsigned int size)
-{
- unsigned int *p = addr;
- const unsigned int *end = addr + size - sizeof(int);
-
- for (; p <= end; ++p)
- *(unsigned int *) p = magic + (p - (unsigned int *) addr);
-}
+static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
static struct xlat block_argless[] = {
XLAT(BLKRRPART),
@@ -133,8 +123,8 @@
printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int);
uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2);
- pair_int64[0] = 0xdeadbeefbadc0ded;
- pair_int64[1] = 0xfacefeedcafef00d;
+ pair_int64[0] = 0xdeadbeefbadc0dedULL;
+ pair_int64[1] = 0xfacefeedcafef00dULL;
#ifdef BLKDISCARD
ioctl(-1, BLKDISCARD, pair_int64);
@@ -158,7 +148,7 @@
blkpg->op = 3;
blkpg->flags = 0xdeadbeef;
blkpg->datalen = 0xbadc0ded;
- blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeed;
+ blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL;
ioctl(-1, BLKPG, blkpg);
printf("ioctl(-1, BLKPG, {%s, flags=%d, datalen=%d"
@@ -167,8 +157,8 @@
(unsigned long) blkpg->data);
struct blkpg_partition *const bp = tail_alloc(sizeof(*bp));
- bp->start = 0xfac1fed2dad3bef4;
- bp->length = 0xfac5fed6dad7bef8;
+ bp->start = 0xfac1fed2dad3bef4ULL;
+ bp->length = 0xfac5fed6dad7bef8ULL;
bp->pno = magic;
memset(bp->devname, 'A', sizeof(bp->devname));
memset(bp->volname, 'B', sizeof(bp->volname));
@@ -188,7 +178,7 @@
#if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
struct blk_user_trace_setup *const buts = tail_alloc(sizeof(*buts));
- init_magic(buts, sizeof(*buts));
+ fill_memory(buts, sizeof(*buts));
ioctl(-1, BLKTRACESETUP, buts);
printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u"
diff --git a/tests/ioctl_dm-v.c b/tests/ioctl_dm-v.c
new file mode 100644
index 0000000..d95058f
--- /dev/null
+++ b/tests/ioctl_dm-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_dm.c"
diff --git a/tests/ioctl_dm-v.test b/tests/ioctl_dm-v.test
new file mode 100755
index 0000000..ade3b9e
--- /dev/null
+++ b/tests/ioctl_dm-v.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check unabbreviated decoding of DM* ioctls.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a16 -s9 -veioctl $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c
new file mode 100644
index 0000000..08f036c
--- /dev/null
+++ b/tests/ioctl_dm.c
@@ -0,0 +1,774 @@
+/*
+ * Check decoding of DM_* commands of ioctl syscall.
+ *
+ * Copyright (c) 2016 Mikulas Patocka <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_DM_IOCTL_H
+
+# include <errno.h>
+# include <inttypes.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stddef.h>
+# include <string.h>
+# include <sys/ioctl.h>
+# include <linux/ioctl.h>
+# include <linux/dm-ioctl.h>
+
+# ifndef VERBOSE
+# define VERBOSE 0
+# endif
+
+# define STR32 "AbCdEfGhIjKlMnOpQrStUvWxYz012345"
+
+# define ALIGNED_SIZE(s_, t_) \
+ (((s_) + (ALIGNOF(t_) - 1UL)) & ~(ALIGNOF(t_) - 1UL))
+# define ALIGNED_OFFSET(t_, m_) \
+ ALIGNED_SIZE(offsetof(t_, m_), t_)
+
+static const char str129[] = STR32 STR32 STR32 STR32 "6";
+
+static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL;
+static const __u64 dts_sector_step = (__u64) 0x100000001ULL;
+static const __u64 dts_length_base = (__u64) 0xbadc0dedda7a1057ULL;
+static const __u64 dts_length_step = (__u64) 0x700000007ULL;
+static const __s32 dts_status_base = (__s32) 3141592653U;
+static const __s32 dts_status_step = 0x1234;
+
+static const size_t min_sizeof_dm_ioctl =
+ offsetof(struct dm_ioctl, data);
+
+static struct s {
+ struct dm_ioctl ioc;
+ union {
+ struct {
+ struct dm_target_spec target_spec;
+ char target_params[256];
+ } ts;
+ struct {
+ struct dm_target_msg target_msg;
+ char target_string[256];
+ } tm;
+ char string[256];
+ } u;
+} s;
+
+struct dm_table_open_test {
+ struct dm_ioctl ioc;
+ struct dm_target_spec target0;
+ char param0[1];
+ struct dm_target_spec target1;
+ char param1[2];
+ struct dm_target_spec target2;
+ char param2[3];
+ struct dm_target_spec target3;
+ char param3[4];
+ struct dm_target_spec target4;
+ char param4[5];
+ struct dm_target_spec target5;
+ char param5[6];
+ struct dm_target_spec target6;
+ char param6[7];
+ struct dm_target_spec target7;
+ char param7[8];
+ struct dm_target_spec target8;
+ char param8[9];
+ struct dm_target_spec target9;
+ char param9[10];
+};
+
+struct dm_target_msg_test {
+ struct dm_ioctl ioc;
+ struct dm_target_msg msg;
+};
+
+struct args {
+ unsigned int arg;
+ const char *str;
+ bool has_params;
+ bool has_event_nr;
+};
+
+
+static void
+init_s(struct dm_ioctl *s, size_t size, size_t offs)
+{
+ memset(s, 0, size);
+ s->version[0] = DM_VERSION_MAJOR;
+ s->version[1] = 1;
+ s->version[2] = 2;
+ s->data_size = size;
+ s->data_start = offs;
+ s->dev = 0x1234;
+ strcpy(s->name, "nnn");
+ strcpy(s->uuid, "uuu");
+}
+
+static void
+init_dm_target_spec(struct dm_target_spec *ptr, uint32_t id)
+{
+ ptr->sector_start = dts_sector_base + dts_sector_step * id;
+ ptr->length = dts_length_base + dts_length_step * id;
+ ptr->status = dts_status_base + dts_status_step * id;
+
+ strncpy(ptr->target_type, str129 +
+ id % (sizeof(str129) - sizeof(ptr->target_type)),
+ id % (sizeof(ptr->target_type) + 1));
+ if (id % (sizeof(ptr->target_type) + 1) < sizeof(ptr->target_type))
+ ptr->target_type[id % (sizeof(ptr->target_type) + 1)] = '\0';
+}
+
+# if VERBOSE
+static void
+print_dm_target_spec(struct dm_target_spec *ptr, uint32_t id)
+{
+ printf("{sector_start=%" PRI__u64 ", length=%" PRI__u64 ", "
+ "target_type=\"%.*s\", string=",
+ dts_sector_base + dts_sector_step * id,
+ dts_length_base + dts_length_step * id,
+ (int) (id % (sizeof(ptr->target_type) + 1)),
+ str129 + id % (sizeof(str129) - sizeof(ptr->target_type)));
+}
+# endif /* VERBOSE */
+
+int
+main(void)
+{
+ static kernel_ulong_t dummy_dm_ioctl1 =
+ _IOC(_IOC_READ, DM_IOCTL, 0, 0x1fff);
+ static kernel_ulong_t dummy_dm_ioctl2 =
+ _IOC(_IOC_READ|_IOC_WRITE, DM_IOCTL, 0xed, 0);
+ static kernel_ulong_t dummy_dm_arg =
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+ /* We can't check these properly for now */
+ static struct args dummy_check_cmds_nodev[] = {
+ { ARG_STR(DM_REMOVE_ALL), false },
+ { ARG_STR(DM_LIST_DEVICES), true },
+ { ARG_STR(DM_LIST_VERSIONS), true },
+ };
+ static struct args dummy_check_cmds[] = {
+ { ARG_STR(DM_DEV_CREATE), false },
+ { ARG_STR(DM_DEV_REMOVE), false, true },
+ { ARG_STR(DM_DEV_STATUS), false },
+ { ARG_STR(DM_DEV_WAIT), true, true },
+ { ARG_STR(DM_TABLE_CLEAR), false },
+ { ARG_STR(DM_TABLE_DEPS), true },
+ { ARG_STR(DM_TABLE_STATUS), true },
+ };
+
+ struct dm_ioctl *unaligned_dm_arg =
+ tail_alloc(offsetof(struct dm_ioctl, data));
+ struct dm_ioctl *dm_arg =
+ tail_alloc(ALIGNED_OFFSET(struct dm_ioctl, data));
+ struct dm_table_open_test *dm_arg_open1 =
+ tail_alloc(ALIGNED_OFFSET(struct dm_table_open_test, target1));
+ struct dm_table_open_test *dm_arg_open2 =
+ tail_alloc(ALIGNED_OFFSET(struct dm_table_open_test, param1));
+ struct dm_table_open_test *dm_arg_open3 =
+ tail_alloc(ALIGNED_OFFSET(struct dm_table_open_test, target9));
+ struct dm_target_msg_test *dm_arg_msg =
+ tail_alloc(sizeof(*dm_arg_msg));
+
+ long rc;
+ const char *errstr;
+ unsigned int i;
+
+
+ /* Incorrect operation */
+ ioctl(-1, _IOW(DM_IOCTL, 0xde, int), dm_arg);
+ printf("ioctl(-1, _IOC(_IOC_WRITE, %#x, 0xde, %#zx), %p) = "
+ "-1 EBADF (%m)\n",
+ DM_IOCTL, sizeof(int), dm_arg);
+
+ ioctl(-1, dummy_dm_ioctl1, 0);
+ printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0, %#x), 0) = -1 EBADF (%m)\n",
+ DM_IOCTL, (unsigned int) _IOC_SIZE(dummy_dm_ioctl1));
+
+ ioctl(-1, dummy_dm_ioctl2, dummy_dm_arg);
+ printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, %#x, %#x, 0), %#lx) = "
+ "-1 EBADF (%m)\n",
+ DM_IOCTL, (unsigned int) _IOC_NR(dummy_dm_ioctl2),
+ (unsigned long) dummy_dm_arg);
+
+
+ /* DM_VERSION */
+ /* Incorrect pointer */
+ ioctl(-1, DM_VERSION, dm_arg + 1);
+ printf("ioctl(-1, DM_VERSION, %p) = -1 EBADF (%m)\n", dm_arg + 1);
+
+ /* Incorrect data_size */
+ init_s(dm_arg, 0, 0);
+ ioctl(-1, DM_VERSION, &s);
+ printf("ioctl(-1, DM_VERSION, %p) = -1 EBADF (%m)\n", &s);
+
+ /* Incorrect version */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ dm_arg->version[0] = 0xbadc0ded;
+ dm_arg->version[1] = 0xbadc0dee;
+ dm_arg->version[2] = 0xbadc0def;
+ ioctl(-1, DM_VERSION, dm_arg);
+ printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u, "
+ "/* Unsupported device mapper ABI version */ ...}) = "
+ "-1 EBADF (%m)\n", 0xbadc0ded, 0xbadc0dee, 0xbadc0def);
+
+ /* Incorrect data_size */
+ init_s(dm_arg, 14, 64);
+ ioctl(-1, DM_VERSION, dm_arg);
+ printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14, "
+ "/* Incorrect data_size */ ...}) = -1 EBADF (%m)\n");
+
+ /* Unterminated name/uuid */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ strncpy(dm_arg->name, str129, sizeof(dm_arg->name));
+ strncpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
+ ioctl(-1, DM_VERSION, dm_arg);
+ printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=%zu, "
+ "dev=makedev(18, 52), name=\"%.127s\", uuid=\"%.128s\", "
+ "flags=0}) = -1 EBADF (%m)\n",
+ min_sizeof_dm_ioctl, str129, str129);
+
+ /* Normal call */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ ioctl(-1, DM_VERSION, dm_arg);
+ printf("ioctl(-1, DM_VERSION, "
+ "{version=4.1.2, data_size=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0}) = "
+ "-1 EBADF (%m)\n", min_sizeof_dm_ioctl);
+
+ /* Zero dev, name, uuid */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ dm_arg->data_size = 0xfacefeed;
+ dm_arg->dev = 0;
+ dm_arg->name[0] = '\0';
+ dm_arg->uuid[0] = '\0';
+ ioctl(-1, DM_VERSION, dm_arg);
+ printf("ioctl(-1, DM_VERSION, "
+ "{version=4.1.2, data_size=%u, flags=0}) = "
+ "-1 EBADF (%m)\n", 0xfacefeed);
+
+ /* Flag */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ dm_arg->flags = 0xffffffff;
+ ioctl(-1, DM_VERSION, dm_arg);
+ printf("ioctl(-1, DM_VERSION, "
+ "{version=4.1.2, data_size=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags="
+ "DM_READONLY_FLAG|DM_SUSPEND_FLAG|DM_EXISTS_FLAG|"
+ "DM_PERSISTENT_DEV_FLAG|DM_STATUS_TABLE_FLAG|"
+ "DM_ACTIVE_PRESENT_FLAG|DM_INACTIVE_PRESENT_FLAG|"
+ "DM_BUFFER_FULL_FLAG|DM_SKIP_BDGET_FLAG|DM_SKIP_LOCKFS_FLAG|"
+ "DM_NOFLUSH_FLAG|DM_QUERY_INACTIVE_TABLE_FLAG|"
+ "DM_UEVENT_GENERATED_FLAG|DM_UUID_FLAG|DM_SECURE_DATA_FLAG|"
+ "DM_DATA_OUT_FLAG|DM_DEFERRED_REMOVE|DM_INTERNAL_SUSPEND_FLAG|"
+ "0xfff80080}) = -1 EBADF (%m)\n",
+ min_sizeof_dm_ioctl);
+
+ /* Normal call */
+ init_s(&s.ioc, sizeof(s.ioc), 0);
+ ioctl(-1, DM_VERSION, &s);
+ printf("ioctl(-1, DM_VERSION, "
+ "{version=4.1.2, data_size=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0}) = "
+ "-1 EBADF (%m)\n", sizeof(s.ioc));
+
+
+ /* DM_REMOVE_ALL */
+ /* DM_LIST_DEVICES */
+ /* DM_LIST_VERSIONS */
+ for (i = 0; i < ARRAY_SIZE(dummy_check_cmds_nodev); i++) {
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ ioctl(-1, dummy_check_cmds_nodev[i].arg, dm_arg);
+ printf("ioctl(-1, %s, {version=4.1.2, data_size=%zu%s, "
+ "flags=0}) = -1 EBADF (%m)\n",
+ dummy_check_cmds_nodev[i].str,
+ min_sizeof_dm_ioctl,
+ dummy_check_cmds_nodev[i].has_params ?
+ ", data_start=0" : "");
+ }
+
+
+ /* DM_DEV_CREATE */
+ /* DM_DEV_REMOVE */
+ /* DM_DEV_STATUS */
+ /* DM_DEV_WAIT */
+ /* DM_TABLE_CLEAR */
+ /* DM_TABLE_DEPS */
+ /* DM_TABLE_STATUS */
+ for (i = 0; i < ARRAY_SIZE(dummy_check_cmds); i++) {
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ ioctl(-1, dummy_check_cmds[i].arg, dm_arg);
+ printf("ioctl(-1, %s, {version=4.1.2, data_size=%zu%s, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\"%s, "
+ "flags=0}) = -1 EBADF (%m)\n",
+ dummy_check_cmds[i].str, min_sizeof_dm_ioctl,
+ dummy_check_cmds[i].has_params ? ", data_start=0" : "",
+ dummy_check_cmds[i].has_event_nr ? ", event_nr=0" : "");
+ }
+
+
+ /* DM_DEV_SUSPEND */
+ init_s(&s.ioc, sizeof(s.ioc), 0);
+ s.ioc.flags = DM_SUSPEND_FLAG;
+ s.ioc.event_nr = 0xbadc0ded;
+ ioctl(-1, DM_DEV_SUSPEND, &s);
+ printf("ioctl(-1, DM_DEV_SUSPEND, "
+ "{version=4.1.2, data_size=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "flags=DM_SUSPEND_FLAG}) = -1 EBADF (%m)\n", sizeof(s.ioc));
+
+ init_s(&s.ioc, sizeof(s.ioc), 0);
+ s.ioc.event_nr = 0xbadc0ded;
+ ioctl(-1, DM_DEV_SUSPEND, &s);
+ printf("ioctl(-1, DM_DEV_SUSPEND, "
+ "{version=4.1.2, data_size=%zu, dev=makedev(18, 52), "
+ "name=\"nnn\", uuid=\"uuu\", event_nr=3134983661, "
+ "flags=0}) = -1 EBADF (%m)\n", sizeof(s.ioc));
+
+
+ /* DM_TABLE_LOAD */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ s.ioc.target_count = 1;
+ s.u.ts.target_spec.sector_start = 0x10;
+ s.u.ts.target_spec.length = 0x20;
+ s.u.ts.target_spec.next =
+ sizeof(s.u.ts.target_spec) + sizeof(s.u.ts.target_params);
+ strcpy(s.u.ts.target_spec.target_type, "tgt");
+ strcpy(s.u.ts.target_params, "tparams");
+ ioctl(-1, DM_TABLE_LOAD, &s);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%u, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=1, flags=0, "
+# if VERBOSE
+ "{sector_start=16, length=32, target_type=\"tgt\", "
+ "string=\"tparams\"}"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n", s.ioc.data_size, s.ioc.data_start);
+
+ /* No targets */
+ init_s(dm_arg, min_sizeof_dm_ioctl, min_sizeof_dm_ioctl);
+ dm_arg->data_size = sizeof(*dm_arg);
+ dm_arg->target_count = 0;
+ ioctl(-1, DM_TABLE_LOAD, dm_arg);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=0, flags=0}) = -1 EBADF (%m)\n",
+ sizeof(*dm_arg), min_sizeof_dm_ioctl);
+
+ /* Invalid data_start */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0xfffffff8);
+ dm_arg->data_size = sizeof(*dm_arg);
+ dm_arg->target_count = 1234;
+ ioctl(-1, DM_TABLE_LOAD, dm_arg);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%zu, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=1234, flags=0, "
+# if VERBOSE
+ "/* misplaced struct dm_target_spec */ ..."
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
+
+ /* Inaccessible pointer */
+ init_s(&dm_arg_open1->ioc, offsetof(struct dm_table_open_test, target1),
+ offsetof(struct dm_table_open_test, target1));
+ dm_arg_open1->ioc.data_size = sizeof(*dm_arg_open1);
+ dm_arg_open1->ioc.target_count = 0xdeaddea1;
+ ioctl(-1, DM_TABLE_LOAD, dm_arg_open1);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=3735936673, flags=0, "
+# if VERBOSE
+ "%p"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n", sizeof(*dm_arg_open1),
+ offsetof(struct dm_table_open_test, target1)
+# if VERBOSE
+ , (char *) dm_arg_open1 +
+ offsetof(struct dm_table_open_test, target1)
+# endif /* VERBOSE */
+ );
+
+ /* Inaccessible string */
+ init_s(&dm_arg_open2->ioc, offsetof(struct dm_table_open_test, param1),
+ offsetof(struct dm_table_open_test, target1));
+ dm_arg_open2->ioc.data_size = sizeof(*dm_arg_open2);
+ dm_arg_open2->ioc.target_count = 2;
+ init_dm_target_spec(&dm_arg_open2->target1, 7);
+ dm_arg_open2->target1.next =
+ offsetof(struct dm_table_open_test, target3) -
+ offsetof(struct dm_table_open_test, target1);
+ rc = ioctl(-1, DM_TABLE_LOAD, dm_arg_open2);
+ errstr = sprintrc(rc);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=2, flags=0, ",
+ sizeof(*dm_arg_open2),
+ offsetof(struct dm_table_open_test, target1));
+# if VERBOSE
+ print_dm_target_spec(&dm_arg_open2->target1, 7);
+ printf("%p}, %p",
+ (char *) dm_arg_open2 +
+ offsetof(struct dm_table_open_test, param1),
+ (char *) dm_arg_open2 +
+ offsetof(struct dm_table_open_test, target3));
+# else /* !VERBOSE */
+ printf("...");
+# endif /* VERBOSE */
+ printf("}) = %s\n", errstr);
+
+ /* Incorrect next */
+ init_s(&dm_arg_open3->ioc, offsetof(struct dm_table_open_test, target5),
+ offsetof(struct dm_table_open_test, target0));
+ dm_arg_open3->ioc.target_count = 4;
+
+ init_dm_target_spec(&dm_arg_open3->target0, 9);
+ dm_arg_open3->target0.next =
+ offsetof(struct dm_table_open_test, target1) -
+ offsetof(struct dm_table_open_test, target0);
+ dm_arg_open3->param0[0] = '\0';
+
+ init_dm_target_spec(&dm_arg_open3->target1, 15);
+ dm_arg_open3->target1.next =
+ offsetof(struct dm_table_open_test, target3) -
+ offsetof(struct dm_table_open_test, target1);
+ dm_arg_open3->param1[0] = '\377';
+ dm_arg_open3->param1[1] = '\0';
+
+ init_dm_target_spec(&dm_arg_open3->target3, 42);
+ dm_arg_open3->target3.next = 0xdeadbeef;
+ dm_arg_open3->param3[0] = '\1';
+ dm_arg_open3->param3[1] = '\2';
+ dm_arg_open3->param3[2] = '\0';
+
+ rc = ioctl(-1, DM_TABLE_LOAD, dm_arg_open3);
+ errstr = sprintrc(rc);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=4, flags=0, ",
+ offsetof(struct dm_table_open_test, target5),
+ offsetof(struct dm_table_open_test, target0));
+# if VERBOSE
+ print_dm_target_spec(&dm_arg_open3->target0, 9);
+ printf("\"\"}, ");
+ print_dm_target_spec(&dm_arg_open3->target1, 15);
+ printf("\"\\377\"}, ");
+ print_dm_target_spec(&dm_arg_open3->target1, 42);
+ printf("\"\\1\\2\"}, /* misplaced struct dm_target_spec */ ...");
+# else /* !VERBOSE */
+ printf("...");
+# endif /* VERBOSE */
+ printf("}) = %s\n", errstr);
+
+ #define FILL_DM_TARGET(id, id_next) \
+ do { \
+ init_dm_target_spec(&dm_arg_open3->target##id, id); \
+ dm_arg_open3->target##id.next = \
+ offsetof(struct dm_table_open_test, \
+ target##id_next) - \
+ offsetof(struct dm_table_open_test, \
+ target##id); \
+ strncpy(dm_arg_open3->param##id, str129 + id * 2, id); \
+ dm_arg_open3->param##id[id] = '\0'; \
+ } while (0)
+ #define PRINT_DM_TARGET(id) \
+ do { \
+ print_dm_target_spec(&dm_arg_open3->target##id, id); \
+ printf("\"%.*s\"}, ", id, str129 + id * 2); \
+ } while (0)
+
+ /* max_strlen limit */
+ init_s(&dm_arg_open3->ioc, offsetof(struct dm_table_open_test, target9),
+ offsetof(struct dm_table_open_test, target0));
+ dm_arg_open3->ioc.data_size = sizeof(*dm_arg_open3);
+ dm_arg_open3->ioc.target_count = 0xbadc0ded;
+ FILL_DM_TARGET(0, 1);
+ FILL_DM_TARGET(1, 2);
+ FILL_DM_TARGET(2, 3);
+ FILL_DM_TARGET(3, 4);
+ FILL_DM_TARGET(4, 5);
+ FILL_DM_TARGET(5, 6);
+ FILL_DM_TARGET(6, 7);
+ FILL_DM_TARGET(7, 8);
+ FILL_DM_TARGET(8, 9);
+ rc = ioctl(-1, DM_TABLE_LOAD, dm_arg_open3);
+ errstr = sprintrc(rc);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=3134983661, flags=0, ",
+ sizeof(*dm_arg_open3),
+ offsetof(struct dm_table_open_test, target0));
+# if VERBOSE
+ PRINT_DM_TARGET(0);
+ PRINT_DM_TARGET(1);
+ PRINT_DM_TARGET(2);
+ PRINT_DM_TARGET(3);
+ PRINT_DM_TARGET(4);
+ PRINT_DM_TARGET(5);
+ PRINT_DM_TARGET(6);
+ PRINT_DM_TARGET(7);
+ PRINT_DM_TARGET(8);
+# endif /* VERBOSE */
+ printf("...}) = %s\n", errstr);
+
+
+ /* DM_TARGET_MSG */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ s.u.tm.target_msg.sector = 0x1234;
+ strcpy(s.u.string + offsetof(struct dm_target_msg, message),
+ "long target msg");
+ ioctl(-1, DM_TARGET_MSG, &s);
+ printf("ioctl(-1, DM_TARGET_MSG, "
+ "{version=4.1.2, data_size=%u, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
+# if VERBOSE
+ "{sector=4660, message=\"long targ\"...}"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ s.ioc.data_size, s.ioc.data_start);
+
+ /* Invalid data_start */
+ init_s(dm_arg, min_sizeof_dm_ioctl, min_sizeof_dm_ioctl);
+ dm_arg->data_size = sizeof(*dm_arg);
+ ioctl(-1, DM_TARGET_MSG, dm_arg);
+ printf("ioctl(-1, DM_TARGET_MSG, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
+# if VERBOSE
+ "/* misplaced struct dm_target_msg */"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ sizeof(*dm_arg), min_sizeof_dm_ioctl);
+
+ /* Invalid data_start */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0xffffffff);
+ dm_arg->data_size = sizeof(*dm_arg);
+ ioctl(-1, DM_TARGET_MSG, dm_arg);
+ printf("ioctl(-1, DM_TARGET_MSG, "
+ "{version=4.1.2, data_size=%zu, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
+# if VERBOSE
+ "/* misplaced struct dm_target_msg */"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ sizeof(*dm_arg), 0xffffffff);
+
+ /* Inaccessible pointer */
+ init_s(dm_arg, min_sizeof_dm_ioctl, 0);
+ dm_arg->data_size = sizeof(*dm_arg) + sizeof(struct dm_target_msg);
+ dm_arg->data_start = sizeof(*dm_arg);
+ ioctl(-1, DM_TARGET_MSG, dm_arg);
+ printf("ioctl(-1, DM_TARGET_MSG, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
+# if VERBOSE
+ "%p"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ sizeof(*dm_arg) + sizeof(struct dm_target_msg),
+ sizeof(*dm_arg)
+# if VERBOSE
+ , (char *) dm_arg + sizeof(*dm_arg)
+# endif /* VERBOSE */
+ );
+
+ /* Inaccessible string */
+ init_s(&dm_arg_msg->ioc, sizeof(*dm_arg_msg),
+ offsetof(struct dm_target_msg_test, msg));
+ dm_arg_msg->ioc.data_size = sizeof(*dm_arg_msg) + 1;
+ dm_arg_msg->msg.sector = (__u64) 0xdeadbeeffacef157ULL;
+ rc = ioctl(-1, DM_TARGET_MSG, dm_arg_msg);
+ errstr = sprintrc(rc);
+ printf("ioctl(-1, DM_TARGET_MSG, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, ",
+ sizeof(*dm_arg_msg) + 1,
+ offsetof(struct dm_target_msg_test, msg));
+# if VERBOSE
+ printf("{sector=%" PRI__u64 ", message=%p}",
+ (__u64) 0xdeadbeeffacef157ULL,
+ (char *) dm_arg_msg +
+ offsetof(struct dm_target_msg_test, msg.message));
+# else /* !VERBOSE */
+ printf("...");
+# endif /* VERBOSE */
+ printf("}) = %s\n", errstr);
+
+ /* Zero-sied string */
+ init_s(&dm_arg_msg->ioc, sizeof(*dm_arg_msg),
+ offsetof(struct dm_target_msg_test, msg));
+ dm_arg_msg->msg.sector = (__u64) 0xdeadbeeffacef157ULL;
+ rc = ioctl(-1, DM_TARGET_MSG, dm_arg_msg);
+ errstr = sprintrc(rc);
+ printf("ioctl(-1, DM_TARGET_MSG, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, ",
+ sizeof(*dm_arg_msg), offsetof(struct dm_target_msg_test, msg));
+# if VERBOSE
+ printf("{sector=%" PRI__u64 ", message=\"\"}",
+ (__u64) 0xdeadbeeffacef157ULL);
+# else /* !VERBOSE */
+ printf("...");
+# endif /* VERBOSE */
+ printf("}) = %s\n", errstr);
+
+
+ /* DM_DEV_SET_GEOMETRY */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ strcpy(s.u.string, "10 20 30 40");
+ ioctl(-1, DM_DEV_SET_GEOMETRY, &s);
+ printf("ioctl(-1, DM_DEV_SET_GEOMETRY, "
+ "{version=4.1.2, data_size=%u, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
+# if VERBOSE
+ "string=\"10 20 30 \"..."
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ s.ioc.data_size, s.ioc.data_start);
+
+
+ /* DM_DEV_RENAME */
+ /* Inaccessible data */
+ init_s(dm_arg, min_sizeof_dm_ioctl, min_sizeof_dm_ioctl);
+ dm_arg->data_size = sizeof(*dm_arg);
+ memcpy(unaligned_dm_arg, dm_arg, offsetof(struct dm_ioctl, data));
+ ioctl(-1, DM_DEV_RENAME, unaligned_dm_arg);
+ printf("ioctl(-1, DM_DEV_RENAME, "
+ "{version=4.1.2, data_size=%zu, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
+ "flags=0, "
+# if VERBOSE
+ "string=%p"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ sizeof(*unaligned_dm_arg), min_sizeof_dm_ioctl
+# if VERBOSE
+ , (char *) unaligned_dm_arg + min_sizeof_dm_ioctl
+# endif /* VERBOSE */
+ );
+
+ /* Incorrect data_start data */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ s.ioc.data_start = 0xdeadbeef;
+ ioctl(-1, DM_DEV_RENAME, &s);
+ printf("ioctl(-1, DM_DEV_RENAME, "
+ "{version=4.1.2, data_size=%u, data_start=3735928559, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
+ "flags=0, "
+# if VERBOSE
+ "/* misplaced string */"
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ s.ioc.data_size);
+
+ /* Strange but still valid data_start */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ /* Curiously, this is a valid structure */
+ s.ioc.data_start = offsetof(struct dm_ioctl, name) + 1;
+ ioctl(-1, DM_DEV_RENAME, &s);
+ printf("ioctl(-1, DM_DEV_RENAME, "
+ "{version=4.1.2, data_size=%u, data_start=%zu, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
+ "flags=0, "
+# if VERBOSE
+ "string=\"nn\""
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ s.ioc.data_size,
+ offsetof(struct dm_ioctl, name) + 1);
+
+ /* Correct data */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ strcpy(s.u.string, "new long name");
+ ioctl(-1, DM_DEV_RENAME, &s);
+ printf("ioctl(-1, DM_DEV_RENAME, "
+ "{version=4.1.2, data_size=%u, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
+ "flags=0, "
+# if VERBOSE
+ "string=\"new long \"..."
+# else /* !VERBOSE */
+ "..."
+# endif /* VERBOSE */
+ "}) = -1 EBADF (%m)\n",
+ s.ioc.data_size, s.ioc.data_start);
+
+
+ /* DM_TABLE_LOAD */
+ init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
+ s.ioc.target_count = -1U;
+ ioctl(-1, DM_TABLE_LOAD, &s);
+ printf("ioctl(-1, DM_TABLE_LOAD, "
+ "{version=4.1.2, data_size=%u, data_start=%u, "
+ "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
+ "target_count=4294967295, flags=0, "
+# if VERBOSE
+ "{sector_start=0, length=0, target_type=\"\", string=\"\"}, "
+ "/* misplaced struct dm_target_spec */ "
+# endif /* VERBOSE */
+ "...}) = -1 EBADF (%m)\n",
+ s.ioc.data_size, s.ioc.data_start);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else /* !HAVE_LINUX_DM_IOCTL_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_DM_IOCTL_H")
+
+#endif /* HAVE_LINUX_DM_IOCTL_H */
diff --git a/tests/ioctl_dm.test b/tests/ioctl_dm.test
new file mode 100755
index 0000000..6485205
--- /dev/null
+++ b/tests/ioctl_dm.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of DM* ioctls.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a16 -s9 -eioctl $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_evdev.c b/tests/ioctl_evdev.c
index 892075d..d12323e 100644
--- a/tests/ioctl_evdev.c
+++ b/tests/ioctl_evdev.c
@@ -39,17 +39,7 @@
# include <linux/input.h>
static const unsigned int magic = 0xdeadbeef;
-static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0ded;
-
-static void
-init_magic(void *addr, const unsigned int size)
-{
- unsigned int *p = addr;
- const unsigned int *end = addr + size - sizeof(int);
-
- for (; p <= end; ++p)
- *(unsigned int *) p = magic;
-}
+static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
# if VERBOSE
static void
@@ -156,7 +146,7 @@
const unsigned int size = get_page_size();
void *const page = tail_alloc(size);
- init_magic(page, size);
+ fill_memory(page, size);
int *const val_int = tail_alloc(sizeof(*val_int));
*val_int = magic;
@@ -183,7 +173,7 @@
# ifdef EVIOCSKEYCODE_V2
struct input_keymap_entry *const ike = tail_alloc(sizeof(*ike));
- init_magic(ike, sizeof(*ike));
+ fill_memory(ike, sizeof(*ike));
ike->keycode = 2;
ioctl(-1, EVIOCSKEYCODE_V2, ike);
@@ -207,7 +197,7 @@
# endif
struct ff_effect *const ffe = tail_alloc(sizeof(*ffe));
- init_magic(ffe, sizeof(*ffe));
+ fill_memory(ffe, sizeof(*ffe));
ffe->type = FF_CONSTANT;
ioctl(-1, EVIOCSFF, ffe);
@@ -262,18 +252,22 @@
printf("}) = -1 EBADF (%m)\n");
# endif
- ioctl(-1, _IOC(_IOC_READ, 0x45, 0x01, 0xff), lmagic);
+ ioctl(-1, _IOC(_IOC_READ, 0x45, 0x1, 0xff), lmagic);
printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
- "_IOC(_IOC_READ, 0x45, 0x01, 0xff)", lmagic);
+ "_IOC(_IOC_READ, 0x45, 0x1, 0xff)", lmagic);
- ioctl(-1, _IOC(_IOC_WRITE, 0x45, 0x01, 0xff), lmagic);
+ ioctl(-1, _IOC(_IOC_WRITE, 0x45, 0x1, 0xff), lmagic);
printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
- "_IOC(_IOC_WRITE, 0x45, 0x01, 0xff)", lmagic);
+ "_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)", lmagic);
ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff), lmagic);
printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
"_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)", lmagic);
+ ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0), lmagic);
+ printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
+ "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)", lmagic);
+
puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/ioctl_loop-nv.c b/tests/ioctl_loop-nv.c
new file mode 100644
index 0000000..dc6b916
--- /dev/null
+++ b/tests/ioctl_loop-nv.c
@@ -0,0 +1,2 @@
+#define ABBREV 1
+#include "ioctl_loop.c"
diff --git a/tests/ioctl_loop-nv.test b/tests/ioctl_loop-nv.test
new file mode 100755
index 0000000..dcc27e1
--- /dev/null
+++ b/tests/ioctl_loop-nv.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check non-verbose decoding of LOOP_* ioctls.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_loop-v.c b/tests/ioctl_loop-v.c
new file mode 100644
index 0000000..22e7572
--- /dev/null
+++ b/tests/ioctl_loop-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_loop.c"
diff --git a/tests/ioctl_loop-v.test b/tests/ioctl_loop-v.test
new file mode 100755
index 0000000..ff3995d
--- /dev/null
+++ b/tests/ioctl_loop-v.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check non-abbreviated decoding of LOOP_* ioctls.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a22 -v -eioctl $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_loop.c b/tests/ioctl_loop.c
new file mode 100644
index 0000000..a95e775
--- /dev/null
+++ b/tests/ioctl_loop.c
@@ -0,0 +1,322 @@
+/*
+ * This file is part of ioctl_loop strace test.
+ *
+ * Copyright (c) 2016 JingPiao Chen <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "tests.h"
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+#include <inttypes.h>
+#include <sys/ioctl.h>
+#include <sys/sysmacros.h>
+#include <linux/ioctl.h>
+#include <linux/loop.h>
+#include "xlat/loop_cmds.h"
+
+#ifndef ABBREV
+# define ABBREV 0
+#endif
+
+static void
+print_loop_info(struct loop_info * const info, bool print_encrypt,
+ const char *encrypt_type, const char *encrypt_key,
+ const char *flags)
+{
+#if ABBREV
+ printf("%p", info);
+#else
+ printf("{lo_number=%d", info->lo_number);
+# if VERBOSE
+ printf(", lo_device=makedev(%u, %u), lo_inode=%lu, "
+ "lo_rdevice=makedev(%u, %u)",
+ major(info->lo_device), minor(info->lo_device),
+ info->lo_inode,
+ major(info->lo_rdevice), minor(info->lo_rdevice));
+# endif /* VERBOSE */
+
+ printf(", lo_offset=%#x", info->lo_offset);
+
+ if (VERBOSE || print_encrypt) {
+ printf(", lo_encrypt_type=");
+ if (encrypt_type)
+ printf("%s", encrypt_type);
+ else
+ printf("%#x /* LO_CRYPT_??? */", info->lo_encrypt_type);
+
+ printf(", lo_encrypt_key_size=%" PRIu32,
+ (uint32_t) info->lo_encrypt_key_size);
+ }
+
+ printf(", lo_flags=");
+ if (flags)
+ printf("%s", flags);
+ else
+ printf("%#x /* LO_FLAGS_??? */", info->lo_flags);
+
+ printf(", lo_name=\"%.*s\"",
+ (int) sizeof(info->lo_name) - 1, info->lo_name);
+
+ if (VERBOSE || print_encrypt)
+ printf(", lo_encrypt_key=\"%.*s\"",
+ encrypt_key ? (int) strlen(encrypt_key) :
+ (int) sizeof(info->lo_encrypt_key),
+ encrypt_key ? encrypt_key :
+ (char *) info->lo_encrypt_key);
+
+# if VERBOSE
+ printf(", lo_init=[%#lx, %#lx]"
+ ", reserved=[%#hhx, %#hhx, %#hhx, %#hhx]}",
+ info->lo_init[0], info->lo_init[1],
+ info->reserved[0], info->reserved[1],
+ info->reserved[2], info->reserved[3]);
+# else /* !VERBOSE */
+ printf(", ...}");
+# endif /* VERBOSE */
+#endif /* !ABBREV */
+}
+
+static void
+print_loop_info64(struct loop_info64 * const info64, bool print_encrypt,
+ const char *encrypt_type, const char *encrypt_key,
+ const char *flags)
+{
+#if ABBREV
+ printf("%p", info64);
+#else
+# if VERBOSE
+ printf("{lo_device=makedev(%u, %u), lo_inode=%" PRIu64
+ ", lo_rdevice=makedev(%u, %u), lo_offset=%#" PRIx64
+ ", lo_sizelimit=%" PRIu64 ", lo_number=%" PRIu32,
+ major(info64->lo_device), minor(info64->lo_device),
+ (uint64_t) info64->lo_inode,
+ major(info64->lo_rdevice), minor(info64->lo_rdevice),
+ (uint64_t) info64->lo_offset,
+ (uint64_t) info64->lo_sizelimit,
+ (uint32_t) info64->lo_number);
+# else /* !VERBOSE */
+ printf("{lo_offset=%#" PRIx64 ", lo_number=%" PRIu32,
+ (uint64_t) info64->lo_offset,
+ (uint32_t) info64->lo_number);
+# endif /* VERBOSE */
+
+ if (VERBOSE || print_encrypt) {
+ printf(", lo_encrypt_type=");
+ if (encrypt_type)
+ printf("%s", encrypt_type);
+ else
+ printf("%#x /* LO_CRYPT_??? */",
+ info64->lo_encrypt_type);
+
+ printf(", lo_encrypt_key_size=%" PRIu32,
+ info64->lo_encrypt_key_size);
+ }
+
+ printf(", lo_flags=");
+ if (flags)
+ printf("%s", flags);
+ else
+ printf("%#x /* LO_FLAGS_??? */", info64->lo_flags);
+ printf(", lo_file_name=\"%.*s\"",
+ (int) sizeof(info64->lo_file_name) - 1, info64->lo_file_name);
+
+ if (VERBOSE || print_encrypt)
+ printf(", lo_crypt_name=\"%.*s\", lo_encrypt_key=\"%.*s\"",
+ (int) sizeof(info64->lo_crypt_name) - 1,
+ info64->lo_crypt_name,
+ encrypt_key ? (int) strlen(encrypt_key) :
+ (int) sizeof(info64->lo_encrypt_key),
+ encrypt_key ? encrypt_key :
+ (char *) info64->lo_encrypt_key);
+
+# if VERBOSE
+ printf(", lo_init=[%#" PRIx64 ", %#" PRIx64 "]}",
+ (uint64_t) info64->lo_init[0],
+ (uint64_t) info64->lo_init[1]);
+# else /* !VERBOSE */
+ printf(", ...}");
+# endif /* VERBOSE */
+#endif /* !ABBREV */
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t unknown_loop_cmd =
+ (kernel_ulong_t) 0xbadc0dedfeed4cedULL;
+ static const kernel_ulong_t magic =
+ (kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+ static const kernel_ulong_t kernel_mask =
+ ((kernel_ulong_t) -1) - ((unsigned long) -1L);
+
+ struct loop_info * const info = tail_alloc(sizeof(*info));
+ struct loop_info64 * const info64 = tail_alloc(sizeof(*info64));
+
+ /* Unknown loop commands */
+ ioctl(-1, unknown_loop_cmd, magic);
+ printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE%s, 0x4c, %#x, %#x), "
+ "%#lx) = -1 EBADF (%m)\n",
+ _IOC_DIR((unsigned int) unknown_loop_cmd) & _IOC_NONE ?
+ "|_IOC_NONE" : "",
+ _IOC_NR((unsigned int) unknown_loop_cmd),
+ _IOC_SIZE((unsigned int) unknown_loop_cmd),
+ (unsigned long) magic);
+
+ ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic);
+ printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = "
+ "-1 EBADF (%m)\n",
+ _IOC_NR(LOOP_SET_DIRECT_IO + 1),
+ _IOC_SIZE(LOOP_SET_DIRECT_IO + 1),
+ (unsigned long) magic);
+
+ ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
+ printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = "
+ "-1 EBADF (%m)\n",
+ _IOC_NR(LOOP_CTL_GET_FREE + 1),
+ _IOC_SIZE(LOOP_CTL_GET_FREE + 1),
+ (unsigned long) magic);
+
+ /* LOOP_SET_FD */
+ ioctl(-1, LOOP_SET_FD, magic);
+ printf("ioctl(-1, LOOP_SET_FD, %d) = -1 EBADF (%m)\n",
+ (unsigned int) magic);
+
+ /* LOOP_CLR_FD */
+ ioctl(-1, LOOP_CLR_FD);
+ printf("ioctl(-1, LOOP_CLR_FD) = -1 EBADF (%m)\n");
+
+ /* LOOP_SET_STATUS */
+ ioctl(-1, LOOP_SET_STATUS, NULL);
+ printf("ioctl(-1, LOOP_SET_STATUS, NULL) = -1 EBADF (%m)\n");
+
+ fill_memory(info, sizeof(*info));
+ info->lo_flags = 0xdeface00;
+ info->lo_name[0] = '\0';
+ info->lo_encrypt_key[0] = '\0';
+ info->lo_encrypt_key_size = 1;
+
+ printf("ioctl(-1, LOOP_SET_STATUS, ");
+ print_loop_info(info, true, NULL, "\\0", NULL);
+ ioctl(-1, LOOP_SET_STATUS, info);
+ printf(") = -1 EBADF (%m)\n");
+
+ fill_memory(info, sizeof(*info));
+ info->lo_encrypt_type = LO_CRYPT_NONE;
+ info->lo_flags = LO_FLAGS_READ_ONLY;
+ memset(info->lo_name, 'A', sizeof(info->lo_name));
+ memset(info->lo_encrypt_key, 'B', sizeof(info->lo_encrypt_key));
+
+ ioctl(-1, LOOP_SET_STATUS, (void *) info + ALIGNOF(info));
+ printf("ioctl(-1, LOOP_SET_STATUS, %p) = -1 EBADF (%m)\n",
+ (void *) info + ALIGNOF(info));
+
+ printf("ioctl(-1, LOOP_SET_STATUS, ");
+ print_loop_info(info, false, "LO_CRYPT_NONE", NULL,
+ "LO_FLAGS_READ_ONLY");
+ ioctl(-1, LOOP_SET_STATUS, info);
+ printf(") = -1 EBADF (%m)\n");
+
+ /* LOOP_GET_STATUS */
+ ioctl(-1, LOOP_GET_STATUS, NULL);
+ printf("ioctl(-1, LOOP_GET_STATUS, NULL) = -1 EBADF (%m)\n");
+
+ ioctl(-1, LOOP_GET_STATUS, (unsigned long) info | kernel_mask);
+ printf("ioctl(-1, LOOP_GET_STATUS, %p) = -1 EBADF (%m)\n", info);
+
+ /* LOOP_SET_STATUS64 */
+ ioctl(-1, LOOP_SET_STATUS64, NULL);
+ printf("ioctl(-1, LOOP_SET_STATUS64, NULL) = -1 EBADF (%m)\n");
+
+ fill_memory(info64, sizeof(*info64));
+ info64->lo_flags = 0xdec0de00;
+ info64->lo_file_name[0] = '\0';
+ info64->lo_crypt_name[0] = '\0';
+ info64->lo_encrypt_key[0] = '\0';
+ info64->lo_encrypt_key_size = 1;
+
+ printf("ioctl(-1, LOOP_SET_STATUS64, ");
+ print_loop_info64(info64, true, NULL, "\\0", NULL);
+ ioctl(-1, LOOP_SET_STATUS64, info64);
+ printf(") = -1 EBADF (%m)\n");
+
+ fill_memory(info64, sizeof(*info64));
+ info64->lo_flags = LO_FLAGS_READ_ONLY;
+ info64->lo_encrypt_type = LO_CRYPT_NONE;
+ memset(info64->lo_file_name, 'C', sizeof(info64->lo_file_name));
+ memset(info64->lo_crypt_name, 'D', sizeof(info64->lo_crypt_name));
+ memset(info64->lo_encrypt_key, 'E', sizeof(info64->lo_encrypt_key));
+
+ ioctl(-1, LOOP_SET_STATUS64, (void *) info64 + ALIGNOF(info64));
+ printf("ioctl(-1, LOOP_SET_STATUS64, %p) = -1 EBADF (%m)\n",
+ (void *) info64 + ALIGNOF(info64));
+
+ printf("ioctl(-1, LOOP_SET_STATUS64, ");
+ print_loop_info64(info64, false, "LO_CRYPT_NONE", NULL,
+ "LO_FLAGS_READ_ONLY");
+ ioctl(-1, LOOP_SET_STATUS64, info64);
+ printf(") = -1 EBADF (%m)\n");
+
+ /* LOOP_GET_STATUS64 */
+ ioctl(-1, LOOP_GET_STATUS64, NULL);
+ printf("ioctl(-1, LOOP_GET_STATUS64, NULL) = -1 EBADF (%m)\n");
+
+ ioctl(-1, LOOP_GET_STATUS64, (unsigned long) info64 | kernel_mask);
+ printf("ioctl(-1, LOOP_GET_STATUS64, %p) = -1 EBADF (%m)\n", info64);
+
+ /* LOOP_CHANGE_FD */
+ ioctl(-1, LOOP_CHANGE_FD, magic);
+ printf("ioctl(-1, LOOP_CHANGE_FD, %d) = -1 EBADF (%m)\n",
+ (unsigned int) magic);
+
+ /* LOOP_SET_CAPACITY */
+ ioctl(-1, LOOP_SET_CAPACITY);
+ printf("ioctl(-1, LOOP_SET_CAPACITY) = -1 EBADF (%m)\n");
+
+ /* LOOP_SET_DIRECT_IO */
+ ioctl(-1, LOOP_SET_DIRECT_IO, magic);
+ printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n",
+ (unsigned long) magic);
+
+ /* LOOP_CTL_ADD */
+ ioctl(-1, LOOP_CTL_ADD, magic);
+ printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n",
+ (unsigned int) magic);
+
+ /* LOOP_CTL_REMOVE */
+ ioctl(-1, LOOP_CTL_REMOVE, magic);
+ printf("ioctl(-1, LOOP_CTL_REMOVE, %d) = -1 EBADF (%m)\n",
+ (unsigned int) magic);
+
+ /* LOOP_CTL_GET_FREE */
+ ioctl(-1, LOOP_CTL_GET_FREE);
+ printf("ioctl(-1, LOOP_CTL_GET_FREE) = -1 EBADF (%m)\n");
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/ioctl_loop.test b/tests/ioctl_loop.test
new file mode 100755
index 0000000..112cd63
--- /dev/null
+++ b/tests/ioctl_loop.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of LOOP_* ioctls.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a22 -eioctl $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_mtd.c b/tests/ioctl_mtd.c
index b761da8..a37d5d0 100644
--- a/tests/ioctl_mtd.c
+++ b/tests/ioctl_mtd.c
@@ -42,18 +42,7 @@
# include <mtd/mtd-abi.h>
#endif
-static const unsigned int magic = 0xdeadbeef;
-static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0ded;
-
-static void
-init_magic(void *addr, const unsigned int size)
-{
- unsigned int *p = addr;
- const unsigned int *end = addr + size - sizeof(int);
-
- for (; p <= end; ++p)
- *(unsigned int *) p = magic;
-}
+static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
#define TEST_NULL_ARG(cmd) \
do { \
@@ -113,7 +102,7 @@
" = -1 EBADF (%m)\n", (unsigned int) _IOC_NR(OTPSELECT));
uint64_t *const v64 = tail_alloc(sizeof(*v64));
- init_magic(v64, sizeof(*v64));
+ fill_memory(v64, sizeof(*v64));
ioctl(-1, MEMGETBADBLOCK, v64);
printf("ioctl(-1, MIXER_WRITE(%u) or MEMGETBADBLOCK, [%" PRIu64 "])"
@@ -126,7 +115,7 @@
(unsigned int) _IOC_NR(MEMSETBADBLOCK), *v64);
struct region_info_user *const riu = tail_alloc(sizeof(*riu));
- init_magic(riu, sizeof(*riu));
+ fill_memory(riu, sizeof(*riu));
ioctl(-1, MEMGETREGIONINFO, riu);
printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
"MEMGETREGIONINFO"
@@ -136,7 +125,7 @@
, riu->regionindex);
struct erase_info_user *const eiu = tail_alloc(sizeof(*eiu));
- init_magic(eiu, sizeof(*eiu));
+ fill_memory(eiu, sizeof(*eiu));
TEST_erase_info_user(MEMERASE, eiu);
TEST_erase_info_user(MEMLOCK, eiu);
@@ -144,7 +133,7 @@
TEST_erase_info_user(MEMISLOCKED, eiu);
struct erase_info_user64 *const eiu64 = tail_alloc(sizeof(*eiu64));
- init_magic(eiu64, sizeof(*eiu64));
+ fill_memory(eiu64, sizeof(*eiu64));
ioctl(-1, MEMERASE64, eiu64);
printf("ioctl(-1, MIXER_WRITE(%u) or %s, {start=%#llx, length=%#llx})"
" = -1 EBADF (%m)\n",
@@ -153,7 +142,7 @@
(unsigned long long) eiu64->length);
struct mtd_oob_buf *const oob = tail_alloc(sizeof(*oob));
- init_magic(oob, sizeof(*oob));
+ fill_memory(oob, sizeof(*oob));
ioctl(-1, MEMWRITEOOB, oob);
printf("ioctl(-1, MEMWRITEOOB, {start=%#x, length=%#x, ptr=%p})"
@@ -164,7 +153,7 @@
" = -1 EBADF (%m)\n", oob->start, oob->length, oob->ptr);
struct mtd_oob_buf64 *const oob64 = tail_alloc(sizeof(*oob64));
- init_magic(oob64, sizeof(*oob64));
+ fill_memory(oob64, sizeof(*oob64));
ioctl(-1, MEMWRITEOOB64, oob64);
printf("ioctl(-1, MEMWRITEOOB64"
@@ -180,14 +169,14 @@
struct otp_info *const oi = tail_alloc(sizeof(*oi));
- init_magic(oi, sizeof(*oi));
+ fill_memory(oi, sizeof(*oi));
ioctl(-1, OTPLOCK, oi);
printf("ioctl(-1, MIXER_READ(%u) or OTPLOCK"
", {start=%#x, length=%#x, locked=%u}) = -1 EBADF (%m)\n",
(unsigned int) _IOC_NR(OTPLOCK), oi->start, oi->length, oi->locked);
struct mtd_write_req *const wr = tail_alloc(sizeof(*wr));
- init_magic(wr, sizeof(*wr));
+ fill_memory(wr, sizeof(*wr));
wr->mode = MTD_OPS_PLACE_OOB;
ioctl(-1, MEMWRITE, wr);
printf("ioctl(-1, MEMWRITE, {start=%#llx, len=%#llx, ooblen=%#llx"
diff --git a/tests/ioctl_rtc.c b/tests/ioctl_rtc.c
index ac96763..49d7ec7 100644
--- a/tests/ioctl_rtc.c
+++ b/tests/ioctl_rtc.c
@@ -36,18 +36,7 @@
#include <linux/rtc.h>
#include "xlat.h"
-static const unsigned int magic = 0xdeadbeef;
-static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0ded;
-
-static void
-init_magic(void *addr, const unsigned int size)
-{
- unsigned int *p = addr;
- const unsigned int *end = addr + size - sizeof(int);
-
- for (; p <= end; ++p)
- *(unsigned int *) p = magic;
-}
+static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
static void
print_rtc_time(const struct rtc_time *rt)
@@ -82,16 +71,16 @@
const unsigned int size = get_page_size();
void *const page = tail_alloc(size);
- init_magic(page, size);
+ fill_memory(page, size);
struct rtc_time *rt = tail_alloc(sizeof(*rt));
- init_magic(rt, sizeof(*rt));
+ fill_memory(rt, sizeof(*rt));
struct rtc_wkalrm *wk = tail_alloc(sizeof(*wk));
- init_magic(wk, sizeof(*wk));
+ fill_memory(wk, sizeof(*wk));
struct rtc_pll_info *pll = tail_alloc(sizeof(*pll));
- init_magic(pll, sizeof(*pll));
+ fill_memory(pll, sizeof(*pll));
/* RTC_ALM_READ */
ioctl(-1, RTC_ALM_READ, 0);
diff --git a/tests/ioctl_scsi.c b/tests/ioctl_scsi.c
new file mode 100644
index 0000000..0db94d8
--- /dev/null
+++ b/tests/ioctl_scsi.c
@@ -0,0 +1,156 @@
+/*
+ * Check decoding of SCSI ioctl commands.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SCSI_SG_H
+
+# include <stdio.h>
+# include <sys/ioctl.h>
+# include <scsi/sg.h>
+# include "xlat/scsi_sg_commands.h"
+
+# define TEST_NO_ARG(cmd) \
+ do { \
+ ioctl(-1, cmd, 0xdeadbeef); \
+ printf("ioctl(-1, %s) = -1 EBADF (%m)\n", #cmd); \
+ } while (0)
+
+# define TEST_NULL_ARG(cmd) \
+ do { \
+ ioctl(-1, cmd, 0); \
+ printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \
+ } while (0)
+
+# define TEST_TAKES_INT_BY_VAL(cmd, val) \
+ do { \
+ ioctl(-1, cmd, val); \
+ printf("ioctl(-1, %s, %#x) = -1 EBADF (%m)\n", #cmd, val); \
+ } while (0)
+
+# define TEST_TAKES_INT_BY_PTR(cmd, pint) \
+ do { \
+ ioctl(-1, cmd, pint); \
+ printf("ioctl(-1, %s, [%d]) = -1 EBADF (%m)\n", #cmd, *(pint)); \
+ } while (0)
+
+# define TEST_RETURNS_INT_BY_PTR(cmd, pint) \
+ do { \
+ ioctl(-1, cmd, pint); \
+ printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n", #cmd, pint); \
+ } while (0)
+
+int
+main(void)
+{
+ int *const pint = tail_alloc(sizeof(*pint));
+ *pint = (int) 0xfacefeed;
+
+ TEST_NO_ARG(SG_GET_TIMEOUT);
+
+ TEST_NULL_ARG(SG_SET_TIMEOUT);
+ TEST_NULL_ARG(SG_EMULATED_HOST);
+ TEST_NULL_ARG(SG_GET_TRANSFORM);
+ TEST_NULL_ARG(SG_GET_COMMAND_Q);
+ TEST_NULL_ARG(SG_SET_COMMAND_Q);
+ TEST_NULL_ARG(SG_GET_RESERVED_SIZE);
+ TEST_NULL_ARG(SG_SET_RESERVED_SIZE);
+ TEST_NULL_ARG(SG_GET_SCSI_ID);
+ TEST_NULL_ARG(SG_SET_FORCE_LOW_DMA);
+ TEST_NULL_ARG(SG_GET_LOW_DMA);
+ TEST_NULL_ARG(SG_SET_FORCE_PACK_ID);
+ TEST_NULL_ARG(SG_GET_PACK_ID);
+ TEST_NULL_ARG(SG_GET_NUM_WAITING);
+ TEST_NULL_ARG(SG_SET_DEBUG);
+ TEST_NULL_ARG(SG_GET_SG_TABLESIZE);
+ TEST_NULL_ARG(SG_GET_VERSION_NUM);
+ TEST_NULL_ARG(SG_NEXT_CMD_LEN);
+ TEST_NULL_ARG(SG_SCSI_RESET);
+ TEST_NULL_ARG(SG_IO);
+ TEST_NULL_ARG(SG_GET_REQUEST_TABLE);
+ TEST_NULL_ARG(SG_SET_KEEP_ORPHAN);
+ TEST_NULL_ARG(SG_GET_KEEP_ORPHAN);
+ TEST_NULL_ARG(SG_GET_ACCESS_COUNT);
+
+ TEST_TAKES_INT_BY_VAL(SG_SET_TRANSFORM, 0);
+ TEST_TAKES_INT_BY_VAL(SG_SET_TRANSFORM, *pint);
+
+ TEST_TAKES_INT_BY_PTR(SG_NEXT_CMD_LEN, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_COMMAND_Q, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_DEBUG, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_FORCE_LOW_DMA, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_FORCE_PACK_ID, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_KEEP_ORPHAN, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_RESERVED_SIZE, pint);
+ TEST_TAKES_INT_BY_PTR(SG_SET_TIMEOUT, pint);
+
+ TEST_RETURNS_INT_BY_PTR(SG_EMULATED_HOST, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_ACCESS_COUNT, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_COMMAND_Q, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_KEEP_ORPHAN, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_LOW_DMA, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_NUM_WAITING, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_PACK_ID, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_RESERVED_SIZE, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_SG_TABLESIZE, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_TRANSFORM, pint);
+ TEST_RETURNS_INT_BY_PTR(SG_GET_VERSION_NUM, pint);
+
+ ioctl(-1, SG_SCSI_RESET, pint);
+ printf("ioctl(-1, %s, [%#x /* %s_??? */]) = -1 EBADF (%m)\n",
+ "SG_SCSI_RESET", *pint, "SG_SCSI_RESET");
+
+ *pint = 0x100;
+ ioctl(-1, SG_SCSI_RESET, pint);
+ printf("ioctl(-1, %s, [SG_SCSI_RESET_NO_ESCALATE|SG_SCSI_RESET_NOTHING])"
+ " = -1 EBADF (%m)\n", "SG_SCSI_RESET");
+
+ *pint = 1;
+ ioctl(-1, SG_SCSI_RESET, pint);
+ printf("ioctl(-1, %s, [SG_SCSI_RESET_DEVICE]) = -1 EBADF (%m)\n",
+ "SG_SCSI_RESET");
+
+ ioctl(-1, 0x22ff, 0);
+ printf("ioctl(-1, _IOC(0, 0x22, 0xff, 0), 0) = -1 EBADF (%m)\n");
+
+ static const unsigned long magic =
+ (unsigned long) 0xdeadbeeffacefeedULL;
+ ioctl(-1, 0x22ff, magic);
+ printf("ioctl(-1, _IOC(0, 0x22, 0xff, 0), %#lx) = -1 EBADF (%m)\n",
+ magic);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SCSI_SG_H")
+
+#endif
diff --git a/tests/ioctl_scsi.test b/tests/ioctl_scsi.test
new file mode 100755
index 0000000..2710f12
--- /dev/null
+++ b/tests/ioctl_scsi.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Check decoding of SCSI ioctl commands.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v3.c b/tests/ioctl_sg_io_v3.c
new file mode 100644
index 0000000..ef25795
--- /dev/null
+++ b/tests/ioctl_sg_io_v3.c
@@ -0,0 +1,418 @@
+/*
+ * Check decoding of ioctl SG_IO v3 commands.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SCSI_SG_H
+
+# include <inttypes.h>
+# include <stdio.h>
+# include <sys/ioctl.h>
+# include <sys/uio.h>
+# include <scsi/sg.h>
+
+int
+main(void)
+{
+ ioctl(-1, SG_IO, 0);
+ printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
+
+ struct sg_io_hdr *const sg_io = tail_alloc(sizeof(*sg_io));
+ fill_memory(sg_io, sizeof(*sg_io));
+
+ const void *const efault = sg_io + 1;
+ ioctl(-1, SG_IO, efault);
+ printf("ioctl(-1, SG_IO, %p) = -1 EBADF (%m)\n", efault);
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->interface_id);
+
+ unsigned int *const piid = tail_alloc(sizeof(*piid));
+ *piid = (unsigned char) 'S';
+ ioctl(-1, SG_IO, piid);
+ printf("ioctl(-1, SG_IO, {interface_id='S', %p}) = -1 EBADF (%m)\n", piid + 1);
+
+ sg_io->interface_id = (unsigned char) 'S';
+ sg_io->dxfer_direction = -2;
+ sg_io->flags = -1U;
+ sg_io->info = -1U;
+ sg_io->dxferp = (void *) (unsigned long) 0xfacefeedfffffff1ULL;
+ sg_io->cmdp = (void *) (unsigned long) 0xfacefeedfffffff2ULL;
+ sg_io->sbp = (void *) (unsigned long) 0xfacefeedfffffff3ULL;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_TO_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=SG_FLAG_DIRECT_IO|SG_FLAG_UNUSED_LUN_INHIBIT"
+ "|SG_FLAG_MMAP_IO|SG_FLAG_NO_DXFER"
+ "|SG_FLAG_Q_AT_TAIL|SG_FLAG_Q_AT_HEAD|0xfffeffc8"
+ ", dxferp=%p"
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK|SG_INFO_DIRECT_IO|SG_INFO_MIXED_IO|0xfffffff8"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ sg_io->dxferp,
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ sg_io->dxfer_direction = -3;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_FROM_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=SG_FLAG_DIRECT_IO|SG_FLAG_UNUSED_LUN_INHIBIT"
+ "|SG_FLAG_MMAP_IO|SG_FLAG_NO_DXFER"
+ "|SG_FLAG_Q_AT_TAIL|SG_FLAG_Q_AT_HEAD|0xfffeffc8"
+ ", dxferp=%p"
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK|SG_INFO_DIRECT_IO|SG_INFO_MIXED_IO|0xfffffff8"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ sg_io->dxferp,
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ const struct iovec iov[] = {
+ {
+ .iov_base = (void *) efault - 2,
+ .iov_len = 2
+ }, {
+ .iov_base = (void *) efault - 3,
+ .iov_len = 4
+ }
+ };
+ struct iovec *const t_iov = tail_memdup(iov, sizeof(iov));
+
+ sg_io->flags = 0x24;
+ sg_io->info = 1;
+ sg_io->dxfer_direction = -2;
+
+ sg_io->iovec_count = ARRAY_SIZE(iov);
+ sg_io->dxfer_len = iov[0].iov_len + iov[1].iov_len - 1;
+ sg_io->dxferp = t_iov;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_TO_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=SG_FLAG_MMAP_IO|SG_FLAG_Q_AT_HEAD"
+ ", dxferp=[{iov_base=\"\\%o\\%o\", iov_len=%u}"
+ ", {iov_base=\"\\%o\\%o\\%o\", iov_len=%u}]"
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ * (unsigned char *) (iov[0].iov_base + 0),
+ * (unsigned char *) (iov[0].iov_base + 1),
+ (unsigned int) iov[0].iov_len,
+ * (unsigned char *) (iov[1].iov_base + 0),
+ * (unsigned char *) (iov[1].iov_base + 1),
+ * (unsigned char *) (iov[1].iov_base + 2),
+ (unsigned int) iov[1].iov_len,
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ sg_io->flags = 0x11;
+ sg_io->dxfer_direction = -3;
+ sg_io->resid = sg_io->dxfer_len + 1;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_FROM_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=SG_FLAG_DIRECT_IO|SG_FLAG_Q_AT_TAIL"
+ ", dxferp=[{iov_base=\"\\%o\\%o\", iov_len=%u}"
+ ", {iov_base=\"\\%o\\%o\\%o\", iov_len=%u}]"
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ * (unsigned char *) (iov[0].iov_base + 0),
+ * (unsigned char *) (iov[0].iov_base + 1),
+ (unsigned int) iov[0].iov_len,
+ * (unsigned char *) (iov[1].iov_base + 0),
+ * (unsigned char *) (iov[1].iov_base + 1),
+ * (unsigned char *) (iov[1].iov_base + 2),
+ (unsigned int) iov[1].iov_len,
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ sg_io->flags = 0x10000;
+ sg_io->info = 0xdeadbeef;
+ sg_io->iovec_count = 0;
+ sg_io->dxfer_len = 5;
+ sg_io->resid = 1;
+ sg_io->dxferp = (void *) efault - (sg_io->dxfer_len - sg_io->resid);
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_FROM_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=SG_FLAG_NO_DXFER"
+ ", dxferp=\"\\x%x\\x%x\\x%x\\x%x\""
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK|SG_INFO_DIRECT_IO|SG_INFO_MIXED_IO|0xdeadbee8"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ * (unsigned char *) (sg_io->dxferp + 0),
+ * (unsigned char *) (sg_io->dxferp + 1),
+ * (unsigned char *) (sg_io->dxferp + 2),
+ * (unsigned char *) (sg_io->dxferp + 3),
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ sg_io->flags = 2;
+ sg_io->dxfer_direction = -4;
+ sg_io->dxfer_len = 3;
+ sg_io->resid = 1;
+ sg_io->dxferp = (void *) efault - sg_io->dxfer_len;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_TO_FROM_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=SG_FLAG_UNUSED_LUN_INHIBIT"
+ ", dxferp=\"\\x%x\\x%x\\x%x\" => dxferp=\"\\x%x\\x%x\""
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK|SG_INFO_DIRECT_IO|SG_INFO_MIXED_IO|0xdeadbee8"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ * (unsigned char *) (sg_io->dxferp + 0),
+ * (unsigned char *) (sg_io->dxferp + 1),
+ * (unsigned char *) (sg_io->dxferp + 2),
+ * (unsigned char *) (sg_io->dxferp + 0),
+ * (unsigned char *) (sg_io->dxferp + 1),
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ sg_io->flags = 0;
+ sg_io->resid = sg_io->dxfer_len;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {interface_id='S'"
+ ", dxfer_direction=SG_DXFER_TO_FROM_DEV"
+ ", cmd_len=%u"
+ ", cmdp=%p"
+ ", mx_sb_len=%u"
+ ", iovec_count=%u"
+ ", dxfer_len=%u"
+ ", timeout=%u"
+ ", flags=0"
+ ", dxferp=\"\\x%x\\x%x\\x%x\""
+ ", status=%#x"
+ ", masked_status=%#x"
+ ", msg_status=%#x"
+ ", sb_len_wr=%u"
+ ", sbp=%p"
+ ", host_status=%#x"
+ ", driver_status=%#x"
+ ", resid=%d"
+ ", duration=%u"
+ ", info=SG_INFO_CHECK|SG_INFO_DIRECT_IO|SG_INFO_MIXED_IO|0xdeadbee8"
+ "}) = -1 EBADF (%m)\n",
+ sg_io->cmd_len,
+ sg_io->cmdp,
+ sg_io->mx_sb_len,
+ sg_io->iovec_count,
+ sg_io->dxfer_len,
+ sg_io->timeout,
+ * (unsigned char *) (sg_io->dxferp + 0),
+ * (unsigned char *) (sg_io->dxferp + 1),
+ * (unsigned char *) (sg_io->dxferp + 2),
+ sg_io->status,
+ sg_io->masked_status,
+ sg_io->msg_status,
+ sg_io->sb_len_wr,
+ sg_io->sbp,
+ sg_io->host_status,
+ sg_io->driver_status,
+ sg_io->resid,
+ sg_io->duration);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SCSI_SG_H")
+
+#endif
diff --git a/tests/ioctl_sg_io_v3.test b/tests/ioctl_sg_io_v3.test
new file mode 100755
index 0000000..dacacdf
--- /dev/null
+++ b/tests/ioctl_sg_io_v3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Check decoding of ioctl SG_IO v3 commands.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v4.c b/tests/ioctl_sg_io_v4.c
new file mode 100644
index 0000000..5f899ee
--- /dev/null
+++ b/tests/ioctl_sg_io_v4.c
@@ -0,0 +1,238 @@
+/*
+ * Check decoding of ioctl SG_IO v4 commands.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_BSG_H
+
+# include <inttypes.h>
+# include <stdio.h>
+# include <sys/ioctl.h>
+# include <sys/uio.h>
+# include <linux/bsg.h>
+
+# include "xlat/scsi_sg_commands.h"
+
+int
+main(void)
+{
+ ioctl(-1, SG_IO, 0);
+ printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
+
+ struct sg_io_v4 *const sg_io = tail_alloc(sizeof(*sg_io));
+ fill_memory(sg_io, sizeof(*sg_io));
+
+ const void *const efault = sg_io + 1;
+ ioctl(-1, SG_IO, efault);
+ printf("ioctl(-1, SG_IO, %p) = -1 EBADF (%m)\n", efault);
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->guard);
+
+ unsigned int *const pguard = tail_alloc(sizeof(*pguard));
+ *pguard = (unsigned char) 'Q';
+ ioctl(-1, SG_IO, pguard);
+ printf("ioctl(-1, SG_IO, {guard='Q', %p}) = -1 EBADF (%m)\n", pguard + 1);
+
+ sg_io->guard = (unsigned char) 'Q';
+ sg_io->protocol = 0;
+ sg_io->subprotocol = 1;
+ sg_io->flags = -1U;
+ sg_io->info = -1U;
+ sg_io->request = (kernel_ulong_t) 0xfacefeedfffffff1ULL;
+ sg_io->response = (kernel_ulong_t) 0xfacefeedfffffff2ULL;
+ sg_io->dout_xferp = (kernel_ulong_t) 0xfacefeedfffffff3ULL;
+ sg_io->din_xferp = (kernel_ulong_t) 0xfacefeedfffffff4ULL;
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {guard='Q'"
+ ", protocol=BSG_PROTOCOL_SCSI"
+ ", subprotocol=BSG_SUB_PROTOCOL_SCSI_TMF"
+ ", request_len=%u"
+ ", request=%#llx"
+ ", request_tag=%#" PRI__x64
+ ", request_attr=%u"
+ ", request_priority=%u"
+ ", request_extra=%u"
+ ", max_response_len=%u"
+ ", dout_iovec_count=%u"
+ ", dout_xfer_len=%u"
+ ", din_iovec_count=%u"
+ ", din_xfer_len=%u"
+ ", dout_xferp=%#llx"
+ ", timeout=%u"
+ ", flags=BSG_FLAG_Q_AT_TAIL|BSG_FLAG_Q_AT_HEAD|0xffffffcf"
+ ", usr_ptr=%#" PRI__x64
+ ", response_len=%u"
+ ", response=%#llx"
+ ", din_xferp=%#llx"
+ ", driver_status=%#x"
+ ", transport_status=%#x"
+ ", device_status=%#x"
+ ", retry_delay=%u"
+ ", info=SG_INFO_CHECK|SG_INFO_DIRECT_IO|SG_INFO_MIXED_IO|0xfffffff8"
+ ", duration=%u"
+ ", response_len=%u"
+ ", din_resid=%d"
+ ", dout_resid=%d"
+ ", generated_tag=%#" PRI__x64 "}) = -1 EBADF (%m)\n",
+ sg_io->request_len,
+ (unsigned long long) (kernel_ulong_t) sg_io->request,
+ sg_io->request_tag,
+ sg_io->request_attr,
+ sg_io->request_priority,
+ sg_io->request_extra,
+ sg_io->max_response_len,
+ sg_io->dout_iovec_count,
+ sg_io->dout_xfer_len,
+ sg_io->din_iovec_count,
+ sg_io->din_xfer_len,
+ (unsigned long long) (kernel_ulong_t) sg_io->dout_xferp,
+ sg_io->timeout,
+ sg_io->usr_ptr,
+ sg_io->response_len,
+ (unsigned long long) (kernel_ulong_t) sg_io->response,
+ (unsigned long long) (kernel_ulong_t) sg_io->din_xferp,
+ sg_io->driver_status,
+ sg_io->transport_status,
+ sg_io->device_status,
+ sg_io->retry_delay,
+ sg_io->duration,
+ sg_io->response_len,
+ sg_io->din_resid,
+ sg_io->dout_resid,
+ sg_io->generated_tag);
+
+ const struct iovec iov[] = {
+ {
+ .iov_base = (void *) efault - 2,
+ .iov_len = 2
+ }, {
+ .iov_base = (void *) efault - 3,
+ .iov_len = 4
+ }
+ };
+ const struct iovec *const t_iov = tail_memdup(iov, sizeof(iov));
+ sg_io->dout_iovec_count = ARRAY_SIZE(iov);
+ sg_io->dout_xfer_len = iov[0].iov_len + iov[1].iov_len - 1;
+ sg_io->dout_xferp = (unsigned long) t_iov;
+
+ sg_io->din_iovec_count = 0;
+ sg_io->din_xfer_len = 5;
+ sg_io->din_resid = 1;
+ sg_io->din_xferp = (unsigned long) efault -
+ (sg_io->dout_xfer_len - sg_io->din_resid);
+
+ sg_io->request_len = 3;
+ sg_io->request = (unsigned long) efault - sg_io->request_len;
+ sg_io->response_len = 2;
+ sg_io->response = (unsigned long) efault - sg_io->response_len;
+
+ sg_io->flags = 0x20;
+ sg_io->info = 1;
+
+ ioctl(-1, SG_IO, sg_io);
+ printf("ioctl(-1, SG_IO, {guard='Q'"
+ ", protocol=BSG_PROTOCOL_SCSI"
+ ", subprotocol=BSG_SUB_PROTOCOL_SCSI_TMF"
+ ", request_len=%u"
+ ", request=\"\\x%x\\x%x\\x%x\""
+ ", request_tag=%#" PRI__x64
+ ", request_attr=%u"
+ ", request_priority=%u"
+ ", request_extra=%u"
+ ", max_response_len=%u"
+ ", dout_iovec_count=%u"
+ ", dout_xfer_len=%u"
+ ", din_iovec_count=%u"
+ ", din_xfer_len=%u"
+ ", dout_xferp=[{iov_base=\"\\%o\\%o\", iov_len=%u}"
+ ", {iov_base=\"\\%o\\%o\\%o\", iov_len=%u}]"
+ ", timeout=%u, flags=BSG_FLAG_Q_AT_HEAD"
+ ", usr_ptr=%#" PRI__x64
+ ", response_len=%u"
+ ", response=\"\\x%x\\x%x\""
+ ", din_xferp=\"\\x%x\\x%x\\x%x\\x%x\""
+ ", driver_status=%#x"
+ ", transport_status=%#x"
+ ", device_status=%#x"
+ ", retry_delay=%u"
+ ", info=SG_INFO_CHECK"
+ ", duration=%u"
+ ", response_len=%u"
+ ", din_resid=%d"
+ ", dout_resid=%d"
+ ", generated_tag=%#" PRI__x64 "}) = -1 EBADF (%m)\n",
+ sg_io->request_len,
+ * (unsigned char *) ((unsigned long) sg_io->request + 0),
+ * (unsigned char *) ((unsigned long) sg_io->request + 1),
+ * (unsigned char *) ((unsigned long) sg_io->request + 2),
+ sg_io->request_tag,
+ sg_io->request_attr,
+ sg_io->request_priority,
+ sg_io->request_extra,
+ sg_io->max_response_len,
+ sg_io->dout_iovec_count,
+ sg_io->dout_xfer_len,
+ sg_io->din_iovec_count,
+ sg_io->din_xfer_len,
+ * (unsigned char *) (iov[0].iov_base + 0),
+ * (unsigned char *) (iov[0].iov_base + 1),
+ (unsigned int) iov[0].iov_len,
+ * (unsigned char *) (iov[1].iov_base + 0),
+ * (unsigned char *) (iov[1].iov_base + 1),
+ * (unsigned char *) (iov[1].iov_base + 2),
+ (unsigned int) iov[1].iov_len,
+ sg_io->timeout,
+ sg_io->usr_ptr,
+ sg_io->response_len,
+ * (unsigned char *) ((unsigned long) sg_io->response + 0),
+ * (unsigned char *) ((unsigned long) sg_io->response + 1),
+ * (unsigned char *) ((unsigned long) sg_io->din_xferp + 0),
+ * (unsigned char *) ((unsigned long) sg_io->din_xferp + 1),
+ * (unsigned char *) ((unsigned long) sg_io->din_xferp + 2),
+ * (unsigned char *) ((unsigned long) sg_io->din_xferp + 3),
+ sg_io->driver_status,
+ sg_io->transport_status,
+ sg_io->device_status,
+ sg_io->retry_delay,
+ sg_io->duration,
+ sg_io->response_len,
+ sg_io->din_resid,
+ sg_io->dout_resid,
+ sg_io->generated_tag);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_BSG_H")
+
+#endif
diff --git a/tests/ioctl_sg_io_v4.test b/tests/ioctl_sg_io_v4.test
new file mode 100755
index 0000000..2556722
--- /dev/null
+++ b/tests/ioctl_sg_io_v4.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Check decoding of ioctl SG_IO v4 commands.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sock_gifconf.c b/tests/ioctl_sock_gifconf.c
new file mode 100644
index 0000000..ae0bea4
--- /dev/null
+++ b/tests/ioctl_sock_gifconf.c
@@ -0,0 +1,182 @@
+/*
+ * Check decoding of SIOCGIFCONF command of ioctl syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <arpa/inet.h>
+#include <net/if.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+
+#define MAX_STRLEN 1
+
+static void
+print_ifc_len(int val)
+{
+ if (val % (int) sizeof(struct ifreq))
+ printf("%d", val);
+ else
+ printf("%d * sizeof(struct ifreq)",
+ val / (int) sizeof(struct ifreq));
+}
+
+static void
+print_ifconf(struct ifconf *ifc, int in_len, char *in_buf, long rc)
+{
+ if (in_buf) {
+ printf("{ifc_len=");
+ print_ifc_len(in_len);
+
+ if (in_len != ifc->ifc_len) {
+ printf(" => ");
+ print_ifc_len(ifc->ifc_len);
+ }
+ } else {
+ printf("{ifc_len=");
+ print_ifc_len(ifc->ifc_len);
+ }
+
+ printf(", ifc_buf=");
+
+ if ((rc < 0) || !in_buf) {
+ if (in_buf)
+ printf("%p", in_buf);
+ else
+ printf("NULL");
+ } else {
+ int i;
+
+ printf("[");
+ for (i = 0; i < (ifc->ifc_len) &&
+ i < (int) (MAX_STRLEN * sizeof(struct ifreq));
+ i += sizeof(struct ifreq)) {
+ struct ifreq *ifr = (struct ifreq *) (ifc->ifc_buf + i);
+ struct sockaddr_in *const sa_in =
+ (struct sockaddr_in *) &(ifr->ifr_addr);
+
+ if (i)
+ printf(", ");
+ printf("{ifr_name=\"%s\", ifr_addr={sa_family=AF_INET, "
+ "sin_port=htons(%u), sin_addr=inet_addr(\"%s\")}"
+ "}", ifr->ifr_name, ntohs(sa_in->sin_port),
+ inet_ntoa(sa_in->sin_addr));
+ }
+
+ if ((size_t) (ifc->ifc_len - i) >= sizeof(struct ifreq))
+ printf(", ...");
+
+ printf("]");
+ }
+
+ printf("}");
+}
+
+static void
+gifconf_ioctl(int fd, struct ifconf *ifc, bool ifc_valid)
+{
+ const char * errstr;
+ int in_len;
+ char *in_buf;
+ long rc;
+
+ if (ifc_valid) {
+ in_len = ifc->ifc_len;
+ in_buf = ifc->ifc_buf;
+ }
+
+ rc = ioctl(fd, SIOCGIFCONF, ifc);
+ errstr = sprintrc(rc);
+
+ printf("ioctl(%d, SIOCGIFCONF, ", fd);
+ if (ifc_valid) {
+ print_ifconf(ifc, in_len, in_buf, rc);
+ } else {
+ if (ifc)
+ printf("%p", ifc);
+ else
+ printf("NULL");
+ }
+
+ printf(") = %s\n", errstr);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct ifreq *ifr = tail_alloc(2 * sizeof(*ifr));
+ struct ifconf *ifc = tail_alloc(sizeof(*ifc));
+
+ struct sockaddr_in addr;
+ int fd;
+
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+ perror_msg_and_skip("socket AF_INET");
+
+ gifconf_ioctl(fd, NULL, false);
+ gifconf_ioctl(fd, ifc + 1, false);
+
+ ifc->ifc_len = 3141592653U;
+ ifc->ifc_buf = NULL;
+ gifconf_ioctl(fd, ifc, true);
+
+ ifc->ifc_len = 0;
+ ifc->ifc_buf = (char *) (ifr + 2);
+ gifconf_ioctl(fd, ifc, true);
+
+ ifc->ifc_len = 1;
+ ifc->ifc_buf = (char *) (ifr + 1);
+ gifconf_ioctl(fd, ifc, true);
+
+ ifc->ifc_len = 1 * sizeof(*ifr);
+ ifc->ifc_buf = (char *) (ifr + 1);
+ gifconf_ioctl(fd, ifc, true);
+
+ ifc->ifc_len = 2 * sizeof(*ifr);
+ ifc->ifc_buf = (char *) (ifr + 1);
+ gifconf_ioctl(fd, ifc, true);
+
+ ifc->ifc_len = 2 * sizeof(*ifr) + 2;
+ ifc->ifc_buf = (char *) ifr;
+ gifconf_ioctl(fd, ifc, true);
+
+ ifc->ifc_len = 3 * sizeof(*ifr) + 4;
+ ifc->ifc_buf = (char *) ifr;
+ gifconf_ioctl(fd, ifc, true);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/ioctl_sock_gifconf.test b/tests/ioctl_sock_gifconf.test
new file mode 100755
index 0000000..2e2fc01
--- /dev/null
+++ b/tests/ioctl_sock_gifconf.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of SIOCGIFCONF ioctl.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a28 -s1 -eioctl $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c
index 850783d..af8c341 100644
--- a/tests/ioctl_v4l2.c
+++ b/tests/ioctl_v4l2.c
@@ -32,40 +32,38 @@
#include <linux/types.h>
#include <linux/videodev2.h>
+#if WORDS_BIGENDIAN
+# define cc0(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 24))
+# define cc1(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 16))
+# define cc2(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 8))
+# define cc3(arg) ((unsigned int) (unsigned char) (arg))
+# define fourcc(a0, a1, a2, a3) \
+ ((unsigned int)(a3) | \
+ ((unsigned int)(a2) << 8) | \
+ ((unsigned int)(a1) << 16) | \
+ ((unsigned int)(a0) << 24))
+#else
+# define cc0(arg) ((unsigned int) (unsigned char) (arg))
+# define cc1(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 8))
+# define cc2(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 16))
+# define cc3(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 24))
+# define fourcc(a0, a1, a2, a3) \
+ ((unsigned int)(a0) | \
+ ((unsigned int)(a1) << 8) | \
+ ((unsigned int)(a2) << 16) | \
+ ((unsigned int)(a3) << 24))
+#endif
+
static const unsigned int magic = 0xdeadbeef;
-static void
-init_magic(void *addr, const unsigned int size)
-{
- unsigned int *p = addr;
- const unsigned int *end = addr + size;
-
- for (; p < end; ++p)
- *(unsigned int *) p = magic;
-}
-
int
main(void )
{
const unsigned int size = get_page_size();
void *const page = tail_alloc(size);
- init_magic(page, size);
+ fill_memory(page, size);
- const union u_pixel_format {
- unsigned int pixelformat;
- unsigned char cc[sizeof(int)];
- } u = {
-#if WORDS_BIGENDIAN
- .cc = {
- (unsigned char) (magic >> 24),
- (unsigned char) (magic >> 16),
- (unsigned char) (magic >> 8),
- (unsigned char) magic
- }
-#else
- .pixelformat = magic
-#endif
- };
+ unsigned char cc[sizeof(int)] = { 'A', '\'', '\\', '\xfa' };
/* VIDIOC_QUERYCAP */
ioctl(-1, VIDIOC_QUERYCAP, 0);
@@ -83,14 +81,14 @@
p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
printf("ioctl(-1, VIDIOC_ENUM_FMT, {index=%u"
- ", type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n", magic);
+ ", type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n",
+ p_fmtdesc->index);
/* VIDIOC_G_FMT */
ioctl(-1, VIDIOC_G_FMT, 0);
printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
- struct v4l2_format *const p_format =
- tail_alloc(sizeof(*p_format));
+ struct v4l2_format *const p_format = tail_alloc(sizeof(*p_format));
p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(-1, VIDIOC_G_FMT, p_format);
@@ -104,7 +102,7 @@
p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
p_format->fmt.pix.width = 0xdad1beaf;
p_format->fmt.pix.height = 0xdad2beaf;
- p_format->fmt.pix.pixelformat = 0xdeadbeef;
+ p_format->fmt.pix.pixelformat = magic;
p_format->fmt.pix.field = V4L2_FIELD_NONE;
p_format->fmt.pix.bytesperline = 0xdad3beaf;
p_format->fmt.pix.sizeimage = 0xdad4beaf;
@@ -117,7 +115,7 @@
", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
p_format->fmt.pix.width, p_format->fmt.pix.height,
- u.cc[0], u.cc[1], u.cc[2], u.cc[3],
+ cc0(magic), cc1(magic), cc2(magic), cc3(magic),
p_format->fmt.pix.bytesperline, p_format->fmt.pix.sizeimage);
/* VIDIOC_TRY_FMT */
@@ -129,7 +127,7 @@
p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
p_format->fmt.pix_mp.width = 0xdad1beaf;
p_format->fmt.pix_mp.height = 0xdad2beaf;
- p_format->fmt.pix_mp.pixelformat = 0xdeadbeef;
+ p_format->fmt.pix_mp.pixelformat = magic;
p_format->fmt.pix_mp.field = V4L2_FIELD_NONE;
p_format->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
unsigned int i;
@@ -145,7 +143,7 @@
", field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_JPEG"
", plane_fmt=[",
p_format->fmt.pix_mp.width, p_format->fmt.pix_mp.height,
- u.cc[0], u.cc[1], u.cc[2], u.cc[3]);
+ cc0(magic), cc1(magic), cc2(magic), cc3(magic));
for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
if (i)
printf(", ");
@@ -156,44 +154,55 @@
printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
p_format->fmt.pix_mp.num_planes);
#else
- ioctl(-1, VIDIOC_TRY_FMT, page);
+ struct v4l2_format *const p_v4l2_format =
+ page + size - sizeof(*p_v4l2_format);
+ ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_format->type);
#endif
/* VIDIOC_REQBUFS */
ioctl(-1, VIDIOC_REQBUFS, 0);
printf("ioctl(-1, VIDIOC_REQBUFS, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_REQBUFS,
- page + size - sizeof(struct v4l2_requestbuffers));
+ struct v4l2_requestbuffers *const p_v4l2_requestbuffers =
+ page + size - sizeof(*p_v4l2_requestbuffers);
+ ioctl(-1, VIDIOC_REQBUFS, p_v4l2_requestbuffers);
printf("ioctl(-1, VIDIOC_REQBUFS, {count=%u, type=%#x"
" /* V4L2_BUF_TYPE_??? */, memory=%#x /* V4L2_MEMORY_??? */})"
- " = -1 EBADF (%m)\n", magic, magic, magic);
+ " = -1 EBADF (%m)\n",
+ p_v4l2_requestbuffers->count,
+ p_v4l2_requestbuffers->type,
+ p_v4l2_requestbuffers->memory);
/* VIDIOC_QUERYBUF */
ioctl(-1, VIDIOC_QUERYBUF, 0);
printf("ioctl(-1, VIDIOC_QUERYBUF, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_QUERYBUF, page + size - sizeof(struct v4l2_buffer));
+ struct v4l2_buffer *const p_v4l2_buffer =
+ page + size - sizeof(*p_v4l2_buffer);
+ ioctl(-1, VIDIOC_QUERYBUF, p_v4l2_buffer);
printf("ioctl(-1, VIDIOC_QUERYBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
- ", index=%u}) = -1 EBADF (%m)\n", magic, magic);
+ ", index=%u}) = -1 EBADF (%m)\n",
+ p_v4l2_buffer->type, p_v4l2_buffer->index);
/* VIDIOC_QBUF */
ioctl(-1, VIDIOC_QBUF, 0);
printf("ioctl(-1, VIDIOC_QBUF, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_QBUF, page + size - sizeof(struct v4l2_buffer));
+ ioctl(-1, VIDIOC_QBUF, p_v4l2_buffer);
printf("ioctl(-1, VIDIOC_QBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
- ", index=%u}) = -1 EBADF (%m)\n", magic, magic);
+ ", index=%u}) = -1 EBADF (%m)\n",
+ p_v4l2_buffer->type, p_v4l2_buffer->index);
/* VIDIOC_DQBUF */
ioctl(-1, VIDIOC_DQBUF, 0);
printf("ioctl(-1, VIDIOC_DQBUF, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_DQBUF, page + size - sizeof(struct v4l2_buffer));
+ ioctl(-1, VIDIOC_DQBUF, p_v4l2_buffer);
printf("ioctl(-1, VIDIOC_DQBUF, {type=%#x"
- " /* V4L2_BUF_TYPE_??? */}) = -1 EBADF (%m)\n", magic);
+ " /* V4L2_BUF_TYPE_??? */}) = -1 EBADF (%m)\n",
+ p_v4l2_buffer->type);
/* VIDIOC_G_FBUF */
ioctl(-1, VIDIOC_G_FBUF, 0);
@@ -206,42 +215,49 @@
ioctl(-1, VIDIOC_S_FBUF, 0);
printf("ioctl(-1, VIDIOC_S_FBUF, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_S_FBUF, page + size - sizeof(struct v4l2_framebuffer));
+ struct v4l2_framebuffer *const p_v4l2_framebuffer =
+ page + size - sizeof(*p_v4l2_framebuffer);
+ ioctl(-1, VIDIOC_S_FBUF, p_v4l2_framebuffer);
printf("ioctl(-1, VIDIOC_S_FBUF, {capability=%#x"
- ", flags=%#x, base=%#lx}) = -1 EBADF (%m)\n",
- magic, magic, *(unsigned long *) page);
+ ", flags=%#x, base=%p}) = -1 EBADF (%m)\n",
+ p_v4l2_framebuffer->capability,
+ p_v4l2_framebuffer->flags,
+ p_v4l2_framebuffer->base);
/* VIDIOC_STREAMON */
ioctl(-1, VIDIOC_STREAMON, 0);
printf("ioctl(-1, VIDIOC_STREAMON, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_STREAMON, page + size - sizeof(int));
+ int *const p_int = page + size - sizeof(int);
+ ioctl(-1, VIDIOC_STREAMON, p_int);
printf("ioctl(-1, VIDIOC_STREAMON, [%#x /* V4L2_BUF_TYPE_??? */])"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", *p_int);
/* VIDIOC_STREAMOFF */
ioctl(-1, VIDIOC_STREAMOFF, 0);
printf("ioctl(-1, VIDIOC_STREAMOFF, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_STREAMOFF, page + size - sizeof(int));
+ ioctl(-1, VIDIOC_STREAMOFF, p_int);
printf("ioctl(-1, VIDIOC_STREAMOFF, [%#x /* V4L2_BUF_TYPE_??? */])"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", *p_int);
/* VIDIOC_G_PARM */
ioctl(-1, VIDIOC_G_PARM, 0);
printf("ioctl(-1, VIDIOC_G_PARM, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_G_PARM, page + size - sizeof(struct v4l2_streamparm));
+ struct v4l2_streamparm *const p_v4l2_streamparm =
+ page + size - sizeof(*p_v4l2_streamparm);
+ ioctl(-1, VIDIOC_G_PARM, p_v4l2_streamparm);
printf("ioctl(-1, VIDIOC_G_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
/* VIDIOC_S_PARM */
ioctl(-1, VIDIOC_S_PARM, 0);
printf("ioctl(-1, VIDIOC_S_PARM, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_S_PARM, page);
+ ioctl(-1, VIDIOC_S_PARM, p_v4l2_streamparm);
printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
struct v4l2_streamparm *const p_streamparm =
tail_alloc(sizeof(*p_streamparm));
@@ -279,58 +295,64 @@
ioctl(-1, VIDIOC_S_STD, 0);
printf("ioctl(-1, VIDIOC_S_STD, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_S_STD, page + size - sizeof(long long));
+ long long *const p_longlong = page + size - sizeof(*p_longlong);
+ ioctl(-1, VIDIOC_S_STD, p_longlong);
printf("ioctl(-1, VIDIOC_S_STD, [%#llx]) = -1 EBADF (%m)\n",
- *(unsigned long long *) page);
+ *p_longlong);
/* VIDIOC_ENUMSTD */
ioctl(-1, VIDIOC_ENUMSTD, 0);
printf("ioctl(-1, VIDIOC_ENUMSTD, NULL) = -1 EBADF (%m)\n");
- struct v4l2_standard *const p_standard =
- tail_alloc(sizeof(*p_standard));
- p_standard->index = magic;
- ioctl(-1, VIDIOC_ENUMSTD, p_standard);
+ struct v4l2_standard *const p_v4l2_standard =
+ page + size - sizeof(*p_v4l2_standard);
+ ioctl(-1, VIDIOC_ENUMSTD, p_v4l2_standard);
printf("ioctl(-1, VIDIOC_ENUMSTD, {index=%u}) = -1 EBADF (%m)\n",
- magic);
+ p_v4l2_standard->index);
/* VIDIOC_ENUMINPUT */
ioctl(-1, VIDIOC_ENUMINPUT, 0);
printf("ioctl(-1, VIDIOC_ENUMINPUT, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_ENUMINPUT, page);
+ struct v4l2_input *const p_v4l2_input =
+ page + size - sizeof(*p_v4l2_input);
+ ioctl(-1, VIDIOC_ENUMINPUT, p_v4l2_input);
printf("ioctl(-1, VIDIOC_ENUMINPUT, {index=%u}) = -1 EBADF (%m)\n",
- magic);
+ p_v4l2_input->index);
/* VIDIOC_G_CTRL */
ioctl(-1, VIDIOC_G_CTRL, 0);
printf("ioctl(-1, VIDIOC_G_CTRL, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_G_CTRL, page + size - sizeof(struct v4l2_control));
+ struct v4l2_control *const p_v4l2_control =
+ page + size - sizeof(*p_v4l2_control);
+ ioctl(-1, VIDIOC_G_CTRL, p_v4l2_control);
printf("ioctl(-1, VIDIOC_G_CTRL, {id=%#x /* V4L2_CID_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_control->id);
/* VIDIOC_S_CTRL */
ioctl(-1, VIDIOC_S_CTRL, 0);
printf("ioctl(-1, VIDIOC_S_CTRL, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_S_CTRL, page + size - sizeof(struct v4l2_control));
+ ioctl(-1, VIDIOC_S_CTRL, p_v4l2_control);
printf("ioctl(-1, VIDIOC_S_CTRL, {id=%#x /* V4L2_CID_??? */"
- ", value=%d}) = -1 EBADF (%m)\n", magic, magic);
+ ", value=%d}) = -1 EBADF (%m)\n",
+ p_v4l2_control->id, p_v4l2_control->value);
/* VIDIOC_QUERYCTRL */
ioctl(-1, VIDIOC_QUERYCTRL, 0);
printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_QUERYCTRL,
- page + size - sizeof(struct v4l2_queryctrl));
+ struct v4l2_queryctrl *const p_v4l2_queryctrl =
+ page + size - sizeof(*p_v4l2_queryctrl);
+ ioctl(-1, VIDIOC_QUERYCTRL, p_v4l2_queryctrl);
# ifdef V4L2_CTRL_FLAG_NEXT_CTRL
printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL"
"|%#x /* V4L2_CID_??? */}) = -1 EBADF (%m)\n",
- magic & ~V4L2_CTRL_FLAG_NEXT_CTRL);
+ p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL);
# else
printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=%#x /* V4L2_CID_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
# endif
struct v4l2_queryctrl *const p_queryctrl =
@@ -351,33 +373,41 @@
ioctl(-1, VIDIOC_S_INPUT, 0);
printf("ioctl(-1, VIDIOC_S_INPUT, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_S_INPUT, page + size - sizeof(int));
- printf("ioctl(-1, VIDIOC_S_INPUT, [%u]) = -1 EBADF (%m)\n", magic);
+ ioctl(-1, VIDIOC_S_INPUT, p_int);
+ printf("ioctl(-1, VIDIOC_S_INPUT, [%u]) = -1 EBADF (%m)\n", *p_int);
/* VIDIOC_CROPCAP */
ioctl(-1, VIDIOC_CROPCAP, 0);
printf("ioctl(-1, VIDIOC_CROPCAP, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_CROPCAP, page + size - sizeof(struct v4l2_cropcap));
+ struct v4l2_cropcap *const p_v4l2_cropcap =
+ page + size - sizeof(*p_v4l2_cropcap);
+ ioctl(-1, VIDIOC_CROPCAP, p_v4l2_cropcap);
printf("ioctl(-1, VIDIOC_CROPCAP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_cropcap->type);
/* VIDIOC_G_CROP */
ioctl(-1, VIDIOC_G_CROP, 0);
printf("ioctl(-1, VIDIOC_G_CROP, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_G_CROP, page + size - sizeof(struct v4l2_crop));
+ struct v4l2_crop *const p_v4l2_crop =
+ page + size - sizeof(*p_v4l2_crop);
+ ioctl(-1, VIDIOC_G_CROP, p_v4l2_crop);
printf("ioctl(-1, VIDIOC_G_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
- " = -1 EBADF (%m)\n", magic);
+ " = -1 EBADF (%m)\n", p_v4l2_crop->type);
/* VIDIOC_S_CROP */
ioctl(-1, VIDIOC_S_CROP, 0);
printf("ioctl(-1, VIDIOC_S_CROP, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_S_CROP, page + size - sizeof(struct v4l2_crop));
+ ioctl(-1, VIDIOC_S_CROP, p_v4l2_crop);
printf("ioctl(-1, VIDIOC_S_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */"
", c={left=%d, top=%d, width=%u, height=%u}}) = -1 EBADF (%m)\n",
- magic, magic, magic, magic, magic);
+ p_v4l2_crop->type,
+ p_v4l2_crop->c.left,
+ p_v4l2_crop->c.top,
+ p_v4l2_crop->c.width,
+ p_v4l2_crop->c.height);
#ifdef VIDIOC_S_EXT_CTRLS
/* VIDIOC_S_EXT_CTRLS */
@@ -406,7 +436,7 @@
tail_alloc(sizeof(*p_ext_controls->controls) * p_ext_controls->count);
p_ext_controls->controls[0].id = V4L2_CID_BRIGHTNESS;
p_ext_controls->controls[0].size = 0;
- p_ext_controls->controls[0].value64 = 0xfacefeeddeadbeef;
+ p_ext_controls->controls[0].value64 = 0xfacefeeddeadbeefULL;
p_ext_controls->controls[1].id = V4L2_CID_CONTRAST;
p_ext_controls->controls[1].size = 2;
p_ext_controls->controls[1].string =
@@ -473,48 +503,47 @@
struct v4l2_frmsizeenum *const p_frmsizeenum =
tail_alloc(sizeof(*p_frmsizeenum));
p_frmsizeenum->index = magic;
- const union u_pixel_format u_frmsizeenum = {
- .cc = { 'A', '\'', '\\', '\xfa' }
- };
-#if WORDS_BIGENDIAN
- p_frmsizeenum->pixel_format =
- (unsigned) u_frmsizeenum.cc[0] << 24 |
- (unsigned) u_frmsizeenum.cc[1] << 16 |
- (unsigned) u_frmsizeenum.cc[2] << 8 |
- (unsigned) u_frmsizeenum.cc[3];
-#else
- p_frmsizeenum->pixel_format = u_frmsizeenum.pixelformat;
-#endif
+ p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
ioctl(-1, VIDIOC_ENUM_FRAMESIZES, p_frmsizeenum);
printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, {index=%u"
", pixel_format=v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')})"
" = -1 EBADF (%m)\n", p_frmsizeenum->index,
- u_frmsizeenum.cc[0], u_frmsizeenum.cc[1],
- u_frmsizeenum.cc[2], u_frmsizeenum.cc[3]);
+ cc[0], cc[1], cc[2], cc[3]);
#endif /* VIDIOC_ENUM_FRAMESIZES */
#ifdef VIDIOC_ENUM_FRAMEINTERVALS
ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, page);
+ struct v4l2_frmivalenum *const p_v4l2_frmivalenum =
+ page + size - sizeof(*p_v4l2_frmivalenum);
+ ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, p_v4l2_frmivalenum);
printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, {index=%u"
", pixel_format=v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
", width=%u, height=%u}) = -1 EBADF (%m)\n",
- magic, u.cc[0], u.cc[1], u.cc[2], u.cc[3], magic, magic);
+ p_v4l2_frmivalenum->index,
+ cc0(p_v4l2_frmivalenum->pixel_format),
+ cc1(p_v4l2_frmivalenum->pixel_format),
+ cc2(p_v4l2_frmivalenum->pixel_format),
+ cc3(p_v4l2_frmivalenum->pixel_format),
+ p_v4l2_frmivalenum->width,
+ p_v4l2_frmivalenum->height);
#endif /* VIDIOC_ENUM_FRAMEINTERVALS */
#ifdef VIDIOC_CREATE_BUFS
ioctl(-1, VIDIOC_CREATE_BUFS, 0);
printf("ioctl(-1, VIDIOC_CREATE_BUFS, NULL) = -1 EBADF (%m)\n");
- ioctl(-1, VIDIOC_CREATE_BUFS,
- page + size - sizeof(struct v4l2_create_buffers));
+ struct v4l2_create_buffers *const p_v4l2_create_buffers =
+ page + size - sizeof(*p_v4l2_create_buffers);
+ ioctl(-1, VIDIOC_CREATE_BUFS, p_v4l2_create_buffers);
printf("ioctl(-1, VIDIOC_CREATE_BUFS, {count=%u, memory=%#x"
" /* V4L2_MEMORY_??? */, format={type=%#x"
" /* V4L2_BUF_TYPE_??? */}}) = -1 EBADF (%m)\n",
- magic, magic, magic);
+ p_v4l2_create_buffers->count,
+ p_v4l2_create_buffers->memory,
+ p_v4l2_create_buffers->format.type);
#endif /* VIDIOC_CREATE_BUFS */
puts("+++ exited with 0 +++");
diff --git a/tests/ioperm.c b/tests/ioperm.c
index 12342f3..2f02b52 100644
--- a/tests/ioperm.c
+++ b/tests/ioperm.c
@@ -9,7 +9,7 @@
int
main(void)
{
- const unsigned long port = (unsigned long) 0xdeafbeefffffffff;
+ const unsigned long port = (unsigned long) 0xdeafbeefffffffffULL;
long rc = syscall(__NR_ioperm, port, 1, 0);
printf("ioperm(%#lx, %#lx, %d) = %ld %s (%m)\n",
diff --git a/tests/ioprio.c b/tests/ioprio.c
new file mode 100644
index 0000000..44ace6c
--- /dev/null
+++ b/tests/ioprio.c
@@ -0,0 +1,102 @@
+/*
+ * Check decoding of ioprio_get and ioprio_set syscalls.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined(__NR_ioprio_get) && defined(__NR_ioprio_set)
+
+# include <stdio.h>
+# include <unistd.h>
+
+enum {
+ IOPRIO_CLASS_NONE,
+ IOPRIO_CLASS_RT,
+ IOPRIO_CLASS_BE,
+ IOPRIO_CLASS_IDLE
+};
+
+# include "xlat.h"
+# include "xlat/ioprio_class.h"
+
+void
+print_ioprio(unsigned long val)
+{
+ printf(" (IOPRIO_PRIO_VALUE(");
+ printxval(ioprio_class, val >> 13, "IOPRIO_CLASS_???");
+ printf(", %d))", (int) (val & 0x1fff));
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_which =
+ (kernel_ulong_t) 0xdeadfacefa57beefULL;
+ static const kernel_ulong_t bogus_who =
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+ static const kernel_ulong_t bogus_ioprio =
+ (kernel_ulong_t) 0xdec0ded1facefeedULL;
+ static const char * const bogus_ioprio_str =
+ "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)";
+
+ long rc;
+
+ rc = syscall(__NR_ioprio_get, bogus_which, bogus_who);
+ printf("ioprio_get(%#x /* IOPRIO_WHO_??? */, %d) = %s\n",
+ (int) bogus_which, (int) bogus_who, sprintrc(rc));
+
+ rc = syscall(__NR_ioprio_get, 1, 0);
+ printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", sprintrc(rc));
+
+ if (rc >= -1)
+ print_ioprio(rc);
+
+ puts("");
+
+ rc = syscall(__NR_ioprio_set, 2, 0, 8191);
+ printf("ioprio_set(IOPRIO_WHO_PGRP, 0, "
+ "IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n",
+ sprintrc(rc));
+
+ rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio);
+ printf("ioprio_set(%#x /* IOPRIO_WHO_??? */, %d, %s) = %s\n",
+ (int) bogus_which, (int) bogus_who, bogus_ioprio_str,
+ sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ioprio_get && __NR_ioprio_set");
+
+#endif
diff --git a/tests/ioprio.test b/tests/ioprio.test
new file mode 100755
index 0000000..e79310b
--- /dev/null
+++ b/tests/ioprio.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check iprio_get and iprio_set syscalls decoding.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests/ip_mreq.c b/tests/ip_mreq.c
index 86cd2bc..fa0c504 100644
--- a/tests/ip_mreq.c
+++ b/tests/ip_mreq.c
@@ -31,7 +31,6 @@
#if defined IP_ADD_MEMBERSHIP && defined IPV6_ADD_MEMBERSHIP \
&& defined IPV6_JOIN_ANYCAST && defined HAVE_IF_INDEXTONAME
-# include <assert.h>
# include <stdio.h>
# include <unistd.h>
# include <sys/socket.h>
@@ -45,85 +44,106 @@
static const char multi6addr[] = "ff01::c";
static const char interface[] = "127.0.0.1";
- struct ip_mreq m4;
- struct ipv6_mreq m6;
+ struct ip_mreq *const m4 = tail_alloc(sizeof(*m4));
+ struct ipv6_mreq *const m6 = tail_alloc(sizeof(*m6));
+ unsigned int i;
+ int rc;
- inet_pton(AF_INET, multi4addr, &m4.imr_multiaddr);
- inet_pton(AF_INET, interface, &m4.imr_interface);
- inet_pton(AF_INET6, multi6addr, &m6.ipv6mr_multiaddr);
+ inet_pton(AF_INET, multi4addr, &m4->imr_multiaddr);
+ inet_pton(AF_INET, interface, &m4->imr_interface);
+ inet_pton(AF_INET6, multi6addr, &m6->ipv6mr_multiaddr);
- m6.ipv6mr_interface = if_nametoindex("lo");
- if (!m6.ipv6mr_interface)
+ m6->ipv6mr_interface = if_nametoindex("lo");
+ if (!m6->ipv6mr_interface)
perror_msg_and_skip("lo");
(void) close(0);
if (socket(AF_INET, SOCK_DGRAM, 0))
perror_msg_and_skip("socket");
- if (setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, &m4, sizeof(m4)) ||
- setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, &m4, sizeof(m4)))
- perror_msg_and_skip("setsockopt");
- printf("setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP"
- ", {imr_multiaddr=inet_addr(\"%s\")"
- ", imr_interface=inet_addr(\"%s\")}, %u) = 0\n",
- multi4addr, interface, (unsigned) sizeof(m4));
- printf("setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP"
- ", {imr_multiaddr=inet_addr(\"%s\")"
- ", imr_interface=inet_addr(\"%s\")}, %u) = 0\n",
- multi4addr, interface, (unsigned) sizeof(m4));
+ struct {
+ int level;
+ const char *str_level;
+ int optname;
+ const char *str_optname;
+ void *optval;
+ unsigned int optsize;
+ } short_any[] = {
+ {
+ ARG_STR(SOL_IP), ARG_STR(IP_ADD_MEMBERSHIP),
+ m4, sizeof(*m4)
+ },
+ {
+ ARG_STR(SOL_IP), ARG_STR(IP_DROP_MEMBERSHIP),
+ m4, sizeof(*m4)
+ },
+ {
+ ARG_STR(SOL_IPV6), ARG_STR(IPV6_ADD_MEMBERSHIP),
+ m6, sizeof(*m6)
+ },
+ {
+ ARG_STR(SOL_IPV6), ARG_STR(IPV6_DROP_MEMBERSHIP),
+ m6, sizeof(*m6)
+ },
+ {
+ ARG_STR(SOL_IPV6), ARG_STR(IPV6_JOIN_ANYCAST),
+ m6, sizeof(*m6)
+ },
+ {
+ ARG_STR(SOL_IPV6), ARG_STR(IPV6_LEAVE_ANYCAST),
+ m6, sizeof(*m6)
+ }
+ };
- assert(setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, &m4, 1) == -1);
- printf("setsockopt(0, SOL_IP, IP_ADD_MEMBERSHIP, \"\\%hho\", 1)"
- " = -1 %s (%m)\n",
- * (unsigned char *) (void *) &m4, errno2name());
+ for (i = 0; i < ARRAY_SIZE(short_any); ++i) {
+ rc = setsockopt(0, short_any[i].level, short_any[i].optname,
+ short_any[i].optval, 1);
+ printf("setsockopt(0, %s, %s, \"\\%hho\", 1) = %s\n",
+ short_any[i].str_level, short_any[i].str_optname,
+ * (unsigned char *) short_any[i].optval,
+ sprintrc(rc));
- assert(setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, &m4, 1) == -1);
- printf("setsockopt(0, SOL_IP, IP_DROP_MEMBERSHIP, \"\\%hho\", 1)"
- " = -1 %s (%m)\n",
- * (unsigned char *) (void *) &m4, errno2name());
+ rc = setsockopt(0, short_any[i].level, short_any[i].optname,
+ short_any[i].optval + 1, short_any[i].optsize);
+ printf("setsockopt(0, %s, %s, %p, %u) = %s\n",
+ short_any[i].str_level, short_any[i].str_optname,
+ short_any[i].optval + 1, short_any[i].optsize,
+ sprintrc(rc));
+ }
- assert(setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, &m6, 1) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, \"\\%hho\", 1)"
- " = -1 %s (%m)\n",
- * (unsigned char *) (void *) &m6, errno2name());
- assert(setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, &m6, 1) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, \"\\%hho\", 1)"
- " = -1 %s (%m)\n",
- * (unsigned char *) (void *) &m6, errno2name());
+ struct {
+ int optname;
+ const char *str_optname;
+ } long_ip[] = {
+ { ARG_STR(IP_ADD_MEMBERSHIP) },
+ { ARG_STR(IP_DROP_MEMBERSHIP) }
+ }, long_ipv6[] = {
+ { ARG_STR(IPV6_ADD_MEMBERSHIP) },
+ { ARG_STR(IPV6_DROP_MEMBERSHIP) },
+ { ARG_STR(IPV6_JOIN_ANYCAST) },
+ { ARG_STR(IPV6_LEAVE_ANYCAST) }
+ };
- assert(setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP, &m6, sizeof(m6)) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_ADD_MEMBERSHIP"
- ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
- ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
- multi6addr, errno2name());
+ for (i = 0; i < ARRAY_SIZE(long_ip); ++i) {
+ rc = setsockopt(0, SOL_IP, long_ip[i].optname,
+ m4, sizeof(*m4));
+ printf("setsockopt(0, SOL_IP, %s"
+ ", {imr_multiaddr=inet_addr(\"%s\")"
+ ", imr_interface=inet_addr(\"%s\")}, %u) = %s\n",
+ long_ip[i].str_optname, multi4addr,
+ interface, (unsigned) sizeof(*m4), sprintrc(rc));
+ }
- assert(setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP, &m6, sizeof(m6)) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_DROP_MEMBERSHIP"
- ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
- ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
- multi6addr, errno2name());
-
- assert(setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, &m6, 1) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, \"\\%hho\", 1)"
- " = -1 %s (%m)\n",
- * (unsigned char *) (void *) &m6, errno2name());
-
- assert(setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, &m6, 1) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, \"\\%hho\", 1)"
- " = -1 %s (%m)\n",
- * (unsigned char *) (void *) &m6, errno2name());
-
- assert(setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST, &m6, sizeof(m6)) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_JOIN_ANYCAST"
- ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
- ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
- multi6addr, errno2name());
-
- assert(setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST, &m6, sizeof(m6)) == -1);
- printf("setsockopt(0, SOL_IPV6, IPV6_LEAVE_ANYCAST"
- ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
- ", ipv6mr_interface=if_nametoindex(\"lo\")}, 20) = -1 %s (%m)\n",
- multi6addr, errno2name());
+ for (i = 0; i < ARRAY_SIZE(long_ipv6); ++i) {
+ rc = setsockopt(0, SOL_IPV6, long_ipv6[i].optname,
+ m6, sizeof(*m6));
+ printf("setsockopt(0, SOL_IPV6, %s"
+ ", {ipv6mr_multiaddr=inet_pton(\"%s\")"
+ ", ipv6mr_interface=if_nametoindex(\"lo\")}"
+ ", %u) = %s\n",
+ long_ipv6[i].str_optname, multi6addr,
+ (unsigned) sizeof(*m6), sprintrc(rc));
+ }
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/ipc.c b/tests/ipc.c
index f5b9ef5..c64d371 100644
--- a/tests/ipc.c
+++ b/tests/ipc.c
@@ -49,7 +49,7 @@
long a1, long a2, long a3, long a4, long a5)
{
const unsigned long val =
- (unsigned long) 0xfacefeed00000000 |
+ (unsigned long) 0xfacefeed00000000ULL |
(unsigned int) version << 16 |
call;
diff --git a/tests/ipc_msgbuf.c b/tests/ipc_msgbuf.c
index 2c90d26..1c34494 100644
--- a/tests/ipc_msgbuf.c
+++ b/tests/ipc_msgbuf.c
@@ -31,7 +31,6 @@
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/stat.h>
-#include "kernel_types.h"
#define text_string "STRACE_STRING"
#define msgsz sizeof(text_string)
diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c
index 926fa89..8f6382c 100644
--- a/tests/ipc_sem.c
+++ b/tests/ipc_sem.c
@@ -49,7 +49,8 @@
cleanup(void)
{
semctl(id, 0, IPC_RMID, 0);
- printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_RMID, \\[?0\\]?\\) += 0\n", id);
+ printf("semctl\\(%d, 0, (IPC_64\\|)?IPC_RMID, \\[?NULL\\]?\\) += 0\n",
+ id);
id = -1;
}
@@ -88,11 +89,7 @@
atexit(cleanup);
rc = semctl(bogus_semid, bogus_semnum, bogus_cmd, bogus_arg);
-#ifdef __GLIBC__
-# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|0)\\])"
-#else
-# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|0)\\]|0)"
-#endif
+#define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)"
printf("semctl\\(%d, %d, (IPC_64\\|)?%#x /\\* SEM_\\?\\?\\? \\*/"
", " SEMCTL_BOGUS_ARG_FMT "\\) += %s\n",
bogus_semid, bogus_semnum, bogus_cmd,
diff --git a/tests/kcmp.c b/tests/kcmp.c
new file mode 100644
index 0000000..cb497c9
--- /dev/null
+++ b/tests/kcmp.c
@@ -0,0 +1,103 @@
+/*
+ * Check decoding of kcmp syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_kcmp
+
+# include <stdio.h>
+# include <unistd.h>
+
+# define KCMP_FILE 0
+# define KCMP_SYSVSEM 6
+
+static void
+do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
+ const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2)
+{
+ long rc;
+ const char *errstr;
+
+ rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2);
+ errstr = sprintrc(rc);
+
+ printf("kcmp(%d, %d, ", (int) pid1, (int) pid2);
+
+ if (type_str)
+ printf("%s", type_str);
+ else
+ printf("%#x /* KCMP_??? */", (int) type);
+
+ if (type == KCMP_FILE)
+ printf(", %u, %u", (unsigned) idx1, (unsigned) idx2);
+ else if (type > KCMP_SYSVSEM)
+ printf(", %#llx, %#llx",
+ (unsigned long long) idx1, (unsigned long long) idx2);
+
+ printf(") = %s\n", errstr);
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_pid1 =
+ (kernel_ulong_t) 0xdeadca75face1057ULL;
+ static const kernel_ulong_t bogus_pid2 =
+ (kernel_ulong_t) 0xdefaced1defaced2ULL;
+ static const kernel_ulong_t bogus_type =
+ (kernel_ulong_t) 0xbadc0dedda7adeadULL;
+ static const kernel_ulong_t bogus_idx1 =
+ (kernel_ulong_t) 0xdec0ded3dec0ded4ULL;
+ static const kernel_ulong_t bogus_idx2 =
+ (kernel_ulong_t) 0xba5e1e55deadc0deULL;
+
+ /* Invalid values */
+ do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1,
+ bogus_idx2);
+ do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0);
+
+ /* KCMP_FILE is the only type which has additional args */
+ do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
+ bogus_idx2);
+ /* Some type without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_kcmp");
+
+#endif
diff --git a/tests/kcmp.test b/tests/kcmp.test
new file mode 100755
index 0000000..d022aeb
--- /dev/null
+++ b/tests/kcmp.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of kcmp syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/kexec_file_load.c b/tests/kexec_file_load.c
new file mode 100644
index 0000000..be90a37
--- /dev/null
+++ b/tests/kexec_file_load.c
@@ -0,0 +1,127 @@
+/*
+ * Check decoding of kexec_file_load syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_kexec_file_load
+
+# include <inttypes.h>
+# include <stdio.h>
+# include <unistd.h>
+
+struct strval {
+ kernel_ulong_t val;
+ const char *str64;
+ const char *str32;
+ const char *str;
+};
+
+#define CMDLINE_STR "deadcodebaddatadefaced";
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_kernel_fd =
+ (kernel_ulong_t) 0xdeadca57badda7a1ULL;
+ static const kernel_ulong_t bogus_initrd_fd =
+ (kernel_ulong_t) 0xdec0ded1defaced2ULL;
+ static const char cmdline_str[] = CMDLINE_STR;
+ static const char cmdline_short_str[] = "abcdef";
+
+ static const kernel_ulong_t cmdline_lens[] = {
+ 0,
+ (kernel_ulong_t) 0xcaffeeeddeadbeefULL,
+ sizeof(cmdline_str),
+ sizeof(cmdline_str) - 1,
+ sizeof(cmdline_short_str),
+ sizeof(cmdline_short_str) - 1,
+ sizeof(cmdline_short_str) + 1,
+ };
+ static const struct strval flags[] = {
+ { (kernel_ulong_t) 0xbadc0dedda7a1058ULL,
+ "0xbadc0ded", "0x",
+ "da7a1058 /* KEXEC_FILE_??? */" },
+ { 0, "", "", "0" },
+ { 0xdeadbeef, "", "", "KEXEC_FILE_UNLOAD|KEXEC_FILE_ON_CRASH|"
+ "KEXEC_FILE_NO_INITRAMFS|0xdeadbee8" },
+ };
+
+
+ long rc;
+ char *cmdline = tail_memdup(cmdline_str, sizeof(cmdline_str));
+ char *cmdline_short =
+ tail_memdup(cmdline_short_str, sizeof(cmdline_short_str));
+ char cmdline_ptr[sizeof("0x") + sizeof(void *) * 2];
+ char cmdline_short_ptr[sizeof("0x") + sizeof(void *) * 2];
+ unsigned int i;
+ unsigned int j;
+
+ struct strval cmdlines[] = {
+ { (uintptr_t) NULL, "", "", "NULL" },
+ { (uintptr_t) (cmdline + sizeof(cmdline_str)), "", "",
+ cmdline_ptr },
+ { (uintptr_t) cmdline, "", "", "\"deadcodeb\"..." },
+ { (uintptr_t) cmdline, "", "", "\"deadcodeb\"..." },
+ { (uintptr_t) cmdline_short, "", "", "\"abcdef\\0\"" },
+ { (uintptr_t) cmdline_short, "", "", "\"abcdef\"" },
+ { (uintptr_t) cmdline_short, "", "", cmdline_short_ptr },
+ };
+
+
+ snprintf(cmdline_ptr, sizeof(cmdline_ptr), "%p",
+ cmdline + sizeof(cmdline_str));
+ snprintf(cmdline_short_ptr, sizeof(cmdline_short_ptr), "%p",
+ cmdline_short);
+
+ for (i = 0; i < ARRAY_SIZE(flags); i++) {
+ for (j = 0; j < ARRAY_SIZE(cmdlines); j++) {
+ rc = syscall(__NR_kexec_file_load, bogus_kernel_fd,
+ bogus_initrd_fd, cmdline_lens[j],
+ cmdlines[j].val, flags[i].val);
+ printf("kexec_file_load(%d, %d, %llu, %s, %s%s) = %s\n",
+ (int) bogus_kernel_fd, (int) bogus_initrd_fd,
+ (unsigned long long) cmdline_lens[j],
+ cmdlines[j].str,
+ sizeof(kernel_ulong_t) == 8 ? flags[i].str64 :
+ flags[i].str32, flags[i].str, sprintrc(rc));
+ }
+ }
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_kexec_file_load");
+
+#endif
diff --git a/tests/kexec_file_load.test b/tests/kexec_file_load.test
new file mode 100755
index 0000000..c95e123
--- /dev/null
+++ b/tests/kexec_file_load.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of kexec_file_load syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s9
diff --git a/tests/kexec_load.c b/tests/kexec_load.c
new file mode 100644
index 0000000..330238d
--- /dev/null
+++ b/tests/kexec_load.c
@@ -0,0 +1,170 @@
+/*
+ * Check decoding of kexec_load syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_kexec_load
+
+# include <stdio.h>
+# include <unistd.h>
+
+struct strval {
+ kernel_ulong_t val;
+ const char *str64;
+ const char *str32;
+ const char *str;
+};
+
+struct segm {
+ void *buf;
+ size_t bufsz;
+ void *mem;
+ size_t memsz;
+};
+
+int
+main(void)
+{
+ enum {
+ NUM_SEGMS = 17,
+ NUM_SEGMS_UNCUT = 5,
+ NUM_SEGMS_UNCUT_MAX = 9,
+ NUM_SEGMS_CUT = 12,
+ SEGMS_ARRAY_SIZE = sizeof(struct segm) * NUM_SEGMS,
+ };
+
+ static const kernel_ulong_t bogus_zero =
+ sizeof(long) < sizeof(kernel_long_t) ?
+ (kernel_ulong_t) 0xffffffff00000000ULL : 0;
+ static const kernel_ulong_t bogus_entry =
+ (kernel_ulong_t) 0xdeadca57badda7a1ULL;
+ static const kernel_ulong_t bogus_nsegs =
+ (kernel_ulong_t) 0xdec0ded1defaced2ULL;
+
+ static const struct strval flags[] = {
+ { (kernel_ulong_t) 0xbadc0dedda7a1054ULL,
+ "0xda7a0000 /* KEXEC_ARCH_??? */|0xbadc0ded0000",
+ "0xda7a0000 /* KEXEC_ARCH_??? */|0x",
+ "1054 /* KEXEC_??? */" },
+ { 0, "", "", "KEXEC_ARCH_DEFAULT" },
+ { 0x2a0003, "", "",
+ "KEXEC_ARCH_SH|KEXEC_ON_CRASH|KEXEC_PRESERVE_CONTEXT" },
+ { 0xdead0000, "", "", "0xdead0000 /* KEXEC_ARCH_??? */" },
+ };
+
+ const char *errstr;
+ long rc;
+ struct segm *segms = tail_alloc(SEGMS_ARRAY_SIZE);
+ unsigned int i;
+
+ fill_memory(segms, SEGMS_ARRAY_SIZE);
+ segms[0].buf = segms[0].mem = NULL;
+
+ rc = syscall(__NR_kexec_load, bogus_zero, bogus_zero, bogus_zero,
+ flags[0].val);
+ printf("kexec_load(NULL, 0, NULL, %s%s) = %s\n",
+ sizeof(long) == 8 ? flags[0].str64 : flags[0].str32,
+ flags[0].str, sprintrc(rc));
+
+ rc = syscall(__NR_kexec_load, bogus_entry, bogus_nsegs,
+ segms + SEGMS_ARRAY_SIZE, flags[1].val);
+ printf("kexec_load(%#lx, %lu, %p, %s) = %s\n",
+ (unsigned long) bogus_entry, (unsigned long) bogus_nsegs,
+ segms + SEGMS_ARRAY_SIZE, flags[1].str, sprintrc(rc));
+
+ rc = syscall(__NR_kexec_load, bogus_entry, NUM_SEGMS,
+ segms, flags[2].val);
+ printf("kexec_load(%#lx, %lu, %p, %s) = %s\n",
+ (unsigned long) bogus_entry, (unsigned long) NUM_SEGMS,
+ segms, flags[2].str, sprintrc(rc));
+
+ rc = syscall(__NR_kexec_load, bogus_entry, NUM_SEGMS_CUT,
+ segms, flags[3].val);
+ errstr = sprintrc(rc);
+ printf("kexec_load(%#lx, %lu, [{buf=NULL, bufsz=%zu, mem=NULL, "
+ "memsz=%zu}, ",
+ (unsigned long) bogus_entry, (unsigned long) NUM_SEGMS_CUT,
+ segms[0].bufsz, segms[0].memsz);
+ for (i = 1; i < NUM_SEGMS_UNCUT_MAX; i++)
+ printf("{buf=%p, bufsz=%zu, mem=%p, memsz=%zu}, ",
+ segms[i].buf, segms[i].bufsz,
+ segms[i].mem, segms[i].memsz);
+ printf("...], %s) = %s\n", flags[3].str, errstr);
+
+ rc = syscall(__NR_kexec_load, bogus_entry, NUM_SEGMS_CUT,
+ segms + (NUM_SEGMS - NUM_SEGMS_UNCUT_MAX),
+ flags[0].val);
+ errstr = sprintrc(rc);
+ printf("kexec_load(%#lx, %lu, [",
+ (unsigned long) bogus_entry, (unsigned long) NUM_SEGMS_CUT);
+ for (i = NUM_SEGMS - NUM_SEGMS_UNCUT_MAX; i < NUM_SEGMS; i++)
+ printf("{buf=%p, bufsz=%zu, mem=%p, memsz=%zu}, ",
+ segms[i].buf, segms[i].bufsz,
+ segms[i].mem, segms[i].memsz);
+ printf("%p], %s%s) = %s\n",
+ segms + NUM_SEGMS,
+ sizeof(long) == 8 ? flags[0].str64 : flags[0].str32,
+ flags[0].str, errstr);
+
+ rc = syscall(__NR_kexec_load, bogus_entry, NUM_SEGMS_UNCUT,
+ segms + (NUM_SEGMS - NUM_SEGMS_UNCUT),
+ flags[1].val);
+ errstr = sprintrc(rc);
+ printf("kexec_load(%#lx, %lu, [",
+ (unsigned long) bogus_entry, (unsigned long) NUM_SEGMS_UNCUT);
+ for (i = NUM_SEGMS - NUM_SEGMS_UNCUT; i < NUM_SEGMS; i++)
+ printf("{buf=%p, bufsz=%zu, mem=%p, memsz=%zu}%s",
+ segms[i].buf, segms[i].bufsz,
+ segms[i].mem, segms[i].memsz,
+ (i == NUM_SEGMS - 1) ? "" : ", ");
+ printf("], %s) = %s\n", flags[1].str, errstr);
+
+ rc = syscall(__NR_kexec_load, bogus_entry, NUM_SEGMS_CUT,
+ segms + 1, flags[2].val);
+ errstr = sprintrc(rc);
+ printf("kexec_load(%#lx, %lu, [",
+ (unsigned long) bogus_entry, (unsigned long) NUM_SEGMS_CUT);
+ for (i = 1; i < NUM_SEGMS_UNCUT_MAX + 1; i++)
+ printf("{buf=%p, bufsz=%zu, mem=%p, memsz=%zu}, ",
+ segms[i].buf, segms[i].bufsz,
+ segms[i].mem, segms[i].memsz);
+ printf("...], %s) = %s\n", flags[2].str, errstr);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_kexec_load");
+
+#endif
diff --git a/tests/kexec_load.test b/tests/kexec_load.test
new file mode 100755
index 0000000..4b1511e
--- /dev/null
+++ b/tests/kexec_load.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of kexec_load syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s9
diff --git a/tests/keyctl.c b/tests/keyctl.c
index b580981..2e26076 100644
--- a/tests/keyctl.c
+++ b/tests/keyctl.c
@@ -1,7 +1,7 @@
/*
* Check decoding of keyctl syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,11 +44,8 @@
# include <stdlib.h>
# include <string.h>
# include <unistd.h>
-
# include <sys/uio.h>
-# include "kernel_types.h"
-
/* This check should be before #include "xlat/keyctl_commands.h" */
# ifndef KEYCTL_DH_COMPUTE
struct keyctl_dh_params {
@@ -128,7 +125,8 @@
else if (size == sizeof(uint32_t))
printf(fmt, (uint32_t)arg);
else
- print_quoted_string_limit((void *)arg, size, rc);
+ print_quoted_string_limit((void *) (uintptr_t) arg,
+ size, rc);
}
}
@@ -190,8 +188,6 @@
printf(") = %s\n", errstr);
}
-# define ARG_STR(_arg) (_arg), #_arg
-
int
main(void)
{
diff --git a/tests/kill.c b/tests/kill.c
index 0e07e1f..cb884aa 100644
--- a/tests/kill.c
+++ b/tests/kill.c
@@ -56,16 +56,16 @@
perror_msg_and_fail("sigprocmask");
const int pid = getpid();
- long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000 | SIGALRM);
+ long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM);
printf("kill(%d, SIGALRM) = %ld\n", pid, rc);
- const long big_pid = (long) 0xfacefeedbadc0ded;
- const long big_sig = (long) 0xdeadbeefcafef00d;
+ const long big_pid = (long) 0xfacefeedbadc0dedULL;
+ const long big_sig = (long) 0xdeadbeefcafef00dULL;
rc = syscall(__NR_kill, big_pid, big_sig);
printf("kill(%d, %d) = %ld %s (%m)\n",
(int) big_pid, (int) big_sig, rc, errno2name());
- rc = syscall(__NR_kill, (long) 0xdefaced00000000 | pid, 0);
+ rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0);
printf("kill(%d, SIG_0) = %ld\n", pid, rc);
puts("+++ exited with 0 +++");
diff --git a/tests/ksysent.c b/tests/ksysent.c
index 66b4ffb..8cac93c 100644
--- a/tests/ksysent.c
+++ b/tests/ksysent.c
@@ -1,5 +1,7 @@
/*
- * Copyright (c) 2015 Dmitry V. Levin <[email protected]>
+ * Validate syscallent.h file.
+ *
+ * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,8 +27,11 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "defs.h"
-#include "syscall.h"
+#include "tests.h"
+#include "sysent.h"
+#include <stdio.h>
+#include <string.h>
+#include <asm/unistd.h>
#define TD 0
#define TF 0
@@ -39,6 +44,7 @@
#define MA 0
#define SI 0
#define SE 0
+#define CST 0
#define SEN(arg) 0,0
static const struct_sysent syscallent[] = {
diff --git a/tests/linkat.c b/tests/linkat.c
index 2c3b8ba..64b900e 100644
--- a/tests/linkat.c
+++ b/tests/linkat.c
@@ -11,8 +11,8 @@
{
static const char sample_1[] = "linkat_sample_old";
static const char sample_2[] = "linkat_sample_new";
- const long fd_old = (long) 0xdeadbeefffffffff;
- const long fd_new = (long) 0xdeadbeeffffffffe;
+ const long fd_old = (long) 0xdeadbeefffffffffULL;
+ const long fd_new = (long) 0xdeadbeeffffffffeULL;
long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0);
printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
diff --git a/tests/lookup_dcookie.c b/tests/lookup_dcookie.c
new file mode 100644
index 0000000..986180c
--- /dev/null
+++ b/tests/lookup_dcookie.c
@@ -0,0 +1,96 @@
+/*
+ * Check decoding of lookup_dcookie syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_lookup_dcookie
+
+# include <inttypes.h>
+# include <limits.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static void
+do_lookup_cookie(uint64_t cookie, char *buf, kernel_ulong_t len)
+{
+ long rc;
+ const char *errstr;
+
+# if (LONG_MAX > INT_MAX) \
+ || (defined __x86_64__ && defined __ILP32__) \
+ || defined LINUX_MIPSN32
+ rc = syscall(__NR_lookup_dcookie, cookie, buf, len);
+# else
+ rc = syscall(__NR_lookup_dcookie, LL_VAL_TO_PAIR(cookie), buf, len);
+# endif
+
+ errstr = sprintrc(rc);
+ printf("lookup_dcookie(%" PRIu64 ", ", cookie);
+
+ /* Here, we trust successful return code */
+ if ((rc >= 0) && (rc < (long) INT_MAX)) {
+ printf("%.*s, ", (int) rc, buf);
+ } else {
+ if (buf != NULL)
+ printf("%p, ", buf);
+ else
+ printf("NULL, ");
+ }
+
+ printf("%" PRIu64 ") = %s\n", (uint64_t) len, errstr);
+}
+
+int
+main(void)
+{
+ enum { BUF_SIZE = 4096 };
+
+ static const uint64_t bogus_cookie =
+ (uint64_t) 0xf157feeddeadfaceULL;
+ static const kernel_ulong_t bogus_len =
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+
+ char *buf = tail_alloc(BUF_SIZE);
+
+ do_lookup_cookie(0, NULL, 0);
+ do_lookup_cookie(bogus_cookie, buf + BUF_SIZE, bogus_len);
+ do_lookup_cookie(bogus_cookie, buf, BUF_SIZE);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_lookup_dcookie");
+
+#endif
diff --git a/tests/lookup_dcookie.test b/tests/lookup_dcookie.test
new file mode 100755
index 0000000..47e1c2d
--- /dev/null
+++ b/tests/lookup_dcookie.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of lookup_cookie syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/lseek.c b/tests/lseek.c
index 84b2752..4428c4e 100644
--- a/tests/lseek.c
+++ b/tests/lseek.c
@@ -32,7 +32,6 @@
# include <stdio.h>
# include <unistd.h>
-# include "kernel_types.h"
int
main(void)
diff --git a/tests/lstat.c b/tests/lstat.c
index 76cb8a2..3754f76 100644
--- a/tests/lstat.c
+++ b/tests/lstat.c
@@ -32,7 +32,7 @@
# define TEST_SYSCALL_NR __NR_lstat
# define TEST_SYSCALL_STR "lstat"
-# define SAMPLE_SIZE ((kernel_ulong_t) 43147718418)
+# define SAMPLE_SIZE ((libc_off_t) (kernel_ulong_t) 43147718418ULL)
# include "lstatx.c"
#else
diff --git a/tests/lstat64.c b/tests/lstat64.c
index 68ef638..da06609 100644
--- a/tests/lstat64.c
+++ b/tests/lstat64.c
@@ -35,7 +35,6 @@
# define STRUCT_STAT struct stat64
# define STRUCT_STAT_STR "struct stat64"
# define STRUCT_STAT_IS_STAT64 1
-# define SAMPLE_SIZE ((libc_off_t) 43147718418)
# include "lstatx.c"
#else
diff --git a/tests/lstatx.c b/tests/lstatx.c
index 2bd4e9f..cdd1124 100644
--- a/tests/lstatx.c
+++ b/tests/lstatx.c
@@ -28,10 +28,12 @@
#define TEST_SYSCALL_INVOKE(sample, pst) \
syscall(TEST_SYSCALL_NR, sample, pst)
#define PRINT_SYSCALL_HEADER(sample) \
- printf("%s(\"%s\", ", TEST_SYSCALL_STR, sample)
-#define PRINT_SYSCALL_FOOTER \
- puts(") = 0")
-
-#define USE_ASM_STAT
+ do { \
+ int saved_errno = errno; \
+ printf("%s(\"%s\", ", TEST_SYSCALL_STR, sample)
+#define PRINT_SYSCALL_FOOTER(rc) \
+ errno = saved_errno; \
+ printf(") = %s\n", sprintrc(rc)); \
+ } while (0)
#include "xstatx.c"
diff --git a/tests/mbind.c b/tests/mbind.c
index 94d4553..b054426 100644
--- a/tests/mbind.c
+++ b/tests/mbind.c
@@ -38,10 +38,10 @@
int
main(void)
{
- const unsigned long len = (unsigned long) 0xcafef00dbadc0ded;
+ const unsigned long len = (unsigned long) 0xcafef00dbadc0dedULL;
const unsigned long mode = 3;
- const unsigned long nodemask = (unsigned long) 0xfacefeedfffffff1;
- const unsigned long maxnode = (unsigned long) 0xdeadbeeffffffff2;
+ const unsigned long nodemask = (unsigned long) 0xfacefeedfffffff1ULL;
+ const unsigned long maxnode = (unsigned long) 0xdeadbeeffffffff2ULL;
const unsigned long flags = -1UL;
long rc = syscall(__NR_mbind, 0, len, mode, nodemask, maxnode, flags);
diff --git a/tests/membarrier.c b/tests/membarrier.c
index adf24ef..330893b 100644
--- a/tests/membarrier.c
+++ b/tests/membarrier.c
@@ -27,6 +27,7 @@
#include "tests.h"
#include <asm/unistd.h>
+#include "scno.h"
#ifdef __NR_membarrier
@@ -39,9 +40,10 @@
main(void)
{
assert(syscall(__NR_membarrier, 3, 255) == -1);
- printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n",
- errno2name());
- if (errno != ENOSYS) {
+ int saved_errno = errno;
+ printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
+ sprintrc(-1));
+ if (saved_errno != ENOSYS) {
/* the test needs to be updated? */
assert(syscall(__NR_membarrier, 0, 0) == 1);
puts("membarrier(MEMBARRIER_CMD_QUERY, 0)"
diff --git a/tests/memfd_create.c b/tests/memfd_create.c
index ef49bed..480fd17 100644
--- a/tests/memfd_create.c
+++ b/tests/memfd_create.c
@@ -1,5 +1,6 @@
#include "tests.h"
#include <asm/unistd.h>
+#include "scno.h"
#ifdef __NR_memfd_create
diff --git a/tests/migrate_pages.c b/tests/migrate_pages.c
index 9f71b52..4c303e3 100644
--- a/tests/migrate_pages.c
+++ b/tests/migrate_pages.c
@@ -38,7 +38,7 @@
int
main(void)
{
- const long pid = (long) 0xfacefeedffffffff;
+ const long pid = (long) 0xfacefeedffffffffULL;
long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0);
printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n",
(int) pid, rc, errno2name());
diff --git a/tests/mincore.c b/tests/mincore.c
index ff2922a..ea2b49e 100644
--- a/tests/mincore.c
+++ b/tests/mincore.c
@@ -42,6 +42,8 @@
printf("mincore(%p, %zu, [", addr, size);
for (i = 0; i < pages; ++i) {
+ if (i)
+ printf(", ");
if (i >= DEFAULT_STRLEN) {
printf("...");
break;
diff --git a/tests/mkdirat.c b/tests/mkdirat.c
index ce2e9c1..6bfe4a5 100644
--- a/tests/mkdirat.c
+++ b/tests/mkdirat.c
@@ -5,7 +5,7 @@
# define TEST_SYSCALL_NR __NR_mkdirat
# define TEST_SYSCALL_STR "mkdirat"
-# define TEST_SYSCALL_PREFIX_ARGS (long int) 0xdeadbeefffffffff,
+# define TEST_SYSCALL_PREFIX_ARGS (long int) 0xdeadbeefffffffffULL,
# define TEST_SYSCALL_PREFIX_STR "-1, "
# include "umode_t.c"
diff --git a/tests/mknod.c b/tests/mknod.c
index 2d42874..4cc1c5c 100644
--- a/tests/mknod.c
+++ b/tests/mknod.c
@@ -13,14 +13,14 @@
static long
call_mknod(unsigned short mode, unsigned long dev)
{
- unsigned long lmode = (unsigned long) 0xffffffffffff0000 | mode;
+ unsigned long lmode = (unsigned long) 0xffffffffffff0000ULL | mode;
return syscall(__NR_mknod, sample, lmode, dev);
}
int
main(void)
{
- unsigned long dev = (unsigned long) 0xdeadbeefbadc0ded;
+ unsigned long dev = (unsigned long) 0xdeadbeefbadc0dedULL;
long rc = call_mknod(0, dev);
printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
@@ -46,14 +46,14 @@
printf("mknod(\"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
sample, rc, errno2name());
- dev = (unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
+ dev = (unsigned long) 0xdeadbeef00000000ULL | makedev(1, 7);
rc = call_mknod(S_IFCHR | 024, dev);
printf("mknod(\"%s\", S_IFCHR|024, makedev(1, 7)) = %ld %s (%m)\n",
sample, rc, errno2name());
const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
- dev = (unsigned long) 0xdeadbeefbadc0ded;
+ dev = (unsigned long) 0xdeadbeefbadc0dedULL;
rc = call_mknod(mode, dev);
printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
diff --git a/tests/mknodat.c b/tests/mknodat.c
index 614513e..756e277 100644
--- a/tests/mknodat.c
+++ b/tests/mknodat.c
@@ -9,19 +9,19 @@
# include <unistd.h>
static const char sample[] = "mknodat_sample";
-static const long int fd = (long int) 0xdeadbeefffffffff;
+static const long int fd = (long int) 0xdeadbeefffffffffULL;
static long
call_mknodat(unsigned short mode, unsigned long dev)
{
- unsigned long lmode = (unsigned long) 0xffffffffffff0000 | mode;
+ unsigned long lmode = (unsigned long) 0xffffffffffff0000ULL | mode;
return syscall(__NR_mknodat, fd, sample, lmode, dev);
}
int
main(void)
{
- unsigned long dev = (unsigned long) 0xdeadbeefbadc0ded;
+ unsigned long dev = (unsigned long) 0xdeadbeefbadc0dedULL;
long rc = call_mknodat(0, dev);
printf("mknodat(-1, \"%s\", 000) = %ld %s (%m)\n",
@@ -47,14 +47,14 @@
printf("mknodat(-1, \"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
sample, rc, errno2name());
- dev = (unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
+ dev = (unsigned long) 0xdeadbeef00000000ULL | makedev(1, 7);
rc = call_mknodat(S_IFCHR | 024, dev);
printf("mknodat(-1, \"%s\", S_IFCHR|024, makedev(1, 7)) = %ld %s (%m)\n",
sample, rc, errno2name());
const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
- dev = (unsigned long) 0xdeadbeefbadc0ded;
+ dev = (unsigned long) 0xdeadbeefbadc0dedULL;
rc = call_mknodat(mode, dev);
printf("mknodat(-1, \"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
diff --git a/tests/mlock.c b/tests/mlock.c
index be962e2..8e9806b 100644
--- a/tests/mlock.c
+++ b/tests/mlock.c
@@ -24,6 +24,6 @@
#else
-SKIP_MAIN_DEFINED("__NR_mlock && __NR_munlock")
+SKIP_MAIN_UNDEFINED("__NR_mlock && __NR_munlock")
#endif
diff --git a/tests/mlock2.c b/tests/mlock2.c
index e557042..71a2003 100644
--- a/tests/mlock2.c
+++ b/tests/mlock2.c
@@ -27,6 +27,7 @@
#include "tests.h"
#include <asm/unistd.h>
+#include "scno.h"
#ifdef __NR_mlock2
diff --git a/tests/mmap.c b/tests/mmap.c
index e2ff716..f726f63 100644
--- a/tests/mmap.c
+++ b/tests/mmap.c
@@ -45,10 +45,10 @@
void *addr, *p;
#if ULONG_MAX > 4294967295UL
- offset = 0xcafedeadbeef000 & -pagesize;
+ offset = 0xcafedeadbeef000ULL & -pagesize;
addr = (void *) (uintmax_t) (0xfacefeed000 & -pagesize);
#else
- offset = 0xdeadbeef000 & -pagesize;
+ offset = 0xdeadbeef000ULL & -pagesize;
addr = (void *) (unsigned int) (0xfaced000 & -pagesize);
#endif
const uintmax_t uoffset =
diff --git a/tests/move_pages.c b/tests/move_pages.c
index 3be7446..f4ccafa 100644
--- a/tests/move_pages.c
+++ b/tests/move_pages.c
@@ -136,7 +136,7 @@
print_stat_pages(const unsigned long pid, const unsigned long count,
const void **const pages, int *const status)
{
- const unsigned long flags = (unsigned long) 0xfacefeed00000002;
+ const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL;
long rc = syscall(__NR_move_pages,
pid, count, pages, NULL, status, flags);
@@ -163,7 +163,7 @@
int *const nodes,
int *const status)
{
- const unsigned long flags = (unsigned long) 0xfacefeed00000004;
+ const unsigned long flags = (unsigned long) 0xfacefeed00000004ULL;
count += offset;
long rc = syscall(__NR_move_pages,
@@ -185,7 +185,7 @@
main(void)
{
const unsigned long pid =
- (unsigned long) 0xfacefeed00000000 | getpid();
+ (unsigned long) 0xfacefeed00000000ULL | getpid();
unsigned long count = 1;
const unsigned page_size = get_page_size();
const void *const page = tail_alloc(page_size);
diff --git a/tests/mq.c b/tests/mq.c
index d80f927..9c2ffc8 100644
--- a/tests/mq.c
+++ b/tests/mq.c
@@ -32,23 +32,42 @@
# include <fcntl.h>
# include <mqueue.h>
+# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/stat.h>
+# define NAME "strace-mq.test"
+
int
main (void)
{
struct mq_attr attr;
(void) close(0);
- if (mq_open("/strace-mq.test", O_CREAT, S_IRWXU, 0))
+
+ if (mq_open("/" NAME, O_CREAT, 0700, NULL))
perror_msg_and_skip("mq_open");
+ printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", NAME);
+
if (mq_getattr(0, &attr))
perror_msg_and_skip("mq_getattr");
- if (mq_setattr(0, &attr, 0))
+ printf("mq_getsetattr(0, NULL, {mq_flags=0, mq_maxmsg=%lld"
+ ", mq_msgsize=%lld, mq_curmsgs=0}) = 0\n",
+ (long long) attr.mq_maxmsg,
+ (long long) attr.mq_msgsize);
+
+ if (mq_setattr(0, &attr, NULL))
perror_msg_and_skip("mq_setattr");
- if (mq_unlink("/strace-mq.test"))
+ printf("mq_getsetattr(0, {mq_flags=0, mq_maxmsg=%lld"
+ ", mq_msgsize=%lld, mq_curmsgs=0}, NULL) = 0\n",
+ (long long) attr.mq_maxmsg,
+ (long long) attr.mq_msgsize);
+
+ if (mq_unlink("/" NAME))
perror_msg_and_skip("mq_unlink");
+ printf("mq_unlink(\"%s\") = 0\n", NAME);
+
+ puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/mq.expected b/tests/mq.expected
deleted file mode 100644
index 40b8eee..0000000
--- a/tests/mq.expected
+++ /dev/null
@@ -1,4 +0,0 @@
-mq_open\("strace-mq.test", O_RDONLY\|O_CREAT, 0700, NULL\) += 0
-mq_getsetattr\(0, NULL, \{mq_flags=O_RDONLY, mq_maxmsg=[1-9][0-9]*, mq_msgsize=[1-9][0-9]*, mq_curmsg=0\}\) += 0
-mq_getsetattr\(0, \{mq_flags=O_RDONLY, mq_maxmsg=[1-9][0-9]*, mq_msgsize=[1-9][0-9]*, mq_curmsg=0\}, NULL\) += 0
-mq_unlink\("strace-mq.test"\) += 0
diff --git a/tests/mq.test b/tests/mq.test
index e900591..746b07b 100755
--- a/tests/mq.test
+++ b/tests/mq.test
@@ -1,11 +1,6 @@
#!/bin/sh
-# Check mq_open, mq_getsetattr, mq_unlink syscalls decoding.
-
+# Check decoding of mq_open, mq_getsetattr, and mq_unlink syscalls.
. "${srcdir=.}/init.sh"
-run_prog
-run_strace -v -e mq_getsetattr,mq_open,mq_unlink $args
-match_grep
-
-exit 0
+run_strace_match_diff -a28 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests/mq_sendrecv-read.c b/tests/mq_sendrecv-read.c
new file mode 100644
index 0000000..cc9867b
--- /dev/null
+++ b/tests/mq_sendrecv-read.c
@@ -0,0 +1,3 @@
+#define DUMPIO_READ 1
+#define MQ_NAME "mq_sendrecv-read.sample"
+#include "mq_sendrecv.c"
diff --git a/tests/mq_sendrecv-read.test b/tests/mq_sendrecv-read.test
new file mode 100755
index 0000000..eb4ad75
--- /dev/null
+++ b/tests/mq_sendrecv-read.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -eread=0 -a14
diff --git a/tests/mq_sendrecv-write.c b/tests/mq_sendrecv-write.c
new file mode 100644
index 0000000..ae34ee1
--- /dev/null
+++ b/tests/mq_sendrecv-write.c
@@ -0,0 +1,3 @@
+#define DUMPIO_WRITE 1
+#define MQ_NAME "mq_sendrecv-write.sample"
+#include "mq_sendrecv.c"
diff --git a/tests/mq_sendrecv-write.test b/tests/mq_sendrecv-write.test
new file mode 100755
index 0000000..38277ec
--- /dev/null
+++ b/tests/mq_sendrecv-write.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -ewrite=0 -a14
diff --git a/tests/mq_sendrecv.c b/tests/mq_sendrecv.c
new file mode 100644
index 0000000..c151542
--- /dev/null
+++ b/tests/mq_sendrecv.c
@@ -0,0 +1,480 @@
+/*
+ * Check decoding of mq_open, mq_timedsend, mq_notify, mq_timedreceive and
+ * mq_unlink syscalls.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#if defined __NR_mq_open && __NR_mq_timedsend && __NR_mq_timedreceive && \
+ __NR_mq_notify && __NR_mq_unlink
+
+# include <assert.h>
+# include <errno.h>
+# include <fcntl.h>
+# include <inttypes.h>
+# include <signal.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <time.h>
+# include <unistd.h>
+
+# include "sigevent.h"
+
+# ifndef MQ_NAME
+# define MQ_NAME "mq_sendrecv.sample"
+# endif
+
+# ifndef DUMPIO_READ
+# define DUMPIO_READ 0
+# endif
+
+# ifndef DUMPIO_WRITE
+# define DUMPIO_WRITE 0
+# endif
+
+
+enum {
+ NUM_ATTRS = 8,
+ MSG_CUT = 8,
+ MSG_MAX_UNCUT = 32,
+ MSG_SIZE = 64,
+ MSG_START = 0x80,
+};
+
+
+static void
+printstr(unsigned char start, unsigned int count)
+{
+ unsigned int i;
+
+ printf("\"");
+ for (i = 0; i < count; i++) {
+ printf("\\%hho", (unsigned char) (start + i));
+ }
+ printf("\"");
+}
+
+#if DUMPIO_READ || DUMPIO_WRITE
+static void
+dumpstr(unsigned char start, unsigned int count)
+{
+ unsigned int i;
+ unsigned int j;
+
+ for (i = 0; i < count; i++) {
+ if (i < count) {
+ if (!(i % 16))
+ printf(" | %05x ", i);
+ if (!(i % 8))
+ printf(" ");
+
+ printf("%02hhx ", (unsigned char) (start + i));
+ }
+
+ if ((i % 16 == 15) || (i == (count - 1))) {
+ if (i % 16 != 15)
+ printf("%*s", 3 * (15 - i % 16) +
+ ((i + 8) % 16) / 8, " ");
+
+ printf(" ");
+
+ for (j = 0; j <= (i % 16); j++)
+ printf(".");
+ for (j = i % 16; j < 15; j++)
+ printf(" ");
+
+ printf(" |\n");
+
+ }
+ }
+}
+#endif /* DUMPIO_READ || DUMPIO_WRITE */
+
+static void
+cleanup(void)
+{
+ long rc;
+
+ rc = syscall(__NR_mq_unlink, MQ_NAME);
+ printf("mq_unlink(\"" MQ_NAME "\") = %s\n", sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+}
+
+static void
+do_send(int fd, char *msg, unsigned int msg_size, struct timespec *tmout,
+ bool cropped)
+{
+ long rc;
+ long saved_errno;
+
+ do {
+ rc = syscall(__NR_mq_timedsend, fd, msg, msg_size, 42,
+ tmout);
+ saved_errno = errno;
+ printf("mq_timedsend(%d, ", fd);
+ printstr(MSG_START, msg_size > MSG_MAX_UNCUT ? MSG_MAX_UNCUT :
+ msg_size);
+ if (cropped)
+ printf("...");
+ errno = saved_errno;
+ printf(", %u, 42, {tv_sec=%jd, tv_nsec=%jd}) = %s\n", msg_size,
+ (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
+ sprintrc(rc));
+ errno = saved_errno;
+
+ if (rc == -1) {
+ if (errno == EINTR)
+ continue;
+ perror_msg_and_skip("mq_timedsend");
+ }
+# if DUMPIO_WRITE
+ dumpstr(MSG_START, msg_size);
+# endif
+ } while (rc);
+}
+
+static void
+do_recv(int fd, char *msg, unsigned int msg_size, struct timespec *tmout,
+ bool cropped)
+{
+ long rc;
+ long saved_errno;
+ unsigned prio;
+
+ do {
+ rc = syscall(__NR_mq_timedreceive, fd, msg, MSG_SIZE, &prio,
+ tmout);
+ saved_errno = errno;
+ printf("mq_timedreceive(%d, ", fd);
+ if (rc >= 0) {
+ printstr(MSG_START, rc > MSG_MAX_UNCUT ? MSG_MAX_UNCUT :
+ rc);
+ if (cropped)
+ printf("...");
+ } else {
+ printf("%p", msg);
+ }
+ errno = saved_errno;
+ printf(", %u, [42], {tv_sec=%jd, tv_nsec=%jd}) = %s\n", MSG_SIZE,
+ (intmax_t) tmout->tv_sec,
+ (intmax_t) tmout->tv_nsec, sprintrc(rc));
+ errno = saved_errno;
+
+ if (rc == -1) {
+ if (errno == EINTR)
+ continue;
+ perror_msg_and_skip("mq_timedreceive");
+ }
+ if ((rc >= 0) && ((unsigned long) rc != msg_size))
+ error_msg_and_skip("mq_timedreceive size mismatch"
+ ": expected %u, got %ld",
+ msg_size, rc);
+# if DUMPIO_READ
+ dumpstr(MSG_START, rc);
+# endif
+ } while (rc < 0);
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_zero =
+ (kernel_ulong_t) 0x8765432100000000ULL;
+ static const kernel_ulong_t bogus_oflags =
+ (kernel_ulong_t) 0xdefaced100000003ULL;
+ static const kernel_ulong_t bogus_mode =
+ (kernel_ulong_t) 0xdec0deadfacefeedULL;
+ static const kernel_ulong_t bogus_fd =
+ (kernel_ulong_t) 0xfeedfacedeadba5eULL;
+ static const kernel_ulong_t bogus_zero_size =
+ (sizeof(kernel_ulong_t) > sizeof(int)) ? (kernel_ulong_t) 0 :
+ (kernel_ulong_t) 0xface1e5500000000ULL;
+ static const kernel_ulong_t bogus_size =
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+ static const kernel_ulong_t bogus_prio =
+ (kernel_ulong_t) 0xdec0ded1defaced3ULL;
+ static const struct timespec bogus_tmout_data = {
+ .tv_sec = (time_t) 0xdeadfacebeeff00dLL,
+ .tv_nsec = (long) 0xfacefee1deadfeedLL,
+ };
+ static const struct timespec future_tmout_data = {
+ .tv_sec = (time_t) 0x7ea1fade7e57faceLL,
+ .tv_nsec = 999999999,
+ };;
+ struct_sigevent bogus_sev_data = {
+ .sigev_notify = 0xdefaced,
+ .sigev_signo = 0xfacefeed,
+ .sigev_value.sival_ptr = (unsigned long) 0xdeadbeefbadc0dedULL
+ };
+
+ const char *errstr;
+ long rc;
+ kernel_long_t *bogus_attrs = tail_alloc(sizeof(*bogus_attrs) *
+ NUM_ATTRS);
+ char *msg = tail_alloc(MSG_SIZE);
+ unsigned *bogus_prio_ptr = tail_alloc(sizeof(*bogus_prio_ptr));
+ struct timespec *bogus_tmout = tail_memdup(&bogus_tmout_data,
+ sizeof(*bogus_tmout));
+ struct timespec *future_tmout = tail_memdup(&future_tmout_data,
+ sizeof(*future_tmout));
+ struct_sigevent *bogus_sev = tail_memdup(&bogus_sev_data,
+ sizeof(*bogus_sev));
+ int fd = -1;
+
+
+ fill_memory_ex(msg, MSG_SIZE, MSG_START, MSG_SIZE);
+ fill_memory_ex(bogus_attrs, sizeof(*bogus_attrs) * NUM_ATTRS,
+ 0xbb, 0x70);
+
+
+ /* mq_open */
+
+ /* Zero values, non-O_CREAT mode */
+ rc = syscall(__NR_mq_open, NULL, bogus_zero, bogus_mode, NULL);
+ printf("mq_open(NULL, O_RDONLY) = %s\n", sprintrc(rc));
+
+ /* O_CREAT parsing, other flags, bogs values */
+ rc = syscall(__NR_mq_open, msg, O_CREAT | bogus_oflags, bogus_mode,
+ NULL);
+ printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, NULL) = %s\n",
+ msg, (unsigned short) bogus_mode, sprintrc(rc));
+
+ /* Partially invalid attributes structure */
+ rc = syscall(__NR_mq_open, msg, O_CREAT | bogus_oflags, bogus_mode,
+ bogus_attrs + 1);
+ printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, %p) = %s\n",
+ msg, (unsigned short) bogus_mode, bogus_attrs + 1, sprintrc(rc));
+
+ /* Valid attributes structure */
+ rc = syscall(__NR_mq_open, msg, O_CREAT | bogus_oflags, bogus_mode,
+ bogus_attrs);
+ printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx, "
+ "mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
+ msg, (unsigned short) bogus_mode,
+ (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
+ (long long) bogus_attrs[1],
+ (long long) bogus_attrs[2],
+ (long long) bogus_attrs[3], sprintrc(rc));
+
+
+ /* mq_timedsend */
+
+ /* Zero values*/
+ rc = syscall(__NR_mq_timedsend, bogus_zero, NULL, bogus_zero_size,
+ bogus_zero, NULL);
+ printf("mq_timedsend(0, NULL, 0, 0, NULL) = %s\n", sprintrc(rc));
+
+ /* Invalid pointers */
+ rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE, bogus_size,
+ bogus_prio, bogus_tmout + 1);
+ printf("mq_timedsend(%d, %p, %llu, %u, %p) = %s\n",
+ (int) bogus_fd, msg + MSG_SIZE, (unsigned long long) bogus_size,
+ (unsigned) bogus_prio, bogus_tmout + 1, sprintrc(rc));
+
+ /* Partially invalid message (memory only partially available) */
+ rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
+ MSG_SIZE, bogus_prio, bogus_tmout);
+ printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
+ "%s\n",
+ (int) bogus_fd, msg + MSG_SIZE - MSG_CUT,
+ (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
+ (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
+ sprintrc(rc));
+
+ /* Fully valid message, uncut */
+ rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
+ MSG_CUT, bogus_prio, bogus_tmout);
+ errstr = sprintrc(rc);
+ printf("mq_timedsend(%d, ", (int) bogus_fd);
+ printstr(MSG_START + MSG_SIZE - MSG_CUT, MSG_CUT);
+ printf(", %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+ (unsigned long long) MSG_CUT, (unsigned) bogus_prio,
+ (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
+ errstr);
+
+ /* Partially invalid message, cut at maxstrlen */
+ rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_CUT, MSG_SIZE,
+ bogus_prio, bogus_tmout);
+ errstr = sprintrc(rc);
+ printf("mq_timedsend(%d, ", (int) bogus_fd);
+ printstr(MSG_START + MSG_CUT, MSG_MAX_UNCUT);
+ printf("..., %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+ (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
+ (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
+ errstr);
+
+
+ /* mq_timedreceive */
+
+ /* Zero values */
+ rc = syscall(__NR_mq_timedreceive, bogus_zero, NULL, bogus_zero_size,
+ NULL, NULL);
+ printf("mq_timedreceive(0, NULL, 0, NULL, NULL) = %s\n", sprintrc(rc));
+
+ /* Invalid addresses */
+ rc = syscall(__NR_mq_timedreceive, bogus_fd, msg + MSG_SIZE, bogus_size,
+ bogus_prio_ptr + 1, bogus_tmout + 1);
+ printf("mq_timedreceive(%d, %p, %llu, %p, %p) = %s\n",
+ (int) bogus_fd, msg + MSG_SIZE, (unsigned long long) bogus_size,
+ bogus_prio_ptr + 1, bogus_tmout + 1, sprintrc(rc));
+
+ /* Invalid fd, valid msg pointer */
+ rc = syscall(__NR_mq_timedreceive, bogus_fd, msg, bogus_size,
+ bogus_prio_ptr, bogus_tmout);
+ printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%jd, tv_nsec=%jd}) = "
+ "%s\n",
+ (int) bogus_fd, msg, (unsigned long long) bogus_size,
+ bogus_prio_ptr, (intmax_t) bogus_tmout->tv_sec,
+ (intmax_t) bogus_tmout->tv_nsec, sprintrc(rc));
+
+
+ /* mq_notify */
+
+ /* Zero values */
+ rc = syscall(__NR_mq_notify, bogus_zero, NULL);
+ printf("mq_notify(0, NULL) = %s\n", sprintrc(rc));
+
+ /* Invalid pointer */
+ rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev + 1);
+ printf("mq_notify(%d, %p) = %s\n",
+ (int) bogus_fd, bogus_sev + 1, sprintrc(rc));
+
+ /* Invalid SIGEV_* */
+ rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
+ printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+ ", sigev_signo=%u, sigev_notify=%#x /* SIGEV_??? */}) = %s\n",
+ (int) bogus_fd, bogus_sev->sigev_value.sival_int,
+ bogus_sev->sigev_value.sival_ptr,
+ bogus_sev->sigev_signo, bogus_sev->sigev_notify,
+ sprintrc(rc));
+
+ /* SIGEV_NONE */
+ bogus_sev->sigev_notify = SIGEV_NONE;
+ rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
+ printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
+ "sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
+ (int) bogus_fd, bogus_sev->sigev_value.sival_int,
+ bogus_sev->sigev_value.sival_ptr,
+ bogus_sev->sigev_signo, sprintrc(rc));
+
+ /* SIGEV_SIGNAL */
+ bogus_sev->sigev_notify = SIGEV_SIGNAL;
+ bogus_sev->sigev_signo = SIGALRM;
+ rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
+ printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
+ "sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
+ (int) bogus_fd, bogus_sev->sigev_value.sival_int,
+ bogus_sev->sigev_value.sival_ptr, sprintrc(rc));
+
+ /* SIGEV_THREAD */
+ bogus_sev->sigev_notify = SIGEV_THREAD;
+ bogus_sev->sigev_un.sigev_thread.function =
+ (unsigned long) 0xdeadbeefbadc0dedULL;
+ bogus_sev->sigev_un.sigev_thread.attribute =
+ (unsigned long) 0xcafef00dfacefeedULL;
+ rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
+ printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
+ "sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD, "
+ "sigev_notify_function=%#lx, sigev_notify_attributes=%#lx}) = "
+ "%s\n",
+ (int) bogus_fd, bogus_sev->sigev_value.sival_int,
+ bogus_sev->sigev_value.sival_ptr,
+ bogus_sev->sigev_un.sigev_thread.function,
+ bogus_sev->sigev_un.sigev_thread.attribute, sprintrc(rc));
+
+ /* mq_unlink */
+
+ /* Zero values */
+ rc = syscall(__NR_mq_unlink, NULL);
+ printf("mq_unlink(NULL) = %s\n", sprintrc(rc));
+
+ /* Invalid ptr */
+ rc = syscall(__NR_mq_unlink, msg + MSG_SIZE);
+ printf("mq_unlink(%p) = %s\n", msg + MSG_SIZE, sprintrc(rc));
+
+ /* Long unterminated string */
+ rc = syscall(__NR_mq_unlink, msg);
+ errstr = sprintrc(rc);
+ printf("mq_unlink(%p) = %s\n", msg, errstr);
+
+
+ /* Sending and receiving test */
+
+# if DUMPIO_READ || DUMPIO_WRITE
+ close(0);
+# endif
+ bogus_attrs[1] = 2;
+ bogus_attrs[2] = MSG_SIZE;
+ fd = rc = syscall(__NR_mq_open, MQ_NAME,
+ O_CREAT|O_RDWR|O_NONBLOCK, S_IRWXU, bogus_attrs);
+ errstr = sprintrc(rc);
+ if (rc < 0)
+ perror_msg_and_skip("mq_open");
+ else
+ atexit(cleanup);
+# if DUMPIO_READ || DUMPIO_WRITE
+ if (fd != 0)
+ error_msg_and_skip("mq_open returned fd other than 0");
+# endif
+ fill_memory_ex(bogus_attrs, sizeof(*bogus_attrs) * NUM_ATTRS,
+ 0xbb, 0x70);
+ printf("mq_open(\"" MQ_NAME "\", O_RDWR|O_CREAT|O_NONBLOCK, "
+ "0700, {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u, "
+ "mq_curmsgs=%lld}) = %s\n",
+ (unsigned long long) (kernel_ulong_t) bogus_attrs[0], MSG_SIZE,
+ (long long) bogus_attrs[3], errstr);
+
+ rc = syscall(__NR_mq_getsetattr, fd, NULL, bogus_attrs);
+ if (rc < 0)
+ perror_msg_and_skip("mq_getsetattr");
+ if ((bogus_attrs[1] < 2) || (bogus_attrs[2] < MSG_SIZE))
+ error_msg_and_skip("mq too small");
+
+ do_send(fd, msg, MSG_CUT, future_tmout, false);
+ do_send(fd, msg, MSG_SIZE, future_tmout, true);
+
+ memset(msg, '\0', MSG_SIZE);
+ do_recv(fd, msg, MSG_CUT, future_tmout, false);
+
+ memset(msg, '\0', MSG_SIZE);
+ do_recv(fd, msg, MSG_SIZE, future_tmout, true);
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_mq_open && __NR_mq_timedsend && "
+ "__NR_mq_timedreceive && __NR_mq_notify && __NR_mq_unlink");
+
+#endif
diff --git a/tests/mq_sendrecv.test b/tests/mq_sendrecv.test
new file mode 100755
index 0000000..67f4d63
--- /dev/null
+++ b/tests/mq_sendrecv.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -a14
diff --git a/tests/msg_control.c b/tests/msg_control.c
index 7540c3d..709a307 100644
--- a/tests/msg_control.c
+++ b/tests/msg_control.c
@@ -53,8 +53,6 @@
#define MIN_SIZE_OF(type, member) \
(offsetof(type, member) + sizeof(((type *) 0)->member))
-#define VAL_STR(val) val, #val
-
static struct cmsghdr *
get_cmsghdr(void *const page, const size_t len)
{
@@ -371,7 +369,7 @@
cmsg_len++) {
test_scm_security(mh, msg_controllen,
page, text, cmsg_len,
- VAL_STR(SOL_SOCKET));
+ ARG_STR(SOL_SOCKET));
}
}
@@ -379,7 +377,7 @@
test_scm_rights3(mh, page, DEFAULT_STRLEN);
test_scm_rights3(mh, page, DEFAULT_STRLEN + 1);
- test_unknown_type(mh, page, VAL_STR(SOL_SOCKET), "SCM_???");
+ test_unknown_type(mh, page, ARG_STR(SOL_SOCKET), "SCM_???");
}
static void
@@ -604,32 +602,32 @@
static void
test_sol_ip(struct msghdr *const mh, void *const page)
{
- test_ip_pktinfo(mh, page, VAL_STR(IP_PKTINFO));
- test_ip_uint(mh, page, VAL_STR(IP_TTL));
- test_ip_uint8_t(mh, page, VAL_STR(IP_TOS));
- test_ip_opts(mh, page, VAL_STR(IP_RECVOPTS), 1);
- test_ip_opts(mh, page, VAL_STR(IP_RECVOPTS), 2);
- test_ip_opts(mh, page, VAL_STR(IP_RECVOPTS), 3);
- test_ip_opts(mh, page, VAL_STR(IP_RECVOPTS), 4);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), 5);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), 6);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), 7);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), 8);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), DEFAULT_STRLEN - 1);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), DEFAULT_STRLEN);
- test_ip_opts(mh, page, VAL_STR(IP_RETOPTS), DEFAULT_STRLEN + 1);
+ test_ip_pktinfo(mh, page, ARG_STR(IP_PKTINFO));
+ test_ip_uint(mh, page, ARG_STR(IP_TTL));
+ test_ip_uint8_t(mh, page, ARG_STR(IP_TOS));
+ test_ip_opts(mh, page, ARG_STR(IP_RECVOPTS), 1);
+ test_ip_opts(mh, page, ARG_STR(IP_RECVOPTS), 2);
+ test_ip_opts(mh, page, ARG_STR(IP_RECVOPTS), 3);
+ test_ip_opts(mh, page, ARG_STR(IP_RECVOPTS), 4);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), 5);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), 6);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), 7);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), 8);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), DEFAULT_STRLEN - 1);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), DEFAULT_STRLEN);
+ test_ip_opts(mh, page, ARG_STR(IP_RETOPTS), DEFAULT_STRLEN + 1);
#ifdef IP_CHECKSUM
- test_ip_recverr(mh, page, VAL_STR(IP_RECVERR));
+ test_ip_recverr(mh, page, ARG_STR(IP_RECVERR));
#endif
#ifdef IP_ORIGDSTADDR
- test_ip_origdstaddr(mh, page, VAL_STR(IP_ORIGDSTADDR));
+ test_ip_origdstaddr(mh, page, ARG_STR(IP_ORIGDSTADDR));
#endif
#ifdef IP_CHECKSUM
- test_ip_uint(mh, page, VAL_STR(IP_CHECKSUM));
+ test_ip_uint(mh, page, ARG_STR(IP_CHECKSUM));
#endif
test_scm_security(mh, CMSG_LEN(0), page, 0, CMSG_LEN(0),
- VAL_STR(SOL_IP));
- test_unknown_type(mh, page, VAL_STR(SOL_IP), "IP_???");
+ ARG_STR(SOL_IP));
+ test_unknown_type(mh, page, ARG_STR(SOL_IP), "IP_???");
}
static void
diff --git a/tests/nanosleep.c b/tests/nanosleep.c
index db430e5..9f0e626 100644
--- a/tests/nanosleep.c
+++ b/tests/nanosleep.c
@@ -57,7 +57,7 @@
if (nanosleep(&req.ts, NULL))
perror_msg_and_fail("nanosleep");
- printf("nanosleep({%jd, %jd}, NULL) = 0\n",
+ printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, NULL) = 0\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
assert(nanosleep(NULL, &rem.ts) == -1);
@@ -65,12 +65,12 @@
if (nanosleep(&req.ts, &rem.ts))
perror_msg_and_fail("nanosleep");
- printf("nanosleep({%jd, %jd}, %p) = 0\n",
+ printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = 0\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
req.ts.tv_nsec = 1000000000;
assert(nanosleep(&req.ts, &rem.ts) == -1);
- printf("nanosleep({%jd, %jd}, %p) = -1 EINVAL (%m)\n",
+ printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
assert(sigaction(SIGALRM, &act, NULL) == 0);
@@ -78,8 +78,8 @@
if (setitimer(ITIMER_REAL, &itv, NULL))
perror_msg_and_skip("setitimer");
- printf("setitimer(ITIMER_REAL, {it_interval={%jd, %jd}"
- ", it_value={%jd, %jd}}, NULL) = 0\n",
+ printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
+ ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
(intmax_t) itv.it_interval.tv_sec,
(intmax_t) itv.it_interval.tv_usec,
(intmax_t) itv.it_value.tv_sec,
@@ -87,7 +87,7 @@
req.ts.tv_nsec = 999999999;
assert(nanosleep(&req.ts, &rem.ts) == -1);
- printf("nanosleep({%jd, %jd}, {%jd, %jd})"
+ printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, {tv_sec=%jd, tv_nsec=%jd})"
" = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
(intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
(intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c
index 8e09acb..aecf7aa 100644
--- a/tests/nsyscalls.c
+++ b/tests/nsyscalls.c
@@ -27,9 +27,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "defs.h"
-#include "kernel_types.h"
-#include "syscall.h"
+#include "tests.h"
+#include "sysent.h"
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
#define TD 0
#define TF 0
@@ -42,14 +45,13 @@
#define MA 0
#define SI 0
#define SE 0
+#define CST 0
#define SEN(arg) 0,0
static const struct_sysent syscallent[] = {
#include "syscallent.h"
};
-#include <asm/unistd.h>
-
#if defined __X32_SYSCALL_BIT && defined __NR_read \
&& (__X32_SYSCALL_BIT & __NR_read) != 0
# define SYSCALL_BIT __X32_SYSCALL_BIT
@@ -61,12 +63,12 @@
test_syscall(const unsigned long nr)
{
static const kernel_ulong_t a[] = {
- (kernel_ulong_t) 0xface0fedbadc0ded,
- (kernel_ulong_t) 0xface1fedbadc1ded,
- (kernel_ulong_t) 0xface2fedbadc2ded,
- (kernel_ulong_t) 0xface3fedbadc3ded,
- (kernel_ulong_t) 0xface4fedbadc4ded,
- (kernel_ulong_t) 0xface5fedbadc5ded
+ (kernel_ulong_t) 0xface0fedbadc0dedULL,
+ (kernel_ulong_t) 0xface1fedbadc1dedULL,
+ (kernel_ulong_t) 0xface2fedbadc2dedULL,
+ (kernel_ulong_t) 0xface3fedbadc3dedULL,
+ (kernel_ulong_t) 0xface4fedbadc4dedULL,
+ (kernel_ulong_t) 0xface5fedbadc5dedULL
};
long rc = syscall(nr | SYSCALL_BIT,
diff --git a/tests/old_mmap.c b/tests/old_mmap.c
index de1bafb..2725fb7 100644
--- a/tests/old_mmap.c
+++ b/tests/old_mmap.c
@@ -31,7 +31,7 @@
#include <asm/unistd.h>
/*
- * On s390x, this is the mmap syscall used by glibc, so,
+ * On s390x and m68k, this is the mmap syscall used by glibc, so,
* from one side, it's already covered by another test, and, from another side,
* it would require additional efforts to filter out mmap calls made by glibc.
*/
@@ -39,7 +39,6 @@
#if defined __NR_mmap && \
( defined __arm__ \
|| defined __i386__ \
- || defined __m68k__ \
|| (defined __s390__ && !defined __s390x__) \
)
@@ -96,7 +95,7 @@
#else
-SKIP_MAIN_UNDEFINED("__NR_mmap && (__arm__ || __i386__ || __m68k__"
+SKIP_MAIN_UNDEFINED("__NR_mmap && (__arm__ || __i386__"
" || (__s390__ && !__s390x__))")
#endif
diff --git a/tests/oldfstat.c b/tests/oldfstat.c
new file mode 100644
index 0000000..f5a9441
--- /dev/null
+++ b/tests/oldfstat.c
@@ -0,0 +1,49 @@
+/*
+ * Check decoding of oldfstat syscall.
+ *
+ * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined __NR_oldfstat && HAVE_STRUCT___OLD_KERNEL_STAT
+
+# define OLD_STAT 1
+# define TEST_SYSCALL_NR __NR_oldfstat
+# define TEST_SYSCALL_STR "oldfstat"
+# define STRUCT_STAT struct __old_kernel_stat
+# define STRUCT_STAT_STR "struct __old_kernel_stat"
+# define STRUCT_STAT_IS_STAT64 0
+# define SAMPLE_SIZE ((libc_off_t) (kernel_ulong_t) 23147718418U)
+# include "fstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_oldfstat && HAVE_STRUCT___OLD_KERNEL_STAT")
+
+#endif
diff --git a/tests/oldfstat.test b/tests/oldfstat.test
new file mode 100755
index 0000000..66a1056
--- /dev/null
+++ b/tests/oldfstat.test
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Check oldfstat syscall decoding.
+
+. "${srcdir=.}/init.sh"
+
+# strace -P is implemented using /proc/self/fd
+[ -d /proc/self/fd/ ] ||
+ framework_skip_ '/proc/self/fd/ is not available'
+
+syscall=$NAME
+run_prog > /dev/null
+sample=$syscall.sample
+> "$sample"
+run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
+match_diff "$LOG" "$OUT"
+rm -f "$OUT"
+
+exit 0
diff --git a/tests/oldlstat.c b/tests/oldlstat.c
new file mode 100644
index 0000000..6613237
--- /dev/null
+++ b/tests/oldlstat.c
@@ -0,0 +1,49 @@
+/*
+ * Check decoding of oldlstat syscall.
+ *
+ * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined __NR_oldlstat && HAVE_STRUCT___OLD_KERNEL_STAT
+
+# define OLD_STAT 1
+# define TEST_SYSCALL_NR __NR_oldlstat
+# define TEST_SYSCALL_STR "oldlstat"
+# define STRUCT_STAT struct __old_kernel_stat
+# define STRUCT_STAT_STR "struct __old_kernel_stat"
+# define STRUCT_STAT_IS_STAT64 0
+# define SAMPLE_SIZE ((libc_off_t) (kernel_ulong_t) 23147718418U)
+# include "lstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_oldlstat && HAVE_STRUCT___OLD_KERNEL_STAT")
+
+#endif
diff --git a/tests/oldlstat.test b/tests/oldlstat.test
new file mode 100755
index 0000000..a0f9ab9
--- /dev/null
+++ b/tests/oldlstat.test
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# Check oldlstat syscall decoding.
+
+. "${srcdir=.}/statx.sh"
diff --git a/tests/oldselect.expected b/tests/oldselect.expected
index c0426f4..d6e7f3c 100644
--- a/tests/oldselect.expected
+++ b/tests/oldselect.expected
@@ -1,2 +1,2 @@
-select(2, [1], [0], NULL, {0, 42}) = 0 (Timeout)
+select(2, [1], [0], NULL, {tv_sec=0, tv_usec=42}) = 0 (Timeout)
+++ exited with 0 +++
diff --git a/tests/oldstat.c b/tests/oldstat.c
new file mode 100644
index 0000000..d06e2bc
--- /dev/null
+++ b/tests/oldstat.c
@@ -0,0 +1,49 @@
+/*
+ * Check decoding of oldstat syscall.
+ *
+ * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined __NR_oldstat && HAVE_STRUCT___OLD_KERNEL_STAT
+
+# define OLD_STAT 1
+# define TEST_SYSCALL_NR __NR_oldstat
+# define TEST_SYSCALL_STR "oldstat"
+# define STRUCT_STAT struct __old_kernel_stat
+# define STRUCT_STAT_STR "struct __old_kernel_stat"
+# define STRUCT_STAT_IS_STAT64 0
+# define SAMPLE_SIZE ((libc_off_t) (kernel_ulong_t) 131478418U)
+# include "lstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_oldstat && HAVE_STRUCT___OLD_KERNEL_STAT")
+
+#endif
diff --git a/tests/oldstat.test b/tests/oldstat.test
new file mode 100755
index 0000000..42d70f7
--- /dev/null
+++ b/tests/oldstat.test
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# Check oldstat syscall decoding.
+
+. "${srcdir=.}/statx.sh"
diff --git a/tests/options-syntax.test b/tests/options-syntax.test
new file mode 100755
index 0000000..592b0e0
--- /dev/null
+++ b/tests/options-syntax.test
@@ -0,0 +1,148 @@
+#!/bin/sh
+#
+# Check strace options syntax.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+check_exit_status_and_stderr()
+{
+ $STRACE "$@" 2> "$LOG" &&
+ dump_log_and_fail_with \
+ "strace $* failed to handle the error properly"
+ match_diff "$LOG" "$EXP" ||
+ dump_log_and_fail_with \
+ "strace $* failed to print expected diagnostics"
+}
+
+strace_exp="${STRACE##* }"
+
+check_e()
+{
+ local pattern="$1"; shift
+ cat > "$EXP" << __EOF__
+$strace_exp: $pattern
+__EOF__
+ check_exit_status_and_stderr "$@"
+}
+
+check_h()
+{
+ local pattern="$1"; shift
+ cat > "$EXP" << __EOF__
+$strace_exp: $pattern
+Try '$strace_exp -h' for more information.
+__EOF__
+ check_exit_status_and_stderr "$@"
+}
+
+check_e "Invalid process id: '0'" -p 0
+check_e "Invalid process id: '-42'" -p -42
+check_e "Invalid process id: '$$.'" -p $$.
+check_e "Invalid process id: 'a'" -p 1,a
+check_e "Syscall 'chdir' for -b isn't supported" -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
+
+check_e "invalid system call '-1'" -e-1
+check_e "invalid system call '-2'" -e -2
+check_e "invalid system call '-3'" -etrace=-3
+check_e "invalid system call '-4'" -e trace=-4
+check_e "invalid system call '-5'" -e trace=1,-5
+check_e "invalid system call '2147483647'" -e 2147483647
+check_e "invalid system call '2147483648'" -e 2147483648
+check_e "invalid system call '4294967295'" -e 4294967295
+check_e "invalid system call '4294967296'" -e 4294967296
+
+check_e "invalid descriptor '-1'" -eread=-1
+check_e "invalid descriptor '-42'" -ewrite=-42
+check_e "invalid descriptor '2147483648'" -eread=2147483648
+check_e "invalid descriptor '4294967296'" -ewrite=4294967296
+check_e "invalid descriptor 'foo'" -eread=foo
+check_e "invalid descriptor ''" -ewrite=
+check_e "invalid descriptor ','" -eread=,
+check_e "invalid descriptor '!'" -ewrite='!'
+check_e "invalid descriptor '!'" -eread='0,!'
+check_e "invalid descriptor '!,'" -ewrite='!,'
+
+check_h 'must have PROG [ARGS] or -p PID'
+check_h 'PROG [ARGS] must be specified with -D' -D -p $$
+check_h '-c and -C are mutually exclusive' -c -C true
+check_h '-c and -C are mutually exclusive' -C -c true
+check_h '(-c or -C) and -ff are mutually exclusive' -c -ff true
+check_h '(-c or -C) and -ff are mutually exclusive' -C -ff true
+check_h '-w must be given with (-c or -C)' -w true
+check_h 'piping the output and -ff are mutually exclusive' -o '|' -ff true
+check_h 'piping the output and -ff are mutually exclusive' -o '!' -ff true
+check_h "invalid -a argument: '-42'" -a -42
+check_h "invalid -O argument: '-42'" -O -42
+check_h "invalid -s argument: '-42'" -s -42
+check_h "invalid -I argument: '5'" -I 5
+
+if [ -n "${UID-}" ]; then
+ if [ "${UID-}" = 0 ]; then
+ umsg="Cannot find user ':nosuchuser:'"
+ else
+ umsg='You must be root to use the -u option'
+ fi
+
+ check_e "$umsg" -u :nosuchuser: true
+
+ for c in i r t T y; do
+ check_e "-$c has no effect with -c
+$strace_exp: $umsg" -u :nosuchuser: -c -$c true
+ done
+ check_e "-i has no effect with -c
+$strace_exp: -r has no effect with -c
+$strace_exp: -t has no effect with -c
+$strace_exp: -T has no effect with -c
+$strace_exp: -y has no effect with -c
+$strace_exp: $umsg" -u :nosuchuser: -cirtTy true
+
+ check_e "-tt has no effect with -r
+$strace_exp: $umsg" -u :nosuchuser: -r -tt true
+fi
+
+args='-p 2147483647'
+$STRACE $args 2> "$LOG" &&
+ dump_log_and_fail_with \
+ "strace $args failed to handle the error properly"
+
+for cmd in PTRACE_SEIZE PTRACE_ATTACH; do
+ cat > "$EXP" << __EOF__
+$strace_exp: attach: ptrace($cmd, 2147483647): No such process
+__EOF__
+ diff -- "$EXP" "$LOG" ||
+ continue
+ args=
+ break
+done
+
+[ -z "$args" ] ||
+ dump_log_and_fail_with \
+ "strace $args failed to print expected diagnostics"
+
+rm -f "$EXP"
diff --git a/tests/perf_event_open.c b/tests/perf_event_open.c
index 72f5d3c..0ffea29 100644
--- a/tests/perf_event_open.c
+++ b/tests/perf_event_open.c
@@ -1,7 +1,7 @@
/*
- * Check decoding of perf_event_open syscall.
+ * Check verbose decoding of perf_event_open syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,22 +32,80 @@
#if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
+# include <inttypes.h>
# include <limits.h>
+# include <stdbool.h>
+# include <stddef.h>
# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
# include <unistd.h>
# include <linux/perf_event.h>
# include "xlat.h"
# include "xlat/perf_event_open_flags.h"
+# include "xlat/perf_attr_size.h"
-#if ULONG_MAX > UINT_MAX
-#define LONG_STR_PREFIX "ffffffff"
-#else
-#define LONG_STR_PREFIX ""
-#endif
+# if ULONG_MAX > UINT_MAX /* Poor man's "whether long is 8 bytes?" */
+# define LONG_STR_PREFIX "ffffffff"
+# else /* !(ULONG_MAX > UINT_MAX) */
+# define LONG_STR_PREFIX ""
+# endif /* ULONG_MAX > UINT_MAX */
-static const char *printaddr(void *ptr)
+# ifndef PERF_TYPE_BREAKPOINT
+# define PERF_TYPE_BREAKPOINT 5
+# endif
+
+struct s32_val_str {
+ int32_t val;
+ const char *str;
+};
+
+struct u32_val_str {
+ uint32_t val;
+ const char *str;
+};
+
+struct u64_val_str {
+ uint64_t val;
+ const char *str;
+};
+
+/* In order to avoid endianess-specific hackery */
+struct pea_flags {
+ uint64_t disabled :1,
+ inherit :1,
+ pinned :1,
+ exclusive :1,
+ exclude_user :1,
+ exclude_kernel :1,
+ exclude_hv :1,
+ exclude_idle :1,
+ mmap :1,
+ comm :1,
+ freq :1,
+ inherit_stat :1,
+ enable_on_exec :1,
+ task :1,
+ watermark :1,
+ precise_ip :2,
+ mmap_data :1,
+ sample_id_all :1,
+ exclude_host :1,
+ exclude_guest :1,
+ exclude_callchain_kernel :1,
+ exclude_callchain_user :1,
+ mmap2 :1,
+ comm_exec :1,
+ use_clockid :1,
+ context_switch :1,
+ write_backward :1,
+ __reserved_1 :36;
+};
+
+static const char *
+printaddr(void *ptr)
{
static char buf[sizeof("0x") + sizeof(void *) * 2];
@@ -59,13 +117,571 @@
return buf;
}
+/*
+ * Checklist:
+ *
+ * type - 8 IDs
+ * config - 13 IDs (0..11 + random), depends on type
+ * sample type - bitmask, up to 20 bits
+ * read_format - 5 IDs
+ * bp_type - 6, weird semantics (invalid/unknown)
+ * branch_sample_type - bitmask, 16 bits
+ * clockid - 13 values
+ *
+ * Unions:
+ * sample_period/sample_freq
+ * wakeup_event/wakeup_watermark
+ * bp_addr/config1
+ * bp_len/config2
+ */
+
+/*
+ * The main idea behind all those numerous ifdefs is checking against version of
+ * structure provided in kernel headers and not use one defined in strace
+ * headers (assume the case when suddenly we add flag without proper update of
+ * __reserved_1 field or something like this).
+ */
+static void
+print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
+ const char *type, const char *config, const char *sample_type,
+ const char *read_format, const char *precise_ip_desc,
+ const char *bp_type, const char *branch_sample_type,
+ const char *clockid, uint32_t available_size)
+{
+ /*
+ * Currently, strace supports version 5 of the structure, which is
+ * 112 bytes in size.
+ */
+ enum {
+ STRACE_PEA_ABBREV_SIZE =
+ offsetof(struct perf_event_attr, config) +
+ sizeof(attr_ptr->config),
+ STRACE_PEA_SIZE = 112,
+ };
+
+ uint32_t read_size;
+ struct perf_event_attr *attr;
+# if VERBOSE
+ uint32_t cutoff;
+ uint64_t val;
+ uint64_t use_clockid;
+ union {
+ struct pea_flags flags;
+ uint64_t raw;
+ } flags_data;
+# endif
+
+ read_size =
+# if !VERBOSE
+ STRACE_PEA_ABBREV_SIZE;
+# else
+ size < STRACE_PEA_SIZE ?
+ (size ? size : PERF_ATTR_SIZE_VER0) : STRACE_PEA_SIZE;
+# endif
+
+ if (read_size > available_size) {
+ printf("%s", printaddr(attr_ptr));
+ return;
+ }
+
+ /*
+ * Replicate kernel's behaviour regarding copying structure from
+ * userspace.
+ */
+ attr = calloc(1, STRACE_PEA_SIZE);
+
+ if (!attr)
+ error_msg_and_fail("calloc");
+
+
+ memcpy(attr, attr_ptr, read_size);
+
+ if (size && (size < PERF_ATTR_SIZE_VER0)) {
+ printf("%s", printaddr(attr_ptr));
+ free(attr);
+ return;
+ }
+
+ printf("{type=%s, size=", type);
+ if (size != attr->size) {
+ printxval(perf_attr_size, size, "PERF_ATTR_SIZE_???");
+ printf(" => ");
+ }
+ printxval(perf_attr_size, attr->size, "PERF_ATTR_SIZE_???");
+ printf(", config=%s, ", config);
+
+ if (!size)
+ size = PERF_ATTR_SIZE_VER0;
+
+# if !VERBOSE
+ printf("...}");
+# else /* !VERBOSE */
+ printf("%s=%" PRI__u64", sample_type=%s, read_format=%s",
+ attr->freq ? "sample_freq" : "sample_period",
+ attr->freq ? attr->sample_freq : attr->sample_period,
+ sample_type, read_format);
+
+ printf(", disabled=%u"
+ ", inherit=%u"
+ ", pinned=%u"
+ ", exclusive=%u"
+ ", exclusive_user=%u"
+ ", exclude_kernel=%u"
+ ", exclude_hv=%u"
+ ", exclude_idle=%u"
+ ", mmap=%u"
+ ", comm=%u"
+ ", freq=%u"
+ ", inherit_stat=%u"
+ ", enable_on_exec=%u"
+ ", task=%u"
+ ", watermark=%u",
+ attr->disabled,
+ attr->inherit,
+ attr->pinned,
+ attr->exclusive,
+ attr->exclude_user,
+ attr->exclude_kernel,
+ attr->exclude_hv,
+ attr->exclude_idle,
+ attr->mmap,
+ attr->comm,
+ attr->freq,
+ attr->inherit_stat,
+ attr->enable_on_exec,
+ attr->task,
+ attr->watermark);
+
+ flags_data.raw = ((uint64_t *) attr)[5];
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_PRECISE_IP
+ attr->precise_ip;
+# else
+ flags_data.flags.precise_ip;
+# endif
+ printf(", precise_ip=%" PRIu64 " /* %s */", val, precise_ip_desc);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_MMAP_DATA
+ attr->mmap_data;
+# else
+ flags_data.flags.mmap_data;
+# endif
+ printf(", mmap_data=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_ID_ALL
+ attr->sample_id_all;
+# else
+ flags_data.flags.sample_id_all;
+# endif
+ printf(", sample_id_all=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_HOST
+ attr->exclude_host;
+# else
+ flags_data.flags.exclude_host;
+# endif
+ printf(", exclude_host=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_GUEST
+ attr->exclude_guest;
+# else
+ flags_data.flags.exclude_guest;
+# endif
+ printf(", exclude_guest=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_CALLCHAIN_KERNEL
+ attr->exclude_callchain_kernel;
+# else
+ flags_data.flags.exclude_callchain_kernel;
+# endif
+ printf(", exclude_callchain_kernel=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_CALLCHAIN_USER
+ attr->exclude_callchain_user;
+# else
+ flags_data.flags.exclude_callchain_user;
+# endif
+ printf(", exclude_callchain_user=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_MMAP2
+ attr->mmap2;
+# else
+ flags_data.flags.mmap2;
+# endif
+ printf(", mmap2=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_COMM_EXEC
+ attr->comm_exec;
+# else
+ flags_data.flags.comm_exec;
+# endif
+ printf(", comm_exec=%" PRIu64, val);
+
+ use_clockid = val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_USE_CLOCKID
+ attr->use_clockid;
+# else
+ flags_data.flags.use_clockid;
+# endif
+ printf(", use_clockid=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_CONTEXT_SWITCH
+ attr->context_switch;
+# else
+ flags_data.flags.context_switch;
+# endif
+ printf(", context_switch=%" PRIu64, val);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_WRITE_BACKWARD
+ attr->write_backward;
+# else
+ flags_data.flags.write_backward;
+# endif
+ printf(", write_backward=%" PRIu64, val);
+
+ val = flags_data.flags.__reserved_1;
+ if (val)
+ printf(", __reserved_1=%#" PRIx64 " /* Bits 63..28 */", val);
+
+ printf(", %s=%u",
+ attr->watermark ? "wakeup_watermark" : "wakeup_events",
+ attr->watermark ? attr->wakeup_watermark : attr->wakeup_events);
+
+ if (attr->type == PERF_TYPE_BREAKPOINT)
+ printf(", bp_type=%s", bp_type);
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_CONFIG1
+ attr->config1;
+# else
+ ((uint64_t *) attr)[56 / sizeof(uint64_t)];
+# endif
+ printf(", %s=%#" PRIx64,
+ attr->type == PERF_TYPE_BREAKPOINT ? "bp_addr" : "config1",
+ val);
+
+ /* End of version 0 of the structure */
+ if (size <= 64) {
+ cutoff = 64;
+ goto end;
+ }
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_CONFIG2
+ attr->config2;
+# else
+ ((uint64_t *) attr)[64 / sizeof(uint64_t)];
+# endif
+ if (attr->type == PERF_TYPE_BREAKPOINT)
+ printf(", bp_len=%" PRIu64, val);
+ else
+ printf(", config2=%#" PRIx64, val);
+
+ /* End of version 1 of the structure */
+ if (size <= 72) {
+ cutoff = 72;
+ goto end;
+ }
+
+ /*
+ * Print branch sample type only in case PERF_SAMPLE_BRANCH_STACK
+ * is set in the sample_type field.
+ */
+ if (attr->sample_type & (1 << 11))
+ printf(", branch_sample_type=%s", branch_sample_type);
+
+ /* End of version 2 of the structure */
+ if (size <= 80) {
+ cutoff = 80;
+ goto end;
+ }
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_REGS_USER
+ attr->sample_regs_user;
+# else
+ ((uint64_t *) attr)[80 / sizeof(uint64_t)];
+# endif
+ printf(", sample_regs_user=%#" PRIx64, val);
+
+ if (size <= 88) {
+ cutoff = 88;
+ goto end;
+ }
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_STACK_USER
+ attr->sample_stack_user;
+# else
+ ((uint32_t *) attr)[88 / sizeof(uint32_t)];
+# endif
+ /*
+ * Print branch sample type only in case PERF_SAMPLE_STACK_USER
+ * is set in the sample_type field.
+ */
+ if (attr->sample_type & (1 << 13))
+ printf(", sample_stack_user=%#" PRIx32, (uint32_t) val);
+
+ if (size <= 92) {
+ cutoff = 92;
+ goto end;
+ }
+
+ if (use_clockid)
+ printf(", clockid=%s", clockid);
+
+ /* End of version 3 of the structure */
+ if (size <= 96) {
+ cutoff = 96;
+ goto end;
+ }
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_REGS_INTR
+ attr->sample_regs_intr;
+# else
+ ((uint64_t *) attr)[96 / sizeof(uint64_t)];
+# endif
+ printf(", sample_regs_intr=%#" PRIx64, val);
+
+ /* End of version 4 of the structure */
+ if (size <= 104) {
+ cutoff =104;
+ goto end;
+ }
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_AUX_WATERMARK
+ attr->aux_watermark;
+# else
+ ((uint32_t *) attr)[104 / sizeof(uint32_t)];
+# endif
+ printf(", aux_watermark=%" PRIu32, (uint32_t) val);
+
+ if (size <= 108) {
+ cutoff =108;
+ goto end;
+ }
+
+ val =
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_MAX_STACK
+ attr->sample_max_stack;
+# else
+ ((uint16_t *) attr)[108 / sizeof(uint16_t)];
+# endif
+ printf(", sample_max_stack=%" PRIu16, (uint16_t) val);
+
+ if (size <= 110) {
+ cutoff =110;
+ goto end;
+ }
+
+ cutoff = STRACE_PEA_SIZE;
+
+end:
+ if (size > cutoff)
+ printf(", ...");
+
+ printf("}");
+# endif /* !VERBOSE */
+
+ free(attr);
+}
+
+/* These require aligned access, so no byte-grain checks possible */
+# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64
+# define ATTR_REC(sz) { tail_alloc((sz + 7) & ~7), sz }
+# else
+# define ATTR_REC(sz) { tail_alloc(sz), sz }
+# endif
+
+# define BRANCH_TYPE_ALL \
+ "PERF_SAMPLE_BRANCH_USER|" \
+ "PERF_SAMPLE_BRANCH_KERNEL|" \
+ "PERF_SAMPLE_BRANCH_HV|" \
+ "PERF_SAMPLE_BRANCH_ANY|" \
+ "PERF_SAMPLE_BRANCH_ANY_CALL|" \
+ "PERF_SAMPLE_BRANCH_ANY_RETURN|" \
+ "PERF_SAMPLE_BRANCH_IND_CALL|" \
+ "PERF_SAMPLE_BRANCH_ABORT_TX|" \
+ "PERF_SAMPLE_BRANCH_IN_TX|" \
+ "PERF_SAMPLE_BRANCH_NO_TX|" \
+ "PERF_SAMPLE_BRANCH_COND|" \
+ "PERF_SAMPLE_BRANCH_CALL_STACK|" \
+ "PERF_SAMPLE_BRANCH_IND_JUMP|" \
+ "PERF_SAMPLE_BRANCH_CALL|" \
+ "PERF_SAMPLE_BRANCH_NO_FLAGS|" \
+ "PERF_SAMPLE_BRANCH_NO_CYCLES"
+
int
main(void)
{
- struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+ static const size_t attr_small_size = PERF_ATTR_SIZE_VER0 - 8;
+ static const size_t attr_v0_size = PERF_ATTR_SIZE_VER0;
+ static const size_t attr_v1_size = PERF_ATTR_SIZE_VER1;
+ static const size_t attr_v2_size = PERF_ATTR_SIZE_VER2;
+ static const size_t attr_v2_5_size = PERF_ATTR_SIZE_VER2 + 8;
+ static const size_t attr_v2_75_size = PERF_ATTR_SIZE_VER2 + 12;
+ static const size_t attr_v3_size = PERF_ATTR_SIZE_VER3;
+ static const size_t attr_v4_size = PERF_ATTR_SIZE_VER4;
+ static const size_t attr_v4_5_size = PERF_ATTR_SIZE_VER4 + 4;
+ static const size_t attr_v4_625_size = PERF_ATTR_SIZE_VER4 + 5;
+ static const size_t attr_v4_875_size = PERF_ATTR_SIZE_VER4 + 7;
+ static const size_t attr_v5_size = PERF_ATTR_SIZE_VER5;
+ static const size_t attr_big_size = PERF_ATTR_SIZE_VER5 + 32;
- attr->type = PERF_TYPE_HARDWARE;
- attr->size = sizeof(*attr);
+ static const struct u64_val_str attr_types[] = {
+ { ARG_STR(PERF_TYPE_HARDWARE) },
+ { ARG_STR(PERF_TYPE_SOFTWARE) },
+ { ARG_STR(PERF_TYPE_TRACEPOINT) },
+ { ARG_STR(PERF_TYPE_HW_CACHE) },
+ { ARG_STR(PERF_TYPE_RAW) },
+ { ARG_STR(PERF_TYPE_BREAKPOINT) },
+ { ARG_STR(0x6) " /* PERF_TYPE_??? */" },
+ { ARG_STR(0xdeadc0de) " /* PERF_TYPE_??? */" },
+ };
+ static const struct u64_val_str
+ attr_configs[ARRAY_SIZE(attr_types)][3] = {
+ /* PERF_TYPE_HARDWARE */ {
+ { 9, "PERF_COUNT_HW_REF_CPU_CYCLES" },
+ { 10, "0xa /* PERF_COUNT_HW_??? */" },
+ { ARG_ULL_STR(0xfaceca75deadb0d4)
+ " /* PERF_COUNT_HW_??? */" },
+ },
+ /* PERF_TYPE_SOFTWARE */ {
+ { 10, "PERF_COUNT_SW_BPF_OUTPUT" },
+ { 11, "0xb /* PERF_COUNT_SW_??? */" },
+ { ARG_ULL_STR(0xdec0ded1dec0ded2)
+ " /* PERF_COUNT_SW_??? */" },
+ },
+ /* PERF_TYPE_TRACEPOINT */ {
+ { ARG_STR(0) },
+ { 4207856245U, "4207856245" },
+ { ARG_ULL_STR(16051074073505095380) },
+ },
+ /* PERF_TYPE_HW_CACHE */ {
+ { 0, "PERF_COUNT_HW_CACHE_L1D|"
+ "PERF_COUNT_HW_CACHE_OP_READ<<8|"
+ "PERF_COUNT_HW_CACHE_RESULT_ACCESS<<16" },
+ { 0x020207, "0x7 /* PERF_COUNT_HW_CACHE_??? */|"
+ "PERF_COUNT_HW_CACHE_OP_PREFETCH<<8|"
+ "0x2 /* PERF_COUNT_HW_CACHE_RESULT_??? */<<16" },
+ { 0xdeadf157ed010306ULL, "PERF_COUNT_HW_CACHE_NODE|"
+ "0x3 /* PERF_COUNT_HW_CACHE_OP_??? */<<8|"
+ "PERF_COUNT_HW_CACHE_RESULT_MISS<<16|"
+ "0xdeadf157ed<<24 "
+ "/* PERF_COUNT_HW_CACHE_??? */" },
+ },
+ /* PERF_TYPE_RAW */ {
+ { ARG_STR(0) },
+ { ARG_STR(0xda7a1057) },
+ { ARG_ULL_STR(0xdec0ded7dec0ded8) },
+ },
+ /* PERF_TYPE_BREAKPOINT */ {
+ { ARG_STR(0) },
+ { ARG_STR(0xbadc0ded) },
+ { ARG_ULL_STR(0xdec0ded9dec0deda) },
+ },
+ /* invalid 1 */ {
+ { ARG_STR(0) },
+ { ARG_STR(0xbeeff00d) },
+ { ARG_ULL_STR(0xdec0dedbdec0dedc) },
+ },
+ /* invalid 2 */ {
+ { ARG_STR(0) },
+ { ARG_STR(0xca75dead) },
+ { ARG_ULL_STR(0xdec0dedddec0dede) },
+ },
+ };
+ static const struct u64_val_str sample_types[] = {
+ { ARG_STR(0) },
+ { 0x800, "PERF_SAMPLE_BRANCH_STACK" },
+ { ARG_ULL_STR(0xdeadc0deda780000) " /* PERF_SAMPLE_??? */" },
+ { 0xffffffffffffffffULL,
+ "PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
+ "PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
+ "PERF_SAMPLE_CALLCHAIN|PERF_SAMPLE_ID|PERF_SAMPLE_CPU|"
+ "PERF_SAMPLE_PERIOD|PERF_SAMPLE_STREAM_ID|"
+ "PERF_SAMPLE_RAW|PERF_SAMPLE_BRANCH_STACK|"
+ "PERF_SAMPLE_REGS_USER|PERF_SAMPLE_STACK_USER|"
+ "PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
+ "PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
+ "PERF_SAMPLE_REGS_INTR|0xfffffffffff80000" },
+ };
+ static const struct u64_val_str read_formats[] = {
+ { ARG_STR(0) },
+ { ARG_STR(PERF_FORMAT_TOTAL_TIME_ENABLED) },
+ { 0xf, "PERF_FORMAT_TOTAL_TIME_ENABLED|"
+ "PERF_FORMAT_TOTAL_TIME_RUNNING|"
+ "PERF_FORMAT_ID|PERF_FORMAT_GROUP" },
+ { ARG_ULL_STR(0xdeadf157dec0ded0) " /* PERF_FORMAT_??? */" },
+ { 0xffffffffffffffffULL,
+ "PERF_FORMAT_TOTAL_TIME_ENABLED|"
+ "PERF_FORMAT_TOTAL_TIME_RUNNING|"
+ "PERF_FORMAT_ID|PERF_FORMAT_GROUP|"
+ "0xfffffffffffffff0" },
+ };
+ static const char *precise_ip_descs[] = {
+ "arbitrary skid",
+ "constant skid",
+ "requested to have 0 skid",
+ "must have 0 skid",
+ };
+ static const struct u32_val_str bp_types[] = {
+ { 0, "HW_BREAKPOINT_EMPTY" },
+ { 1, "HW_BREAKPOINT_R" },
+ { 3, "HW_BREAKPOINT_RW" },
+ { 5, "0x5 /* HW_BREAKPOINT_INVALID */" },
+ { 8, "0x8 /* HW_BREAKPOINT_??? */" },
+ { ARG_STR(0xface1e55) " /* HW_BREAKPOINT_??? */" },
+ };
+ static const struct u64_val_str branch_sample_types[] = {
+ { ARG_STR(0) },
+ { 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
+ { 0xffff, BRANCH_TYPE_ALL },
+ { ARG_ULL_STR(0xdeadcaffeeed0000)
+ " /* PERF_SAMPLE_BRANCH_??? */" },
+ { 0xffffffffffffffffULL,
+ BRANCH_TYPE_ALL "|0xffffffffffff0000" }
+ };
+ static const struct s32_val_str clockids[] = {
+ { 11, "CLOCK_TAI" },
+ { ARG_STR(0xc) " /* CLOCK_??? */" },
+ { ARG_STR(0xbeeffeed) " /* CLOCK_??? */" },
+ };
+
+
+ struct {
+ struct perf_event_attr *ptr;
+ size_t size;
+ } attrs[] = {
+ ATTR_REC(sizeof(struct perf_event_attr)),
+ ATTR_REC(attr_v0_size),
+ ATTR_REC(attr_v1_size),
+ ATTR_REC(attr_v2_size),
+ ATTR_REC(attr_v2_5_size),
+ ATTR_REC(attr_v2_75_size),
+ ATTR_REC(attr_v3_size),
+ ATTR_REC(attr_v4_size),
+ ATTR_REC(attr_v4_5_size),
+ ATTR_REC(attr_v4_625_size),
+ ATTR_REC(attr_v4_875_size),
+ ATTR_REC(attr_v5_size),
+ ATTR_REC(attr_big_size),
+ };
+
+ struct perf_event_attr *small_attr = tail_alloc(sizeof(*small_attr));
struct {
struct perf_event_attr *attr;
@@ -75,31 +691,123 @@
unsigned long flags;
const char *flags_str;
} args[] = {
- { NULL, 0xfacef00d, 0xbadabba7, -1,
+ { NULL, 0xfacef00d, 0xbadabba7, -1,
(unsigned long) 0xFFFFFFFFFFFFFFFFLLU,
"PERF_FLAG_FD_NO_GROUP|PERF_FLAG_FD_OUTPUT|"
"PERF_FLAG_PID_CGROUP|PERF_FLAG_FD_CLOEXEC|"
"0x" LONG_STR_PREFIX "fffffff0"
},
- { attr + 1, 0, 0, 0,
+ { small_attr + 1, 0, 0, 0,
0, "0" },
- { attr, -1, -1, 1,
- PERF_FLAG_FD_CLOEXEC, "PERF_FLAG_FD_CLOEXEC" },
- { attr - 1, -100, 100, 0xface1e55,
+ { small_attr, -1, -1, 1,
PERF_FLAG_FD_NO_GROUP | PERF_FLAG_FD_OUTPUT |
PERF_FLAG_PID_CGROUP | PERF_FLAG_FD_CLOEXEC,
"PERF_FLAG_FD_NO_GROUP|PERF_FLAG_FD_OUTPUT|"
"PERF_FLAG_PID_CGROUP|PERF_FLAG_FD_CLOEXEC" },
+ { (struct perf_event_attr *) (uintptr_t) 0xfffffacefffffeedULL,
+ -100, 100, 0xface1e55,
+ PERF_FLAG_FD_CLOEXEC, "PERF_FLAG_FD_CLOEXEC" },
};
+
size_t i;
int rc;
+ fill_memory(small_attr, sizeof(*small_attr));
+ small_attr->size = attr_small_size;
+
for (i = 0; i < ARRAY_SIZE(args); i++) {
rc = syscall(__NR_perf_event_open, args[i].attr, args[i].pid,
- args[i].cpu, args[i].group_fd, args[i].flags);
+ args[i].cpu, args[i].group_fd, args[i].flags);
printf("perf_event_open(%s, %d, %d, %d, %s) = %s\n",
- printaddr(args[i].attr), args[i].pid, args[i].cpu,
- args[i].group_fd, args[i].flags_str, sprintrc(rc));
+ printaddr(args[i].attr), args[i].pid, args[i].cpu,
+ args[i].group_fd, args[i].flags_str, sprintrc(rc));
+ }
+
+ for (i = 0; i < ARRAY_SIZE(attrs) * ARRAY_SIZE(attr_types) *
+ ARRAY_SIZE(attr_configs[0]) + 1; i++) {
+ struct perf_event_attr *attr = attrs[i % ARRAY_SIZE(attrs)].ptr;
+ uint32_t size = attrs[i % ARRAY_SIZE(attrs)].size;
+ unsigned char fill_start = 0x80 + i;
+ size_t type_idx = i % ARRAY_SIZE(attr_types);
+ size_t config_idx = i % ARRAY_SIZE(attr_configs[0]);
+ size_t sample_type_idx = i % ARRAY_SIZE(sample_types);
+ size_t read_format_idx = i % ARRAY_SIZE(read_formats);
+ size_t bp_type_idx = (i / ARRAY_SIZE(attr_configs[0])) %
+ ARRAY_SIZE(bp_types);
+ size_t branch_sample_type_idx = (i / ARRAY_SIZE(sample_types)) %
+ ARRAY_SIZE(branch_sample_types);
+ size_t clockid_idx = i % ARRAY_SIZE(clockids);
+ size_t args_idx = i % ARRAY_SIZE(args);
+ const char *ip_desc_str;
+
+ fill_memory_ex(attr, size, fill_start, 0xff);
+
+ attr->type = attr_types[type_idx].val;
+ attr->size = size;
+ attr->config = attr_configs[type_idx][config_idx].val;
+ attr->sample_type = sample_types[sample_type_idx].val;
+ attr->read_format = read_formats[read_format_idx].val;
+
+ if ((i % 11) == 5)
+ attr->__reserved_1 = 0;
+
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_BP_TYPE
+ attr->bp_type =
+# else
+ ((uint32_t *) attr)[52 / sizeof(uint32_t)] =
+# endif
+ bp_types[bp_type_idx].val;
+
+ if (size >= 80)
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_BRANCH_SAMPLE_TYPE
+ attr->branch_sample_type =
+# else
+ ((uint64_t *) attr)[72 / sizeof(uint64_t)] =
+# endif
+ branch_sample_types[branch_sample_type_idx].val;
+
+ if (size >= 96)
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_CLOCKID
+ attr->clockid =
+# else
+ ((uint32_t *) attr)[92 / sizeof(uint32_t)] =
+# endif
+ clockids[clockid_idx].val;
+
+# ifdef HAVE_STRUCT_PERF_EVENT_ATTR_PRECISE_IP
+ ip_desc_str = precise_ip_descs[attr->precise_ip];
+# else
+ union {
+ struct pea_flags flags;
+ uint64_t raw;
+ } flags_data = { .raw = ((uint64_t *) attr)[5] };
+
+ ip_desc_str = precise_ip_descs[flags_data.flags.precise_ip];
+# endif
+
+ if (i == 0)
+ attr->size = size + 8;
+
+ if (i == 1)
+ attr->size = 0;
+
+ rc = syscall(__NR_perf_event_open, attr, args[args_idx].pid,
+ args[args_idx].cpu, args[args_idx].group_fd,
+ args[args_idx].flags);
+
+ printf("perf_event_open(");
+ print_event_attr(attr, i ? ((i == 1) ? 0 : size) : size + 8,
+ attr_types[type_idx].str,
+ attr_configs[type_idx][config_idx].str,
+ sample_types[sample_type_idx].str,
+ read_formats[read_format_idx].str,
+ ip_desc_str,
+ bp_types[bp_type_idx].str,
+ branch_sample_types[branch_sample_type_idx].str,
+ clockids[clockid_idx].str, size);
+ printf(", %d, %d, %d, %s) = %s\n", args[args_idx].pid,
+ args[args_idx].cpu, args[args_idx].group_fd,
+ args[args_idx].flags_str, sprintrc(rc));
}
puts("+++ exited with 0 +++");
diff --git a/tests/perf_event_open.test b/tests/perf_event_open.test
index 0e46556..499134b 100755
--- a/tests/perf_event_open.test
+++ b/tests/perf_event_open.test
@@ -1,6 +1,7 @@
#!/bin/sh
-# Check decoding of perf_event_open syscall.
+# Check perf_event_open syscall decoding.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
+
+run_strace_match_diff -a1
diff --git a/tests/perf_event_open_nonverbose.c b/tests/perf_event_open_nonverbose.c
new file mode 100644
index 0000000..45d7c8f
--- /dev/null
+++ b/tests/perf_event_open_nonverbose.c
@@ -0,0 +1,113 @@
+/*
+ * Check decoding of perf_event_open syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
+
+# include <limits.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include <linux/perf_event.h>
+
+# include "xlat.h"
+# include "xlat/perf_event_open_flags.h"
+
+#if ULONG_MAX > UINT_MAX
+#define LONG_STR_PREFIX "ffffffff"
+#else
+#define LONG_STR_PREFIX ""
+#endif
+
+static const char *printaddr(void *ptr)
+{
+ static char buf[sizeof("0x") + sizeof(void *) * 2];
+
+ if (ptr == NULL)
+ return "NULL";
+
+ snprintf(buf, sizeof(buf), "%#lx", (unsigned long)ptr);
+
+ return buf;
+}
+
+int
+main(void)
+{
+ struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+
+ attr->type = PERF_TYPE_HARDWARE;
+ attr->size = sizeof(*attr);
+
+ struct {
+ struct perf_event_attr *attr;
+ pid_t pid;
+ int cpu;
+ int group_fd;
+ unsigned long flags;
+ const char *flags_str;
+ } args[] = {
+ { NULL, 0xfacef00d, 0xbadabba7, -1,
+ (unsigned long) 0xFFFFFFFFFFFFFFFFLLU,
+ "PERF_FLAG_FD_NO_GROUP|PERF_FLAG_FD_OUTPUT|"
+ "PERF_FLAG_PID_CGROUP|PERF_FLAG_FD_CLOEXEC|"
+ "0x" LONG_STR_PREFIX "fffffff0"
+ },
+ { attr + 1, 0, 0, 0,
+ 0, "0" },
+ { attr, -1, -1, 1,
+ PERF_FLAG_FD_CLOEXEC, "PERF_FLAG_FD_CLOEXEC" },
+ { attr - 1, -100, 100, 0xface1e55,
+ PERF_FLAG_FD_NO_GROUP | PERF_FLAG_FD_OUTPUT |
+ PERF_FLAG_PID_CGROUP | PERF_FLAG_FD_CLOEXEC,
+ "PERF_FLAG_FD_NO_GROUP|PERF_FLAG_FD_OUTPUT|"
+ "PERF_FLAG_PID_CGROUP|PERF_FLAG_FD_CLOEXEC" },
+ };
+ size_t i;
+ int rc;
+
+ for (i = 0; i < ARRAY_SIZE(args); i++) {
+ rc = syscall(__NR_perf_event_open, args[i].attr, args[i].pid,
+ args[i].cpu, args[i].group_fd, args[i].flags);
+ printf("perf_event_open(%s, %d, %d, %d, %s) = %s\n",
+ printaddr(args[i].attr), args[i].pid, args[i].cpu,
+ args[i].group_fd, args[i].flags_str, sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_perf_event_open && HAVE_LINUX_PERF_EVENT_H");
+
+#endif
diff --git a/tests/perf_event_open_nonverbose.test b/tests/perf_event_open_nonverbose.test
new file mode 100755
index 0000000..404827f
--- /dev/null
+++ b/tests/perf_event_open_nonverbose.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of perf_event_open syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests/perf_event_open_unabbrev.c b/tests/perf_event_open_unabbrev.c
new file mode 100644
index 0000000..c2f260d
--- /dev/null
+++ b/tests/perf_event_open_unabbrev.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "perf_event_open.c"
diff --git a/tests/perf_event_open_unabbrev.test b/tests/perf_event_open_unabbrev.test
new file mode 100755
index 0000000..f17fd17
--- /dev/null
+++ b/tests/perf_event_open_unabbrev.test
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Check perf_event_open syscall decoding.
+
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests/pipe.c b/tests/pipe.c
index 68217f2..41c7f21 100644
--- a/tests/pipe.c
+++ b/tests/pipe.c
@@ -1,4 +1,6 @@
/*
+ * Check decoding of pipe syscall.
+ *
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
@@ -26,8 +28,9 @@
*/
#include "tests.h"
+#include <asm/unistd.h>
-#ifdef HAVE_PIPE2
+#ifdef __NR_pipe
# include <stdio.h>
# include <fcntl.h>
@@ -38,20 +41,15 @@
{
(void) close(0);
(void) close(1);
- int fds[2];
+ int *const fds = tail_alloc(sizeof(*fds) * 2);
if (pipe(fds))
perror_msg_and_fail("pipe");
- (void) close(0);
- (void) close(1);
- if (pipe2(fds, O_NONBLOCK))
- perror_msg_and_skip("pipe2");
-
return 0;
}
#else
-SKIP_MAIN_UNDEFINED("HAVE_PIPE2")
+SKIP_MAIN_UNDEFINED("__NR_pipe")
#endif
diff --git a/tests/pipe.expected b/tests/pipe.expected
index 675cb85..2e46336 100644
--- a/tests/pipe.expected
+++ b/tests/pipe.expected
@@ -1,2 +1,2 @@
-pipe(\(\[0, 1\]|2\(\[0, 1\], 0)\) += 0
-pipe2\(\[0, 1\], O_NONBLOCK\) += 0
+pipe([0, 1]) = 0
++++ exited with 0 +++
diff --git a/tests/pipe.test b/tests/pipe.test
index a445f86..0ae414d 100755
--- a/tests/pipe.test
+++ b/tests/pipe.test
@@ -1,16 +1,13 @@
#!/bin/sh
-# Check pipe/pipe2 syscalls decoding.
-
+# Check decoding of pipe syscall.
. "${srcdir=.}/init.sh"
-syscall=pipe2
-for n in pipe; do
- $STRACE -e$n -h > /dev/null && syscall=$syscall,$n
-done
-
run_prog
-run_strace -e$syscall $args
-match_grep
+run_strace -a13 -epipe $args
-exit 0
+check_prog grep
+LC_ALL=C grep -x "pipe(.*" "$LOG" > /dev/null ||
+ skip_ 'test executable does not use pipe syscall'
+
+match_diff
diff --git a/tests/pipe2.c b/tests/pipe2.c
new file mode 100644
index 0000000..375ae74
--- /dev/null
+++ b/tests/pipe2.c
@@ -0,0 +1,71 @@
+/*
+ * Check decoding of pipe2 syscall.
+ *
+ * Copyright (c) 2015-2017 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_pipe2
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_zero =
+ (kernel_ulong_t) 0xffffffff00000000ULL;
+ int *const fds = tail_alloc(sizeof(*fds) * 2);
+ int *const efault = fds + 1;
+ long rc;
+
+ rc = syscall(__NR_pipe2, fds, bogus_zero | O_NONBLOCK);
+ if (rc)
+ perror_msg_and_skip("pipe2");
+ printf("pipe2([%d, %d], O_NONBLOCK) = 0\n", fds[0], fds[1]);
+
+ rc = syscall(__NR_pipe2, efault, bogus_zero);
+ printf("pipe2(%p, 0) = %s\n", efault, sprintrc(rc));
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ const kernel_ulong_t ill = f8ill_ptr_to_kulong(fds);
+ rc = syscall(__NR_pipe2, ill, 0);
+ printf("pipe2(%#llx, 0) = %s\n",
+ (unsigned long long) ill, sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pipe2")
+
+#endif
diff --git a/tests/pipe2.test b/tests/pipe2.test
new file mode 100755
index 0000000..aff6cd4
--- /dev/null
+++ b/tests/pipe2.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of pipe2 syscall.
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a15
diff --git a/tests/pipe_maxfd.c b/tests/pipe_maxfd.c
new file mode 100644
index 0000000..a1343f9
--- /dev/null
+++ b/tests/pipe_maxfd.c
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <limits.h>
+#include <unistd.h>
+#include <sys/resource.h>
+
+static void
+move_fd(int *from, int *to)
+{
+ for (; *to > *from; --*to) {
+ if (dup2(*from, *to) != *to)
+ continue;
+ close(*from);
+ *from = *to;
+ break;
+ }
+}
+
+void
+pipe_maxfd(int pipefd[2])
+{
+ struct rlimit rlim;
+ if (getrlimit(RLIMIT_NOFILE, &rlim))
+ perror_msg_and_fail("getrlimit");
+ if (rlim.rlim_cur < rlim.rlim_max) {
+ struct rlimit rlim_new;
+ rlim_new.rlim_cur = rlim_new.rlim_max = rlim.rlim_max;
+ if (!setrlimit(RLIMIT_NOFILE, &rlim_new))
+ rlim.rlim_cur = rlim.rlim_max;
+ }
+
+ if (pipe(pipefd))
+ perror_msg_and_fail("pipe");
+
+ int max_fd = (rlim.rlim_cur > 0 && rlim.rlim_cur < INT_MAX)
+ ? rlim.rlim_cur - 1 : INT_MAX;
+
+ move_fd(&pipefd[1], &max_fd);
+ --max_fd;
+ move_fd(&pipefd[0], &max_fd);
+}
diff --git a/tests/pkey_alloc.c b/tests/pkey_alloc.c
new file mode 100644
index 0000000..4577278
--- /dev/null
+++ b/tests/pkey_alloc.c
@@ -0,0 +1,84 @@
+/*
+ * Check decoding of pkey_alloc syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_pkey_alloc
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t flags[] = {
+ 0,
+ (kernel_ulong_t) 0xbadc0ded00000000ULL,
+ (kernel_ulong_t) 0xffff0000eeee1111ULL,
+ (kernel_ulong_t) 0x123456789abcdef0ULL,
+ };
+ static const struct {
+ kernel_ulong_t val;
+ const char *str;
+ } rights[] = {
+ { (kernel_ulong_t) 0xbadc0ded00000002ULL,
+ sizeof(kernel_ulong_t) > sizeof(int) ?
+ "PKEY_DISABLE_WRITE|0xbadc0ded00000000" :
+ "PKEY_DISABLE_WRITE" },
+ { 0xdec0ded, "PKEY_DISABLE_ACCESS|0xdec0dec" },
+ { 0x3, "PKEY_DISABLE_ACCESS|PKEY_DISABLE_WRITE" },
+ { ARG_STR(0) },
+ { 0xbadc0dec, "0xbadc0dec /* PKEY_??? */" },
+ };
+
+ long rc;
+ unsigned int i;
+ unsigned int j;
+
+ for (i = 0; i < ARRAY_SIZE(flags); i++) {
+ for (j = 0; j < ARRAY_SIZE(rights); j++) {
+ rc = syscall(__NR_pkey_alloc, flags[i], rights[j].val);
+ printf("pkey_alloc(%#llx, %s) = %s\n",
+ (unsigned long long) flags[i], rights[j].str,
+ sprintrc(rc));
+ }
+ }
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pkey_alloc");
+
+#endif
diff --git a/tests/pkey_alloc.test b/tests/pkey_alloc.test
new file mode 100755
index 0000000..f168c21
--- /dev/null
+++ b/tests/pkey_alloc.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of pkey_alloc syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/pkey_free.c b/tests/pkey_free.c
new file mode 100644
index 0000000..95a2ad2
--- /dev/null
+++ b/tests/pkey_free.c
@@ -0,0 +1,67 @@
+/*
+ * Check decoding of pkey_free syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_pkey_free
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t keys[] = {
+ 0,
+ 3141592653U,
+ (kernel_ulong_t) 0xbadc0ded00000000ULL,
+ (kernel_ulong_t) 0xffff00001111eeeeULL,
+ (kernel_ulong_t) 0x123456789abcdef0ULL,
+ };
+
+ long rc;
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(keys); i++) {
+ rc = syscall(__NR_pkey_free, keys[i]);
+ printf("pkey_free(%d) = %s\n", (int) keys[i], sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pkey_free");
+
+#endif
diff --git a/tests/pkey_free.test b/tests/pkey_free.test
new file mode 100755
index 0000000..9c01c3e
--- /dev/null
+++ b/tests/pkey_free.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of pkey_free syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests/pkey_mprotect.c b/tests/pkey_mprotect.c
new file mode 100644
index 0000000..529abd1
--- /dev/null
+++ b/tests/pkey_mprotect.c
@@ -0,0 +1,120 @@
+/*
+ * Check decoding of pkey_mprotect syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_pkey_mprotect
+
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/mman.h>
+
+const char *
+sprintptr(kernel_ulong_t ptr)
+{
+ static char buf[sizeof(ptr) * 2 + sizeof("0x")];
+
+ if (ptr)
+ snprintf(buf, sizeof(buf), "%#llx", (unsigned long long) ptr);
+ else
+ return "NULL";
+
+ return buf;
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t ptrs[] = {
+ 0,
+ (kernel_ulong_t) 0xfacebeef00000000ULL,
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL,
+ };
+ static const kernel_ulong_t sizes[] = {
+ 0,
+ (kernel_ulong_t) 0xfacebeef00000000ULL,
+ (kernel_ulong_t) 0xfedcba9876543210ULL,
+ (kernel_ulong_t) 0x123456789abcdef0ULL,
+ (kernel_ulong_t) 0xbadc0dedda7a1057ULL,
+ };
+ static const struct {
+ kernel_ulong_t val;
+ const char *str;
+ } prots[] = {
+ { ARG_STR(PROT_READ) },
+ /* For now, only 0x0300001f are used */
+ { (kernel_ulong_t) 0xdeadfeed00ca7500ULL,
+ sizeof(kernel_ulong_t) > sizeof(int) ?
+ "0xdeadfeed00ca7500 /* PROT_??? */" :
+ "0xca7500 /* PROT_??? */" },
+ { ARG_STR(PROT_READ|PROT_WRITE|0xface00) },
+ };
+ static const kernel_ulong_t pkeys[] = {
+ 0,
+ -1LL,
+ (kernel_ulong_t) 0xface1e55,
+ (kernel_ulong_t) 0xbadc0ded00000001,
+ };
+
+ long rc;
+ unsigned int i;
+ unsigned int j;
+ unsigned int k;
+ unsigned int l;
+
+ for (i = 0; i < ARRAY_SIZE(ptrs); i++) {
+ for (j = 0; j < ARRAY_SIZE(sizes); j++) {
+ for (k = 0; k < ARRAY_SIZE(prots); k++) {
+ for (l = 0; l < ARRAY_SIZE(pkeys); l++) {
+ rc = syscall(__NR_pkey_mprotect,
+ ptrs[i], sizes[j],
+ prots[k].val, pkeys[l]);
+ printf("pkey_mprotect(%s, %llu, %s, %d)"
+ " = %s\n",
+ sprintptr(ptrs[i]),
+ (unsigned long long) sizes[j],
+ prots[k].str, (int) pkeys[l],
+ sprintrc(rc));
+ }
+ }
+ }
+ }
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pkey_mprotect");
+
+#endif
diff --git a/tests/pkey_mprotect.test b/tests/pkey_mprotect.test
new file mode 100755
index 0000000..922d491
--- /dev/null
+++ b/tests/pkey_mprotect.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of pkey_mprotect syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests/ppoll-v.expected b/tests/ppoll-v.expected
index 5172717..31070ad 100644
--- a/tests/ppoll-v.expected
+++ b/tests/ppoll-v.expected
@@ -1,3 +1,3 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \{fd=3, events=POLLIN\|POLLPRI\}, \{fd=4, events=POLLOUT\}\], 4, \{42, 999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{42, 9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{0, 999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
+ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \{fd=3, events=POLLIN\|POLLPRI\}, \{fd=4, events=POLLOUT\}\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
+ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests/ppoll.expected b/tests/ppoll.expected
index 4dfc830..c38a206 100644
--- a/tests/ppoll.expected
+++ b/tests/ppoll.expected
@@ -1,3 +1,3 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \.\.\.\], 4, \{42, 999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{42, 9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{0, 999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
+ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \.\.\.\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
+ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests/prctl-arg2-intptr.c b/tests/prctl-arg2-intptr.c
new file mode 100644
index 0000000..ee000eb
--- /dev/null
+++ b/tests/prctl-arg2-intptr.c
@@ -0,0 +1,120 @@
+/*
+ * Check decoding of prctl operations which use arg2 as pointer to an integer
+ * value: PR_GET_CHILD_SUBREAPER, PR_GET_ENDIAN, PR_GET_FPEMU, and PR_GET_FPEXC.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined __NR_prctl
+
+# include <stdint.h>
+# include <stdio.h>
+# include <unistd.h>
+# include <linux/prctl.h>
+
+static const char *errstr;
+
+static long
+prctl(kernel_ulong_t arg1, kernel_ulong_t arg2)
+{
+ static const kernel_ulong_t bogus_arg =
+ (kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+ long rc = syscall(__NR_prctl, arg1, arg2, bogus_arg);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_addr1 =
+ (kernel_ulong_t) 0x1e55c0de00000000ULL;
+ static const kernel_ulong_t bogus_addr2 =
+ (kernel_ulong_t) 0xfffffffffffffffdULL;
+ static const kernel_ulong_t bogus_op_bits =
+ (kernel_ulong_t) 0xbadc0ded00000000ULL;
+ static const struct {
+ kernel_ulong_t val;
+ const char *str;
+ } options[] = {
+ { 37, "PR_GET_CHILD_SUBREAPER" },
+ { 19, "PR_GET_ENDIAN" },
+ { 9, "PR_GET_FPEMU" },
+ { 11, "PR_GET_FPEXC" },
+ };
+
+ unsigned int *ptr = tail_alloc(sizeof(*ptr));
+ long rc;
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(options); ++i) {
+ prctl(options[i].val | bogus_op_bits, 0);
+ printf("prctl(%s, NULL) = %s\n", options[i].str, errstr);
+
+ if (bogus_addr1) {
+ prctl(options[i].val | bogus_op_bits, bogus_addr1);
+ printf("prctl(%s, %#llx) = %s\n", options[i].str,
+ (unsigned long long) bogus_addr1, errstr);
+ }
+
+ prctl(options[i].val | bogus_op_bits, bogus_addr2);
+ printf("prctl(%s, %#llx) = %s\n", options[i].str,
+ (unsigned long long) bogus_addr2, errstr);
+
+ prctl(options[i].val | bogus_op_bits, (uintptr_t) (ptr + 1));
+ printf("prctl(%s, %p) = %s\n", options[i].str,
+ ptr + 1, errstr);
+
+ rc = prctl(options[i].val | bogus_op_bits, (uintptr_t) ptr);
+ if (!rc) {
+ printf("prctl(%s, [%u]) = %s\n",
+ options[i].str, *ptr, errstr);
+ } else {
+ printf("prctl(%s, %p) = %s\n",
+ options[i].str, ptr, errstr);
+ }
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ kernel_ulong_t bogus_addr3 = f8ill_ptr_to_kulong(ptr);
+ prctl(options[i].val | bogus_op_bits, bogus_addr3);
+ printf("prctl(%s, %#llx) = %s\n", options[i].str,
+ (unsigned long long) bogus_addr3, errstr);
+ }
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl")
+
+#endif
diff --git a/tests/prctl-arg2-intptr.test b/tests/prctl-arg2-intptr.test
new file mode 100755
index 0000000..bcef806
--- /dev/null
+++ b/tests/prctl-arg2-intptr.test
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Check decoding of prctl PR_GET_CHILD_SUBREAPER, PR_GET_ENDIAN, PR_GET_FPEMU,
+# and PR_GET_FPEXC operations.
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a25 -eprctl $args > "$EXP"
+LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^CEF]|.[^HNP]|..[^DEI])' \
+ < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-dumpable.c b/tests/prctl-dumpable.c
new file mode 100644
index 0000000..1049bce
--- /dev/null
+++ b/tests/prctl-dumpable.c
@@ -0,0 +1,106 @@
+/*
+ * Check decoding of prctl PR_GET_DUMPABLE/PR_SET_DUMPABLE operations.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include <linux/prctl.h>
+
+#if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE
+
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+prctl(kernel_ulong_t arg1, kernel_ulong_t arg2)
+{
+ static const kernel_ulong_t bogus_arg =
+ (kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+ long rc = syscall(__NR_prctl, arg1, arg2, bogus_arg);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_dumpable1 =
+ (kernel_ulong_t) 0xdeadc0de00000001ULL;
+ static const kernel_ulong_t bogus_dumpable2 =
+ (kernel_ulong_t) 0xdeadc0defacebeefULL;
+
+ static const char * const args[] = {
+ "SUID_DUMP_DISABLE",
+ "SUID_DUMP_USER",
+ "SUID_DUMP_ROOT",
+ };
+
+ unsigned int i;
+
+ prctl(PR_SET_DUMPABLE, 3);
+ printf("prctl(PR_SET_DUMPABLE, 0x3 /* SUID_DUMP_??? */) = %s\n",
+ errstr);
+
+ prctl(PR_SET_DUMPABLE, bogus_dumpable1);
+ if (bogus_dumpable1 == 1) {
+ printf("prctl(PR_SET_DUMPABLE, SUID_DUMP_USER) = %s\n", errstr);
+ } else {
+ printf("prctl(PR_SET_DUMPABLE, %#llx /* SUID_DUMP_??? */)"
+ " = %s\n",
+ (unsigned long long) bogus_dumpable1, errstr);
+ }
+
+ prctl(PR_SET_DUMPABLE, bogus_dumpable2);
+ printf("prctl(PR_SET_DUMPABLE, %#llx /* SUID_DUMP_??? */) = %s\n",
+ (unsigned long long) bogus_dumpable2, errstr);
+
+ for (i = 0; i < ARRAY_SIZE(args); ++i) {
+ prctl(PR_SET_DUMPABLE, i);
+ printf("prctl(PR_SET_DUMPABLE, %s) = %s\n", args[i], errstr);
+
+ long rc = prctl(PR_GET_DUMPABLE, bogus_dumpable2);
+ if (rc >= 0 && rc < (long) ARRAY_SIZE(args)) {
+ printf("prctl(PR_GET_DUMPABLE) = %s (%s)\n",
+ errstr, args[rc]);
+ } else {
+ printf("prctl(PR_GET_DUMPABLE) = %s\n", errstr);
+ }
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_DUMPABLE && PR_SET_DUMPABLE")
+
+#endif
diff --git a/tests/prctl-dumpable.test b/tests/prctl-dumpable.test
new file mode 100755
index 0000000..08acb8b
--- /dev/null
+++ b/tests/prctl-dumpable.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of prctl PR_GET_DUMPABLE and PR_SET_DUMPABLE operations.
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a23 -eprctl $args > "$EXP"
+grep -v '^prctl(PR_[GS]ET_[^D][^U]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-name.c b/tests/prctl-name.c
new file mode 100644
index 0000000..308c275
--- /dev/null
+++ b/tests/prctl-name.c
@@ -0,0 +1,103 @@
+/*
+ * Check decoding of prctl PR_GET_NAME/PR_SET_NAME operations.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_PRCTL
+# include <sys/prctl.h>
+#endif
+
+#if defined HAVE_PRCTL && defined PR_GET_NAME && defined PR_SET_NAME
+
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const char str[] = "0123456789abcdef";
+ static const int len = sizeof(str) - 1;
+ char *name = tail_memdup(str, sizeof(str));
+ int i;
+ int rc;
+
+ rc = prctl(PR_SET_NAME, NULL);
+ printf("prctl(PR_SET_NAME, NULL) = %s\n", sprintrc(rc));
+
+ for (i = 0; i <= len; ++i) {
+ rc = prctl(PR_SET_NAME, name + len - i);
+ printf("prctl(PR_SET_NAME, \"%.*s\"%s) = %s\n",
+ i < len - 1 ? i : len - 1,
+ str + len - i,
+ i < len - 1 ? "" : "...",
+ sprintrc(rc));
+ }
+
+ *name = -1;
+ ++name;
+ memcpy(name, str, len);
+
+ for (i = 0; i <= len; ++i) {
+ rc = prctl(PR_SET_NAME, name + len - i);
+ if (i < len - 1)
+ printf("prctl(PR_SET_NAME, %p) = %s\n",
+ name + len - i, sprintrc(rc));
+ else
+ printf("prctl(PR_SET_NAME, \"%.*s\"...) = %s\n",
+ len - 1, str + len - i, sprintrc(rc));
+ }
+
+ rc = prctl(PR_GET_NAME, NULL);
+ printf("prctl(PR_GET_NAME, NULL) = %s\n", sprintrc(rc));
+
+ for (i = 0; i < len; ++i) {
+ rc = prctl(PR_GET_NAME, name + len - i);
+ printf("prctl(PR_GET_NAME, %p) = %s\n",
+ name + len - i, sprintrc(rc));
+ }
+
+ rc = prctl(PR_GET_NAME, name);
+ if (rc)
+ printf("prctl(PR_GET_NAME, %p) = %s\n",
+ name, sprintrc(rc));
+ else
+ printf("prctl(PR_GET_NAME, \"%.*s\") = %s\n",
+ len - 1, name, sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_GET_NAME && PR_SET_NAME")
+
+#endif
diff --git a/tests/prctl-name.test b/tests/prctl-name.test
new file mode 100755
index 0000000..071179c
--- /dev/null
+++ b/tests/prctl-name.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of prctl PR_GET_NAME/PR_SET_NAME operations.
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a23 -eprctl $args > "$EXP"
+grep -v '^prctl(PR_GET_[^N][^A]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-no-args.c b/tests/prctl-no-args.c
new file mode 100644
index 0000000..57e1b73
--- /dev/null
+++ b/tests/prctl-no-args.c
@@ -0,0 +1,77 @@
+/*
+ * Check decoding of prctl operations without arguments and return code parsing:
+ * PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK, PR_GET_TIMING,
+ * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#if defined __NR_prctl
+
+# include <stdio.h>
+# include <unistd.h>
+# include <linux/prctl.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_op_bits =
+ (kernel_ulong_t) 0xbadc0ded00000000ULL;
+ static const kernel_ulong_t bogus_arg =
+ (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+ static const struct {
+ kernel_ulong_t val;
+ const char *str;
+ } options[] = {
+ { 7, "PR_GET_KEEPCAPS" },
+ { 13, "PR_GET_TIMING" },
+ { 21, "PR_GET_SECCOMP" },
+ { 30, "PR_GET_TIMERSLACK" },
+ { 31, "PR_TASK_PERF_EVENTS_DISABLE" },
+ { 32, "PR_TASK_PERF_EVENTS_ENABLE" },
+ };
+
+ unsigned int *ptr = tail_alloc(sizeof(*ptr));
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(options); i++) {
+ long rc = syscall(__NR_prctl, options[i].val | bogus_op_bits,
+ bogus_arg);
+ printf("prctl(%s) = %s\n", options[i].str, sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl")
+
+#endif
diff --git a/tests/prctl-no-args.test b/tests/prctl-no-args.test
new file mode 100755
index 0000000..ce8ca67
--- /dev/null
+++ b/tests/prctl-no-args.test
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Check decoding of prctl PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK,
+# PR_GET_TIMING, PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE
+# operations.
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a21 -eprctl $args > "$EXP"
+grep -v '^prctl(PR_[GS]ET_[^KST][^EI][^CEM]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-pdeathsig.c b/tests/prctl-pdeathsig.c
new file mode 100644
index 0000000..c176030
--- /dev/null
+++ b/tests/prctl-pdeathsig.c
@@ -0,0 +1,81 @@
+/*
+ * Check decoding of prctl PR_GET_PDEATHSIG/PR_SET_PDEATHSIG operations.
+ *
+ * Copyright (c) 2016 JingPiao Chen <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include <linux/prctl.h>
+
+#if defined __NR_prctl && defined PR_GET_PDEATHSIG && defined PR_SET_PDEATHSIG
+
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/signal.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_signal =
+ (kernel_ulong_t) 0xbadc0deddeadfeedULL;
+
+ int *pdeathsig = tail_alloc(sizeof(*pdeathsig));
+ long rc;
+
+ rc = syscall(__NR_prctl, PR_SET_PDEATHSIG, bogus_signal);
+ printf("prctl(PR_SET_PDEATHSIG, %llu) = %s\n",
+ (unsigned long long) bogus_signal, sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_SET_PDEATHSIG, SIGINT);
+ printf("prctl(PR_SET_PDEATHSIG, SIGINT) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_PDEATHSIG, NULL);
+ printf("prctl(PR_GET_PDEATHSIG, NULL) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_PDEATHSIG, pdeathsig + 1);
+ printf("prctl(PR_GET_PDEATHSIG, %p) = %s\n",
+ pdeathsig + 1, sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_PDEATHSIG, pdeathsig);
+ if (rc) {
+ printf("prctl(PR_GET_PDEATHSIG, %p) = %s\n",
+ pdeathsig, sprintrc(rc));
+ } else {
+ printf("prctl(PR_GET_PDEATHSIG, [SIGINT]) = %s\n",
+ sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_PDEATHSIG && PR_SET_PDEATHSIG")
+
+#endif
diff --git a/tests/prctl-pdeathsig.test b/tests/prctl-pdeathsig.test
new file mode 100755
index 0000000..2777503
--- /dev/null
+++ b/tests/prctl-pdeathsig.test
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Check prctl PR_GET_PDEATHSIG PR_SET_PDEATHSIG decoding.
+
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a30 -eprctl $args > "$EXP"
+grep -v '^prctl(PR_[GS]ET_[^P][^D]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-securebits.c b/tests/prctl-securebits.c
new file mode 100644
index 0000000..741973a
--- /dev/null
+++ b/tests/prctl-securebits.c
@@ -0,0 +1,106 @@
+/*
+ * Check decoding of prctl PR_GET_SECUREBITS/PR_SET_SECUREBITS operations.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include <linux/prctl.h>
+
+#if defined __NR_prctl && defined PR_GET_SECUREBITS && defined PR_SET_SECUREBITS
+
+# include <stdio.h>
+# include <unistd.h>
+
+# include "xlat.h"
+# include "xlat/secbits.h"
+
+static const char *errstr;
+
+static long
+prctl(kernel_ulong_t arg1, kernel_ulong_t arg2)
+{
+ static const kernel_ulong_t bogus_arg =
+ (kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+ long rc = syscall(__NR_prctl, arg1, arg2, bogus_arg);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bits1 =
+ (kernel_ulong_t) 0xdeadc0defacebeefULL;
+ static const kernel_ulong_t bits2 =
+ (kernel_ulong_t) 0xbadc0ded00000000ULL;
+ static const kernel_ulong_t bits3 =
+ (kernel_ulong_t) 0xffULL;
+
+ prctl(PR_SET_SECUREBITS, 0);
+ printf("prctl(PR_SET_SECUREBITS, 0) = %s\n", errstr);
+
+ prctl(PR_SET_SECUREBITS, bits1);
+ printf("prctl(PR_SET_SECUREBITS, SECBIT_NOROOT|SECBIT_NOROOT_LOCKED|"
+ "SECBIT_NO_SETUID_FIXUP|SECBIT_NO_SETUID_FIXUP_LOCKED|"
+ "SECBIT_KEEP_CAPS_LOCKED|SECBIT_NO_CAP_AMBIENT_RAISE|"
+ "SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED|%#llx) = %s\n",
+ (unsigned long long) bits1 & ~0xffULL, errstr);
+
+ if (bits2) {
+ prctl(PR_SET_SECUREBITS, bits2);
+ printf("prctl(PR_SET_SECUREBITS, %#llx /* SECBIT_??? */)"
+ " = %s\n", (unsigned long long) bits2, errstr);
+ }
+
+ prctl(PR_SET_SECUREBITS, bits3);
+ printf("prctl(PR_SET_SECUREBITS, SECBIT_NOROOT|SECBIT_NOROOT_LOCKED|"
+ "SECBIT_NO_SETUID_FIXUP|SECBIT_NO_SETUID_FIXUP_LOCKED|"
+ "SECBIT_KEEP_CAPS|SECBIT_KEEP_CAPS_LOCKED|"
+ "SECBIT_NO_CAP_AMBIENT_RAISE|SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED)"
+ " = %s\n", errstr);
+
+ long rc = prctl(PR_GET_SECUREBITS, bits1);
+ printf("prctl(PR_GET_SECUREBITS) = %s", errstr);
+ if (rc > 0) {
+ printf(" (");
+ printflags(secbits, rc, NULL);
+ printf(")");
+ }
+
+ puts("");
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_SECUREBITS && PR_SET_SECUREBITS")
+
+#endif
diff --git a/tests/prctl-securebits.test b/tests/prctl-securebits.test
new file mode 100755
index 0000000..c91e62a
--- /dev/null
+++ b/tests/prctl-securebits.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of prctl PR_GET_SECUREBITS/PR_SET_SECUREBITS operations.
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a25 -eprctl $args > "$EXP"
+grep -v '^prctl(PR_[GS]ET_[^S][^E][^C][^U]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-tid_address.c b/tests/prctl-tid_address.c
new file mode 100644
index 0000000..24e4503
--- /dev/null
+++ b/tests/prctl-tid_address.c
@@ -0,0 +1,103 @@
+/*
+ * Check decoding of prctl PR_GET_TID_ADDRESS operation.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include <linux/prctl.h>
+
+#if defined __NR_prctl && defined __NR_set_tid_address && \
+ defined PR_GET_TID_ADDRESS
+
+# include <inttypes.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *
+sprintaddr(kernel_ulong_t addr)
+{
+ static char buf[sizeof("0x") + sizeof(addr) * 2];
+
+ if (addr) {
+ snprintf(buf, sizeof(buf), "%#llx", (unsigned long long) addr);
+
+ return buf;
+ }
+
+ return "NULL";
+}
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_addr =
+ (kernel_ulong_t) 0xfffffffffffffffdULL;
+
+ /* Note that kernel puts kernel-sized pointer even on x32 */
+ kernel_ulong_t *ptr = tail_alloc(sizeof(*ptr));
+ long rc;
+ long set_ok;
+
+ *ptr = (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
+
+ rc = syscall(__NR_prctl, PR_GET_TID_ADDRESS, NULL);
+ printf("prctl(PR_GET_TID_ADDRESS, NULL) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_TID_ADDRESS, bogus_addr);
+ printf("prctl(PR_GET_TID_ADDRESS, %#llx) = %s\n",
+ (unsigned long long) bogus_addr, sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_TID_ADDRESS, ptr);
+ if (rc) {
+ printf("prctl(PR_GET_TID_ADDRESS, %p) = %s\n",
+ ptr, sprintrc(rc));
+ } else {
+ printf("prctl(PR_GET_TID_ADDRESS, [%s]) = %s\n",
+ sprintaddr(*ptr), sprintrc(rc));
+ }
+
+ set_ok = syscall(__NR_set_tid_address, bogus_addr);
+
+ rc = syscall(__NR_prctl, PR_GET_TID_ADDRESS, ptr);
+ if (rc) {
+ printf("prctl(PR_GET_TID_ADDRESS, %p) = %s\n",
+ ptr, sprintrc(rc));
+ } else {
+ printf("prctl(PR_GET_TID_ADDRESS, [%s]) = %s\n",
+ sprintaddr(set_ok ? bogus_addr : *ptr), sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl && __NR_set_tid_address && PR_GET_TID_ADDRESS")
+
+#endif
diff --git a/tests/prctl-tid_address.test b/tests/prctl-tid_address.test
new file mode 100755
index 0000000..dc7b7c3
--- /dev/null
+++ b/tests/prctl-tid_address.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check decoding of prctl PR_GET_TID_ADDRESS operation.
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a23 -eprctl $args > "$EXP"
+LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^T]|.[^I]|..[^D])' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-tsc.c b/tests/prctl-tsc.c
new file mode 100644
index 0000000..fd9362d
--- /dev/null
+++ b/tests/prctl-tsc.c
@@ -0,0 +1,80 @@
+/*
+ * Check decoding of prctl PR_GET_TSC/PR_SET_TSC operations.
+ *
+ * Copyright (c) 2016 JingPiao Chen <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include <linux/prctl.h>
+
+#if defined __NR_prctl && defined PR_GET_TSC && defined PR_SET_TSC
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_tsc =
+ (kernel_ulong_t) 0xdeadc0defacebeefULL;
+
+ int *tsc = tail_alloc(sizeof(*tsc));
+ long rc;
+
+ rc = syscall(__NR_prctl, PR_SET_TSC, 0);
+ printf("prctl(PR_SET_TSC, 0 /* PR_TSC_??? */) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_SET_TSC, bogus_tsc);
+ printf("prctl(PR_SET_TSC, %#x /* PR_TSC_??? */) = %s\n",
+ (unsigned int) bogus_tsc, sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_SET_TSC, PR_TSC_SIGSEGV);
+ printf("prctl(PR_SET_TSC, PR_TSC_SIGSEGV) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_TSC, NULL);
+ printf("prctl(PR_GET_TSC, NULL) = %s\n", sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_TSC, tsc + 1);
+ printf("prctl(PR_GET_TSC, %p) = %s\n", tsc + 1, sprintrc(rc));
+
+ rc = syscall(__NR_prctl, PR_GET_TSC, tsc);
+ if (rc)
+ printf("prctl(PR_GET_TSC, %p) = %s\n", tsc, sprintrc(rc));
+ else
+ printf("prctl(PR_GET_TSC, [PR_TSC_SIGSEGV]) = %s\n",
+ sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_prctl && PR_GET_TSC && PR_SET_TSC")
+
+#endif
diff --git a/tests/prctl-tsc.test b/tests/prctl-tsc.test
new file mode 100755
index 0000000..a906ba8
--- /dev/null
+++ b/tests/prctl-tsc.test
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Check prctl PR_GET_TSC PR_SET_TSC decoding.
+
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a24 -eprctl $args > "$EXP"
+grep -v '^prctl(PR_[GS]ET_[^T][^S]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"
diff --git a/tests/preadv-pwritev.c b/tests/preadv-pwritev.c
index 0770d69..b2d2a82 100644
--- a/tests/preadv-pwritev.c
+++ b/tests/preadv-pwritev.c
@@ -159,7 +159,7 @@
r_iov = tail_memdup(r1_iov_, sizeof(r1_iov_));
rc = preadv(0, r_iov, ARRAY_SIZE(r1_iov_), r_len);
- if (rc != (int) w_len - r_len)
+ if (rc != (int) w_len - (int) r_len)
perror_msg_and_fail("preadv: expected %d, returned %ld",
(int) w_len - r_len, rc);
tprintf("preadv(0, [{iov_base=\"%s\", iov_len=%u}"
diff --git a/tests/preadv.c b/tests/preadv.c
index eb53a5e..fb5d3ad 100644
--- a/tests/preadv.c
+++ b/tests/preadv.c
@@ -82,7 +82,8 @@
if (preadv(0, iov, 1, -1) != -1)
perror_msg_and_fail("preadv");
- printf("preadv(0, %p, 1, -1) = -1 EINVAL (%m)\n", iov);
+ printf("preadv(0, [{iov_base=%p, iov_len=%zu}], 1, -1) = "
+ "-1 EINVAL (%m)\n", iov->iov_base, iov->iov_len);
if (preadv(0, NULL, 1, -2) != -1)
perror_msg_and_fail("preadv");
@@ -140,7 +141,7 @@
r_iov = tail_memdup(r1_iov_, sizeof(r1_iov_));
rc = preadv(fd, r_iov, ARRAY_SIZE(r1_iov_), r_len);
- if (rc != (int) LENGTH_OF(w) - r_len)
+ if (rc != (int) LENGTH_OF(w) - (int) r_len)
perror_msg_and_fail("preadv: expected %d, returned %ld",
(int) LENGTH_OF(w) - r_len, rc);
printf("preadv(%d, [{iov_base=\"%s\", iov_len=%u}"
diff --git a/tests/preadv2-pwritev2.c b/tests/preadv2-pwritev2.c
index 032ac03..f7c46c0 100644
--- a/tests/preadv2-pwritev2.c
+++ b/tests/preadv2-pwritev2.c
@@ -29,6 +29,7 @@
#include "tests.h"
#include <asm/unistd.h>
+#include "scno.h"
#if defined __NR_preadv2 && defined __NR_pwritev2
@@ -163,7 +164,7 @@
r_iov = tail_memdup(r1_iov_, sizeof(r1_iov_));
rc = pr(0, r_iov, ARRAY_SIZE(r1_iov_), r_len);
- if (rc != (int) w_len - r_len)
+ if (rc != (int) w_len - (int) r_len)
perror_msg_and_fail("preadv2: expected %d, returned %ld",
(int) w_len - r_len, rc);
tprintf("preadv2(0, [{iov_base=\"%s\", iov_len=%u}"
@@ -179,11 +180,12 @@
int
main(void)
{
- const unsigned long vlen = (unsigned long) 0xfac1fed2dad3bef4;
+ const kernel_ulong_t vlen = (kernel_ulong_t) 0xfac1fed2dad3bef4ULL;
const unsigned long long pos = 0xfac5fed6dad7bef8;
- const unsigned long pos_l = (unsigned long) pos;
- const unsigned long pos_h = (sizeof(long) == sizeof(long long)) ?
- (unsigned long) 0xbadc0deddeadbeef : 0xfac5fed6UL;
+ const kernel_ulong_t pos_l = (kernel_ulong_t) pos;
+ const kernel_ulong_t pos_h =
+ (sizeof(kernel_ulong_t) == sizeof(long long)) ?
+ (kernel_ulong_t) 0xbadc0deddeadbeefULL : 0xfac5fed6UL;
int test_dumpio = 1;
tprintf("%s", "");
@@ -192,13 +194,13 @@
if (ENOSYS == errno)
test_dumpio = 0;
tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
- vlen, pos, errno2name());
+ (unsigned long) vlen, pos, errno2name());
syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
if (ENOSYS == errno)
test_dumpio = 0;
tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
- vlen, pos, errno2name());
+ (unsigned long) vlen, pos, errno2name());
if (test_dumpio)
dumpio();
diff --git a/tests/print_maxfd.c b/tests/print_maxfd.c
new file mode 100644
index 0000000..c3d4ea8
--- /dev/null
+++ b/tests/print_maxfd.c
@@ -0,0 +1,41 @@
+/*
+ * Print the maximum descriptor number available.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <sys/resource.h>
+
+int
+main(void)
+{
+ int fds[2];
+ pipe_maxfd(fds);
+ printf("%d\n", fds[1]);
+ return 0;
+}
diff --git a/tests/printstr.c b/tests/printstr.c
new file mode 100644
index 0000000..330234f
--- /dev/null
+++ b/tests/printstr.c
@@ -0,0 +1,69 @@
+/*
+ * Check decoding of non-NUL-terminated strings when len == -1.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+#define DEFAULT_STRLEN 32
+
+int
+main(void)
+{
+ char *const buf = tail_alloc(DEFAULT_STRLEN + 1);
+ const struct iovec io = {
+ .iov_base = buf,
+ .iov_len = -1
+ };
+ int rc;
+
+ buf[0] = 0;
+
+ tprintf("%s", "");
+
+ memset(buf + 1, 'X', DEFAULT_STRLEN);
+ buf[DEFAULT_STRLEN - 1] = 0;
+
+ rc = writev(-1, &io, 1);
+ tprintf("writev(-1, [{iov_base=\"\\0%*s\\0\"..., iov_len=%lu}], 1)"
+ " = %s\n", DEFAULT_STRLEN - 2, buf + 1, -1UL, sprintrc(rc));
+
+ buf[DEFAULT_STRLEN - 1] = 'X';
+ buf[DEFAULT_STRLEN] = 0;
+
+ rc = writev(-1, &io, 1);
+ tprintf("writev(-1, [{iov_base=\"\\0%*s\"..., iov_len=%lu}], 1)"
+ " = %s\n", DEFAULT_STRLEN - 1, buf + 1, -1UL, sprintrc(rc));
+
+ tprintf("+++ exited with 0 +++\n");
+ return 0;
+}
diff --git a/tests/printstr.test b/tests/printstr.test
new file mode 100755
index 0000000..5f164eb
--- /dev/null
+++ b/tests/printstr.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of non-NUL-terminated strings when len == -1.
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -e trace=writev
diff --git a/tests/prlimit64.c b/tests/prlimit64.c
index e62ea26..1e65116 100644
--- a/tests/prlimit64.c
+++ b/tests/prlimit64.c
@@ -62,12 +62,12 @@
main(void)
{
unsigned long pid =
- (unsigned long) 0xdefaced00000000 | (unsigned) getpid();
+ (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
const struct xlat *xlat;
for (xlat = resources; xlat->str; ++xlat) {
- unsigned long res = 0xfacefeed00000000 | xlat->val;
+ unsigned long res = 0xfacefeed00000000ULL | xlat->val;
long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit);
if (rc)
printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n",
diff --git a/tests/process_vm_readv.c b/tests/process_vm_readv.c
new file mode 100644
index 0000000..cfb8f78
--- /dev/null
+++ b/tests/process_vm_readv.c
@@ -0,0 +1,18 @@
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_process_vm_readv
+
+# define OP process_vm_readv
+# define OP_NR __NR_process_vm_readv
+# define OP_STR "process_vm_readv"
+# define OP_WR 0
+
+# include "process_vm_readv_writev.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_process_vm_readv");
+
+#endif
diff --git a/tests/process_vm_readv.test b/tests/process_vm_readv.test
new file mode 100755
index 0000000..c092f5a
--- /dev/null
+++ b/tests/process_vm_readv.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of process_vm_readv syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a37
diff --git a/tests/process_vm_readv_writev.c b/tests/process_vm_readv_writev.c
new file mode 100644
index 0000000..2a08939
--- /dev/null
+++ b/tests/process_vm_readv_writev.c
@@ -0,0 +1,306 @@
+/*
+ * Check decoding of process_vm_readv/process_vm_writev syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * 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 <inttypes.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+#if OP_WR
+# define in_iovec rmt_iovec
+# define out_iovec lcl_iovec
+# define in_iov rmt_iov
+# define out_iov lcl_iov
+#else
+# define in_iovec lcl_iovec
+# define out_iovec rmt_iovec
+# define in_iov lcl_iov
+# define out_iov rmt_iov
+#endif
+
+typedef void (*iov_print_fn)(const struct iovec *, const void *, long);
+
+enum { MAX_SEGM_COUNT = 2, MAX_STR_LEN = 5 };
+
+struct print_iov_arg {
+ uint32_t count;
+ uint32_t valid :1,
+ string :1,
+ addr_term:1,
+ check_rc :1;
+ uint32_t str_segms;
+ uint8_t str_base[MAX_SEGM_COUNT];
+ uint8_t str_size[MAX_SEGM_COUNT];
+};
+
+static void
+print_iov(const struct iovec *iov, const void *arg_ptr, long rc)
+{
+ const struct print_iov_arg *arg = arg_ptr;
+ uint32_t i;
+ uint32_t num_segm = 0;
+ uint64_t segm_offs = 0;
+
+ if (!arg || !arg->valid) {
+ if (iov)
+ printf("%p", iov);
+ else
+ printf("NULL");
+
+ return;
+ }
+
+ printf("[");
+
+ for (i = 0; i < arg->count; i++) {
+ if (i)
+ printf(", ");
+
+ if (i >= MAX_STR_LEN) {
+ printf("...");
+ break;
+ }
+
+ printf("{iov_base=");
+ if (arg->string && (!arg->check_rc || (rc != -1))) {
+ uint64_t str_left = iov[i].iov_len;
+ uint64_t pr_count = 0;
+
+ printf("\"");
+
+ while (str_left--) {
+ static const char oct_str[] = "01234567";
+ uint8_t c = arg->str_base[num_segm] + segm_offs;
+
+ if ((num_segm >= arg->str_segms) ||
+ (num_segm >= MAX_SEGM_COUNT))
+ error_msg_and_fail("print_iov: segment "
+ "count overrun");
+
+ if (pr_count++ < MAX_STR_LEN)
+ printf("\\%.1s%.1s%d",
+ (c >> 6) ?
+ oct_str + (c >> 6) : "",
+ (c >> 3) ?
+ oct_str + ((c >> 3) & 7) : "",
+ c & 7);
+
+ segm_offs++;
+
+ if (segm_offs >= arg->str_size[num_segm]) {
+ num_segm++;
+ segm_offs = 0;
+ }
+ }
+
+ printf("\"");
+
+ if (pr_count > MAX_STR_LEN)
+ printf("...");
+ } else {
+ if (iov[i].iov_base)
+ printf("%p", iov[i].iov_base);
+ else
+ printf("NULL");
+ }
+
+ printf(", iov_len=%zu}", iov[i].iov_len);
+ }
+
+ if (arg->addr_term)
+ printf(", %p", iov + arg->count);
+
+ printf("]");
+}
+
+static void
+do_call(kernel_ulong_t pid,
+ kernel_ulong_t local_iov, const char *local_arg,
+ kernel_ulong_t liovcnt,
+ kernel_ulong_t remote_iov, const char *remote_arg,
+ kernel_ulong_t riovcnt,
+ kernel_ulong_t flags, iov_print_fn pr_iov)
+{
+ long rc;
+ const char *errstr;
+
+ rc = syscall(OP_NR, pid, local_iov, liovcnt, remote_iov, riovcnt,
+ flags);
+ errstr = sprintrc(rc);
+
+ printf("%s(%d, ", OP_STR, (int) pid);
+
+ if (pr_iov)
+ pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg,
+ rc);
+ else
+ printf("%s", local_arg);
+
+ printf(", %lu, ", (unsigned long) liovcnt);
+
+ if (pr_iov)
+ pr_iov((const struct iovec *) (uintptr_t) remote_iov,
+ remote_arg, rc);
+ else
+ printf("%s", remote_arg);
+
+ printf(", %lu, %lu) = %s\n", (unsigned long) riovcnt,
+ (unsigned long) flags, errstr);
+}
+
+kernel_ulong_t
+ptr_cast(void *ptr)
+{
+ return (kernel_ulong_t) (uintptr_t) ptr;
+}
+
+int
+main(void)
+{
+ enum {
+ SIZE_11 = 2,
+ SIZE_12 = 3,
+ SIZE_13 = 4,
+ SIZE_1 = SIZE_11 + SIZE_12 + SIZE_13,
+ SIZE_21 = 5,
+ SIZE_22 = 6,
+ SIZE_23 = 7,
+ SIZE_2 = SIZE_21 + SIZE_22 + SIZE_23,
+ };
+
+ enum {
+ SEGM1_BASE = 0x80,
+ SEGM2_BASE = 0xA0,
+ };
+
+ static const kernel_ulong_t bogus_pid =
+ (kernel_ulong_t) 0xbadfaceddeadca57ULL;
+ static const kernel_ulong_t bogus_iovcnt1 =
+ (kernel_ulong_t) 0xdec0ded1defaced2ULL;
+ static const kernel_ulong_t bogus_iovcnt2 =
+ (kernel_ulong_t) 0xdec0ded3defaced4ULL;
+ static const kernel_ulong_t bogus_flags =
+ (kernel_ulong_t) 0xdeadc0deda7adeadULL;
+
+ pid_t my_pid = getpid();
+ char *data1_out = tail_alloc(SIZE_1);
+ char *data2_out = tail_alloc(SIZE_2);
+ char *data1_in = tail_alloc(SIZE_2);
+ char *data2_in = tail_alloc(SIZE_1);
+
+ struct iovec bogus_iovec[] = {
+ { data1_out + SIZE_1, (size_t) 0xdeadfaceca57beefULL },
+ { data1_in + SIZE_2, (size_t) 0xbadc0dedda7adeadULL },
+ { data2_out + SIZE_2, (size_t) 0xf157facedec0ded1ULL },
+ { data2_in + SIZE_1, (size_t) 0xdefaced2bea7be57ULL },
+ };
+
+ struct iovec out_iovec[] = {
+ { data1_out, SIZE_11 },
+ { data1_out + SIZE_11, SIZE_12 },
+ { data1_out + SIZE_11 + SIZE_12, SIZE_13 },
+ { data2_out, SIZE_21 },
+ { data2_out + SIZE_21, SIZE_22 },
+ { data2_out + SIZE_21 + SIZE_22, SIZE_23 },
+ };
+ struct iovec in_iovec[] = {
+ { data1_in, SIZE_23 },
+ { data1_in + SIZE_23, SIZE_22 },
+ { data1_in + SIZE_23 + SIZE_22, SIZE_21 },
+ { data2_in, SIZE_13 },
+ { data2_in + SIZE_13, SIZE_12 },
+ { data2_in + SIZE_13 + SIZE_12, SIZE_11 },
+ };
+
+ struct iovec *bogus_iov = tail_memdup(bogus_iovec, sizeof(bogus_iovec));
+ struct iovec *lcl_iov = tail_memdup(lcl_iovec, sizeof(lcl_iovec));
+ struct iovec *rmt_iov = tail_memdup(rmt_iovec, sizeof(rmt_iovec));
+
+ struct print_iov_arg bogus_arg = { ARRAY_SIZE(bogus_iovec), 1 };
+ struct print_iov_arg lcl_arg = { ARRAY_SIZE(lcl_iovec), 1, 1, 0, 0,
+ 2, {SEGM1_BASE, SEGM2_BASE}, {SIZE_1, SIZE_2} };
+ struct print_iov_arg rmt_arg = { ARRAY_SIZE(rmt_iovec), 1 };
+
+ struct print_iov_arg bogus_arg_cut =
+ { ARRAY_SIZE(bogus_iovec) - 2, 1, 0, 1 };
+ struct print_iov_arg lcl_arg_cut =
+ { ARRAY_SIZE(lcl_iovec) - 2, 1, 1, 1, 0, 2,
+ {SEGM1_BASE + SIZE_11 + SIZE_12, SEGM2_BASE},
+ {SIZE_13, SIZE_2} };
+ struct print_iov_arg rmt_arg_cut =
+ { ARRAY_SIZE(rmt_iovec) - 2, 1 };
+
+
+ fill_memory_ex(data1_out, SIZE_1, SEGM1_BASE, SIZE_1);
+ fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2);
+
+
+ do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
+ bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
+ bogus_iovcnt2, bogus_flags, NULL);
+
+ do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+ "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]",
+ 0, 0, NULL);
+ do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL,
+ bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL,
+ bogus_iovcnt2, 0, print_iov);
+
+ do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg,
+ ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2),
+ (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov);
+
+#if !OP_WR
+ lcl_arg.check_rc = 1;
+ lcl_arg_cut.check_rc = 1;
+#endif
+
+ do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+ ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2),
+ (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0,
+ print_iov);
+
+ lcl_arg_cut.addr_term = 0;
+
+ rmt_arg_cut.addr_term = 1;
+ rmt_arg_cut.count = 5;
+
+ do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+ ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1),
+ (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov);
+
+ /* Correct call */
+ do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg,
+ ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg,
+ ARRAY_SIZE(rmt_iovec), 0, print_iov);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
diff --git a/tests/process_vm_writev.c b/tests/process_vm_writev.c
new file mode 100644
index 0000000..6271c01
--- /dev/null
+++ b/tests/process_vm_writev.c
@@ -0,0 +1,18 @@
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_process_vm_writev
+
+# define OP process_vm_writev
+# define OP_NR __NR_process_vm_writev
+# define OP_STR "process_vm_writev"
+# define OP_WR 1
+
+# include "process_vm_readv_writev.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_process_vm_writev");
+
+#endif
diff --git a/tests/process_vm_writev.test b/tests/process_vm_writev.test
new file mode 100755
index 0000000..f690e6a
--- /dev/null
+++ b/tests/process_vm_writev.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of process_vm_writev syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a38
diff --git a/tests/pselect6.c b/tests/pselect6.c
index 7dbc06a..f264485 100644
--- a/tests/pselect6.c
+++ b/tests/pselect6.c
@@ -30,9 +30,9 @@
*/
#include "tests.h"
+#include "nsig.h"
#include <assert.h>
#include <stdio.h>
-#include <signal.h>
#include <unistd.h>
#include <sys/select.h>
#include <asm/unistd.h>
@@ -40,11 +40,6 @@
#ifdef __NR_pselect6
-#ifndef NSIG
-# warning NSIG is not defined, using 32
-# define NSIG 32
-#endif
-
static fd_set set[3][0x1000000 / sizeof(fd_set)];
static void
@@ -90,7 +85,7 @@
"= 1 (out [%d])\n",
fds[1] + 1, fds[0], fds[1],
fds[0], fds[1],
- NSIG / 8, fds[1]);
+ NSIG_BYTES, fds[1]);
/*
* Another simple one, with a timeout.
@@ -100,8 +95,9 @@
FD_SET(fds[0], set[1]);
FD_SET(fds[1], set[1]);
assert(syscall(__NR_pselect6, fds[1] + 1, NULL, set[1], NULL, &tm.ts, NULL) == 3);
- printf("pselect6(%d, NULL, [1 2 %d %d], NULL, {%lld, %lld}, NULL)"
- " = 3 (out [1 2 %d], left {%lld, %lld})\n",
+ printf("pselect6(%d, NULL, [1 2 %d %d], NULL, "
+ "{tv_sec=%lld, tv_nsec=%lld}, NULL) = 3 (out [1 2 %d], left "
+ "{tv_sec=%lld, tv_nsec=%lld})\n",
fds[1] + 1, fds[0], fds[1],
(long long) tm_in.ts.tv_sec, (long long) tm_in.ts.tv_nsec,
fds[1],
@@ -115,7 +111,7 @@
FD_SET(fds[1],set[0]);
assert(pselect(-1, NULL, set[0], NULL, NULL, &mask) == -1);
printf("pselect6(-1, NULL, %p, NULL, NULL, {[HUP CHLD], %u}) "
- "= -1 EINVAL (%m)\n", set[0], NSIG / 8);
+ "= -1 EINVAL (%m)\n", set[0], NSIG_BYTES);
/*
* Another variant, with nfds exceeding FD_SETSIZE limit.
@@ -126,8 +122,9 @@
tm.ts.tv_sec = 0;
tm.ts.tv_nsec = 123;
assert(pselect(FD_SETSIZE + 1, set[0], set[1], NULL, &tm.ts, &mask) == 0);
- printf("pselect6(%d, [%d], [], NULL, {0, 123}, {[HUP CHLD], %u}) "
- "= 0 (Timeout)\n", FD_SETSIZE + 1, fds[0], NSIG / 8);
+ printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}, "
+ "{[HUP CHLD], %u}) = 0 (Timeout)\n",
+ FD_SETSIZE + 1, fds[0], NSIG_BYTES);
/*
* See how timeouts are decoded.
@@ -137,9 +134,10 @@
tm.ts.tv_nsec = 222222222;
assert(pselect(0, NULL, NULL, NULL, &tm.ts, &mask) == -1);
- printf("pselect6(0, NULL, NULL, NULL, {0, 222222222}, {[HUP CHLD], %u})"
- " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
- NSIG / 8);
+ printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}, "
+ "{[HUP CHLD], %u}) = "
+ "? ERESTARTNOHAND (To be restarted if no handler)\n",
+ NSIG_BYTES);
puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
puts("+++ exited with 0 +++");
diff --git a/tests/ptrace.c b/tests/ptrace.c
index 1dcfec3..80ce8cb 100644
--- a/tests/ptrace.c
+++ b/tests/ptrace.c
@@ -345,10 +345,23 @@
do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGSYS"
", si_code=SYS_SECCOMP, si_errno=ENOENT, si_call_addr=%p"
- ", si_syscall=__NR_syscall_%u, si_arch=AUDIT_ARCH_X86_64})"
+ ", si_syscall=%u, si_arch=AUDIT_ARCH_X86_64})"
" = %s\n",
(unsigned) pid, bad_request, sip->si_call_addr, sip->si_syscall,
errstr);
+
+ sip->si_errno = 3141592653U;
+ sip->si_call_addr = NULL;
+ sip->si_syscall = __NR_read;
+ sip->si_arch = 0xda7a1057;
+
+ do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
+ printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGSYS"
+ ", si_code=SYS_SECCOMP, si_errno=%d, si_call_addr=NULL"
+ ", si_syscall=__NR_read, si_arch=%#x /* AUDIT_ARCH_??? */})"
+ " = %s\n",
+ (unsigned) pid, bad_request, sip->si_errno, sip->si_arch,
+ errstr);
#endif
#if defined HAVE_SIGINFO_T_SI_TIMERID && defined HAVE_SIGINFO_T_SI_OVERRUN
diff --git a/tests/qual_fault-exit_group.expected b/tests/qual_fault-exit_group.expected
new file mode 100644
index 0000000..dd9d4e4
--- /dev/null
+++ b/tests/qual_fault-exit_group.expected
@@ -0,0 +1,3 @@
+exit_group(42) = -1 ENOSYS (Function not implemented) (INJECTED)
+exit(42) = ?
++++ exited with 42 +++
diff --git a/tests/qual_fault-exit_group.test b/tests/qual_fault-exit_group.test
new file mode 100755
index 0000000..c98ffc6
--- /dev/null
+++ b/tests/qual_fault-exit_group.test
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# Check decoding of fault injected exit_group syscall.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/scno_tampering.sh"
+
+test_with()
+{
+ > "$LOG" || fail_ "failed to write $LOG"
+
+ $STRACE -o "$LOG" "$@"
+ rc=$?
+ [ $rc -eq 42 ] ||
+ dump_log_and_fail_with "$STRACE $* failed with code $rc"
+
+ match_diff
+}
+
+test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ./answer
+
+test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
+ -efault=\!process:error=1 ./answer
+
+test_with -eexit,exit_group -efault=all:error=ENOSYS \
+ -efault=exit:error=1:when=2+ ./answer
+
+test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
+ -efault=\!desc,file,memory,process,signal,network,ipc:error=1 ./answer
diff --git a/tests/qual_fault-syntax.test b/tests/qual_fault-syntax.test
new file mode 100755
index 0000000..85093fc
--- /dev/null
+++ b/tests/qual_fault-syntax.test
@@ -0,0 +1,111 @@
+#!/bin/sh
+#
+# Check -e fault= syntax.
+#
+# Copyright (c) 2016=2017 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+#
+# F
+# F+
+# F+S
+
+fail_with()
+{
+ dump_log_and_fail_with \
+ "strace -e fault=$* failed to handle an argument error properly"
+}
+
+for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
+ invalid_syscall_name \
+ invalid_syscall_name:when=3 \
+ -1 \!-1 \
+ -1:when=4 \
+ -2 \
+ -2:when=5 \
+ 32767 \!32767 \
+ 32767:when=6 \
+ chdir:42 \!chdir:42 \
+ chdir:42:when=7 \
+ chdir:invalid \
+ chdir:invalid:when=8 \
+ chdir:error= \
+ chdir:error=:when=10 \
+ chdir:error=invalid_error_name \
+ chdir:error=invalid_error_name:when=11 \
+ chdir:error=-1 \
+ chdir:error=-1:when=12 \
+ chdir:error=-2 \
+ chdir:error=-2:when=13 \
+ chdir:error=3+ \
+ chdir:error=3+:when=14 \
+ chdir:error=4096 \
+ chdir:error=4096:when=15 \
+ chdir:when=7:error=invalid_error_name \
+ chdir:when= \
+ chdir:when=:error=19 \
+ chdir:when=0 \
+ chdir:when=0:error=20 \
+ chdir:when=-1 \
+ chdir:when=-1:error=21 \
+ chdir:when=-2+ \
+ chdir:when=-2+:error=22 \
+ chdir:when=-3+0 \
+ chdir:when=-3+0:error=23 \
+ chdir:when=4- \
+ chdir:when=4-:error=24 \
+ chdir:when=5+- \
+ chdir:when=5+-:error=25 \
+ chdir:when=6++ \
+ chdir:when=6++:error=26 \
+ chdir:when=7+0 \
+ chdir:when=7+0:error=27 \
+ chdir:when=8+-1 \
+ chdir:when=8+-1:error=28 \
+ chdir:when=9+1+ \
+ chdir:when=9+1+:error=29 \
+ chdir:when=65536 \
+ chdir:when=65536:error=30 \
+ chdir:when=1+65536 \
+ chdir:when=1+65536:error=31 \
+ file,nonsense \
+ \!desc,nonsense \
+ chdir,nonsense \
+ \!chdir,nonsense \
+ 1,nonsense \
+ \!1,nonsense \
+ chdir:retval=0 \
+ chdir:signal=1 \
+ chdir:error=1:error=2 \
+ ; do
+ $STRACE -e fault="$arg" true 2> "$LOG" &&
+ fail_with "$arg"
+ LC_ALL=C grep -F 'invalid fault argument' < "$LOG" > /dev/null ||
+ fail_with "$arg"
+done
+
+exit 0
diff --git a/tests/qual_fault.c b/tests/qual_fault.c
new file mode 100644
index 0000000..d26dc7c
--- /dev/null
+++ b/tests/qual_fault.c
@@ -0,0 +1,148 @@
+/*
+ * Check that fault injection works properly.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/uio.h>
+
+static const int expfd = 4;
+static const int gotfd = 5;
+
+#define DEFAULT_ERRNO ENOSYS
+
+static const char *errstr;
+static int is_raw, err, first, step, iter, try;
+
+static void
+invoke(int fail)
+{
+ static char buf[sizeof(int) * 3 + 3];
+ const struct iovec io = {
+ .iov_base = buf,
+ .iov_len = sprintf(buf, "%d.", ++try)
+ };
+ int rc;
+
+ if (!fail) {
+ rc = write(expfd, io.iov_base, io.iov_len);
+ if (rc != (int) io.iov_len)
+ perror_msg_and_fail("write");
+ }
+
+ errno = 0;
+ rc = writev(gotfd, &io, 1);
+
+ if (fail) {
+ if (!(rc == -1 && errno == err))
+ perror_msg_and_fail("expected errno %d"
+ ", got rc == %d, errno == %d",
+ err, rc, errno);
+
+ if (is_raw)
+ tprintf("writev(%#x, %p, 0x1) = -1 (errno %d)"
+ " (INJECTED)\n", gotfd, &io, err);
+ else
+ tprintf("writev(%d, [{iov_base=\"%s\", iov_len=%d}], 1)"
+ " = -1 %s (%m) (INJECTED)\n",
+ gotfd, buf, (int) io.iov_len, errstr);
+ } else {
+ if (rc != (int) io.iov_len)
+ perror_msg_and_fail("expected %d"
+ ", got rc == %d, errno == %d",
+ (int) io.iov_len, rc, errno);
+
+ if (is_raw)
+ tprintf("writev(%#x, %p, 0x1) = %#x\n", gotfd, &io, rc);
+ else
+ tprintf("writev(%d, [{iov_base=\"%s\", iov_len=%d}], 1)"
+ " = %d\n",
+ gotfd, buf, (int) io.iov_len, (int) io.iov_len);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct stat st;
+
+ assert(fstat(expfd, &st) == 0);
+ assert(fstat(gotfd, &st) == 0);
+
+ assert(argc == 6);
+
+ is_raw = !strcmp("raw", argv[1]);
+
+ errstr = argv[2];
+ err = atoi(errstr);
+ assert(err >= 0);
+
+ if (!err) {
+ if (!*errstr)
+ err = DEFAULT_ERRNO;
+ else if (!strcasecmp(errstr, "EINVAL"))
+ err = EINVAL;
+ else
+ err = ENOSYS;
+ }
+
+ errno = err;
+ errstr = errno2name();
+
+ first = atoi(argv[3]);
+ step = atoi(argv[4]);
+ iter = atoi(argv[5]);
+
+ assert(first > 0);
+ assert(step >= 0);
+
+ tprintf("%s", "");
+
+ int i;
+ for (i = 1; i <= iter; ++i) {
+ int fail = 0;
+ if (first > 0) {
+ --first;
+ if (first == 0) {
+ fail = 1;
+ first = step;
+ }
+ }
+ invoke(fail);
+ }
+
+ tprintf("%s\n", "+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/qual_fault.test b/tests/qual_fault.test
new file mode 100755
index 0000000..e194a78
--- /dev/null
+++ b/tests/qual_fault.test
@@ -0,0 +1,104 @@
+#!/bin/sh
+#
+# Check that fault injection works properly.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/scno_tampering.sh"
+
+#
+# F
+# F+
+# F+S
+
+N=16
+
+check_fault_injection()
+{
+ local trace fault err first step extra
+ trace=$1; shift
+ fault=$1; shift
+ err=$1; shift
+ first=$1; shift
+ step=$1; shift
+ extra="$*"
+
+ local when=
+ if [ -z "$first$step" ]; then
+ first=1
+ step=1
+ else
+ case "$step" in
+ '') when=":when=$first"; step=0 ;;
+ +) when=":when=$first+"; step=1 ;;
+ *) when=":when=$first+$step" ;;
+ esac
+ fi
+
+ local error=
+ local raw=reg
+ set --
+ case "$err" in
+ '') ;;
+ [123456789]*)
+ error=":error=$err"
+ raw=raw
+ set -- -e raw=all
+ ;;
+ *) error=":error=$err" ;;
+ esac
+
+ outexp="$NAME.out.exp"
+ outgot="$NAME.out.got"
+
+ run_strace -a11 -e trace=$trace \
+ "$@" -e fault=$fault$when$error $extra \
+ ./$NAME $raw "$err" "$first" "$step" $N \
+ > "$EXP" 4> "$outexp" 5> "$outgot"
+
+ match_diff "$EXP" "$LOG"
+ match_diff "$outexp" "$outgot"
+ rm -f "$EXP" "$outexp" "$outgot"
+}
+
+for err in '' ENOSYS 22 einval; do
+ for fault in writev desc,51; do
+ check_fault_injection \
+ writev $fault "$err" '' '' -efault=chdir
+ check_fault_injection \
+ writev $fault "$err" '' '' -efault=chdir -efault=none
+ for F in 1 2 3 5 7 11; do
+ check_fault_injection \
+ writev $fault "$err" $F ''
+ check_fault_injection \
+ writev $fault "$err" $F +
+ for S in 1 2 3 5 7 11; do
+ check_fault_injection \
+ writev $fault "$err" $F $S
+ done
+ done
+ done
+done
diff --git a/tests/qual_inject-error-signal.c b/tests/qual_inject-error-signal.c
new file mode 100644
index 0000000..f4ccd82
--- /dev/null
+++ b/tests/qual_inject-error-signal.c
@@ -0,0 +1,69 @@
+/*
+ * Check fault injection along with signal injection.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <asm/unistd.h>
+
+static struct stat before, after;
+
+static void
+handler(int sig)
+{
+ if (stat(".", &after))
+ syscall(__NR_exit_group, 2);
+
+ if (before.st_dev != after.st_dev || before.st_ino != after.st_ino)
+ syscall(__NR_exit_group, 3);
+
+ syscall(__NR_exit_group, 0);
+}
+
+int
+main(void)
+{
+ const struct sigaction act = { .sa_handler = handler };
+ if (sigaction(SIGUSR1, &act, NULL))
+ perror_msg_and_fail("sigaction");
+
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGUSR1);
+ if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ if (stat(".", &before))
+ perror_msg_and_fail("stat");
+
+ syscall(__NR_chdir, ".");
+ syscall(__NR_exit_group, 1);
+ return 1;
+}
diff --git a/tests/qual_inject-error-signal.expected b/tests/qual_inject-error-signal.expected
new file mode 100644
index 0000000..24389b3
--- /dev/null
+++ b/tests/qual_inject-error-signal.expected
@@ -0,0 +1,4 @@
+chdir(".") = -1 ENOENT (No such file or directory) (INJECTED)
+--- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_KERNEL} ---
+exit_group(0) = ?
++++ exited with 0 +++
diff --git a/tests/qual_inject-error-signal.test b/tests/qual_inject-error-signal.test
new file mode 100755
index 0000000..fcbcc39
--- /dev/null
+++ b/tests/qual_inject-error-signal.test
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Check fault injection along with signal injection.
+. "${srcdir=.}/scno_tampering.sh"
+
+run_strace -a12 -echdir,exit_group -einject=chdir:error=ENOENT:signal=USR1 \
+ "./$NAME"
+match_diff
diff --git a/tests/qual_inject-retval.c b/tests/qual_inject-retval.c
new file mode 100644
index 0000000..ac9801e
--- /dev/null
+++ b/tests/qual_inject-retval.c
@@ -0,0 +1,73 @@
+/*
+ * Check success injection.
+ *
+ * Copyright (c) 2017 Elvira Khabirova <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_chdir
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+# include <sys/stat.h>
+
+int
+main(int argc, char *argv[])
+{
+ assert(argc == 2);
+
+ static const char dir[] = "..";
+ struct stat before, after;
+
+ if (stat(".", &before))
+ perror_msg_and_fail("stat");
+
+ long rval = syscall(__NR_chdir, dir);
+
+ if (stat(".", &after))
+ perror_msg_and_fail("stat");
+
+ if (before.st_dev != after.st_dev || before.st_ino != after.st_ino)
+ error_msg_and_fail("syscall succeeded");
+ if (atol(argv[1]) != rval)
+ error_msg_and_fail("expected retval %s, got retval %ld",
+ argv[1], rval);
+
+ printf("chdir(\"%s\") = %ld (INJECTED)\n", dir, rval);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_chdir")
+
+#endif
diff --git a/tests/qual_inject-retval.test b/tests/qual_inject-retval.test
new file mode 100755
index 0000000..419030a
--- /dev/null
+++ b/tests/qual_inject-retval.test
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Check success injection.
+
+. "${srcdir=.}/scno_tampering.sh"
+
+check_injection()
+{
+ local syscall rval
+
+ syscall=chdir
+ rval="$1"; shift
+
+ run_strace -a12 -e$syscall -einject="$syscall:retval=$rval" "$@" \
+ ./qual_inject-retval "$rval" > "$EXP"
+ match_diff "$LOG" "$EXP"
+ rm -f "$EXP"
+}
+
+check_injection 0
+check_injection 42
diff --git a/tests/qual_inject-signal.c b/tests/qual_inject-signal.c
new file mode 100644
index 0000000..ff56a28
--- /dev/null
+++ b/tests/qual_inject-signal.c
@@ -0,0 +1,57 @@
+/*
+ * Check that signal injection works properly.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+static void
+handler(int sig)
+{
+ syscall(__NR_exit_group, 0);
+}
+
+int
+main(void)
+{
+ const struct sigaction act = { .sa_handler = handler };
+ if (sigaction(SIGUSR1, &act, NULL))
+ perror_msg_and_fail("sigaction");
+
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGUSR1);
+ if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ syscall(__NR_chdir, ".");
+ syscall(__NR_exit_group, 1);
+ return 1;
+}
diff --git a/tests/qual_inject-signal.expected b/tests/qual_inject-signal.expected
new file mode 100644
index 0000000..69a1d97
--- /dev/null
+++ b/tests/qual_inject-signal.expected
@@ -0,0 +1,4 @@
+chdir(".") = 0
+--- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_KERNEL} ---
+exit_group(0) = ?
++++ exited with 0 +++
diff --git a/tests/qual_inject-signal.test b/tests/qual_inject-signal.test
new file mode 100755
index 0000000..88002ce
--- /dev/null
+++ b/tests/qual_inject-signal.test
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Check signal injection.
+. "${srcdir=.}/init.sh"
+
+run_strace -a12 -echdir,exit_group -einject=chdir:signal=USR1 \
+ ./$NAME
+match_diff
diff --git a/tests/qual_inject-syntax.test b/tests/qual_inject-syntax.test
new file mode 100755
index 0000000..a9e44d7
--- /dev/null
+++ b/tests/qual_inject-syntax.test
@@ -0,0 +1,118 @@
+#!/bin/sh
+#
+# Check -e inject= syntax.
+#
+# Copyright (c) 2016-2017 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+#
+# F
+# F+
+# F+S
+
+fail_with()
+{
+ dump_log_and_fail_with \
+ "strace -e inject=$* failed to handle an argument error properly"
+}
+
+for arg in '' , ,, ,,, : :: ::: \! \!, \!: \
+ invalid_syscall_name \
+ invalid_syscall_name:when=3 \
+ -1 \!-1 \
+ -1:when=4 \
+ -2 \
+ -2:when=5 \
+ 32767 \!32767 \
+ 32767:when=6 \
+ 42 \
+ chdir \
+ chdir:42 \!chdir:42 \
+ chdir:42:when=7 \
+ chdir:invalid \
+ chdir:invalid:when=8 \
+ chdir:error= \
+ chdir:error=:when=10 \
+ chdir:error=invalid_error_name \
+ chdir:error=invalid_error_name:when=11 \
+ chdir:error=-1 \
+ chdir:error=-1:when=12 \
+ chdir:error=-2 \
+ chdir:error=-2:when=13 \
+ chdir:error=3+ \
+ chdir:error=3+:when=14 \
+ chdir:error=4096 \
+ chdir:error=4096:when=15 \
+ chdir:when=7:error=invalid_error_name \
+ chdir:when= \
+ chdir:when=:error=19 \
+ chdir:when=0 \
+ chdir:when=0:error=20 \
+ chdir:when=-1 \
+ chdir:when=-1:error=21 \
+ chdir:when=-2+ \
+ chdir:when=-2+:error=22 \
+ chdir:when=-3+0 \
+ chdir:when=-3+0:error=23 \
+ chdir:when=4- \
+ chdir:when=4-:error=24 \
+ chdir:when=5+- \
+ chdir:when=5+-:error=25 \
+ chdir:when=6++ \
+ chdir:when=6++:error=26 \
+ chdir:when=7+0 \
+ chdir:when=7+0:error=27 \
+ chdir:when=8+-1 \
+ chdir:when=8+-1:error=28 \
+ chdir:when=9+1+ \
+ chdir:when=9+1+:error=29 \
+ chdir:when=65536 \
+ chdir:when=65536:error=30 \
+ chdir:when=1+65536 \
+ chdir:when=1+65536:error=31 \
+ file,nonsense \
+ \!desc,nonsense \
+ chdir,nonsense \
+ \!chdir,nonsense \
+ 1,nonsense \
+ \!1,nonsense \
+ chdir:retval=-1 \
+ chdir:signal=0 \
+ chdir:signal=129 \
+ chdir:retval=0:retval=1 \
+ chdir:error=1:error=2 \
+ chdir:retval=0:error=1 \
+ chdir:error=1:retval=0 \
+ chdir:retval=0:signal=1:error=1 \
+ ; do
+ $STRACE -e inject="$arg" true 2> "$LOG" &&
+ fail_with "$arg"
+ LC_ALL=C grep -F 'invalid inject argument' < "$LOG" > /dev/null ||
+ fail_with "$arg"
+done
+
+exit 0
diff --git a/tests/qual_signal.c b/tests/qual_signal.c
new file mode 100644
index 0000000..106dabe
--- /dev/null
+++ b/tests/qual_signal.c
@@ -0,0 +1,82 @@
+/*
+ * Check how strace -e signal=set works.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <assert.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static pid_t pid;
+static uid_t uid;
+
+static void
+handler(int sig)
+{
+}
+
+static void
+test_sig(int signo, const char *name)
+{
+ const struct sigaction act = { .sa_handler = handler };
+
+ if (sigaction(signo, &act, NULL))
+ perror_msg_and_fail("sigaction: %d", signo);
+
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigaddset(&mask, signo);
+ if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask: %d", signo);
+
+ if (kill(pid, signo))
+ perror_msg_and_fail("kill(%d, %d)", pid, signo);
+
+ if (name && *name)
+ printf("--- %s {si_signo=%s, si_code=SI_USER"
+ ", si_pid=%d, si_uid=%d} ---\n",
+ name, name, pid, uid);
+}
+
+int
+main(int ac, const char **av)
+{
+ assert(ac & 1);
+
+ pid = getpid();
+ uid = geteuid();
+
+ int i;
+ for (i = 1; i < ac; i += 2)
+ test_sig(atoi(av[i]), av[i + 1]);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/qual_signal.test b/tests/qual_signal.test
new file mode 100755
index 0000000..54a37a3
--- /dev/null
+++ b/tests/qual_signal.test
@@ -0,0 +1,111 @@
+#!/bin/sh
+#
+# Check how strace -e signal=set works.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+test_one_sig()
+{
+ local sigs
+ sigs="$1"; shift
+
+ run_prog "./$NAME" "$@" > /dev/null
+ run_strace -e trace=none -e signal="$sigs" "./$NAME" "$@" > "$EXP"
+ match_diff "$LOG" "$EXP"
+ rm -f "$EXP"
+}
+
+test_sigs()
+{
+ local first second sigs
+ first="$1"; shift
+ second="$1"; shift
+
+ for sigs; do
+ test_one_sig "$sigs" 2 "$first" 15 "$second"
+ done
+}
+
+test_sigs '' '' \
+ none '!all' \
+ CHLD SIGCHLD ALRM SIGALRM \
+ chld sigchld alrm sigalrm \
+ CHLD,SIGALRM ALRM,SIGCHLD \
+ chld,sigalrm alrm,sigchld \
+ 9 9,4 9,4,11 \
+ 4,CHLD,11,ALRM,9 \
+ '!2,15' '!INT,TERM' '!SIGINT,TERM' '!INT,SIGTERM' '!SIGTERM,SIGINT' \
+ '!2,INT,TERM' '!2,SIGTERM' '!SIGINT,15' '!INT,SIGTERM,15' \
+ '!2,4,15' '!15,9,2,11,4'
+
+test_sigs SIGINT '' \
+ 2 INT SIGINT \
+ CHLD,SIGINT SIGINT,SIGALRM \
+ chld,sigint sigint,sigalrm \
+ ALRM,2,SIGCHLD \
+ '!15' '!TERM' '!SIGTERM' \
+ '!15,TERM' '!SIGTERM,15,TERM' \
+ '!SIGALRM,TERM' '!CHLD,SIGTERM' \
+ '!ALRM,15' '!SIGCHLD,ALRM,SIGTERM,KILL' \
+ '!4,15' '!15,9,11,4'
+
+test_sigs '' SIGTERM \
+ 15 TERM SIGTERM \
+ CHLD,SIGTERM SIGTERM,SIGALRM \
+ chld,sigterm sigterm,sigalrm \
+ ALRM,15,SIGCHLD \
+ '!2' '!INT' '!SIGINT' \
+ '!2,INT' '!SIGINT,2,INT' \
+ '!SIGALRM,INT' '!CHLD,SIGINT' \
+ '!ALRM,2' '!SIGCHLD,ALRM,SIGINT,KILL' \
+ '!4,2' '!2,9,11,4'
+
+test_sigs SIGINT SIGTERM \
+ all '!none' \
+ INT,TERM SIGINT,TERM SIGTERM,INT SIGINT,SIGTERM \
+ int,term sigint,term sigterm,int sigint,sigterm \
+ 2,15 2,TERM SIGTERM,2 TERM,15,SIGINT,2 \
+ '!CHLD' '!SIGCHLD' '!ALRM' '!SIGALRM' \
+ '!CHLD,SIGALRM' '!ALRM,SIGCHLD' \
+ '!9' '!9,4' '!9,4,11' '!4,CHLD,11,ALRM,9'
+
+fail_with()
+{
+ dump_log_and_fail_with \
+ "strace -e signal=$* failed to handle an argument error properly"
+}
+
+for arg in ' ' invalid_signal_name SIG -1 256 1-1 \
+ 1,2,4,8,16,32,64,128,256,512,1024 9,chdir; do
+ $STRACE -e signal="$arg" true 2> "$LOG" &&
+ fail_with "$arg"
+ LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
+ fail_with "$arg"
+done
+
+exit 0
diff --git a/tests/quotactl-xfs.c b/tests/quotactl-xfs.c
index a08ccd2..e420d1c 100644
--- a/tests/quotactl-xfs.c
+++ b/tests/quotactl-xfs.c
@@ -1,7 +1,7 @@
/*
* Check decoding of quotactl xfs subcommands.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
@@ -199,6 +199,9 @@
int
main(void)
{
+ char *bogus_special = (char *) tail_alloc(1) + 1;
+ void *bogus_addr = (char *) tail_alloc(1) + 1;
+
char bogus_special_str[sizeof(void *) * 2 + sizeof("0x")];
char bogus_addr_str[sizeof(void *) * 2 + sizeof("0x")];
char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
@@ -280,7 +283,7 @@
check_quota(CQF_NONE, ARG_STR(QCMD(Q_XSETQLIM, PRJQUOTA)),
bogus_special, bogus_special_str, 0, bogus_addr);
- fill_memory_ex((char *) xdq, sizeof(*xdq), 0x8e);
+ fill_memory_ex(xdq, sizeof(*xdq), 0x8e, 0x80);
check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_XSETQLIM, PRJQUOTA)),
bogus_dev, bogus_dev_str, 3141592653U,
diff --git a/tests/quotactl.c b/tests/quotactl.c
index d68c4ec..3a7c113 100644
--- a/tests/quotactl.c
+++ b/tests/quotactl.c
@@ -1,7 +1,7 @@
/*
* Check decoding of quotactl syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
@@ -164,6 +164,9 @@
int
main(void)
{
+ char *bogus_special = (char *) tail_alloc(1) + 1;
+ void *bogus_addr = (char *) tail_alloc(1) + 1;
+
char bogus_special_str[sizeof(void *) * 2 + sizeof("0x")];
char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
@@ -246,7 +249,7 @@
/* Q_SETQUOTA */
- fill_memory((char *) dqblk, sizeof(*dqblk));
+ fill_memory(dqblk, sizeof(*dqblk));
check_quota(CQF_NONE, ARG_STR(QCMD(Q_SETQUOTA, PRJQUOTA)),
bogus_special, bogus_special_str, 0, bogus_addr);
@@ -269,7 +272,7 @@
/* Q_SETINFO */
- fill_memory((char *) dqinfo, sizeof(*dqinfo));
+ fill_memory(dqinfo, sizeof(*dqinfo));
/* In order to check flag printing correctness */
dqinfo->dqi_flags = 0xdeadabcd;
diff --git a/tests/quotactl.h b/tests/quotactl.h
index 49a6f87..31eaec5 100644
--- a/tests/quotactl.h
+++ b/tests/quotactl.h
@@ -1,7 +1,7 @@
/*
* Common definitions for Linux and XFS quota tests.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
@@ -69,8 +69,6 @@
printf("%s%s=%#llx", (prefix), #field, \
zero_extend_signed_to_ull((where)->field))
-# define ARG_STR(_arg) (_arg), #_arg
-
typedef void (*print_cb)(long rc, void *addr, void *arg);
enum check_quotactl_flag_bits {
@@ -92,22 +90,6 @@
static inline void
-fill_memory_ex(char *ptr, size_t size, unsigned char start)
-{
- size_t i;
-
- for (i = 0; i < size; i++) {
- ptr[i] = start + i % 80;
- }
-}
-
-static inline void
-fill_memory(char *ptr, size_t size)
-{
- fill_memory_ex(ptr, size, 0x80);
-}
-
-static inline void
check_quota(uint32_t flags, int cmd, const char *cmd_str,
const char *special, const char *special_str, ...)
{
@@ -173,13 +155,9 @@
static const int bogus_cmd = 0xbadc0ded;
-static const char * const bogus_special =
- (const char *) (unsigned long) 0xfffffca7ffffc0deULL;
static const int bogus_id = 0xca7faced;
-static void * const bogus_addr =
- (void *) (unsigned long) 0xffffda7affffdeadULL;
-/* It is invalid anyway due to the flash in the end */
+/* It is invalid anyway due to the slash in the end */
static const char *bogus_dev = "/dev/bogus/";
static const char *bogus_dev_str = "\"/dev/bogus/\"";
diff --git a/tests/read-write.c b/tests/read-write.c
index 4d1e730..262e07b 100644
--- a/tests/read-write.c
+++ b/tests/read-write.c
@@ -33,6 +33,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
+#include <asm/unistd.h>
static void
dump_str(const char *str, const unsigned int len)
@@ -77,6 +78,20 @@
}
}
+static long
+k_read(unsigned int fd, void *buf, size_t count)
+{
+ kernel_ulong_t kfd = (kernel_ulong_t) 0xfacefeed00000000ULL | fd;
+ return syscall(__NR_read, kfd, buf, count);
+}
+
+static long
+k_write(unsigned int fd, const void *buf, size_t count)
+{
+ kernel_ulong_t kfd = (kernel_ulong_t) 0xfacefeed00000000ULL | fd;
+ return syscall(__NR_write, kfd, buf, count);
+}
+
static void
test_dump(const unsigned int len)
{
@@ -89,7 +104,7 @@
buf = tail_alloc(len);
}
- long rc = read(0, buf, len);
+ long rc = k_read(0, buf, len);
if (rc != (int) len)
perror_msg_and_fail("read: expected %d, returned %ld",
len, rc);
@@ -103,7 +118,7 @@
for (i = 0; i < len; ++i)
buf[i] = i;
- rc = write(1, buf, len);
+ rc = k_write(1, buf, len);
if (rc != (int) len)
perror_msg_and_fail("write: expected %d, returned %ld",
len, rc);
@@ -147,18 +162,18 @@
long rc;
- rc = write(1, w, 0);
+ rc = k_write(1, w, 0);
if (rc)
perror_msg_and_fail("write: expected 0, returned %ld", rc);
tprintf("write(1, \"\", 0) = 0\n");
- rc = write(1, efault, 1);
+ rc = k_write(1, efault, 1);
if (rc != -1)
perror_msg_and_fail("write: expected -1 EFAULT"
", returned %ld", rc);
tprintf("write(1, %p, 1) = -1 EFAULT (%m)\n", efault);
- rc = write(1, w, w_len);
+ rc = k_write(1, w, w_len);
if (rc != (int) w_len)
perror_msg_and_fail("write: expected %u, returned %ld",
w_len, rc);
@@ -167,17 +182,17 @@
w_c, w_len, rc, w_d, w_c);
close(1);
- rc = read(0, r0, 0);
+ rc = k_read(0, r0, 0);
if (rc)
perror_msg_and_fail("read: expected 0, returned %ld", rc);
tprintf("read(0, \"\", 0) = 0\n");
- rc = read(0, efault, 1);
+ rc = k_read(0, efault, 1);
if (rc != -1)
perror_msg_and_fail("read: expected -1, returned %ld", rc);
tprintf("read(0, %p, 1) = -1 EFAULT (%m)\n", efault);
- rc = read(0, r0, r0_len);
+ rc = k_read(0, r0, r0_len);
if (rc != (int) r0_len)
perror_msg_and_fail("read: expected %u, returned %ld",
r0_len, rc);
@@ -185,7 +200,7 @@
" | 00000 %-49s %-16s |\n",
r0_c, r0_len, rc, r0_d, r0_c);
- rc = read(0, r1, w_len);
+ rc = k_read(0, r1, w_len);
if (rc != (int) r1_len)
perror_msg_and_fail("read: expected %u, returned %ld",
r1_len, rc);
diff --git a/tests/readahead.c b/tests/readahead.c
index 5677c1e..c11b577 100644
--- a/tests/readahead.c
+++ b/tests/readahead.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,15 +29,24 @@
#include <asm/unistd.h>
#ifdef HAVE_READAHEAD
+/* Check for glibc readahead argument passing bugs. */
# ifdef __GLIBC__
/*
- * Check for glibc readahead off64_t argument passing bug,
+ * glibc < 2.8 had an incorrect order of higher and lower parts of offset,
* see https://sourceware.org/bugzilla/show_bug.cgi?id=5208
*/
# if !(defined __GLIBC_MINOR__ && \
(__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8)
# undef HAVE_READAHEAD
-# endif
+# endif /* glibc < 2.8 */
+/*
+ * glibc < 2.25 had an incorrect implementation on mips n64,
+ * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026
+ */
+# if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \
+ (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25)
+# undef HAVE_READAHEAD
+# endif /* LINUX_MIPSN64 && glibc < 2.25 */
# endif /* __GLIBC__ */
#endif /* HAVE_READAHEAD */
diff --git a/tests/readv.c b/tests/readv.c
index c134d72..0e5aab6 100644
--- a/tests/readv.c
+++ b/tests/readv.c
@@ -40,10 +40,7 @@
tprintf("%s", "");
int fds[2];
- if (pipe(fds))
- perror_msg_and_fail("pipe");
- assert(0 == fds[0]);
- assert(1 == fds[1]);
+ pipe_maxfd(fds);
static const char w0_c[] = "012";
const char *w0_d = hexdump_strdup(w0_c);
@@ -60,13 +57,13 @@
void *w2 = tail_memdup(w2_c, LENGTH_OF(w2_c));
long rc;
- rc = writev(1, efault, 42);
- tprintf("writev(1, %p, 42) = %ld %s (%m)\n",
- efault, rc, errno2name());
+ rc = writev(fds[1], efault, 42);
+ tprintf("writev(%d, %p, 42) = %ld %s (%m)\n",
+ fds[1], efault, rc, errno2name());
- rc = readv(0, efault, 42);
- tprintf("readv(0, %p, 42) = %ld %s (%m)\n",
- efault, rc, errno2name());
+ rc = readv(fds[0], efault, 42);
+ tprintf("readv(%d, %p, 42) = %ld %s (%m)\n",
+ fds[0], efault, rc, errno2name());
static const char r0_c[] = "01234567";
const char *r0_d = hexdump_strdup(r0_c);
@@ -87,21 +84,21 @@
};
const struct iovec *w_iov = tail_memdup(w_iov_, sizeof(w_iov_));
- tprintf("writev(1, [], 0) = %ld\n",
- (long) writev(1, w_iov, 0));
+ tprintf("writev(%d, [], 0) = %ld\n",
+ fds[1], (long) writev(fds[1], w_iov, 0));
- rc = writev(1, w_iov + ARRAY_SIZE(w_iov_) - 1, 2);
- tprintf("writev(1, [{iov_base=\"%s\", iov_len=%u}, %p], 2)"
+ rc = writev(fds[1], w_iov + ARRAY_SIZE(w_iov_) - 1, 2);
+ tprintf("writev(%d, [{iov_base=\"%s\", iov_len=%u}, %p], 2)"
" = %ld %s (%m)\n",
- w2_c, LENGTH_OF(w2_c), w_iov + ARRAY_SIZE(w_iov_),
+ fds[1], w2_c, LENGTH_OF(w2_c), w_iov + ARRAY_SIZE(w_iov_),
rc, errno2name());
const unsigned int w_len =
LENGTH_OF(w0_c) + LENGTH_OF(w1_c) + LENGTH_OF(w2_c);
- assert(writev(1, w_iov, ARRAY_SIZE(w_iov_)) == (int) w_len);
- close(1);
- tprintf("writev(1, [{iov_base=\"%s\", iov_len=%u}"
+ assert(writev(fds[1], w_iov, ARRAY_SIZE(w_iov_)) == (int) w_len);
+ close(fds[1]);
+ tprintf("writev(%d, [{iov_base=\"%s\", iov_len=%u}"
", {iov_base=\"%s\", iov_len=%u}"
", {iov_base=\"%s\", iov_len=%u}], %u) = %u\n"
" * %u bytes in buffer 0\n"
@@ -110,7 +107,7 @@
" | 00000 %-49s %-16s |\n"
" * %u bytes in buffer 2\n"
" | 00000 %-49s %-16s |\n",
- w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c),
+ fds[1], w0_c, LENGTH_OF(w0_c), w1_c, LENGTH_OF(w1_c),
w2_c, LENGTH_OF(w2_c), ARRAY_SIZE(w_iov_), w_len,
LENGTH_OF(w0_c), w0_d, w0_c,
LENGTH_OF(w1_c), w1_d, w1_c, LENGTH_OF(w2_c), w2_d, w2_c);
@@ -125,10 +122,11 @@
};
const struct iovec *r_iov = tail_memdup(r0_iov_, sizeof(r0_iov_));
- assert(readv(0, r_iov, ARRAY_SIZE(r0_iov_)) == (int) r_len);
- tprintf("readv(0, [{iov_base=\"%s\", iov_len=%u}], %u) = %u\n"
+ assert(readv(fds[0], r_iov, ARRAY_SIZE(r0_iov_)) == (int) r_len);
+ tprintf("readv(%d, [{iov_base=\"%s\", iov_len=%u}], %u) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
+ fds[0],
r0_c, r_len, ARRAY_SIZE(r0_iov_), r_len, r_len, r0_d, r0_c);
void *r1 = tail_alloc(r_len);
@@ -145,14 +143,14 @@
};
r_iov = tail_memdup(r1_iov_, sizeof(r1_iov_));
- assert(readv(0, r_iov, ARRAY_SIZE(r1_iov_)) == (int) w_len - r_len);
- tprintf("readv(0, [{iov_base=\"%s\", iov_len=%u}"
+ assert(readv(fds[0], r_iov, ARRAY_SIZE(r1_iov_)) == (int) w_len - (int) r_len);
+ tprintf("readv(%d, [{iov_base=\"%s\", iov_len=%u}"
", {iov_base=\"\", iov_len=%u}], %u) = %u\n"
" * %u bytes in buffer 0\n"
" | 00000 %-49s %-16s |\n",
- r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_), w_len - r_len,
+ fds[0], r1_c, r_len, w_len, ARRAY_SIZE(r1_iov_), w_len - r_len,
w_len - r_len, r1_d, r1_c);
- close(0);
+ close(fds[0]);
tprintf("+++ exited with 0 +++\n");
return 0;
diff --git a/tests/readv.test b/tests/readv.test
index cbcffde..dc18799 100755
--- a/tests/readv.test
+++ b/tests/readv.test
@@ -1,6 +1,65 @@
#!/bin/sh
-
-# Check decoding of readv and writev syscalls.
+#
+# Check decoding and dumping of readv and writev syscalls.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16 -eread=0 -ewrite=1 -e trace=readv,writev
+
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread=all -ewrite='!none'
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread='!none' -ewrite=all
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread=none -ewrite='!all' -eread='!0,1,2' -ewrite='!0,1,2'
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread='!all' -ewrite=none -eread='!0,1,2' -ewrite='!0,1,2'
+
+wfd="$(./print_maxfd)"
+rfd="$(($wfd - 1))"
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread="$rfd" -ewrite="$wfd"
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread="!$rfd" -ewrite="!$wfd" -eread="$rfd" -ewrite="$wfd"
+
+rfds='!!!0'
+[ $rfd -lt 1023 ] || rfd=1023
+i=0
+while [ $i -lt $rfd ]; do
+ rfds="$rfds,$i"
+ i=$(($i + 1))
+done
+
+wfds='!!!0'
+[ $wfd -lt 1023 ] || wfd=1023
+i=0
+while [ $i -lt $wfd ]; do
+ wfds="$wfds,$i"
+ i=$(($i + 1))
+done
+
+run_strace_match_diff -a16 -e trace=readv,writev \
+ -eread="$rfds" -ewrite="$wfds"
diff --git a/tests/recvmmsg-timeout.c b/tests/recvmmsg-timeout.c
index 4afd8a6..7cf064d 100644
--- a/tests/recvmmsg-timeout.c
+++ b/tests/recvmmsg-timeout.c
@@ -53,7 +53,7 @@
struct timespec t = { .tv_sec = 0, .tv_nsec = 12345678 };
int rc = recv_mmsg(-1, &mh, 1, 0, &t);
- printf("recvmmsg(-1, %p, 1, 0, {0, 12345678})"
+ printf("recvmmsg(-1, %p, 1, 0, {tv_sec=0, tv_nsec=12345678})"
" = %d %s (%m)\n", &mh, rc, errno2name());
rc = recv_mmsg(fds[0], &mh, 1, 0, &t);
@@ -62,7 +62,8 @@
printf("recvmmsg(%d, [{msg_hdr={msg_name=NULL, msg_namelen=0"
", msg_iov=[{iov_base=\"A\", iov_len=1}], msg_iovlen=1"
", msg_controllen=0, msg_flags=0}, msg_len=1}], 1, 0"
- ", {0, 12345678}) = %d (left {0, %d})\n",
+ ", {tv_sec=0, tv_nsec=12345678}) = "
+ "%d (left {tv_sec=0, tv_nsec=%d})\n",
fds[0], rc, (int) t.tv_nsec);
puts("+++ exited with 0 +++");
diff --git a/tests/recvmsg.c b/tests/recvmsg.c
index 19afe8f..fa41a9d 100644
--- a/tests/recvmsg.c
+++ b/tests/recvmsg.c
@@ -145,7 +145,7 @@
r_mh->msg_iov = r_iov;
r_mh->msg_iovlen = ARRAY_SIZE(r1_iov_);
- assert(recvmsg(0, r_mh, 0) == (int) w_len - r_len);
+ assert(recvmsg(0, r_mh, 0) == (int) w_len - (int) r_len);
tprintf("recvmsg(0, {msg_name=NULL, msg_namelen=0, msg_iov="
"[{iov_base=\"%s\", iov_len=%u}, {iov_base=\"\", iov_len=%u}]"
", msg_iovlen=%u, msg_controllen=0, msg_flags=0}, 0) = %u\n"
diff --git a/tests/redirect-fds.test b/tests/redirect-fds.test
index a451917..ddef8fa 100755
--- a/tests/redirect-fds.test
+++ b/tests/redirect-fds.test
@@ -29,6 +29,11 @@
. "${srcdir=.}/init.sh"
+case "$STRACE" in
+ *valgrind\ *--suppressions=*)
+ skip_ 'incompatible with valgrind' ;;
+esac
+
fd0="$LOG.fd0"
fd1="$LOG.fd1"
fd2="$LOG.fd2"
diff --git a/tests/redirect.test b/tests/redirect.test
index 07fbcdf..fa0c536 100755
--- a/tests/redirect.test
+++ b/tests/redirect.test
@@ -35,35 +35,44 @@
check_prog sleep
check_prog yes
+> "$OUT"
> "$LOG"
-
(
+ while [ -f "$LOG" ]; do
+ :
+ done
$SLEEP_A_BIT &
yes
if kill -0 $! 2> /dev/null; then
wait
else
- echo TIMEOUT >> $LOG
+ echo TIMEOUT >> "$OUT"
fi
) | $STRACE -qq -enone -esignal=none \
- sh -c "exec <&- >&-; $SLEEP_A_BIT; $SLEEP_A_BIT"
+ sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT"
-if [ -s "$LOG" ]; then
+if [ -s "$OUT" ]; then
fail_ "$STRACE failed to redirect standard input"
fi
+> "$LOG"
$STRACE -qq -enone -esignal=none \
- sh -c "exec <&- >&-; $SLEEP_A_BIT; $SLEEP_A_BIT" |
+ sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT" |
(
+ while [ -f "$LOG" ]; do
+ :
+ done
$SLEEP_A_BIT &
cat > /dev/null
if kill -0 $! 2> /dev/null; then
wait
else
- echo TIMEOUT >> $LOG
+ echo TIMEOUT >> "$OUT"
fi
)
-if [ -s "$LOG" ]; then
+if [ -s "$OUT" ]; then
fail_ "$STRACE failed to redirect standard output"
fi
+
+rm -f -- "$OUT"
diff --git a/tests/remap_file_pages.c b/tests/remap_file_pages.c
index 9298f28..452d2de 100644
--- a/tests/remap_file_pages.c
+++ b/tests/remap_file_pages.c
@@ -39,10 +39,10 @@
int
main(void)
{
- const unsigned long addr = (unsigned long) 0xfacefeeddeadbeef;
- const unsigned long size = (unsigned long) 0xdefaced1bad2f00d;
+ const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
+ const unsigned long size = (unsigned long) 0xdefaced1bad2f00dULL;
const unsigned long prot = PROT_READ|PROT_WRITE|PROT_EXEC;
- const unsigned long pgoff = (unsigned long) 0xcaf3babebad4deed;
+ const unsigned long pgoff = (unsigned long) 0xcaf3babebad4deedULL;
const unsigned long flags = MAP_PRIVATE|MAP_ANONYMOUS;
long rc = syscall(__NR_remap_file_pages, addr, size, prot, pgoff, flags);
diff --git a/tests/renameat.c b/tests/renameat.c
index d201578..2b874ef 100644
--- a/tests/renameat.c
+++ b/tests/renameat.c
@@ -12,8 +12,8 @@
int
main(void)
{
- const long int fd_old = (long int) 0xdeadbeefffffffff;
- const long int fd_new = (long int) 0xdeadbeeffffffffe;
+ const long int fd_old = (long int) 0xdeadbeefffffffffULL;
+ const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
long rc = syscall(__NR_renameat, fd_old, OLD_FILE, fd_new, NEW_FILE);
printf("renameat(%d, \"%s\", %d, \"%s\") = %ld %s (%m)\n",
diff --git a/tests/renameat2.c b/tests/renameat2.c
index ea57185..33f8898 100644
--- a/tests/renameat2.c
+++ b/tests/renameat2.c
@@ -29,6 +29,7 @@
#include "tests.h"
#include <asm/unistd.h>
+#include "scno.h"
#ifdef __NR_renameat2
diff --git a/tests/request_key.c b/tests/request_key.c
index 361bf52..fea977b 100644
--- a/tests/request_key.c
+++ b/tests/request_key.c
@@ -1,7 +1,7 @@
/*
* Check decoding of request_key syscall.
*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -64,9 +64,6 @@
printf(") = %s\n", errstr);
}
-# define _STR(_arg) #_arg
-# define ARG_STR(_arg) (_arg), #_arg
-
int
main(void)
{
@@ -89,7 +86,7 @@
const char *str;
} types[] = {
{ ARG_STR(NULL) },
- { (const char *) 0xfffffee1fffffbadULL, NULL },
+ { bogus_type + sizeof(unterminated1), NULL },
{ bogus_type, NULL },
{ ARG_STR("\20\21\22\23\24") },
{ ARG_STR("user") },
@@ -100,7 +97,7 @@
const char *str;
} descs[] = {
{ ARG_STR(NULL) },
- { (const char *) 0xfffff00dfffffca7ULL, NULL },
+ { bogus_desc + sizeof(unterminated2), NULL },
{ bogus_desc, NULL },
{ ARG_STR("\25\26\27\30\31") },
{ ARG_STR("desc") },
@@ -112,7 +109,7 @@
const char *str;
} infos[] = {
{ ARG_STR(NULL) },
- { (const char *) 0xfffffacefffff157ULL, NULL },
+ { bogus_info + sizeof(unterminated3), NULL },
{ bogus_info, NULL },
{ ARG_STR("\32\33\34\35\36") },
{ ARG_STR("info") },
diff --git a/tests/restart_syscall.c b/tests/restart_syscall.c
index 3f07d78..e492e62 100644
--- a/tests/restart_syscall.c
+++ b/tests/restart_syscall.c
@@ -55,7 +55,8 @@
if (nanosleep(&req, &rem))
perror_msg_and_fail("nanosleep");
- printf("nanosleep\\(\\{%jd, %jd\\}, \\{%jd, %jd\\}\\)"
+ printf("nanosleep\\(\\{tv_sec=%jd, tv_nsec=%jd\\}, "
+ "\\{tv_sec=%jd, tv_nsec=%jd\\}\\)"
" = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
(intmax_t) req.tv_sec, (intmax_t) req.tv_nsec,
(intmax_t) rem.tv_sec, (intmax_t) rem.tv_nsec);
@@ -66,7 +67,8 @@
#else
# define ALTERNATIVE_NANOSLEEP_REQ ""
#endif
- printf("(nanosleep\\((%s\\{%jd, %jd\\}), %p|restart_syscall\\(<\\.\\.\\."
+ printf("(nanosleep\\((%s\\{tv_sec=%jd, tv_nsec=%jd\\}), "
+ "%p|restart_syscall\\(<\\.\\.\\."
" resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
ALTERNATIVE_NANOSLEEP_REQ,
(intmax_t) req.tv_sec, (intmax_t) req.tv_nsec, &rem);
diff --git a/tests/rt_sigqueueinfo.c b/tests/rt_sigqueueinfo.c
index 9ca860a..aba6776 100644
--- a/tests/rt_sigqueueinfo.c
+++ b/tests/rt_sigqueueinfo.c
@@ -38,7 +38,7 @@
.sa_handler = SIG_IGN
};
union sigval value = {
- .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0ded
+ .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL
};
pid_t pid = getpid();
diff --git a/tests/rt_sigtimedwait.c b/tests/rt_sigtimedwait.c
index ee6d3b9..10311e6 100644
--- a/tests/rt_sigtimedwait.c
+++ b/tests/rt_sigtimedwait.c
@@ -54,19 +54,22 @@
for (;;) {
assert(k_sigtimedwait(set, NULL, timeout, size) == -1);
if (EINTR == errno) {
- tprintf("rt_sigtimedwait(%s, NULL, {%jd, %jd}, %u)"
+ tprintf("rt_sigtimedwait(%s, NULL, "
+ "{tv_sec=%jd, tv_nsec=%jd}, %u)"
" = -1 EAGAIN (%m)\n", text,
(intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec,
size);
} else {
if (size < sizeof(long))
- tprintf("rt_sigtimedwait(%p, NULL, {%jd, %jd}"
+ tprintf("rt_sigtimedwait(%p, NULL, "
+ "{tv_sec=%jd, tv_nsec=%jd}"
", %u) = -1 EINVAL (%m)\n",
set, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, size);
else
- tprintf("rt_sigtimedwait(%s, NULL, {%jd, %jd}"
+ tprintf("rt_sigtimedwait(%s, NULL, "
+ "{tv_sec=%jd, tv_nsec=%jd}"
", %u) = -1 EINVAL (%m)\n",
text, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, size);
@@ -97,14 +100,14 @@
assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
if (EAGAIN == errno)
break;
- tprintf("rt_sigtimedwait(%p, NULL, {%jd, %jd}, %u)"
+ tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%jd, tv_nsec=%jd}, %u)"
" = -1 EINVAL (%m)\n",
k_set, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, set_size);
}
if (!set_size)
perror_msg_and_fail("rt_sigtimedwait");
- tprintf("rt_sigtimedwait([], NULL, {%jd, %jd}, %u) = -1 EAGAIN (%m)\n",
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
set_size);
@@ -115,7 +118,7 @@
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait([HUP], %p, {%jd, %jd}, %u) = -1 EAGAIN (%m)\n",
+ tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
info, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, set_size);
@@ -124,7 +127,7 @@
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait([HUP INT], %p, {%jd, %jd}, %u)"
+ tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%jd, tv_nsec=%jd}, %u)"
" = -1 EAGAIN (%m)\n",
info, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, set_size);
@@ -136,7 +139,7 @@
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait(%s, %p, {%jd, %jd}, %u) = -1 EAGAIN (%m)\n",
+ tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
"[HUP INT QUIT ALRM TERM]",
info, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, set_size);
@@ -144,7 +147,7 @@
memset(k_set - set_size, -1, set_size);
assert(k_sigtimedwait(k_set - set_size, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait(~[], %p, {%jd, %jd}, %u) = -1 EAGAIN (%m)\n",
+ tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
info, (intmax_t) timeout->tv_sec,
(intmax_t) timeout->tv_nsec, set_size);
@@ -161,7 +164,7 @@
raise(SIGALRM);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == SIGALRM);
tprintf("rt_sigtimedwait(%s, {si_signo=%s, si_code=SI_TKILL"
- ", si_pid=%d, si_uid=%d}, {%jd, %jd}, %u) = %d (%s)\n",
+ ", si_pid=%d, si_uid=%d}, {tv_sec=%jd, tv_nsec=%jd}, %u) = %d (%s)\n",
"[HUP INT QUIT ALRM TERM]", "SIGALRM", getpid(), getuid(),
(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
set_size, SIGALRM, "SIGALRM");
diff --git a/tests/rt_tgsigqueueinfo.c b/tests/rt_tgsigqueueinfo.c
index ebfb719..ec09348 100644
--- a/tests/rt_tgsigqueueinfo.c
+++ b/tests/rt_tgsigqueueinfo.c
@@ -39,12 +39,12 @@
# include <unistd.h>
static long
-k_tgsigqueueinfo(const pid_t pid, const int sig, const void const *info)
+k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
{
return syscall(__NR_rt_tgsigqueueinfo,
- (unsigned long) 0xffffffff00000000 | pid,
- (unsigned long) 0xffffffff00000000 | pid,
- (unsigned long) 0xffffffff00000000 | sig,
+ (unsigned long) 0xffffffff00000000ULL | pid,
+ (unsigned long) 0xffffffff00000000ULL | pid,
+ (unsigned long) 0xffffffff00000000ULL | sig,
info);
}
@@ -64,7 +64,7 @@
info->si_code = SI_QUEUE;
info->si_pid = getpid();
info->si_uid = getuid();
- info->si_value.sival_ptr = (void *) (unsigned long) 0xdeadbeeffacefeed;
+ info->si_value.sival_ptr = (void *) (unsigned long) 0xdeadbeeffacefeedULL;
if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info))
(errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)(
diff --git a/tests/sched_rr_get_interval.c b/tests/sched_rr_get_interval.c
index 99943e7..0aacd2b 100644
--- a/tests/sched_rr_get_interval.c
+++ b/tests/sched_rr_get_interval.c
@@ -25,8 +25,8 @@
rc = syscall(__NR_sched_rr_get_interval, 0, tp);
if (rc == 0)
- printf("sched_rr_get_interval(0, {%jd, %jd}) = 0\n",
- (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+ printf("sched_rr_get_interval(0, {tv_sec=%jd, tv_nsec=%jd}) = "
+ "0\n", (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
else
printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
sprintrc(rc));
diff --git a/tests/sched_xetaffinity.c b/tests/sched_xetaffinity.c
index 195f3af..41a1820 100644
--- a/tests/sched_xetaffinity.c
+++ b/tests/sched_xetaffinity.c
@@ -39,16 +39,22 @@
# include <stdio.h>
# include <unistd.h>
+static const char *errstr;
+
static int
getaffinity(unsigned long pid, unsigned long size, void *set)
{
- return syscall(__NR_sched_getaffinity, pid, size, set);
+ int rc = syscall(__NR_sched_getaffinity, pid, size, set);
+ errstr = sprintrc(rc);
+ return rc;
}
static int
setaffinity(unsigned long pid, unsigned long size, void *set)
{
- return syscall(__NR_sched_setaffinity, pid, size, set);
+ int rc = syscall(__NR_sched_setaffinity, pid, size, set);
+ errstr = sprintrc(rc);
+ return rc;
}
int
@@ -63,31 +69,36 @@
break;
if (EINVAL != errno)
perror_msg_and_skip("sched_getaffinity");
- printf("sched_getaffinity(%d, %u, NULL) = -1 EINVAL (%m)\n",
- pid, cpuset_size);
+ printf("sched_getaffinity(%d, %u, NULL) = %s\n",
+ pid, cpuset_size, errstr);
cpuset_size <<= 1;
}
assert(cpuset_size);
- printf("sched_getaffinity(%d, %u, NULL) = -1 EFAULT (%m)\n",
- pid, cpuset_size);
+ printf("sched_getaffinity(%d, %u, NULL) = %s\n",
+ pid, cpuset_size, errstr);
cpu_set_t *cpuset = tail_alloc(cpuset_size);
- assert(getaffinity(pid, cpuset_size, cpuset + 1) == -1);
- printf("sched_getaffinity(%d, %u, %p) = -1 EFAULT (%m)\n",
- pid, cpuset_size, cpuset + 1);
+ getaffinity(pid, cpuset_size, cpuset + 1);
+ printf("sched_getaffinity(%d, %u, %p) = %s\n",
+ pid, cpuset_size, cpuset + 1, errstr);
- assert(getaffinity(pid, cpuset_size, cpuset) == (int) cpuset_size);
+ int ret_size = getaffinity(pid, cpuset_size, cpuset);
+ if (ret_size < 0)
+ perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n",
+ pid, (unsigned) cpuset_size, cpuset, errstr);
+ assert(ret_size <= (int) cpuset_size);
+
printf("sched_getaffinity(%d, %u, [", pid, cpuset_size);
const char *sep;
unsigned int i, cpu;
- for (i = 0, cpu = 0, sep = ""; i < cpuset_size * 8; ++i) {
- if (CPU_ISSET_S(i, cpuset_size, cpuset)) {
+ for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
+ if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) {
printf("%s%u", sep, i);
- sep = " ";
+ sep = ", ";
cpu = i;
}
}
- printf("]) = %u\n", cpuset_size);
+ printf("]) = %s\n", errstr);
CPU_ZERO_S(cpuset_size, cpuset);
CPU_SET_S(cpu, cpuset_size, cpuset);
@@ -98,16 +109,19 @@
const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2;
cpuset = tail_alloc(big_size);
- const int ret_size = getaffinity(pid, big_size, cpuset);
- assert(ret_size >= (int) cpuset_size && ret_size <= (int) big_size);
+ ret_size = getaffinity(pid, big_size, cpuset);
+ if (ret_size < 0)
+ perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n",
+ pid, big_size, cpuset, errstr);
+ assert(ret_size <= (int) big_size);
printf("sched_getaffinity(%d, %u, [", pid, big_size);
for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) {
printf("%s%u", sep, i);
- sep = " ";
+ sep = ", ";
}
}
- printf("]) = %d\n", ret_size);
+ printf("]) = %s\n", errstr);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/scno_tampering.sh b/tests/scno_tampering.sh
new file mode 100755
index 0000000..6aa7843
--- /dev/null
+++ b/tests/scno_tampering.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# Skip the test if arch+kernel combination is not supported.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+uname_r="$(uname -r)"
+case "$STRACE_ARCH" in
+ arm)
+ # PTRACE_SET_SYSCALL is supported by linux kernel
+ # starting with commit v2.6.16-rc1~107^2.
+ require_min_kernel_version_or_skip 2.6.16 ;;
+ aarch64)
+ # NT_ARM_SYSTEM_CALL regset is supported by linux kernel
+ # starting with commit v3.19-rc1~59^2~16.
+ require_min_kernel_version_or_skip 3.19 ;;
+ hppa)
+ # Syscall number and return value modification did not work
+ # properly before commit v4.5-rc7~31^2~1.
+ require_min_kernel_version_or_skip 4.5 ;;
+ sparc*)
+ # Reloading the syscall number from %g1 register is supported
+ # by linux kernel starting with commit v4.5-rc7~35^2~3.
+ require_min_kernel_version_or_skip 4.5 ;;
+ mips)
+ # Only the native ABI is supported by the kernel properly, see
+ # https://sourceforge.net/p/strace/mailman/message/35587571/
+ uname_m="$(uname -m)"
+ case "$MIPS_ABI:$uname_m" in
+ o32:mips|n64:mips64) ;;
+ *) skip_ "$MIPS_ABI scno tampering does not work on $uname_m yet" ;;
+ esac ;;
+esac
diff --git a/tests/seccomp-strict.c b/tests/seccomp-strict.c
index 47d909d..237b0ec 100644
--- a/tests/seccomp-strict.c
+++ b/tests/seccomp-strict.c
@@ -41,18 +41,18 @@
static const char text1[] =
"seccomp(SECCOMP_SET_MODE_STRICT, 0, NULL) = 0\n";
static const char text2[] = "+++ exited with 0 +++\n";
- const unsigned long addr = (unsigned long) 0xfacefeeddeadbeef;
+ const kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
long rc;
rc = syscall(__NR_seccomp, -1L, -1L, addr);
- printf("seccomp(%#x /* SECCOMP_SET_MODE_??? */, %u, %#lx)"
- " = %ld %s (%m)\n", -1, -1, addr, rc, errno2name());
+ printf("seccomp(%#x /* SECCOMP_SET_MODE_??? */, %u, %#llx)"
+ " = %s\n", -1, -1, (unsigned long long) addr, sprintrc(rc));
fflush(stdout);
rc = syscall(__NR_seccomp, 0, 0, 0);
if (rc) {
- printf("seccomp(SECCOMP_SET_MODE_STRICT, 0, NULL)"
- " = %ld %s (%m)\n", rc, errno2name());
+ printf("seccomp(SECCOMP_SET_MODE_STRICT, 0, NULL) = %s\n",
+ sprintrc(rc));
fflush(stdout);
rc = 0;
} else {
diff --git a/tests/semop.c b/tests/semop.c
index f9b7444..a2ff263 100644
--- a/tests/semop.c
+++ b/tests/semop.c
@@ -92,8 +92,8 @@
id, sem_b + 1, ts + 1, sprintrc(rc));
rc = semtimedop(bogus_semid, sem_b2, 2, ts);
- printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, {%jd, %jd}) = "
- "%s\n",
+ printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, "
+ "{tv_sec=%jd, tv_nsec=%jd}) = %s\n",
bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
@@ -110,7 +110,8 @@
sem_b->sem_op = -1;
if (semtimedop(id, sem_b, 1, ts))
perror_msg_and_skip("semtimedop, -1");
- printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, {%jd, %jd}) = 0\n", id,
+ printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, "
+ "{tv_sec=%jd, tv_nsec=%jd}) = 0\n", id,
(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec);
puts("+++ exited with 0 +++");
diff --git a/tests/sendfile.c b/tests/sendfile.c
index 61f9212..23f096b 100644
--- a/tests/sendfile.c
+++ b/tests/sendfile.c
@@ -107,7 +107,7 @@
if (p_off != p) {
uint64_t *p_off64 = (uint64_t *) p_off;
- *p_off64 = 0xcafef00dfacefeed;
+ *p_off64 = 0xcafef00dfacefeedULL;
assert(syscall(__NR_sendfile, sv[1], reg_in, p_off64, 1) == -1);
printf("sendfile(%d, %d, [14627392582579060461], 1)"
" = -1 EINVAL (%m)\n", sv[1], reg_in);
diff --git a/tests/sendfile64.c b/tests/sendfile64.c
index f757963..7208c30 100644
--- a/tests/sendfile64.c
+++ b/tests/sendfile64.c
@@ -97,7 +97,7 @@
(unsigned long) stb.st_size + 1,
(unsigned long) blen);
- *p_off = 0xcafef00dfacefeed;
+ *p_off = 0xcafef00dfacefeedULL;
assert(syscall(__NR_sendfile64, sv[1], reg_in, p_off, 1) == -1);
printf("sendfile64(%d, %d, [14627392582579060461], 1)"
" = -1 EINVAL (%m)\n", sv[1], reg_in);
diff --git a/tests/set_mempolicy.c b/tests/set_mempolicy.c
index 3802eaf..f3261a0 100644
--- a/tests/set_mempolicy.c
+++ b/tests/set_mempolicy.c
@@ -126,8 +126,8 @@
perror_msg_and_skip("set_mempolicy");
puts("set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0");
- const unsigned long *nodemask = (void *) 0xfacefeedfffffffe;
- const unsigned long maxnode = (unsigned long) 0xcafef00dbadc0ded;
+ const unsigned long *nodemask = (void *) 0xfacefeedfffffffeULL;
+ const unsigned long maxnode = (unsigned long) 0xcafef00dbadc0dedULL;
long rc = syscall(__NR_set_mempolicy, 1, nodemask, maxnode);
printf("set_mempolicy(MPOL_PREFERRED, %p, %lu) = %s\n",
nodemask, maxnode, sprintrc(rc));
diff --git a/tests/setfsugid.c b/tests/setfsugid.c
index 5b8f4fd..79ba34d 100644
--- a/tests/setfsugid.c
+++ b/tests/setfsugid.c
@@ -30,15 +30,24 @@
#include <stdio.h>
#include <unistd.h>
+void
+printuid(unsigned UGID_TYPE id)
+{
+ if (id == (unsigned UGID_TYPE) -1U)
+ printf("-1");
+ else
+ printf("%u", id);
+}
+
int
main(void)
{
unsigned int ugid = GETUGID;
- const long tests[] = {
+ const kernel_ulong_t tests[] = {
ugid,
0xffff0000U | ugid,
- (unsigned long) 0xffffffff00000000ULL | ugid,
+ (kernel_ulong_t) 0xffffffff00000000ULL | ugid,
0xffffU,
-1U,
-1L,
@@ -54,7 +63,9 @@
unsigned int rc;
rc = syscall(SYSCALL_NR, tests[i]);
- printf("%s(%u) = %u\n", SYSCALL_NAME, num, rc);
+ printf("%s(", SYSCALL_NAME);
+ printuid(num);
+ printf(") = %u\n", rc);
rc = syscall(SYSCALL_NR, ugid);
printf("%s(%u) = %u\n", SYSCALL_NAME, ugid, rc);
diff --git a/tests/setgroups.c b/tests/setgroups.c
index 5068ff4..1ec8333 100644
--- a/tests/setgroups.c
+++ b/tests/setgroups.c
@@ -57,9 +57,20 @@
# include <stdio.h>
# include <unistd.h>
+void
+printuid(GID_TYPE id)
+{
+ if (id == (GID_TYPE) -1U)
+ printf("-1");
+ else
+ printf("%u", id);
+}
+
int
main(void)
{
+ const char *errstr;
+
/* check how the first argument is decoded */
long rc = syscall(SYSCALL_NR, 0, 0);
printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
@@ -74,10 +85,10 @@
printf("%s(1, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
rc = syscall(SYSCALL_NR, -1U, 0);
- printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
+ printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
rc = syscall(SYSCALL_NR, -1L, 0);
- printf("%s(%u, NULL) = %s\n", SYSCALL_NAME, -1U, sprintrc(rc));
+ printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
/* check how the second argument is decoded */
const GID_TYPE *const g1 = tail_alloc(sizeof(*g1));
@@ -88,8 +99,10 @@
printf("%s(0, []) = %s\n", SYSCALL_NAME, sprintrc(rc));
rc = syscall(SYSCALL_NR, 1, g1);
- printf("%s(1, [%u]) = %s\n",
- SYSCALL_NAME, (unsigned) *g1, sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(1, [", SYSCALL_NAME);
+ printuid(*g1);
+ printf("]) = %s\n", errstr);
rc = syscall(SYSCALL_NR, 1, g1 + 1);
printf("%s(1, %p) = %s\n", SYSCALL_NAME, g1 + 1, sprintrc(rc));
@@ -98,48 +111,71 @@
printf("%s(1, %#lx) = %s\n", SYSCALL_NAME, -1L, sprintrc(rc));
rc = syscall(SYSCALL_NR, 2, g1);
- printf("%s(2, [%u, %p]) = %s\n",
- SYSCALL_NAME, (unsigned) *g1, g1 + 1, sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(2, [", SYSCALL_NAME);
+ printuid(*g1);
+ printf(", %p]) = %s\n", g1 + 1, errstr);
g2[0] = -2;
g2[1] = -3;
rc = syscall(SYSCALL_NR, 2, g2);
- printf("%s(2, [%u, %u]) = %s\n", SYSCALL_NAME,
- (unsigned) g2[0], (unsigned) g2[1], sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(2, [", SYSCALL_NAME);
+ printuid(g2[0]);
+ printf(", ");
+ printuid(g2[1]);
+ printf("]) = %s\n", errstr);
rc = syscall(SYSCALL_NR, 3, g2);
- printf("%s(3, [%u, %u, %p]) = %s\n", SYSCALL_NAME,
- (unsigned) g2[0], (unsigned) g2[1], g2 + 2, sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(3, [", SYSCALL_NAME);
+ printuid(g2[0]);
+ printf(", ");
+ printuid(g2[1]);
+ printf(", %p]) = %s\n", g2 + 2, errstr);
g3[0] = 0;
g3[1] = 1;
rc = syscall(SYSCALL_NR, 3, g3);
- printf("%s(3, [%u, %u%s]) = %s\n", SYSCALL_NAME,
- (unsigned) g3[0], (unsigned) g3[1], rc ? ", ..." : "",
- sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(3, [", SYSCALL_NAME);
+ printuid(g3[0]);
+ printf(", ");
+ printuid(g3[1]);
+ printf(", ...]) = %s\n", errstr);
rc = syscall(SYSCALL_NR, 4, g3);
- printf("%s(4, [%u, %u, ...]) = %s\n", SYSCALL_NAME,
- (unsigned) g3[0], (unsigned) g3[1], sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(4, [", SYSCALL_NAME);
+ printuid(g3[0]);
+ printf(", ");
+ printuid(g3[1]);
+ printf(", ...]) = %s\n", errstr);
rc = sysconf(_SC_NGROUPS_MAX);
const unsigned ngroups_max = rc;
if ((unsigned long) rc == ngroups_max && (int) ngroups_max > 0) {
rc = syscall(SYSCALL_NR, ngroups_max, g3);
- printf("%s(%u, [%u, %u, ...]) = %s\n", SYSCALL_NAME,
- ngroups_max, (unsigned) g3[0], (unsigned) g3[1],
- sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(%d, [", SYSCALL_NAME, ngroups_max);
+ printuid(g3[0]);
+ printf(", ");
+ printuid(g3[1]);
+ printf(", ...]) = %s\n", errstr);
const unsigned long size =
(unsigned long) 0xffffffff00000000ULL | ngroups_max;
rc = syscall(SYSCALL_NR, size, g3);
- printf("%s(%u, [%u, %u, ...]) = %s\n", SYSCALL_NAME,
- ngroups_max, (unsigned) g3[0], (unsigned) g3[1],
- sprintrc(rc));
+ errstr = sprintrc(rc);
+ printf("%s(%d, [", SYSCALL_NAME, ngroups_max);
+ printuid(g3[0]);
+ printf(", ");
+ printuid(g3[1]);
+ printf(", ...]) = %s\n", errstr);
rc = syscall(SYSCALL_NR, ngroups_max + 1, g3);
- printf("%s(%u, %p) = %s\n", SYSCALL_NAME,
+ printf("%s(%d, %p) = %s\n", SYSCALL_NAME,
ngroups_max + 1, g3, sprintrc(rc));
}
diff --git a/tests/sethostname.c b/tests/sethostname.c
index dfa9d1a..e1b2f06 100644
--- a/tests/sethostname.c
+++ b/tests/sethostname.c
@@ -1,3 +1,33 @@
+/*
+ * Check decoding of sethostname syscall.
+ *
+ * Copyright (c) 2016 Fei Jie <[email protected]>
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
#include "tests.h"
#include <asm/unistd.h>
@@ -6,12 +36,37 @@
# include <stdio.h>
# include <unistd.h>
+#ifdef HAVE_LINUX_UTSNAME_H
+# include <linux/utsname.h>
+#endif
+
+#ifndef __NEW_UTS_LEN
+# define __NEW_UTS_LEN 64
+#endif
+
int
main(void)
{
- long rc = syscall(__NR_sethostname, 0, 63);
- printf("sethostname(NULL, 63) = %ld %s (%m)\n",
- rc, errno2name());
+ kernel_ulong_t len;
+ long rc;
+
+ len = __NEW_UTS_LEN;
+ rc = syscall(__NR_sethostname, 0, len);
+ printf("sethostname(NULL, %u) = %s\n",
+ (unsigned) len, sprintrc(rc));
+
+ if (F8ILL_KULONG_MASK) {
+ len |= F8ILL_KULONG_MASK;
+ rc = syscall(__NR_sethostname, 0, len);
+ printf("sethostname(NULL, %u) = %s\n",
+ (unsigned) len, sprintrc(rc));
+ }
+
+ len = __NEW_UTS_LEN + 1;
+ void *const p = tail_alloc(len);
+ rc = syscall(__NR_sethostname, p, len);
+ printf("sethostname(%p, %u) = %s\n",
+ p, (unsigned) len, sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/setns.c b/tests/setns.c
new file mode 100644
index 0000000..54a1531
--- /dev/null
+++ b/tests/setns.c
@@ -0,0 +1,73 @@
+/*
+ * Check decoding of setns syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_setns
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_fd =
+ (kernel_ulong_t) 0xfeedfacedeadc0deULL;
+
+ static struct {
+ kernel_ulong_t val;
+ const char *str;
+ } nstypes[] = {
+ { (kernel_ulong_t) 0xdefaced100000000ULL, "0" },
+ { (kernel_ulong_t) 0xbadc0dedfeedfaceULL,
+ "0xfeedface /* CLONE_NEW??? */" },
+ { (kernel_ulong_t) 0xca75f15702000000ULL, "CLONE_NEWCGROUP" },
+ };
+
+ long rc;
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(nstypes); i++) {
+ rc = syscall(__NR_setns, bogus_fd, nstypes[i].val);
+ printf("setns(%d, %s) = %s\n",
+ (int) bogus_fd, nstypes[i].str, sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_setns");
+
+#endif
diff --git a/tests/setns.test b/tests/setns.test
new file mode 100755
index 0000000..e9a905a
--- /dev/null
+++ b/tests/setns.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of setns syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setrlimit.c b/tests/setrlimit.c
index 95dd898..e93c8e3 100644
--- a/tests/setrlimit.c
+++ b/tests/setrlimit.c
@@ -41,7 +41,7 @@
const struct xlat *xlat;
for (xlat = resources; xlat->str; ++xlat) {
- unsigned long res = 0xfacefeed00000000 | xlat->val;
+ unsigned long res = 0xfacefeed00000000ULL | xlat->val;
long rc = syscall(__NR_setrlimit, res, 0);
printf("setrlimit(%s, NULL) = %s\n", xlat->str, sprintrc(rc));
diff --git a/tests/setugid.c b/tests/setugid.c
index dd6b921..aba277c 100644
--- a/tests/setugid.c
+++ b/tests/setugid.c
@@ -31,13 +31,13 @@
#include <stdio.h>
#include <unistd.h>
-static int
-ugid2int(const unsigned UGID_TYPE ugid)
+void
+printuid(unsigned UGID_TYPE id)
{
- if ((unsigned UGID_TYPE) -1U == ugid)
- return -1;
+ if (id == (unsigned UGID_TYPE) -1U)
+ printf("-1");
else
- return ugid;
+ printf("%u", id);
}
int
@@ -58,22 +58,23 @@
unsigned int i;
for (i = 0; i < ARRAY_SIZE(tests); ++i) {
- const unsigned int num = ugid2int(tests[i]);
+ const unsigned int num = (unsigned UGID_TYPE) tests[i];
long expected;
if (num == ugid)
expected = 0;
- else if (num == -1U)
+ else if ((UGID_TYPE) num == (UGID_TYPE) -1U)
expected = -1;
else
continue;
const long rc = syscall(SYSCALL_NR, tests[i]);
- int saved_errno = errno;
+ const char *errstr = sprintrc(rc);
+
if (rc != expected) {
if (!i && ENOSYS == errno) {
- printf("%s(%u) = -1 ENOSYS (%m)\n",
- SYSCALL_NAME, ugid);
+ printf("%s(%u) = %s\n",
+ SYSCALL_NAME, ugid, errstr);
break;
}
perror_msg_and_fail("%s(%#lx) != %ld",
@@ -81,15 +82,8 @@
}
printf("%s(", SYSCALL_NAME);
- if (num == -1U)
- printf("-1");
- else
- printf("%u", num);
- errno = saved_errno;
- if (expected)
- printf(") = -1 %s (%m)\n", errno2name());
- else
- printf(") = 0\n");
+ printuid(num);
+ printf(") = %s\n", errstr);
}
puts("+++ exited with 0 +++");
diff --git a/tests/sigaction.awk b/tests/sigaction.awk
index 5c6b6d0..9c3a9ed 100644
--- a/tests/sigaction.awk
+++ b/tests/sigaction.awk
@@ -1,6 +1,7 @@
#!/bin/gawk
#
# Copyright (c) 2014-2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016 Elvira Khabirova <[email protected]>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,23 +27,44 @@
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
BEGIN {
- n1[1] = "SIG_IGN, \\[HUP INT\\], SA_RESTORER\\|SA_RESTART, 0x[0-9a-f]+"
- n2[1] = "SIG_IGN, \\[HUP INT\\], SA_RESTART"
+ n1[1][1] = n2[1][1] = "SIG_IGN"
+ n1[1][2] = n2[1][2] = "\\[HUP INT\\]"
+ n1[1][3] = "SA_RESTORER\\|SA_RESTART"
+ n2[1][3] = "SA_RESTART"
+ n1[1][4] = ", sa_restorer=0x[0-9a-f]+"
+ n2[1][4] = ""
- n1[2] = "0x[0-9a-f]+, \\[QUIT TERM\\], SA_RESTORER\\|SA_SIGINFO, 0x[0-9a-f]+"
- n2[2] = "0x[0-9a-f]+, \\[QUIT TERM\\], SA_SIGINFO"
+ n1[2][1] = n2[2][1] = "0x[0-9a-f]+"
+ n1[2][2] = n2[2][2] = "\\[QUIT TERM\\]"
+ n1[2][3] = "SA_RESTORER\\|SA_SIGINFO"
+ n2[2][3] = "SA_SIGINFO"
+ n1[2][4] = ", sa_restorer=0x[0-9a-f]+"
+ n2[2][4] = ""
- n1[3] = "SIG_DFL, \\[\\], SA_RESTORER, 0x[0-9a-f]+"
- n2[3] = "SIG_DFL, \\[\\], 0"
+ n1[3][1] = n2[3][1] = "SIG_DFL"
+ n1[3][2] = n2[3][2] = "\\[\\]"
+ n1[3][3] = "SA_RESTORER"
+ n2[3][3] = "0"
+ n1[3][4] = ", sa_restorer=0x[0-9a-f]+"
+ n2[3][4] = ""
- n1[4] = "SIG_DFL, ~\\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\\], SA_RESTORER, 0x[0-9a-f]+"
- n2[4] = "SIG_DFL, ~\\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\\], 0"
+ n1[4][1] = n2[4][1] = "SIG_DFL"
+ n1[4][2] = n2[4][2] = "~\\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\\]"
+ n1[4][3] = "SA_RESTORER"
+ n2[4][3] = "0"
+ n1[4][4] = ", sa_restorer=0x[0-9a-f]+"
+ n2[4][4] = ""
- o1[1] = o2[1] = "SIG_DFL, \\[\\], 0"
+ o1[1][1] = o2[1][1] = "SIG_DFL"
+ o1[1][2] = o2[1][2] = "\\[\\]"
+ o1[1][3] = o2[1][3] = "0"
+ o1[1][4] = o2[1][4] = ""
for (i = 2; i < 5; i++) {
- o1[i] = n1[i - 1]
- o2[i] = n2[i - 1]
+ for (j = 1; j < 5; j++) {
+ o1[i][j] = n1[i - 1][j]
+ o2[i][j] = n2[i - 1][j]
+ }
}
a1 = "(0x[0-9a-f]+, )?(4|8|16)"
@@ -51,9 +73,18 @@
for (i = 1; i < 5; i++) {
r[i] = "^rt_sigaction\\(SIGUSR2, (" \
- "\\{" n1[i] "\\}, \\{" o1[i] "\\}, " a1 "|" \
- "\\{" n2[i] "\\}, \\{" o2[i] "\\}, " a2 "|" \
- "\\{" n2[i] "\\}, \\{" o2[i] "\\}, " a3 ")\\) = 0$"
+ "\\{sa_handler=" n1[i][1] ", sa_mask=" n1[i][2] \
+ ", sa_flags=" n1[i][3] n1[i][4] "\\}, \\{sa_handler=" \
+ o1[i][1] ", sa_mask=" o1[i][2] ", sa_flags=" o1[i][3] \
+ o1[i][4] "\\}, " a1 "|" \
+ "\\{sa_handler=" n2[i][1] ", sa_mask=" n2[i][2] \
+ ", sa_flags=" n2[i][3] n2[i][4] "\\}, \\{sa_handler=" \
+ o2[i][1] ", sa_mask=" o2[i][2] ", sa_flags=" o2[i][3] \
+ o2[i][4] "\\}, " a2 "|" \
+ "\\{sa_handler=" n2[i][1] ", sa_mask=" n2[i][2] \
+ ", sa_flags=" n2[i][3] n2[i][4] "\\}, \\{sa_handler=" \
+ o2[i][1] ", sa_mask=" o2[i][2] ", sa_flags=" o2[i][3] \
+ o2[i][4] "\\}, " a3 ")\\) = 0$"
}
s[5] = "+++ exited with 0 +++"
diff --git a/tests/socketcall.c b/tests/socketcall.c
index d2ec959..4fe1ea3 100644
--- a/tests/socketcall.c
+++ b/tests/socketcall.c
@@ -55,7 +55,7 @@
test_socketcall(const int i, const void *const addr)
{
const unsigned long call =
- (unsigned long) 0xfacefeed00000000 | (unsigned int) i;
+ (unsigned long) 0xfacefeed00000000ULL | (unsigned int) i;
long rc = syscall(__NR_socketcall, call, addr);
diff --git a/tests/splice.c b/tests/splice.c
index 5a89910..b6f2525 100644
--- a/tests/splice.c
+++ b/tests/splice.c
@@ -38,12 +38,12 @@
int
main(void)
{
- const long int fd_in = (long int) 0xdeadbeefffffffff;
- const long int fd_out = (long int) 0xdeadbeeffffffffe;
+ const long int fd_in = (long int) 0xdeadbeefffffffffULL;
+ const long int fd_out = (long int) 0xdeadbeeffffffffeULL;
long long int *const off_in = tail_alloc(sizeof(*off_in));
long long int *const off_out = tail_alloc(sizeof(*off_out));
- *off_in = 0xdeadbef1facefed1;
- *off_out = 0xdeadbef2facefed2;
+ *off_in = 0xdeadbef1facefed1ULL;
+ *off_out = 0xdeadbef2facefed2ULL;
const size_t len = (size_t) 0xdeadbef3facefed3ULL;
const unsigned int flags = 15;
diff --git a/tests/sprintrc.c b/tests/sprintrc.c
index a573a27..7423afb 100644
--- a/tests/sprintrc.c
+++ b/tests/sprintrc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016 Eugene Syromiatnikov <[email protected]>
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/stat.c b/tests/stat.c
index df6cab1..d4ca7b0 100644
--- a/tests/stat.c
+++ b/tests/stat.c
@@ -32,7 +32,7 @@
# define TEST_SYSCALL_NR __NR_stat
# define TEST_SYSCALL_STR "stat"
-# define SAMPLE_SIZE ((kernel_ulong_t) 43147718418)
+# define SAMPLE_SIZE ((libc_off_t) (kernel_ulong_t) 43147718418ULL)
# include "lstatx.c"
#else
diff --git a/tests/stat64.c b/tests/stat64.c
index 4c2101b..782de33 100644
--- a/tests/stat64.c
+++ b/tests/stat64.c
@@ -35,7 +35,6 @@
# define STRUCT_STAT struct stat64
# define STRUCT_STAT_STR "struct stat64"
# define STRUCT_STAT_IS_STAT64 1
-# define SAMPLE_SIZE ((libc_off_t) 43147718418)
# include "lstatx.c"
#else
diff --git a/tests/statfs.expected b/tests/statfs.expected
index 0fa4510..11e9f0b 100644
--- a/tests/statfs.expected
+++ b/tests/statfs.expected
@@ -1 +1 @@
-statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{[0-9]+, [0-9]+\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=ST_VALID(\|ST_[A-Z]+)*)?\}\) += 0
+statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{val=\[[0-9]+, [0-9]+\]\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=ST_VALID(\|ST_[A-Z]+)*)?\}\) += 0
diff --git a/tests/statx.sh b/tests/statx.sh
index 830e5fc..a630193 100755
--- a/tests/statx.sh
+++ b/tests/statx.sh
@@ -3,4 +3,4 @@
# Check decoding of stat family syscalls.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -P $NAME.sample
+run_strace_match_diff -v -P $NAME.sample -P /dev/full -a32
diff --git a/tests/strace-C.expected b/tests/strace-C.expected
new file mode 100644
index 0000000..832af1f
--- /dev/null
+++ b/tests/strace-C.expected
@@ -0,0 +1,3 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0
+\+\+\+ exited with 0 \+\+\+
+[ ]*[0-9][0-9]*[.][0-9][0-9]* *0[.]0[0-9]* *[0-9][0-9]* *1 *nanosleep
diff --git a/tests/strace-C.test b/tests/strace-C.test
new file mode 100755
index 0000000..ccca9a0
--- /dev/null
+++ b/tests/strace-C.test
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Check -C option.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ./sleep 0
+run_strace -a24 -C -enanosleep ./sleep 1
+match_grep
diff --git a/tests/strace-T.expected b/tests/strace-T.expected
index 809b7ea..1ea0204 100644
--- a/tests/strace-T.expected
+++ b/tests/strace-T.expected
@@ -1 +1 @@
-nanosleep\(\{1, 0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests/strace-V.test b/tests/strace-V.test
index d441371..9a051e0 100755
--- a/tests/strace-V.test
+++ b/tests/strace-V.test
@@ -1,9 +1,11 @@
#!/bin/sh
# Check -V option.
-
. "${srcdir=.}/init.sh"
+run_prog_skip_if_failed date +%Y > /dev/null
+year="$(date +%Y)"
+
run_strace -V > "$LOG"
getval()
@@ -11,7 +13,12 @@
sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' ../config.h
}
-printf "%s -- version %s\n" "$(getval PACKAGE_NAME)" "$(getval VERSION)" > "$EXP"
+cat > "$EXP" << __EOF__
+$(getval PACKAGE_NAME) -- version $(getval PACKAGE_VERSION)
+Copyright (C) 1991-$year The strace developers <$(getval PACKAGE_URL)>.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+__EOF__
match_diff "$EXP" "$LOG"
rm -f "$EXP"
diff --git a/tests/strace-tt.test b/tests/strace-tt.test
index 237646d..3f80001 100755
--- a/tests/strace-tt.test
+++ b/tests/strace-tt.test
@@ -4,17 +4,25 @@
. "${srcdir=.}/init.sh"
-run_prog_skip_if_failed date +%T > /dev/null
+run_prog_skip_if_failed date +%s > "$LOG"
+run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
run_prog ./sleep 0
-t0="$(date +%T)"
+s0="$(date +%s)"
run_strace -tt -eexecve $args
-t1="$(date +%T)"
+s1="$(date +%s)"
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
-($t0|$t1)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+s="$s0"
+t_reg=
+while [ "$s" -le "$s1" ]; do
+ t="$(date +%T --date "@$s")"
+ [ -z "$t_reg" ] && t_reg="$t" || t_reg="$t_reg|$t"
+ s=$(($s + 1))
+done
+
+cat > "$EXP" << __EOF__
+($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
+rm -f "$EXP"
diff --git a/tests/strace-ttt.test b/tests/strace-ttt.test
index 8b0032a..4439715 100755
--- a/tests/strace-ttt.test
+++ b/tests/strace-ttt.test
@@ -7,14 +7,20 @@
run_prog_skip_if_failed date +%s > /dev/null
run_prog ./sleep 0
-t0="$(date +%s)"
+s0="$(date +%s)"
run_strace -ttt -eexecve $args
-t1="$(date +%s)"
+s1="$(date +%s)"
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
-($t0|$t1)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+s="$s0"
+t_reg=
+while [ "$s" -le "$s1" ]; do
+ [ -z "$t_reg" ] && t_reg="$s" || t_reg="$t_reg|$s"
+ s=$(($s + 1))
+done
+
+cat > "$EXP" << __EOF__
+($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
+rm -f "$EXP"
diff --git a/tests/strace.supp b/tests/strace.supp
new file mode 100644
index 0000000..578b0a2
--- /dev/null
+++ b/tests/strace.supp
@@ -0,0 +1,7 @@
+{
+ get_cpuset_size: sched_getaffinity with NULL mask
+ Memcheck:Param
+ sched_getaffinity(mask)
+ fun:sched_getaffinity*
+ fun:get_cpuset_size
+}
diff --git a/tests/struct_flock.c b/tests/struct_flock.c
index aae71a0..34cf58e 100644
--- a/tests/struct_flock.c
+++ b/tests/struct_flock.c
@@ -45,7 +45,7 @@
static long
invoke_test_syscall(const unsigned int cmd, void *const p)
{
- const unsigned long op = (unsigned long) 0xffffffff00000000 | cmd;
+ const unsigned long op = (unsigned long) 0xffffffff00000000ULL | cmd;
return syscall(TEST_SYSCALL_NR, 0, op, (unsigned long) p);
}
@@ -55,8 +55,8 @@
{
struct_kernel_flock fl = {
.l_type = F_RDLCK,
- .l_start = (TYPEOF_FLOCK_OFF_T) 0xdefaced1facefeed,
- .l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00d
+ .l_start = (TYPEOF_FLOCK_OFF_T) 0xdefaced1facefeedULL,
+ .l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL
};
invoke_test_syscall(cmd, &fl);
printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
diff --git a/tests/swap.c b/tests/swap.c
index ed8cec8..77b2505 100644
--- a/tests/swap.c
+++ b/tests/swap.c
@@ -23,7 +23,7 @@
rc = syscall(__NR_swapon, sample, SWAP_FLAG_PREFER);
printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
- sample, "SWAP_FLAG_PREFER", rc, errno2name());
+ sample, "SWAP_FLAG_PREFER|0", rc, errno2name());
rc = syscall(__NR_swapon, sample, SWAP_FLAG_PREFER | 42);
printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
diff --git a/tests/symlinkat.c b/tests/symlinkat.c
index d0116d0..6e5d617 100644
--- a/tests/symlinkat.c
+++ b/tests/symlinkat.c
@@ -9,7 +9,7 @@
int
main(void)
{
- const long int fd = (long int) 0xdeadbeefffffffff;
+ const long int fd = (long int) 0xdeadbeefffffffffULL;
static const char oldpath[] = "symlink_old";
static const char newpath[] = "symlink_new";
diff --git a/tests/sync_file_range.c b/tests/sync_file_range.c
index aadef68..67d31a8 100644
--- a/tests/sync_file_range.c
+++ b/tests/sync_file_range.c
@@ -39,8 +39,8 @@
main(void)
{
const int fd = -1;
- const off64_t offset = 0xdeadbeefbadc0ded;
- const off64_t nbytes = 0xfacefeedcafef00d;
+ const off64_t offset = 0xdeadbeefbadc0dedULL;
+ const off64_t nbytes = 0xfacefeedcafef00dULL;
const unsigned int flags = -1;
int rc = sync_file_range(fd, offset, nbytes, flags);
diff --git a/tests/syslog.c b/tests/syslog.c
index d4d4a7b..5df96cb 100644
--- a/tests/syslog.c
+++ b/tests/syslog.c
@@ -11,7 +11,7 @@
int
main(void)
{
- const long addr = (long) 0xfacefeeddeadbeef;
+ const long addr = (long) 0xfacefeeddeadbeefULL;
int rc = syscall(__NR_syslog, SYSLOG_ACTION_READ, addr, -1);
printf("syslog(SYSLOG_ACTION_READ, %#lx, -1) = %d %s (%m)\n",
addr, rc, errno2name());
diff --git a/tests/tee.c b/tests/tee.c
index eb562c7..66d1c94 100644
--- a/tests/tee.c
+++ b/tests/tee.c
@@ -38,8 +38,8 @@
int
main(void)
{
- const long int fd_in = (long int) 0xdeadbeefffffffff;
- const long int fd_out = (long int) 0xdeadbeeffffffffe;
+ const long int fd_in = (long int) 0xdeadbeefffffffffULL;
+ const long int fd_out = (long int) 0xdeadbeeffffffffeULL;
const size_t len = (size_t) 0xdeadbef3facefed3ULL;
const unsigned int flags = 15;
diff --git a/tests/tests.h b/tests/tests.h
index f3ddc85..d4294de 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -33,6 +33,7 @@
# endif
# include <sys/types.h>
+# include "kernel_types.h"
# include "gcc_compat.h"
/* Tests of "strace -v" are expected to define VERBOSE to 1. */
@@ -67,6 +68,16 @@
void *tail_memdup(const void *, const size_t)
ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((2));
+/*
+ * Fill memory (pointed by ptr, having size bytes) with different bytes (with
+ * values starting with start and resetting every period) in order to catch
+ * sign, byte order and/or alignment errors.
+ */
+void fill_memory_ex(void *ptr, size_t size, unsigned char start,
+ unsigned char period);
+/* Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
+void fill_memory(void *ptr, size_t size);
+
/* Close stdin, move stdout to a non-standard descriptor, and print. */
void tprintf(const char *, ...)
ATTRIBUTE_FORMAT((printf, 1, 2));
@@ -127,6 +138,25 @@
int recv_mmsg(int, struct mmsghdr *, unsigned int, unsigned int, struct timespec *);
int send_mmsg(int, struct mmsghdr *, unsigned int, unsigned int);
+/* Create a pipe with maximized descriptor numbers. */
+void pipe_maxfd(int pipefd[2]);
+
+#define F8ILL_KULONG_SUPPORTED (sizeof(void *) < sizeof(kernel_ulong_t))
+#define F8ILL_KULONG_MASK ((kernel_ulong_t) 0xffffffff00000000ULL)
+
+/*
+ * For 64-bit kernel_ulong_t and 32-bit pointer,
+ * return a kernel_ulong_t value by filling higher bits.
+ * For other architertures, return the original pointer.
+ */
+static inline kernel_ulong_t
+f8ill_ptr_to_kulong(const void *const ptr)
+{
+ const unsigned long uptr = (unsigned long) ptr;
+ return F8ILL_KULONG_SUPPORTED
+ ? F8ILL_KULONG_MASK | uptr : (kernel_ulong_t) uptr;
+}
+
# define ARRAY_SIZE(arg) ((unsigned int) (sizeof(arg) / sizeof((arg)[0])))
# define LENGTH_OF(arg) ((unsigned int) sizeof(arg) - 1)
@@ -169,4 +199,15 @@
# define PRI__u64 PRI__64"u"
# define PRI__x64 PRI__64"x"
+# if WORDS_BIGENDIAN
+# define LL_PAIR(HI, LO) (HI), (LO)
+# else
+# define LL_PAIR(HI, LO) (LO), (HI)
+# endif
+# define LL_VAL_TO_PAIR(llval) LL_PAIR((long) ((llval) >> 32), (long) (llval))
+
+# define _STR(_arg) #_arg
+# define ARG_STR(_arg) (_arg), #_arg
+# define ARG_ULL_STR(_arg) _arg##ULL, #_arg
+
#endif /* !STRACE_TESTS_H */
diff --git a/tests/threads-execve.c b/tests/threads-execve.c
new file mode 100644
index 0000000..853645f
--- /dev/null
+++ b/tests/threads-execve.c
@@ -0,0 +1,246 @@
+/*
+ * Check decoding of threads when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+#include <errno.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+static pid_t leader;
+static pid_t tid;
+
+static void
+handler(int signo)
+{
+}
+
+static unsigned int sigsetsize;
+static long
+k_sigsuspend(const sigset_t *const set)
+{
+ return syscall(__NR_rt_sigsuspend, set, sigsetsize);
+}
+
+static pid_t
+k_gettid(void)
+{
+ return syscall(__NR_gettid);
+}
+
+static void
+get_sigsetsize(void)
+{
+ static const struct sigaction sa = { .sa_handler = handler };
+ if (sigaction(SIGUSR1, &sa, NULL))
+ perror_msg_and_fail("sigaction");
+
+ sigset_t mask;
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGUSR1);
+ if (sigprocmask(SIG_BLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ raise(SIGUSR1);
+
+ sigemptyset(&mask);
+ for (sigsetsize = sizeof(mask) / sizeof(long);
+ sigsetsize; sigsetsize >>= 1) {
+ long rc = k_sigsuspend(&mask);
+ if (!rc)
+ error_msg_and_fail("rt_sigsuspend");
+ if (EINTR == errno)
+ break;
+ printf("%-5d rt_sigsuspend(%p, %u) = %s\n",
+ leader, &mask, sigsetsize, sprintrc(rc));
+ }
+ if (!sigsetsize)
+ perror_msg_and_fail("rt_sigsuspend");
+ printf("%-5d rt_sigsuspend([], %u) = ? ERESTARTNOHAND"
+ " (To be restarted if no handler)\n", leader, sigsetsize);
+}
+
+enum {
+ ACTION_exit = 0,
+ ACTION_rt_sigsuspend,
+ ACTION_nanosleep,
+ NUMBER_OF_ACTIONS
+};
+
+static const unsigned int NUMBER_OF_ITERATIONS = 1;
+static unsigned int action;
+static int fds[2];
+
+static unsigned int
+arglen(char **args)
+{
+ char **p;
+
+ for (p = args; *p; ++p)
+ ;
+
+ return p - args;
+}
+
+static void *
+thread(void *arg)
+{
+ tid = k_gettid();
+
+ static char buf[sizeof(action) * 3];
+ sprintf(buf, "%u", action + 1);
+
+ char **argv = arg;
+ argv[2] = buf;
+
+ if (read(fds[0], fds, sizeof(fds[0])))
+ perror_msg_and_fail("execve");
+
+ struct timespec ts = { .tv_nsec = 100000000 };
+ (void) clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL);
+
+ ts.tv_nsec = 12345;
+ printf("%-5d nanosleep({tv_sec=0, tv_nsec=%u}, NULL) = 0\n",
+ tid, (unsigned int) ts.tv_nsec);
+
+ switch (action % NUMBER_OF_ACTIONS) {
+ case ACTION_exit:
+ printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ ", [/* %u vars */] <pid changed to %u ...>\n",
+ tid, argv[0], argv[0], argv[1], argv[2],
+ arglen(environ), leader);
+ break;
+ case ACTION_rt_sigsuspend:
+ printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ ", [/* %u vars */] <unfinished ...>\n"
+ "%-5d <... rt_sigsuspend resumed>) = ?\n",
+ tid, argv[0], argv[0], argv[1], argv[2],
+ arglen(environ),
+ leader);
+ break;
+ case ACTION_nanosleep:
+ printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ ", [/* %u vars */] <unfinished ...>\n"
+ "%-5d <... nanosleep resumed> <unfinished ...>)"
+ " = ?\n",
+ tid, argv[0], argv[0], argv[1], argv[2],
+ arglen(environ),
+ leader);
+ break;
+ }
+
+ printf("%-5d +++ superseded by execve in pid %u +++\n"
+ "%-5d <... execve resumed> ) = 0\n",
+ leader, tid,
+ leader);
+
+ (void) nanosleep(&ts, NULL);
+ execve(argv[0], argv, environ);
+ perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+ setvbuf(stdout, NULL, _IONBF, 0);
+ leader = getpid();
+
+ if (ac < 3) {
+ struct timespec ts = { .tv_nsec = 1 };
+ if (clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL))
+ perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
+
+ printf("%-5d execve(\"%s\", [\"%s\"], [/* %u vars */]) = 0\n",
+ leader, av[0], av[0], arglen(environ));
+
+ get_sigsetsize();
+ static char buf[sizeof(sigsetsize) * 3];
+ sprintf(buf, "%u", sigsetsize);
+
+ char *argv[] = { av[0], buf, (char *) "0", NULL };
+ printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ ", [/* %u vars */]) = 0\n",
+ leader, argv[0], argv[0], argv[1], argv[2],
+ arglen(environ));
+ execve(argv[0], argv, environ);
+ perror_msg_and_fail("execve");
+ }
+
+ sigsetsize = atoi(av[1]);
+ action = atoi(av[2]);
+
+ if (action >= NUMBER_OF_ACTIONS * NUMBER_OF_ITERATIONS) {
+ printf("%-5d +++ exited with 0 +++\n", leader);
+ return 0;
+ }
+
+ if (pipe(fds))
+ perror_msg_and_fail("pipe");
+
+ pthread_t t;
+ errno = pthread_create(&t, NULL, thread, av);
+ if (errno)
+ perror_msg_and_fail("pthread_create");
+
+ struct timespec ts = { .tv_sec = 123 };
+ sigset_t mask;
+ sigemptyset(&mask);
+
+ static char leader_str[sizeof(leader) * 3];
+ int leader_str_len =
+ snprintf(leader_str, sizeof(leader_str), "%-5d", leader);
+
+ switch (action % NUMBER_OF_ACTIONS) {
+ case ACTION_exit:
+ printf("%s exit(42)%*s= ?\n", leader_str,
+ (int) sizeof(leader_str) - leader_str_len, " ");
+ close(fds[1]);
+ (void) syscall(__NR_exit, 42);
+ break;
+ case ACTION_rt_sigsuspend:
+ printf("%s rt_sigsuspend([], %u <unfinished ...>\n",
+ leader_str, sigsetsize);
+ close(fds[1]);
+ (void) k_sigsuspend(&mask);
+ break;
+ case ACTION_nanosleep:
+ printf("%s nanosleep({tv_sec=%u, tv_nsec=0}"
+ ", <unfinished ...>\n",
+ leader_str, (unsigned int) ts.tv_sec);
+ close(fds[1]);
+ (void) nanosleep(&ts, 0);
+ break;
+ }
+
+ return 1;
+}
diff --git a/tests/threads-execve.test b/tests/threads-execve.test
new file mode 100755
index 0000000..4a77146
--- /dev/null
+++ b/tests/threads-execve.test
@@ -0,0 +1,50 @@
+#!/bin/sh
+#
+# Check decoding of threads when a non-leader thread invokes execve.
+#
+# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+. "${srcdir=.}/init.sh"
+
+# Check that PTRACE_EVENT_EXEC support in kernel is good enough.
+# The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
+require_min_kernel_version_or_skip 3.1
+
+check_prog diff
+run_prog > /dev/null
+
+set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $args
+
+# Due to probabilistic nature of the test, try it several times.
+i=0
+while [ $i -le 9 ]; do
+ run_strace "$@" > "$EXP"
+ diff -- "$EXP" "$LOG" || continue
+ rm -f "$EXP"
+ exit 0
+done
+
+fail_ "$STRACE $* output mismatch"
diff --git a/tests/timer_create.c b/tests/timer_create.c
index 6f98f36..1a25962 100644
--- a/tests/timer_create.c
+++ b/tests/timer_create.c
@@ -49,13 +49,13 @@
struct_sigevent sev = {
.sigev_notify = 0xdefaced,
.sigev_signo = 0xfacefeed,
- .sigev_value.sival_ptr = (unsigned long) 0xdeadbeefbadc0ded
+ .sigev_value.sival_ptr = (unsigned long) 0xdeadbeefbadc0dedULL
};
syscall(__NR_timer_create, CLOCK_REALTIME, &sev, NULL);
- printf("timer_create(CLOCK_REALTIME, {sigev_value={int=%d, ptr=%#lx}"
- ", sigev_signo=%u, sigev_notify=%#x /* SIGEV_??? */}"
- ", NULL) = -1 %s (%m)\n",
+ printf("timer_create(CLOCK_REALTIME, {sigev_value={sival_int=%d, "
+ "sival_ptr=%#lx}, sigev_signo=%u, "
+ "sigev_notify=%#x /* SIGEV_??? */}, NULL) = -1 %s (%m)\n",
sev.sigev_value.sival_int,
sev.sigev_value.sival_ptr,
sev.sigev_signo, sev.sigev_notify,
@@ -64,8 +64,9 @@
sev.sigev_notify = SIGEV_NONE;
if (syscall(__NR_timer_create, CLOCK_REALTIME, &sev, &tid[0]))
perror_msg_and_skip("timer_create CLOCK_REALTIME");
- printf("timer_create(CLOCK_REALTIME, {sigev_value={int=%d, ptr=%#lx}"
- ", sigev_signo=%u, sigev_notify=SIGEV_NONE}, [%d]) = 0\n",
+ printf("timer_create(CLOCK_REALTIME, {sigev_value={sival_int=%d, "
+ "sival_ptr=%#lx}, sigev_signo=%u, sigev_notify=SIGEV_NONE}, "
+ "[%d]) = 0\n",
sev.sigev_value.sival_int,
sev.sigev_value.sival_ptr,
sev.sigev_signo, tid[0]);
@@ -74,19 +75,21 @@
sev.sigev_signo = SIGALRM;
if (syscall(__NR_timer_create, CLOCK_MONOTONIC, &sev, &tid[1]))
perror_msg_and_skip("timer_create CLOCK_MONOTONIC");
- printf("timer_create(CLOCK_MONOTONIC, {sigev_value={int=%d, ptr=%#lx}"
- ", sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}"
- ", [%d]) = 0\n",
+ printf("timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=%d, "
+ "sival_ptr=%#lx}, sigev_signo=SIGALRM, "
+ "sigev_notify=SIGEV_SIGNAL}, [%d]) = 0\n",
sev.sigev_value.sival_int,
sev.sigev_value.sival_ptr, tid[1]);
sev.sigev_notify = SIGEV_THREAD;
- sev.sigev_un.sigev_thread.function = (unsigned long) 0xdeadbeefbadc0ded;
- sev.sigev_un.sigev_thread.attribute = (unsigned long) 0xcafef00dfacefeed;
+ sev.sigev_un.sigev_thread.function =
+ (unsigned long) 0xdeadbeefbadc0dedULL;
+ sev.sigev_un.sigev_thread.attribute =
+ (unsigned long) 0xcafef00dfacefeedULL;
if (syscall(__NR_timer_create, CLOCK_REALTIME, &sev, &tid[2]))
perror_msg_and_skip("timer_create CLOCK_REALTIME");
- printf("timer_create(CLOCK_REALTIME, {sigev_value={int=%d, ptr=%#lx}"
- ", sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD"
+ printf("timer_create(CLOCK_REALTIME, {sigev_value={sival_int=%d, "
+ "sival_ptr=%#lx}, sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD"
", sigev_notify_function=%#lx, sigev_notify_attributes=%#lx}"
", [%d]) = 0\n",
sev.sigev_value.sival_int,
@@ -102,9 +105,9 @@
sev.sigev_un.tid = getpid();
if (syscall(__NR_timer_create, CLOCK_MONOTONIC, &sev, &tid[3]))
perror_msg_and_skip("timer_create CLOCK_MONOTONIC");
- printf("timer_create(CLOCK_MONOTONIC, {sigev_value={int=%d, ptr=%#lx}"
- ", sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD_ID"
- ", sigev_notify_thread_id=%d}"
+ printf("timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=%d, "
+ "sival_ptr=%#lx}, sigev_signo=SIGALRM, "
+ "sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=%d}"
", [%d]) = 0\n",
sev.sigev_value.sival_int,
sev.sigev_value.sival_ptr,
diff --git a/tests/timer_xettime.c b/tests/timer_xettime.c
index 877f717..9eabbf0 100644
--- a/tests/timer_xettime.c
+++ b/tests/timer_xettime.c
@@ -75,8 +75,10 @@
if (syscall(__NR_timer_settime, tid, 0, &new.its, &old.its))
perror_msg_and_skip("timer_settime");
printf("timer_settime(%d, 0"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
+ ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
+ ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+ ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
+ ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
") = 0\n",
tid,
(intmax_t) new.its.it_interval.tv_sec,
@@ -91,8 +93,8 @@
if (syscall(__NR_timer_gettime, tid, &old.its))
perror_msg_and_skip("timer_gettime");
printf("timer_gettime(%d"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ") = 0\n",
+ ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
+ ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
tid,
(intmax_t) old.its.it_interval.tv_sec,
(intmax_t) old.its.it_interval.tv_nsec,
diff --git a/tests/timerfd_xettime.c b/tests/timerfd_xettime.c
index 2742ec2..ca7124e 100644
--- a/tests/timerfd_xettime.c
+++ b/tests/timerfd_xettime.c
@@ -67,8 +67,10 @@
if (syscall(__NR_timerfd_settime, 0, 0, &new.its, &old.its))
perror_msg_and_skip("timerfd_settime");
printf("timerfd_settime(0, 0"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
+ ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
+ ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+ ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
+ ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
") = 0\n",
(intmax_t) new.its.it_interval.tv_sec,
(intmax_t) new.its.it_interval.tv_nsec,
@@ -82,8 +84,8 @@
if (syscall(__NR_timerfd_gettime, 0, &old.its))
perror_msg_and_skip("timerfd_gettime");
printf("timerfd_gettime(0"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ") = 0\n",
+ ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
+ ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
(intmax_t) old.its.it_interval.tv_sec,
(intmax_t) old.its.it_interval.tv_nsec,
(intmax_t) old.its.it_value.tv_sec,
diff --git a/tests/times.c b/tests/times.c
index 18b209b..2c7b95e 100644
--- a/tests/times.c
+++ b/tests/times.c
@@ -53,7 +53,7 @@
{
struct timespec ts;
volatile int dummy = 0;
- int i;
+ int i = 0;
pid_t pid = fork();
if (pid < 0)
@@ -67,6 +67,9 @@
if (ts.tv_sec || ts.tv_nsec >= cputime_limit)
break;
+ if (i && !(ts.tv_sec || ts.tv_nsec))
+ error_msg_and_skip("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {0, 0})");
+
for (i = 0; i < NUM_USER_ITERS; ++i)
++dummy;
}
diff --git a/tests/truncate.c b/tests/truncate.c
index 3f16aef..d952933 100644
--- a/tests/truncate.c
+++ b/tests/truncate.c
@@ -32,7 +32,6 @@
# include <stdio.h>
# include <unistd.h>
-# include "kernel_types.h"
int
main(void)
diff --git a/tests/truncate64.c b/tests/truncate64.c
index c4a524d..8c29ea8 100644
--- a/tests/truncate64.c
+++ b/tests/truncate64.c
@@ -38,7 +38,7 @@
{
static const char fname[] = "truncate64\nfilename";
static const char qname[] = "truncate64\\nfilename";
- const off_t len = 0xdefaceddeadbeef;
+ const off_t len = 0xdefaceddeadbeefULL;
int rc = truncate(fname, len);
printf("truncate64(\"%s\", %llu) = %d %s (%m)\n",
diff --git a/tests/umode_t.c b/tests/umode_t.c
index 7ab27dc..5041638 100644
--- a/tests/umode_t.c
+++ b/tests/umode_t.c
@@ -43,7 +43,7 @@
static void
test_syscall(unsigned short mode)
{
- unsigned long lmode = (unsigned long) 0xffffffffffff0000 | mode;
+ unsigned long lmode = (unsigned long) 0xffffffffffff0000ULL | mode;
long rc = syscall(TEST_SYSCALL_NR, TEST_SYSCALL_PREFIX_ARGS
sample, lmode);
diff --git a/tests/umoven-illptr.c b/tests/umoven-illptr.c
new file mode 100644
index 0000000..4deee16
--- /dev/null
+++ b/tests/umoven-illptr.c
@@ -0,0 +1,57 @@
+/*
+ * Check decoding of invalid pointer by umoven.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+ if (F8ILL_KULONG_SUPPORTED) {
+ struct timespec ts = { 0, 0 };
+ const void *const p = tail_memdup(&ts, sizeof(ts));
+
+ long rc = syscall(__NR_nanosleep, p, NULL);
+ printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n",
+ sprintrc(rc));
+
+ const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
+ rc = syscall(__NR_nanosleep, ill, NULL);
+ printf("nanosleep(%#llx, NULL) = %s\n",
+ (unsigned long long) ill, sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+ } else {
+ return 77;
+ }
+}
diff --git a/tests/umoven-illptr.test b/tests/umoven-illptr.test
new file mode 100755
index 0000000..7b8cb31
--- /dev/null
+++ b/tests/umoven-illptr.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of invalid pointer by umoven.
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests/umovestr-illptr.c b/tests/umovestr-illptr.c
new file mode 100644
index 0000000..dea6885
--- /dev/null
+++ b/tests/umovestr-illptr.c
@@ -0,0 +1,53 @@
+/*
+ * Check decoding of invalid pointer by umovestr.
+ *
+ * Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+ if (F8ILL_KULONG_SUPPORTED) {
+ const void *const p = tail_memdup(".", 2);
+ long rc = syscall(__NR_chdir, p);
+ printf("chdir(\".\") = %s\n", sprintrc(rc));
+
+ const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
+ rc = syscall(__NR_chdir, ill);
+ printf("chdir(%#llx) = %s\n",
+ (unsigned long long) ill, sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+ } else {
+ return 77;
+ }
+}
diff --git a/tests/umovestr-illptr.test b/tests/umovestr-illptr.test
new file mode 100755
index 0000000..6f1cc86
--- /dev/null
+++ b/tests/umovestr-illptr.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of invalid pointer by umovestr.
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests/unlinkat.c b/tests/unlinkat.c
index 0b69b03..22c3de3 100644
--- a/tests/unlinkat.c
+++ b/tests/unlinkat.c
@@ -10,7 +10,7 @@
main(void)
{
static const char sample[] = "unlinkat_sample";
- const long fd = (long) 0xdeadbeefffffffff;
+ const long fd = (long) 0xdeadbeefffffffffULL;
long rc = syscall(__NR_unlinkat, fd, sample, 0);
printf("unlinkat(%d, \"%s\", 0) = %ld %s (%m)\n",
diff --git a/tests/unshare.c b/tests/unshare.c
new file mode 100644
index 0000000..5aedde4
--- /dev/null
+++ b/tests/unshare.c
@@ -0,0 +1,80 @@
+/*
+ * Check decoding of unshare syscall.
+ *
+ * Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <asm/unistd.h>
+
+#ifdef __NR_unshare
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ static const kernel_ulong_t bogus_flags =
+ (kernel_ulong_t) 0xbadc0ded0000000fULL;
+
+ static struct {
+ kernel_ulong_t val;
+ const char *str;
+ } unshare_flags[] = {
+ { ARG_STR(0) },
+ { 0xdeadca75,
+ "CLONE_THREAD|CLONE_FS|CLONE_SIGHAND|CLONE_SYSVSEM|"
+ "CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET|CLONE_NEWUSER|"
+ "CLONE_NEWCGROUP|0x80a8c075" },
+ { 0x2000000, "CLONE_NEWCGROUP" },
+ { ARG_STR(0x81f8f0ff) " /* CLONE_??? */" },
+ };
+
+ long rc;
+ unsigned int i;
+
+ rc = syscall(__NR_unshare, bogus_flags);
+ printf("unshare(%#llx /* CLONE_??? */) = %s\n",
+ (unsigned long long) bogus_flags, sprintrc(rc));
+
+ for (i = 0; i < ARRAY_SIZE(unshare_flags); i++) {
+ rc = syscall(__NR_unshare, unshare_flags[i].val);
+ printf("unshare(%s) = %s\n",
+ unshare_flags[i].str, sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_unshare");
+
+#endif
diff --git a/tests/unshare.test b/tests/unshare.test
new file mode 100755
index 0000000..ccb9575
--- /dev/null
+++ b/tests/unshare.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check decoding of setns syscall.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/userfaultfd.c b/tests/userfaultfd.c
index 254b84e..60432fa 100644
--- a/tests/userfaultfd.c
+++ b/tests/userfaultfd.c
@@ -28,6 +28,7 @@
#include "tests.h"
#include <fcntl.h>
#include <asm/unistd.h>
+#include "scno.h"
#if defined __NR_userfaultfd && defined O_CLOEXEC
diff --git a/tests/ustat.c b/tests/ustat.c
new file mode 100644
index 0000000..57bb29c
--- /dev/null
+++ b/tests/ustat.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <[email protected]>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_ustat
+
+# include <stdio.h>
+# include <sys/stat.h>
+# include <sys/sysmacros.h>
+# include <unistd.h>
+# ifdef HAVE_USTAT_H
+# include <ustat.h>
+# endif
+
+int
+main(void)
+{
+ const kernel_ulong_t magic = (kernel_ulong_t) 0xfacefeedffffffff;
+ unsigned long long buf[4];
+ unsigned int dev;
+ long rc;
+
+# ifdef HAVE_USTAT_H
+ struct ustat *const ust = tail_alloc(sizeof(*ust));
+ struct stat st;
+ if (stat(".", &st))
+ perror_msg_and_fail("stat");
+
+ dev = (unsigned int) st.st_dev;
+ rc = syscall(__NR_ustat, dev, ust);
+ if (rc)
+ printf("ustat(makedev(%u, %u), %p) = %s\n",
+ major(dev), minor(dev), ust, sprintrc(rc));
+ else
+ printf("ustat(makedev(%u, %u)"
+ ", {f_tfree=%llu, f_tinode=%llu}) = 0\n",
+ major(dev), minor(dev),
+ zero_extend_signed_to_ull(ust->f_tfree),
+ zero_extend_signed_to_ull(ust->f_tinode));
+# endif /* HAVE_USTAT_H */
+
+ dev = (unsigned int) magic;
+ rc = syscall(__NR_ustat, magic, 0);
+ printf("ustat(makedev(%u, %u), NULL) = %s\n",
+ major(dev), minor(dev), sprintrc(rc));
+
+ rc = syscall(__NR_ustat, magic, buf);
+ printf("ustat(makedev(%u, %u), %p) = %s\n",
+ major(dev), minor(dev), buf, sprintrc(rc));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ustat")
+
+#endif
diff --git a/tests/ustat.test b/tests/ustat.test
new file mode 100755
index 0000000..60a88e0
--- /dev/null
+++ b/tests/ustat.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Check ustat syscall decoding.
+
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/utime.c b/tests/utime.c
index ef40d1b..8fd594f 100644
--- a/tests/utime.c
+++ b/tests/utime.c
@@ -1,5 +1,5 @@
/*
- * This file is part of utime strace test.
+ * Check decoding of utime syscall.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* All rights reserved.
@@ -28,38 +28,70 @@
*/
#include "tests.h"
-#include <time.h>
-#include <utime.h>
-#include <errno.h>
-#include <stdio.h>
+#include <asm/unistd.h>
+
+#ifdef __NR_utime
+
+# include <time.h>
+# include <utime.h>
+# include <errno.h>
+# include <stdio.h>
+# include <unistd.h>
+
static void
print_tm(const struct tm * const p)
{
- printf("%02d/%02d/%02d-%02d:%02d:%02d",
- p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
- p->tm_hour, p->tm_min, p->tm_sec);
+ char buf[256];
+
+ strftime(buf, sizeof(buf), "%FT%T%z", p);
+
+ printf("%s", buf);
+}
+
+static long
+k_utime(const void *const filename, const void *const times)
+{
+ return syscall(__NR_utime, filename, times);
}
int
main(void)
{
- int rc = utime("", NULL);
- printf("utime(\"\", NULL) = %s\n", sprintrc(rc));
+ static const char *const dummy_str = "dummy filename";
const time_t t = time(NULL);
const struct tm * const p = localtime(&t);
const struct utimbuf u = { .actime = t, .modtime = t };
- const struct utimbuf const *tail_u = tail_memdup(&u, sizeof(u));
+ const struct utimbuf *const tail_u = tail_memdup(&u, sizeof(u));
+ const char *const dummy_filename =
+ tail_memdup(dummy_str, sizeof(dummy_str) - 1);
- rc = utime("utime\nfilename", tail_u);
+ long rc = k_utime("", NULL);
+ printf("utime(\"\", NULL) = %s\n", sprintrc(rc));
+
+ rc = k_utime(dummy_filename + sizeof(dummy_str), tail_u + 1);
+ printf("utime(%p, %p) = %s\n", dummy_filename + sizeof(dummy_str),
+ tail_u + 1, sprintrc(rc));
+
+ rc = k_utime(dummy_filename, (struct tm *) tail_u + 1);
+ printf("utime(%p, %p) = %s\n",
+ dummy_filename, (struct tm *) tail_u + 1, sprintrc(rc));
+
+ rc = k_utime("utime\nfilename", tail_u);
const char *errstr = sprintrc(rc);
- printf("utime(\"utime\\nfilename\", [");
+ printf("utime(\"utime\\nfilename\", {actime=");
print_tm(p);
- printf(", ");
+ printf(", modtime=");
print_tm(p);
- printf("]) = %s\n", errstr);
+ printf("}) = %s\n", errstr);
puts("+++ exited with 0 +++");
return 0;
}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_utime")
+
+#endif
diff --git a/tests/utime.test b/tests/utime.test
index 4cb95ea..bd64c53 100755
--- a/tests/utime.test
+++ b/tests/utime.test
@@ -1,22 +1,6 @@
#!/bin/sh
# Check decoding of utime syscall.
-
. "${srcdir=.}/init.sh"
-$STRACE -e utime -h > /dev/null ||
- skip_ 'utime syscall is not supported on this architecture'
-
-run_prog > /dev/null
-run_strace -a 16 -e utime $args > "$OUT"
-
-check_prog grep
-LC_ALL=C grep -x "utime(.*" "$LOG" > /dev/null || {
- rm -f "$OUT"
- skip_ 'test executable does not use utime syscall'
-}
-match_diff "$LOG" "$OUT"
-
-rm -f "$OUT"
-
-exit 0
+run_strace_match_diff -a 16 -e trace=utime
diff --git a/tests/utimensat.c b/tests/utimensat.c
index 24e9106..6d9faac 100644
--- a/tests/utimensat.c
+++ b/tests/utimensat.c
@@ -43,7 +43,8 @@
static void
print_ts(const struct timespec *ts)
{
- printf("{%ju, %ju}", (uintmax_t) ts->tv_sec, (uintmax_t) ts->tv_nsec);
+ printf("{tv_sec=%ju, tv_nsec=%ju}", (uintmax_t) ts->tv_sec,
+ (uintmax_t) ts->tv_nsec);
}
int
diff --git a/tests/utimes.c b/tests/utimes.c
index 401d18a..bbfa031 100644
--- a/tests/utimes.c
+++ b/tests/utimes.c
@@ -32,15 +32,11 @@
#ifdef __NR_utimes
+# include <stdint.h>
# include <stdio.h>
# include <sys/time.h>
# include <unistd.h>
-#define CAST_NUM(n) \
- (sizeof(n) == sizeof(long) ? \
- (unsigned long long) (unsigned long) (n) : \
- (unsigned long long) (n))
-
int
main(void)
{
@@ -56,20 +52,25 @@
struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
- rc = syscall(__NR_utimes, 0, ts + 1);
- printf("utimes(NULL, %p) = %ld %s (%m)\n",
- ts + 1, rc, errno2name());
-
ts[0].tv_sec = tv.tv_sec;
ts[0].tv_usec = tv.tv_usec;
ts[1].tv_sec = tv.tv_sec - 1;
ts[1].tv_usec = tv.tv_usec + 1;
+ rc = syscall(__NR_utimes, 0, ts + 2);
+ printf("utimes(NULL, %p) = %ld %s (%m)\n", ts + 2, rc, errno2name());
+
+ rc = syscall(__NR_utimes, 0, ts + 1);
+ printf("utimes(NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
+ "%ld %s (%m)\n",
+ (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
+ ts + 2, rc, errno2name());
+
rc = syscall(__NR_utimes, "", ts);
- printf("utimes(\"\", [{%llu, %llu}, {%llu, %llu}])"
- " = %ld %s (%m)\n",
- CAST_NUM(ts[0].tv_sec), CAST_NUM(ts[0].tv_usec),
- CAST_NUM(ts[1].tv_sec), CAST_NUM(ts[1].tv_usec),
+ printf("utimes(\"\", [{tv_sec=%jd, tv_usec=%jd}, "
+ "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
+ (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
+ (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
rc, errno2name());
puts("+++ exited with 0 +++");
diff --git a/tests/wait4.c b/tests/wait4.c
index 2d316aa..ccb3ebb 100644
--- a/tests/wait4.c
+++ b/tests/wait4.c
@@ -40,8 +40,8 @@
{
static char buf[1024];
snprintf(buf, sizeof(buf),
- "{ru_utime={%lu, %lu}"
- ", ru_stime={%lu, %lu}"
+ "{ru_utime={tv_sec=%lu, tv_usec=%lu}"
+ ", ru_stime={tv_sec=%lu, tv_usec=%lu}"
#if VERBOSE
", ru_maxrss=%lu"
", ru_ixrss=%lu"
diff --git a/tests/waitid.c b/tests/waitid.c
index b379f1a..6a10299 100644
--- a/tests/waitid.c
+++ b/tests/waitid.c
@@ -42,8 +42,8 @@
{
static char buf[1024];
snprintf(buf, sizeof(buf),
- "{ru_utime={%llu, %llu}"
- ", ru_stime={%llu, %llu}"
+ "{ru_utime={tv_sec=%lld, tv_usec=%lld}"
+ ", ru_stime={tv_sec=%lld, tv_usec=%lld}"
#if VERBOSE
", ru_maxrss=%llu"
", ru_ixrss=%llu"
@@ -62,10 +62,10 @@
#else
", ...}"
#endif
- , zero_extend_signed_to_ull(ru->ru_utime.tv_sec)
- , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
- , zero_extend_signed_to_ull(ru->ru_stime.tv_sec)
- , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
+ , (long long) ru->ru_utime.tv_sec
+ , (long long) ru->ru_utime.tv_usec
+ , (long long) ru->ru_stime.tv_sec
+ , (long long) ru->ru_stime.tv_usec
#if VERBOSE
, zero_extend_signed_to_ull(ru->ru_maxrss)
, zero_extend_signed_to_ull(ru->ru_ixrss)
@@ -138,13 +138,13 @@
static unsigned long
poison(unsigned int v)
{
- return (unsigned long) 0xfacefeed00000000 | v;
+ return (unsigned long) 0xfacefeed00000000ULL | v;
}
static long
do_waitid(const unsigned int idtype,
const unsigned int id,
- const siginfo_t const *infop,
+ const siginfo_t *const infop,
const unsigned int options,
const struct rusage *const rusage)
{
diff --git a/tests/waitpid.c b/tests/waitpid.c
index dbcdf87..2e22e24 100644
--- a/tests/waitpid.c
+++ b/tests/waitpid.c
@@ -40,7 +40,7 @@
main(void)
{
unsigned long pid =
- (unsigned long) 0xdefaced00000000 | (unsigned) getpid();
+ (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
long rc = syscall(__NR_waitpid, pid, 0L, (unsigned long) WNOHANG);
printf("waitpid(%d, NULL, WNOHANG) = %ld %s (%m)\n",
(int) pid, rc, errno2name());
diff --git a/tests/xattr-strings.c b/tests/xattr-strings.c
new file mode 100644
index 0000000..310929a
--- /dev/null
+++ b/tests/xattr-strings.c
@@ -0,0 +1,30 @@
+#include "tests.h"
+
+#ifdef HAVE_SYS_XATTR_H
+
+# include <stdio.h>
+# include <sys/xattr.h>
+
+int
+main(void)
+{
+ static const char name[] = "strace.test";
+ static const char c_value[] = "foobar";
+
+ const char *const z_value = tail_memdup(c_value, sizeof(c_value));
+ long rc;
+
+ rc = fsetxattr(-1, name, z_value, sizeof(c_value), XATTR_REPLACE);
+ printf("fsetxattr(-1, \"%.*s\"..., \"%.*s\"..., %u, XATTR_REPLACE) = %s\n",
+ 4, name, 4, c_value, (unsigned) sizeof(c_value), sprintrc(rc));
+
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SYS_XATTR_H")
+
+#endif
diff --git a/tests/xattr-strings.test b/tests/xattr-strings.test
new file mode 100755
index 0000000..25ef360
--- /dev/null
+++ b/tests/xattr-strings.test
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Check *xattr syscalls decoding when limiting string size.
+
+. "${srcdir=.}/init.sh"
+
+run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests/xattr.c b/tests/xattr.c
index 877552f..a772ece 100644
--- a/tests/xattr.c
+++ b/tests/xattr.c
@@ -36,6 +36,8 @@
# define XATTR_SIZE_MAX 65536
# endif
+#define DEFAULT_STRLEN 32
+
int
main(void)
{
@@ -110,9 +112,13 @@
if (rc < 0)
printf("%p", big);
else {
+ const int ellipsis = rc > DEFAULT_STRLEN;
+
putchar('"');
- print_quoted_memory(big, rc);
+ print_quoted_memory(big, ellipsis ? DEFAULT_STRLEN : rc);
putchar('"');
+ if (ellipsis)
+ fputs("...", stdout);
}
printf(", %u) = %s\n", XATTR_SIZE_MAX + 1, errstr);
diff --git a/tests/xet_robust_list.c b/tests/xet_robust_list.c
index f834930..211dec4 100644
--- a/tests/xet_robust_list.c
+++ b/tests/xet_robust_list.c
@@ -33,6 +33,19 @@
# include <stdio.h>
# include <unistd.h>
+static const char *
+sprintaddr(void *addr)
+{
+ static char buf[sizeof(addr) * 2 + sizeof("0x")];
+
+ if (!addr)
+ return "NULL";
+ else
+ snprintf(buf, sizeof(buf), "%p", addr);
+
+ return buf;
+}
+
int
main(void)
{
@@ -43,8 +56,8 @@
if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
perror_msg_and_skip("get_robust_list");
- printf("get_robust_list(%d, [%#lx], [%lu]) = 0\n",
- (int) pid, (unsigned long) *p_head, (unsigned long) *p_len);
+ printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
+ (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
void *head = tail_alloc(*p_len);
if (syscall(__NR_set_robust_list, head, *p_len))
@@ -54,8 +67,8 @@
if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
perror_msg_and_skip("get_robust_list");
- printf("get_robust_list(%d, [%#lx], [%lu]) = 0\n",
- (int) pid, (unsigned long) *p_head, (unsigned long) *p_len);
+ printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
+ (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/xetitimer.c b/tests/xetitimer.c
index 9c9fd99..4b17edd 100644
--- a/tests/xetitimer.c
+++ b/tests/xetitimer.c
@@ -49,9 +49,10 @@
if (setitimer(ITIMER_REAL, &new.itv, &old.itv))
perror_msg_and_skip("setitimer");
printf("setitimer(ITIMER_REAL"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ") = 0\n",
+ ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
+ "it_value={tv_sec=%jd, tv_usec=%jd}}"
+ ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
+ "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
(intmax_t) new.itv.it_interval.tv_sec,
(intmax_t) new.itv.it_interval.tv_usec,
(intmax_t) new.itv.it_value.tv_sec,
@@ -64,8 +65,8 @@
if (getitimer(ITIMER_REAL, &old.itv))
perror_msg_and_skip("getitimer");
printf("getitimer(ITIMER_REAL"
- ", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
- ") = 0\n",
+ ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
+ "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
(intmax_t) old.itv.it_interval.tv_sec,
(intmax_t) old.itv.it_interval.tv_usec,
(intmax_t) old.itv.it_value.tv_sec,
diff --git a/tests/xetpgid.c b/tests/xetpgid.c
index d4d5545..24e0d7f 100644
--- a/tests/xetpgid.c
+++ b/tests/xetpgid.c
@@ -40,12 +40,12 @@
{
const int pid = getpid();
long rc = syscall(__NR_getpgid,
- (unsigned long) 0xffffffff00000000 | pid);
+ (unsigned long) 0xffffffff00000000ULL | pid);
printf("getpgid(%d) = %ld\n", pid, rc);
rc = syscall(__NR_setpgid,
- (unsigned long) 0xffffffff00000000,
- (unsigned long) 0xffffffff00000000 | pid);
+ (unsigned long) 0xffffffff00000000ULL,
+ (unsigned long) 0xffffffff00000000ULL | pid);
printf("setpgid(0, %d) = %ld\n", pid, rc);
puts("+++ exited with 0 +++");
diff --git a/tests/xetpriority.c b/tests/xetpriority.c
index dfd3264..ed55259 100644
--- a/tests/xetpriority.c
+++ b/tests/xetpriority.c
@@ -12,12 +12,12 @@
{
const int pid = getpid();
long rc = syscall(__NR_getpriority, PRIO_PROCESS,
- (unsigned long) 0xffffffff00000000 | pid);
+ (unsigned long) 0xffffffff00000000ULL | pid);
printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
rc = syscall(__NR_setpriority, PRIO_PROCESS,
- (unsigned long) 0xffffffff00000000 | pid,
- (unsigned long) 0xffffffff00000000);
+ (unsigned long) 0xffffffff00000000ULL | pid,
+ (unsigned long) 0xffffffff00000000ULL);
printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
puts("+++ exited with 0 +++");
diff --git a/tests/xettimeofday.c b/tests/xettimeofday.c
index dd05091..d36c57b 100644
--- a/tests/xettimeofday.c
+++ b/tests/xettimeofday.c
@@ -48,12 +48,12 @@
if (syscall(__NR_gettimeofday, &t.tv, NULL))
perror_msg_and_skip("gettimeofday");
- printf("gettimeofday({%jd, %jd}, NULL) = 0\n",
+ printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}, NULL) = 0\n",
(intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec);
if (syscall(__NR_gettimeofday, &t.tv, &t.tz))
perror_msg_and_skip("gettimeofday");
- printf("gettimeofday({%jd, %jd}"
+ printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}"
", {tz_minuteswest=%d, tz_dsttime=%d}) = 0\n",
(intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
t.tz.tz_minuteswest, t.tz.tz_dsttime);
@@ -61,7 +61,7 @@
t.tv.tv_sec = -1;
t.tv.tv_usec = 1000000000;
assert(syscall(__NR_settimeofday, &t.tv, &t.tz) == -1);
- printf("settimeofday({%jd, %jd}"
+ printf("settimeofday({tv_sec=%jd, tv_usec=%jd}"
", {tz_minuteswest=%d, tz_dsttime=%d})"
" = -1 EINVAL (%m)\n",
(intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
diff --git a/tests/xgetrlimit.c b/tests/xgetrlimit.c
index d787ce3..78d9cb9 100644
--- a/tests/xgetrlimit.c
+++ b/tests/xgetrlimit.c
@@ -33,7 +33,6 @@
#include <sys/resource.h>
#include <unistd.h>
-#include "kernel_types.h"
#include "xlat.h"
#include "xlat/resources.h"
@@ -68,7 +67,7 @@
const struct xlat *xlat;
for (xlat = resources; xlat->str; ++xlat) {
- unsigned long res = 0xfacefeed00000000 | xlat->val;
+ unsigned long res = 0xfacefeed00000000ULL | xlat->val;
long rc = syscall(NR_GETRLIMIT, res, 0);
if (rc && ENOSYS == errno)
perror_msg_and_skip(STR_GETRLIMIT);
diff --git a/tests/xselect.c b/tests/xselect.c
index 08e29e1..39e87ac 100644
--- a/tests/xselect.c
+++ b/tests/xselect.c
@@ -72,8 +72,8 @@
FD_SET(fds[0], set);
FD_SET(fds[1], set);
assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, &tm.tv) == 3);
- printf("%s(%d, NULL, [1 2 %d %d], NULL, {%lld, %lld})"
- " = 3 (out [1 2 %d], left {%lld, %lld})\n",
+ printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%lld})"
+ " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%lld})\n",
TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
(long long) tm_in.tv.tv_sec, (long long) tm_in.tv.tv_usec,
fds[1],
@@ -97,7 +97,7 @@
tm.tv.tv_sec = 0;
tm.tv.tv_usec = 123;
assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, &tm.tv) == 0);
- printf("%s(%d, [%d], [], NULL, {0, 123}) = 0 (Timeout)\n",
+ printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=123}) = 0 (Timeout)\n",
TEST_SYSCALL_STR, FD_SETSIZE + 1, fds[0]);
puts("+++ exited with 0 +++");
diff --git a/tests/xstatfsx.c b/tests/xstatfsx.c
index c5c04be..d8288f1 100644
--- a/tests/xstatfsx.c
+++ b/tests/xstatfsx.c
@@ -81,7 +81,7 @@
PRINT_NUM(f_files);
PRINT_NUM(f_ffree);
#ifdef PRINT_F_FSID
- printf(", f_fsid={%u, %u}",
+ printf(", f_fsid={val=[%u, %u]}",
(unsigned) b->PRINT_F_FSID[0], (unsigned) b->PRINT_F_FSID[1]);
#endif
PRINT_NUM(f_namelen);
@@ -110,7 +110,7 @@
printf("NULL) = %s\n", errstr);
#ifdef CHECK_ODD_SIZE
- const unsigned long addr = (unsigned long) 0xfacefeeddeadbeef;
+ const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
rc = SYSCALL_INVOKE("", -1, addr, sizeof(STRUCT_STATFS) + 1);
errstr = sprintrc(rc);
PRINT_SYSCALL_HEADER("", -1, sizeof(STRUCT_STATFS) + 1);
diff --git a/tests/xstatx.c b/tests/xstatx.c
index 2d0dac3..0d5fca8 100644
--- a/tests/xstatx.c
+++ b/tests/xstatx.c
@@ -40,6 +40,7 @@
# error PRINT_SYSCALL_FOOTER must be defined
# endif
+# include <errno.h>
# include <stdio.h>
# include <stddef.h>
# include <time.h>
@@ -56,12 +57,15 @@
struct tm *p = localtime(&t);
- if (p)
- printf("%02d/%02d/%02d-%02d:%02d:%02d",
- p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
- p->tm_hour, p->tm_min, p->tm_sec);
- else
+ if (p) {
+ char buf[256];
+
+ strftime(buf, sizeof(buf), "%FT%T%z", p);
+
+ printf("%s", buf);
+ } else {
printf("%llu", zero_extend_signed_to_ull(t));
+ }
}
# ifndef STRUCT_STAT
@@ -70,66 +74,60 @@
# define STRUCT_STAT_IS_STAT64 0
# endif
# ifndef SAMPLE_SIZE
-# define SAMPLE_SIZE 43147718418
+# define SAMPLE_SIZE ((libc_off_t) 43147718418ULL)
# endif
typedef off_t libc_off_t;
-# ifdef USE_ASM_STAT
-# define stat libc_stat
-# define stat64 libc_stat64
-# endif
+# define stat libc_stat
+# define stat64 libc_stat64
# include <fcntl.h>
# include <sys/stat.h>
-# ifdef USE_ASM_STAT
-# undef stat
-# undef stat64
+# undef stat
+# undef stat64
+
+# undef st_atime
+# undef st_mtime
+# undef st_ctime
+# include "asm_stat.h"
+
+# if STRUCT_STAT_IS_STAT64
+# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# if defined MPERS_IS_m32
+# ifdef HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC
+# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+# endif
+# elif defined MPERS_IS_mx32
+# ifdef HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC
+# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+# endif
+# elif defined HAVE_STRUCT_STAT64_ST_MTIME_NSEC
+# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+# endif /* MPERS_IS_m32 || MPERS_IS_mx32 || HAVE_STRUCT_STAT64_ST_MTIME_NSEC */
+# else /* !STRUCT_STAT_IS_STAT64 */
+# if defined MPERS_IS_m32
+# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# ifdef HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC
+# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+# endif
+# elif defined MPERS_IS_mx32
+# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# ifdef HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC
+# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+# endif
+# endif /* MPERS_IS_m32 || MPERS_IS_mx32 */
+# endif /* STRUCT_STAT_IS_STAT64 */
+
+# ifndef TEST_BOGUS_STRUCT_STAT
+# define TEST_BOGUS_STRUCT_STAT 1
# endif
-# ifdef USE_ASM_STAT
-# undef st_atime
-# undef st_mtime
-# undef st_ctime
-# include "asm_stat.h"
+# ifndef IS_FSTAT
+# define IS_FSTAT 0
+# endif
-# if STRUCT_STAT_IS_STAT64
-# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
-# if defined MPERS_IS_m32
-# ifdef HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC
-# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-# endif
-# elif defined MPERS_IS_mx32
-# ifdef HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC
-# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-# endif
-# elif defined HAVE_STRUCT_STAT64_ST_MTIME_NSEC
-# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-# endif /* MPERS_IS_m32 || MPERS_IS_mx32 || HAVE_STRUCT_STAT64_ST_MTIME_NSEC */
-# else /* !STRUCT_STAT_IS_STAT64 */
-# if defined MPERS_IS_m32
-# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
-# ifdef HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC
-# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-# endif
-# elif defined MPERS_IS_mx32
-# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
-# ifdef HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC
-# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-# endif
-# endif /* MPERS_IS_m32 || MPERS_IS_mx32 */
-# endif /* STRUCT_STAT_IS_STAT64 */
-
-# else /* !USE_ASM_STAT */
-# undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
-# ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
-# define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
-# undef st_atime_nsec
-# define st_atime_nsec st_atim.tv_nsec
-# undef st_ctime_nsec
-# define st_ctime_nsec st_ctim.tv_nsec
-# undef st_mtime_nsec
-# define st_mtime_nsec st_mtim.tv_nsec
-# endif /* HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC */
+# ifndef OLD_STAT
+# define OLD_STAT 0
# endif
static void
@@ -167,8 +165,12 @@
printf(", st_nlink=%llu", zero_extend_signed_to_ull(st->st_nlink));
printf(", st_uid=%llu", zero_extend_signed_to_ull(st->st_uid));
printf(", st_gid=%llu", zero_extend_signed_to_ull(st->st_gid));
+# if OLD_STAT
+ printf(", st_blksize=0, st_blocks=0");
+# else /* !OLD_STAT */
printf(", st_blksize=%llu", zero_extend_signed_to_ull(st->st_blksize));
printf(", st_blocks=%llu", zero_extend_signed_to_ull(st->st_blocks));
+# endif /* OLD_STAT */
switch (st->st_mode & S_IFMT) {
case S_IFCHR: case S_IFBLK:
@@ -182,19 +184,19 @@
printf(", st_atime=");
print_time(sign_extend_unsigned_to_ll(st->st_atime));
-# ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
if (st->st_atime_nsec)
printf(".%09llu", zero_extend_signed_to_ull(st->st_atime_nsec));
# endif
printf(", st_mtime=");
print_time(sign_extend_unsigned_to_ll(st->st_mtime));
-# ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
if (st->st_mtime_nsec)
printf(".%09llu", zero_extend_signed_to_ull(st->st_mtime_nsec));
# endif
printf(", st_ctime=");
print_time(sign_extend_unsigned_to_ll(st->st_ctime));
-# ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
if (st->st_ctime_nsec)
printf(".%09llu", zero_extend_signed_to_ull(st->st_ctime_nsec));
# endif
@@ -227,22 +229,50 @@
int
main(void)
{
+# if !IS_FSTAT
+ static const char full[] = "/dev/full";
+# endif
static const char sample[] = TEST_SYSCALL_STR ".sample";
STRUCT_STAT st[2];
- int rc = create_sample(sample, SAMPLE_SIZE);
+ int rc;
+
+ rc = create_sample(sample, SAMPLE_SIZE);
if (rc) {
(void) unlink(sample);
return rc;
}
- if (TEST_SYSCALL_INVOKE(sample, st)) {
- perror(TEST_SYSCALL_STR);
- (void) unlink(sample);
- return 77;
+# if TEST_BOGUS_STRUCT_STAT
+ STRUCT_STAT *st_cut = tail_alloc(sizeof(long) * 4);
+ rc = TEST_SYSCALL_INVOKE(sample, st_cut);
+ PRINT_SYSCALL_HEADER(sample);
+ printf("%p", st_cut);
+ PRINT_SYSCALL_FOOTER(rc);
+# endif
+
+# if !IS_FSTAT
+ rc = TEST_SYSCALL_INVOKE(full, st);
+ PRINT_SYSCALL_HEADER(full);
+ if (rc)
+ printf("%p", st);
+ else
+ print_stat(st);
+ PRINT_SYSCALL_FOOTER(rc);
+# endif
+
+ if ((rc = TEST_SYSCALL_INVOKE(sample, st))) {
+# if OLD_STAT
+ if (errno != EOVERFLOW)
+# endif
+ {
+ perror(TEST_SYSCALL_STR);
+ (void) unlink(sample);
+ return 77;
+ }
}
(void) unlink(sample);
- if (zero_extend_signed_to_ull(SAMPLE_SIZE) !=
+ if (!rc && zero_extend_signed_to_ull(SAMPLE_SIZE) !=
zero_extend_signed_to_ull(st[0].st_size)) {
fprintf(stderr, "Size mismatch: "
"requested size(%llu) != st_size(%llu)\n",
@@ -252,52 +282,36 @@
" definition of %s.\n"
"Here is some diagnostics that might help:\n",
STRUCT_STAT_STR);
- fprintf(stderr, "offsetof(%s, st_dev) = %zu"
- ", sizeof(st_dev) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_dev),
- sizeof(st[0].st_dev));
- fprintf(stderr, "offsetof(%s, st_ino) = %zu"
- ", sizeof(st_ino) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_ino),
- sizeof(st[0].st_ino));
- fprintf(stderr, "offsetof(%s, st_mode) = %zu"
- ", sizeof(st_mode) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_mode),
- sizeof(st[0].st_mode));
- fprintf(stderr, "offsetof(%s, st_nlink) = %zu"
- ", sizeof(st_nlink) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_nlink),
- sizeof(st[0].st_nlink));
- fprintf(stderr, "offsetof(%s, st_uid) = %zu"
- ", sizeof(st_uid) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_uid),
- sizeof(st[0].st_uid));
- fprintf(stderr, "offsetof(%s, st_gid) = %zu"
- ", sizeof(st_gid) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_gid),
- sizeof(st[0].st_gid));
- fprintf(stderr, "offsetof(%s, st_rdev) = %zu"
- ", sizeof(st_rdev) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_rdev),
- sizeof(st[0].st_rdev));
- fprintf(stderr, "offsetof(%s, st_size) = %zu"
- ", sizeof(st_size) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_size),
- sizeof(st[0].st_size));
- fprintf(stderr, "offsetof(%s, st_blksize) = %zu"
- ", sizeof(st_blksize) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_blksize),
- sizeof(st[0].st_blksize));
- fprintf(stderr, "offsetof(%s, st_blocks) = %zu"
- ", sizeof(st_blocks) = %zu\n",
- STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_blocks),
- sizeof(st[0].st_blocks));
- return 77;
+
+#define LOG_STAT_OFFSETOF_SIZEOF(object, member) \
+ fprintf(stderr, "offsetof(%s, %s) = %zu" \
+ ", sizeof(%s) = %zu\n", \
+ STRUCT_STAT_STR, #member, \
+ offsetof(STRUCT_STAT, member), \
+ #member, sizeof((object).member))
+
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_dev);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_ino);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_mode);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_nlink);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_uid);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_gid);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_rdev);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_size);
+# if !OLD_STAT
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blksize);
+ LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blocks);
+# endif /* !OLD_STAT */
+
+ return 1;
}
PRINT_SYSCALL_HEADER(sample);
- print_stat(st);
- PRINT_SYSCALL_FOOTER;
+ if (rc)
+ printf("%p", st);
+ else
+ print_stat(st);
+ PRINT_SYSCALL_FOOTER(rc);
puts("+++ exited with 0 +++");
return 0;