Upgrade strace to 4.17.
Noteworthy changes in release 4.17 (2017-05-24)
===============================================
* Changes in command line syntax
* Syscall classes specified in -e trace= option now have % prefix (like
-e trace=%process). Old style class names without leading % are still
supported, but considered deprecated now.
* Improvements
* Optimized syscall filtering.
* Improved representation of timestamps.
* Enhanced decoding of sched_setattr syscall.
* Added -e trace=%stat option for tracing variants of stat syscall.
* Added -e trace=%lstat option for tracing variants of lstat syscall.
* Added -e trace=%fstat option for tracing variants of fstat and fstatat
syscalls.
* Added -e trace=%%stat option for tracing syscalls used for querying file
status information (stat, lstat, fstat, fstatat, statx, and their
variations).
* Added -e trace=%statfs option for tracing statfs, statfs64 and statvfs
syscalls.
* Added -e trace=%fstatfs option for tracing fstatfs, fstatfs64 and fstatvfs
syscalls.
* Added -e trace=%%statfs option for tracing syscalls used for querying file
system statistics information (statfs-like, fstatfs-like and ustat).
* Added -e trace=/regex option for filtering syscalls using regular
expressions.
* Added support for prepending of question mark before syscall qualification
in -e trace expressions in order to suppress error in case no syscalls
matched the provided qualification.
* Implemented decoding of signal mask in rt_sigreturn syscall on alpha, arc,
arm, avr32, bfin, cris, hppa, m68k, metag, microblaze, mips, nios2, or1k,
powerpc, powerpc64, riscv, sh, sh64, sparc, sparc64, tile, x86, and xtensa
architectures.
* Implemented decoding of statx syscall.
* Implemented decoding of NS_* ioctl commands.
* Implemented decoding of the remaining V4L2_BUF_TYPE_* types.
* Implemented decoding of VIDIOC_[SG]_TUNER ioctl commands.
* Implemented decoding of NLMSG_ERROR netlink messages.
* Improved decoding of BPF_PROG_ATTACH command of bpf syscall.
* Improved decoding of misplaced parts in DM_* ioctl commands.
* Updated lists of ioctl commands from Linux 4.11.
* Bug fixes
* Fixed decoding of flags argument of preadv2 and pwritev2 syscalls on x32.
* Fixed the number of arguments and tracing flags of alpha specific syscalls.
* Fixed decoding of old sigsuspend syscall on alpha, cris, mips, powerpc,
powerpc64, sh, sh64, sparc, and sparc64.
* Fixed decoding of sgetmask and ssetmask syscalls on 64-bit architectures.
* Fixed decoding of netlink messages received within struct msghdr.
* Worked around a bug in miscompiled aarch64 kernels leading to the 3rd
argument of sched_getattr syscall being not quite 32-bit.
* Fixed corner cases of printing inaccessible times argument of utimes
and futimesat syscalls.
Bug: N/A
Test: strace date
Change-Id: Idc4614a3f16ffe57fdca2a07a05253900d1c52bb
diff --git a/tests/Makefile b/tests/Makefile
index 53b7a6c..f2071c4 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -17,6 +17,7 @@
# Automake input for strace tests.
#
# Copyright (c) 2011-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2011-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
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 \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+ $(srcdir)/../scno.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/depcomp \
$(top_srcdir)/test-driver
+check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
+ attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
+ attach-p-cmd-p$(EXEEXT) caps-abbrev$(EXEEXT) count-f$(EXEEXT) \
+ execve-v$(EXEEXT) execveat-v$(EXEEXT) \
+ filter-unavailable$(EXEEXT) fork-f$(EXEEXT) getpid$(EXEEXT) \
+ getppid$(EXEEXT) gettid$(EXEEXT) int_0x80$(EXEEXT) \
+ ioctl_dm-v$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+ ioctl_loop-nv$(EXEEXT) ioctl_loop-v$(EXEEXT) \
+ ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) ksysent$(EXEEXT) \
+ mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
+ msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
+ netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+ netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \
+ perf_event_open_nonverbose$(EXEEXT) \
+ perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+ print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+ qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+ qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+ quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+ redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+ scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+ seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+ signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+ threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+ unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+ wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
@@ -300,6 +191,7 @@
libtests_a-error_msg.$(OBJEXT) \
libtests_a-fill_memory.$(OBJEXT) \
libtests_a-get_page_size.$(OBJEXT) \
+ libtests_a-get_sigset_size.$(OBJEXT) \
libtests_a-hexdump_strdup.$(OBJEXT) \
libtests_a-hexquote_strndup.$(OBJEXT) \
libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
libtests_a-overflowuid.$(OBJEXT) \
libtests_a-pipe_maxfd.$(OBJEXT) \
libtests_a-print_quoted_string.$(OBJEXT) \
+ libtests_a-print_time.$(OBJEXT) \
libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
- libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
- libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+ libtests_a-signal2name.$(OBJEXT) \
+ libtests_a-skip_unavailable.$(OBJEXT) \
+ libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+ libtests_a-tprintf.$(OBJEXT)
libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+ access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+ adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+ brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+ chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+ clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+ clock_xettime$(EXEEXT) copy_file_range$(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) \
+ execveat$(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) finit_module$(EXEEXT) flock$(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) getpid$(EXEEXT) getppid$(EXEEXT) \
+ getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+ getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+ getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+ getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(EXEEXT) \
+ inet-cmsg$(EXEEXT) init_module$(EXEEXT) inotify$(EXEEXT) \
+ inotify_init1$(EXEEXT) ioctl$(EXEEXT) ioctl_block$(EXEEXT) \
+ ioctl_dm$(EXEEXT) ioctl_evdev$(EXEEXT) ioctl_loop$(EXEEXT) \
+ ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) ioctl_scsi$(EXEEXT) \
+ ioctl_sg_io_v3$(EXEEXT) ioctl_sg_io_v4$(EXEEXT) \
+ ioctl_sock_gifconf$(EXEEXT) ioctl_uffdio$(EXEEXT) \
+ ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) iopl$(EXEEXT) \
+ ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) ipc_msg$(EXEEXT) \
+ ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+ kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+ keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+ lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+ llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+ lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(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_name$(EXEEXT) \
+ mount$(EXEEXT) move_pages$(EXEEXT) mq$(EXEEXT) \
+ mq_sendrecv$(EXEEXT) mq_sendrecv-read$(EXEEXT) \
+ mq_sendrecv-write$(EXEEXT) msg_control$(EXEEXT) \
+ msg_name$(EXEEXT) munlockall$(EXEEXT) nanosleep$(EXEEXT) \
+ net-icmp_filter$(EXEEXT) net-sockaddr$(EXEEXT) \
+ net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+ net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+ netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+ old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+ oldselect$(EXEEXT) oldstat$(EXEEXT) open$(EXEEXT) \
+ openat$(EXEEXT) osf_utimes$(EXEEXT) pause$(EXEEXT) \
+ perf_event_open$(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-securebits$(EXEEXT) \
+ prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
+ pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+ preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+ printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+ process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+ pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+ read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+ readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
+ reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
+ recvmsg$(EXEEXT) remap_file_pages$(EXEEXT) rename$(EXEEXT) \
+ renameat$(EXEEXT) renameat2$(EXEEXT) request_key$(EXEEXT) \
+ rmdir$(EXEEXT) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+ rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(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) \
+ seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+ sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(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) \
+ signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(EXEEXT) \
+ socketcall$(EXEEXT) splice$(EXEEXT) stat$(EXEEXT) \
+ stat64$(EXEEXT) statfs$(EXEEXT) statfs64$(EXEEXT) \
+ statx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \
+ symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \
+ sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \
+ sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \
+ timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+ timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+ truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
+ uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
+ umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
+ umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
+ uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \
+ unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \
+ utime$(EXEEXT) utimensat$(EXEEXT) utimes$(EXEEXT) \
+ vhangup$(EXEEXT) vmsplice$(EXEEXT) wait4$(EXEEXT) \
+ waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+ xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+ xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+ xettimeofday$(EXEEXT)
_newselect_SOURCES = _newselect.c
_newselect_OBJECTS = _newselect.$(OBJEXT)
_newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
getpgrp_OBJECTS = getpgrp.$(OBJEXT)
getpgrp_LDADD = $(LDADD)
getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
getrandom_SOURCES = getrandom.c
getrandom_OBJECTS = getrandom.$(OBJEXT)
getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
getsockname_OBJECTS = getsockname.$(OBJEXT)
getsockname_LDADD = $(LDADD)
getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
getuid_SOURCES = getuid.c
getuid_OBJECTS = getuid.$(OBJEXT)
getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
inotify_init1_LDADD = $(LDADD)
inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
ioctl_SOURCES = ioctl.c
ioctl_OBJECTS = ioctl.$(OBJEXT)
ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
ioctl_mtd_LDADD = $(LDADD)
ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
ioctl_rtc_SOURCES = ioctl_rtc.c
ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
lstat64_LDADD = $(LDADD)
lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
mbind_SOURCES = mbind.c
mbind_OBJECTS = mbind.$(OBJEXT)
mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
openat_OBJECTS = openat.$(OBJEXT)
openat_LDADD = $(LDADD)
openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
pause_SOURCES = pause.c
pause_OBJECTS = pause.$(OBJEXT)
pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
ppoll_OBJECTS = ppoll.$(OBJEXT)
ppoll_LDADD = $(LDADD)
ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
rt_sigqueueinfo_LDADD = $(LDADD)
rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
rt_sigsuspend_SOURCES = rt_sigsuspend.c
rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
sigreturn_OBJECTS = sigreturn.$(OBJEXT)
sigreturn_LDADD = $(LDADD)
sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
sleep_SOURCES = sleep.c
sleep_OBJECTS = sleep.$(OBJEXT)
sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
statfs64_OBJECTS = statfs64.$(OBJEXT)
statfs64_LDADD = $(LDADD)
statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
swap_SOURCES = swap.c
swap_OBJECTS = swap.$(OBJEXT)
swap_LDADD = $(LDADD)
swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
symlink_SOURCES = symlink.c
symlink_OBJECTS = symlink.$(OBJEXT)
symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
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 \
+ getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+ getresgid.c getresgid32.c getresuid.c getresuid32.c \
+ getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+ getuid.c getuid32.c getxxid.c inet-cmsg.c init_module.c \
+ inotify.c inotify_init1.c int_0x80.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 \
+ ioctl_nsfs.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 \
+ lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+ memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
+ mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
+ move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
+ mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
+ munlockall.c nanosleep.c net-accept-connect.c \
+ net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
+ net-yy-netlink.c net-yy-unix.c netlink_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 osf_utimes.c pause.c \
+ pc.c perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
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 \
+ rt_sigreturn.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 \
+ sigsuspend.c sleep.c socketcall.c splice.c \
+ $(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
+ statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
threads-execve.c time.c timer_create.c timer_xettime.c \
timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
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 \
+ getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+ getresgid.c getresgid32.c getresuid.c getresuid32.c \
+ getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+ getuid.c getuid32.c getxxid.c inet-cmsg.c init_module.c \
+ inotify.c inotify_init1.c int_0x80.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 \
+ ioctl_nsfs.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 \
+ lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+ memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
+ mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
+ move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
+ mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
+ munlockall.c nanosleep.c net-accept-connect.c \
+ net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
+ net-yy-netlink.c net-yy-unix.c netlink_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 osf_utimes.c pause.c \
+ pc.c perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
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 \
+ rt_sigreturn.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 \
+ sigsuspend.c sleep.c socketcall.c splice.c \
+ $(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
+ statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
threads-execve.c time.c timer_create.c timer_xettime.c \
timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
bases=`echo $$bases`
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
-#am__EXEEXT_1 = strace-k.test
+#am__EXEEXT_2 = strace-k.test
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = .test
am__test_logs1 = $(TESTS:=.log)
@@ -2234,12 +2298,12 @@
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
+ACLOCAL = ${SHELL} /tmp/strace-4.17/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
+AUTOCONF = ${SHELL} /tmp/strace-4.17/missing autoconf
+AUTOHEADER = ${SHELL} /tmp/strace-4.17/missing autoheader
+AUTOMAKE = ${SHELL} /tmp/strace-4.17/missing automake-1.14
AWK = gawk
BUILD_EXEEXT =
BUILD_OBJEXT =
@@ -2253,12 +2317,13 @@
CODE_COVERAGE_CXXFLAGS =
CODE_COVERAGE_ENABLED = no
CODE_COVERAGE_LDFLAGS =
+COPYRIGHT_YEAR = 2017
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
+DEB_CHANGELOGTIME = Thu, 25 May 2017 15:09:49 -0700
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
ECHO_C =
@@ -2285,34 +2350,34 @@
LIBS =
LTLIBOBJS =
MAINT = #
-MAKEINFO = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo
+MAKEINFO = ${SHELL} /tmp/strace-4.17/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_STRING = strace 4.17
PACKAGE_TARNAME = strace
PACKAGE_URL = https://strace.io
-PACKAGE_VERSION = 4.16
+PACKAGE_VERSION = 4.17
PATH_SEPARATOR = :
PERL = /usr/bin/perl
RANLIB = ranlib
-RPM_CHANGELOGTIME = Wed Feb 15 2017
+RPM_CHANGELOGTIME = Thu May 25 2017
SED = /bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP =
VALGRIND = valgrind
VALGRIND_ENABLED = yes
-VERSION = 4.16
+VERSION = 4.17
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
+abs_builddir = /tmp/strace-4.17/tests
+abs_srcdir = /tmp/strace-4.17/tests
+abs_top_builddir = /tmp/strace-4.17
+abs_top_srcdir = /tmp/strace-4.17
ac_ct_CC = gcc
ac_ct_CC_FOR_BUILD = gcc
am__include = include
@@ -2344,7 +2409,7 @@
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
-install_sh = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh
+install_sh = ${SHELL} /tmp/strace-4.17/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
libunwind_CPPFLAGS =
@@ -2389,6 +2454,7 @@
error_msg.c \
fill_memory.c \
get_page_size.c \
+ get_sigset_size.c \
hexdump_strdup.c \
hexquote_strndup.c \
inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
overflowuid.c \
pipe_maxfd.c \
print_quoted_string.c \
+ print_time.c \
printflags.c \
printxval.c \
signal2name.c \
+ skip_unavailable.c \
sprintrc.c \
tail_alloc.c \
tests.h \
@@ -2409,6 +2477,340 @@
libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
check_LIBRARIES = libtests.a
LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+ _newselect \
+ accept \
+ accept4 \
+ access \
+ acct \
+ add_key \
+ adjtimex \
+ aio \
+ alarm \
+ bpf \
+ brk \
+ btrfs \
+ caps \
+ chmod \
+ chown \
+ chown32 \
+ chroot \
+ clock_adjtime \
+ clock_nanosleep \
+ clock_xettime \
+ copy_file_range \
+ creat \
+ delete_module \
+ dup \
+ dup2 \
+ dup3 \
+ epoll_create \
+ epoll_create1 \
+ epoll_ctl \
+ epoll_pwait \
+ epoll_wait \
+ erestartsys \
+ eventfd \
+ execve \
+ execveat \
+ faccessat \
+ fadvise64 \
+ fadvise64_64 \
+ fallocate \
+ fanotify_init \
+ fanotify_mark \
+ fchdir \
+ fchmod \
+ fchmodat \
+ fchown \
+ fchown32 \
+ fchownat \
+ fcntl \
+ fcntl64 \
+ fdatasync \
+ file_handle \
+ file_ioctl \
+ finit_module \
+ flock \
+ 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 \
+ getpid \
+ getppid \
+ getrandom \
+ getresgid \
+ getresgid32 \
+ getresuid \
+ getresuid32 \
+ getrlimit \
+ getrusage \
+ getsid \
+ getsockname \
+ getuid \
+ getuid32 \
+ getxxid \
+ inet-cmsg \
+ init_module \
+ inotify \
+ inotify_init1 \
+ ioctl \
+ ioctl_block \
+ ioctl_dm \
+ ioctl_evdev \
+ ioctl_loop \
+ ioctl_mtd \
+ ioctl_rtc \
+ 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 \
+ lchown \
+ lchown32 \
+ link \
+ linkat \
+ llseek \
+ lookup_dcookie \
+ lseek \
+ lstat \
+ lstat64 \
+ madvise \
+ mbind \
+ membarrier \
+ memfd_create \
+ migrate_pages \
+ mincore \
+ mkdir \
+ mkdirat \
+ mknod \
+ mknodat \
+ mlock \
+ mlock2 \
+ mlockall \
+ mmap \
+ mmap64 \
+ mmsg \
+ mmsg_name \
+ mount \
+ move_pages \
+ mq \
+ mq_sendrecv \
+ mq_sendrecv-read \
+ mq_sendrecv-write \
+ msg_control \
+ msg_name \
+ munlockall \
+ nanosleep \
+ net-icmp_filter \
+ net-sockaddr \
+ net-y-unix \
+ net-yy-inet \
+ net-yy-netlink \
+ net-yy-unix \
+ netlink_protocol \
+ newfstatat \
+ old_mmap \
+ oldfstat \
+ oldlstat \
+ oldselect \
+ oldstat \
+ open \
+ openat \
+ osf_utimes \
+ pause \
+ perf_event_open \
+ personality \
+ pipe \
+ pipe2 \
+ pkey_alloc \
+ pkey_free \
+ pkey_mprotect \
+ poll \
+ ppoll \
+ prctl-arg2-intptr \
+ prctl-dumpable \
+ prctl-name \
+ prctl-no-args \
+ prctl-pdeathsig \
+ prctl-securebits \
+ prctl-tid_address \
+ prctl-tsc \
+ pread64-pwrite64 \
+ preadv \
+ preadv-pwritev \
+ preadv2-pwritev2 \
+ printstr \
+ prlimit64 \
+ process_vm_readv \
+ process_vm_writev \
+ pselect6 \
+ ptrace \
+ pwritev \
+ quotactl \
+ quotactl-xfs \
+ read-write \
+ readahead \
+ readdir \
+ readlink \
+ readlinkat \
+ readv \
+ reboot \
+ recvfrom \
+ recvmmsg-timeout \
+ recvmsg \
+ remap_file_pages \
+ rename \
+ renameat \
+ renameat2 \
+ request_key \
+ rmdir \
+ rt_sigpending \
+ rt_sigprocmask \
+ rt_sigqueueinfo \
+ rt_sigreturn \
+ rt_sigsuspend \
+ rt_sigtimedwait \
+ rt_tgsigqueueinfo \
+ sched_get_priority_mxx \
+ sched_rr_get_interval \
+ sched_xetaffinity \
+ sched_xetattr \
+ sched_xetparam \
+ sched_xetscheduler \
+ sched_yield \
+ seccomp-filter \
+ select \
+ semop \
+ sendfile \
+ sendfile64 \
+ set_mempolicy \
+ setdomainname \
+ setfsgid \
+ setfsgid32 \
+ setfsuid \
+ setfsuid32 \
+ setgid \
+ setgid32 \
+ setgroups \
+ setgroups32 \
+ sethostname \
+ setns \
+ setregid \
+ setregid32 \
+ setresgid \
+ setresgid32 \
+ setresuid \
+ setresuid32 \
+ setreuid \
+ setreuid32 \
+ setrlimit \
+ setuid \
+ setuid32 \
+ shmxt \
+ shutdown \
+ sigaction \
+ sigaltstack \
+ siginfo \
+ signalfd4 \
+ sigreturn \
+ sigsuspend \
+ socketcall \
+ splice \
+ stat \
+ stat64 \
+ statfs \
+ statfs64 \
+ statx \
+ swap \
+ sxetmask \
+ 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 \
+ umoven-illptr \
+ umovestr \
+ umovestr-illptr \
+ umovestr2 \
+ umovestr3 \
+ uname \
+ unlink \
+ unlinkat \
+ unshare \
+ userfaultfd \
+ ustat \
+ utime \
+ utimensat \
+ utimes \
+ vhangup \
+ vmsplice \
+ wait4 \
+ waitid \
+ waitpid \
+ xattr \
+ xattr-strings \
+ xet_robust_list \
+ xetitimer \
+ xetpgid \
+ xetpriority \
+ xettimeofday \
+ #
+
attach_f_p_LDADD = -lrt -lpthread $(LDADD)
clock_xettime_LDADD = -lrt $(LDADD)
count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
stack_fcall_SOURCES = stack-fcall.c \
stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
+GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
+ access.gen.test acct.gen.test add_key.gen.test \
+ adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test \
+ btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \
+ chroot.gen.test clock.gen.test clock_adjtime.gen.test \
+ clock_nanosleep.gen.test clock_xettime.gen.test \
+ copy_file_range.gen.test creat.gen.test delete_module.gen.test \
+ dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test \
+ epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test \
+ epoll_wait.gen.test erestartsys.gen.test execveat.gen.test \
+ execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test \
+ fallocate.gen.test fanotify_init.gen.test \
+ fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test \
+ fchmodat.gen.test fchown.gen.test fchown32.gen.test \
+ fchownat.gen.test fcntl.gen.test fcntl64.gen.test \
+ fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
+ finit_module.gen.test flock.gen.test fork-f.gen.test \
+ fstat.gen.test fstat64.gen.test fstatat64.gen.test \
+ fstatfs.gen.test fstatfs64.gen.test fsync.gen.test \
+ ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test \
+ get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test \
+ getdents.gen.test getdents64.gen.test getegid.gen.test \
+ getegid32.gen.test geteuid.gen.test geteuid32.gen.test \
+ getgid.gen.test getgid32.gen.test getgroups.gen.test \
+ getgroups32.gen.test getpeername.gen.test getpgrp.gen.test \
+ getpid.gen.test getppid.gen.test getrandom.gen.test \
+ getresgid.gen.test getresgid32.gen.test getresuid.gen.test \
+ getresuid32.gen.test getrlimit.gen.test getrusage.gen.test \
+ getsid.gen.test getsockname.gen.test gettid.gen.test \
+ getuid32.gen.test getxxid.gen.test inet-cmsg.gen.test \
+ init_module.gen.test inotify.gen.test inotify_init1.gen.test \
+ int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test \
+ ioctl_evdev-v.gen.test ioctl_loop.gen.test \
+ ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test \
+ ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
+ ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
+ ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
+ iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
+ ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
+ kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \
+ keyctl.gen.test kill.gen.test lchown.gen.test \
+ lchown32.gen.test link.gen.test linkat.gen.test \
+ lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
+ madvise.gen.test mbind.gen.test membarrier.gen.test \
+ memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
+ mkdir.gen.test mkdirat.gen.test mknod.gen.test \
+ mknodat.gen.test mlock.gen.test mlock2.gen.test \
+ mlockall.gen.test mmap64.gen.test mmsg.gen.test \
+ mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
+ mount.gen.test move_pages.gen.test mq.gen.test \
+ mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+ mq_sendrecv-write.gen.test msg_control.gen.test \
+ msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
+ nanosleep.gen.test net-icmp_filter.gen.test \
+ net-sockaddr.gen.test netlink_protocol.gen.test \
+ newfstatat.gen.test old_mmap.gen.test oldfstat.gen.test \
+ oldlstat.gen.test oldstat.gen.test open.gen.test \
+ openat.gen.test osf_utimes.gen.test pause.gen.test \
+ perf_event_open.gen.test perf_event_open_nonverbose.gen.test \
+ perf_event_open_unabbrev.gen.test pipe2.gen.test \
+ pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
+ ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
+ preadv.gen.test preadv-pwritev.gen.test \
+ preadv2-pwritev2.gen.test printstr.gen.test prlimit64.gen.test \
+ process_vm_readv.gen.test process_vm_writev.gen.test \
+ pselect6.gen.test ptrace.gen.test pwritev.gen.test \
+ quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test \
+ quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test \
+ readdir.gen.test readlink.gen.test readlinkat.gen.test \
+ reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test \
+ recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
+ rename.gen.test renameat.gen.test renameat2.gen.test \
+ request_key.gen.test rmdir.gen.test rt_sigpending.gen.test \
+ rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test \
+ rt_sigreturn.gen.test rt_sigsuspend.gen.test \
+ rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
+ sched.gen.test sched_get_priority_mxx.gen.test \
+ sched_rr_get_interval.gen.test sched_xetaffinity.gen.test \
+ sched_xetattr.gen.test sched_xetparam.gen.test \
+ sched_xetscheduler.gen.test sched_yield.gen.test \
+ seccomp-filter.gen.test seccomp-filter-v.gen.test \
+ select.gen.test semop.gen.test sendfile.gen.test \
+ sendfile64.gen.test set_mempolicy.gen.test \
+ setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
+ setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
+ setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
+ sethostname.gen.test setns.gen.test setregid.gen.test \
+ setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
+ setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
+ setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
+ setuid32.gen.test shmxt.gen.test shutdown.gen.test \
+ siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+ sigreturn.gen.test sigsuspend.gen.test socketcall.gen.test \
+ splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \
+ statfs64.gen.test statx.gen.test swap.gen.test \
+ sxetmask.gen.test symlink.gen.test symlinkat.gen.test \
+ sync.gen.test sync_file_range.gen.test \
+ sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test \
+ tee.gen.test time.gen.test timer_create.gen.test \
+ timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test \
+ times-fail.gen.test trace_fstat.gen.test \
+ trace_fstatfs.gen.test trace_lstat.gen.test \
+ trace_question.gen.test trace_stat.gen.test \
+ trace_stat_like.gen.test trace_statfs.gen.test \
+ trace_statfs_like.gen.test truncate.gen.test \
+ truncate64.gen.test ugetrlimit.gen.test umask.gen.test \
+ umoven-illptr.gen.test umovestr-illptr.gen.test \
+ umovestr3.gen.test unlink.gen.test unlinkat.gen.test \
+ unshare.gen.test userfaultfd.gen.test ustat.gen.test \
+ utime.gen.test utimensat.gen.test utimes.gen.test \
+ vfork-f.gen.test vhangup.gen.test vmsplice.gen.test \
+ wait4.gen.test wait4-v.gen.test waitid.gen.test \
+ waitid-v.gen.test waitpid.gen.test xattr.gen.test \
+ xattr-strings.gen.test xet_robust_list.gen.test \
+ xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \
+ xettimeofday.gen.test
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_nsfs.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 \
@@ -2650,148 +3002,21 @@
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 = \
@@ -2804,7 +3029,7 @@
detach-sleeping.test \
detach-stopped.test \
filter-unavailable.test \
- fork-f.test \
+ get_regs.test \
ksysent.test \
opipe.test \
options-syntax.test \
@@ -2820,7 +3045,6 @@
redirect-fds.test \
redirect.test \
restart_syscall.test \
- signal_receive.test \
strace-C.test \
strace-E.test \
strace-S.test \
@@ -2832,77 +3056,94 @@
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))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+XFAIL_TESTS_x32 = int_0x80.gen.test
+XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
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)
+EXTRA_DIST = \
+ caps-abbrev.awk \
+ caps.awk \
+ clock.in \
+ count-f.expected \
+ eventfd.expected \
+ fadvise.h \
+ filter-unavailable.expected \
+ fstatat.c \
+ fstatx.c \
+ gen_pure_executables.sh \
+ gen_tests.in \
+ gen_tests.sh \
+ getresugid.c \
+ init.sh \
+ init_delete_module.h \
+ ioctl-v.sh \
+ ipc.sh \
+ ipc_msgbuf.expected \
+ ksysent.sed \
+ lstatx.c \
+ match.awk \
+ net.expected \
+ oldselect.expected \
+ pipe.expected \
+ process_vm_readv_writev.c \
+ pure_executables.list \
+ qual_fault-exit_group.expected \
+ qual_inject-error-signal.expected \
+ qual_inject-signal.expected \
+ quotactl.h \
+ regex.in \
+ run.sh \
+ sched.in \
+ scno_tampering.sh \
+ setfsugid.c \
+ setresugid.c \
+ setreugid.c \
+ setugid.c \
+ sigaction.awk \
+ sigaltstack.expected \
+ sockname.c \
+ 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 \
+ trace_fstat.in \
+ trace_fstatfs.in \
+ trace_lstat.in \
+ trace_question.in \
+ trace_stat.in \
+ trace_stat_like.in \
+ trace_statfs.in \
+ trace_statfs_like.in \
+ 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 \
+ xutimes.c \
+ $(TESTS)
objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
@@ -2913,7 +3154,7 @@
.SUFFIXES:
.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -2934,7 +3175,7 @@
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:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
@rm -f getpgrp$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES)
+ @rm -f getpid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES)
+ @rm -f getppid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES)
@rm -f getrandom$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
@rm -f getsockname$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES)
+ @rm -f gettid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES)
@rm -f getuid$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
@rm -f inotify_init1$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES)
+ @rm -f int_0x80$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES)
@rm -f ioctl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
@rm -f ioctl_mtd$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES)
+ @rm -f ioctl_nsfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_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)
@@ -3548,6 +3809,10 @@
@rm -f lstat64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES)
+ @rm -f madvise$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES)
@rm -f mbind$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
@rm -f openat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES)
+ @rm -f osf_utimes$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES)
@rm -f pause$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
@rm -f ppoll$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
+ppoll-v$(EXEEXT): $(ppoll_v_OBJECTS) $(ppoll_v_DEPENDENCIES) $(EXTRA_ppoll_v_DEPENDENCIES)
+ @rm -f ppoll-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ppoll_v_OBJECTS) $(ppoll_v_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)
@@ -4004,6 +4277,10 @@
@rm -f rt_sigqueueinfo$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES)
+ @rm -f rt_sigreturn$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
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)
@@ -4204,6 +4481,10 @@
@rm -f sigreturn$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES)
+ @rm -f sigsuspend$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES)
@rm -f sleep$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
@rm -f statfs64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES)
+ @rm -f statx$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES)
@rm -f swap$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES)
+ @rm -f sxetmask$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES)
@rm -f symlink$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
include ./$(DEPDIR)/getgroups32.Po
include ./$(DEPDIR)/getpeername.Po
include ./$(DEPDIR)/getpgrp.Po
+include ./$(DEPDIR)/getpid.Po
+include ./$(DEPDIR)/getppid.Po
include ./$(DEPDIR)/getrandom.Po
include ./$(DEPDIR)/getresgid.Po
include ./$(DEPDIR)/getresgid32.Po
@@ -4557,6 +4848,7 @@
include ./$(DEPDIR)/getrusage.Po
include ./$(DEPDIR)/getsid.Po
include ./$(DEPDIR)/getsockname.Po
+include ./$(DEPDIR)/gettid.Po
include ./$(DEPDIR)/getuid.Po
include ./$(DEPDIR)/getuid32.Po
include ./$(DEPDIR)/getxxid.Po
@@ -4564,6 +4856,7 @@
include ./$(DEPDIR)/init_module.Po
include ./$(DEPDIR)/inotify.Po
include ./$(DEPDIR)/inotify_init1.Po
+include ./$(DEPDIR)/int_0x80.Po
include ./$(DEPDIR)/ioctl.Po
include ./$(DEPDIR)/ioctl_block.Po
include ./$(DEPDIR)/ioctl_dm-v.Po
@@ -4574,6 +4867,7 @@
include ./$(DEPDIR)/ioctl_loop-v.Po
include ./$(DEPDIR)/ioctl_loop.Po
include ./$(DEPDIR)/ioctl_mtd.Po
+include ./$(DEPDIR)/ioctl_nsfs.Po
include ./$(DEPDIR)/ioctl_rtc-v.Po
include ./$(DEPDIR)/ioctl_rtc.Po
include ./$(DEPDIR)/ioctl_scsi.Po
@@ -4603,6 +4897,7 @@
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-get_sigset_size.Po
include ./$(DEPDIR)/libtests_a-hexdump_strdup.Po
include ./$(DEPDIR)/libtests_a-hexquote_strndup.Po
include ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
@@ -4611,9 +4906,11 @@
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-print_time.Po
include ./$(DEPDIR)/libtests_a-printflags.Po
include ./$(DEPDIR)/libtests_a-printxval.Po
include ./$(DEPDIR)/libtests_a-signal2name.Po
+include ./$(DEPDIR)/libtests_a-skip_unavailable.Po
include ./$(DEPDIR)/libtests_a-sprintrc.Po
include ./$(DEPDIR)/libtests_a-tail_alloc.Po
include ./$(DEPDIR)/libtests_a-tprintf.Po
@@ -4624,6 +4921,7 @@
include ./$(DEPDIR)/lseek.Po
include ./$(DEPDIR)/lstat.Po
include ./$(DEPDIR)/lstat64-lstat64.Po
+include ./$(DEPDIR)/madvise.Po
include ./$(DEPDIR)/mbind.Po
include ./$(DEPDIR)/membarrier.Po
include ./$(DEPDIR)/memfd_create.Po
@@ -4673,6 +4971,7 @@
include ./$(DEPDIR)/oldstat.Po
include ./$(DEPDIR)/open.Po
include ./$(DEPDIR)/openat.Po
+include ./$(DEPDIR)/osf_utimes.Po
include ./$(DEPDIR)/pause.Po
include ./$(DEPDIR)/pc.Po
include ./$(DEPDIR)/perf_event_open.Po
@@ -4685,6 +4984,7 @@
include ./$(DEPDIR)/pkey_free.Po
include ./$(DEPDIR)/pkey_mprotect.Po
include ./$(DEPDIR)/poll.Po
+include ./$(DEPDIR)/ppoll-v.Po
include ./$(DEPDIR)/ppoll.Po
include ./$(DEPDIR)/prctl-arg2-intptr.Po
include ./$(DEPDIR)/prctl-dumpable.Po
@@ -4738,6 +5038,7 @@
include ./$(DEPDIR)/rt_sigpending.Po
include ./$(DEPDIR)/rt_sigprocmask.Po
include ./$(DEPDIR)/rt_sigqueueinfo.Po
+include ./$(DEPDIR)/rt_sigreturn.Po
include ./$(DEPDIR)/rt_sigsuspend.Po
include ./$(DEPDIR)/rt_sigtimedwait.Po
include ./$(DEPDIR)/rt_tgsigqueueinfo.Po
@@ -4788,6 +5089,7 @@
include ./$(DEPDIR)/signal_receive.Po
include ./$(DEPDIR)/signalfd4.Po
include ./$(DEPDIR)/sigreturn.Po
+include ./$(DEPDIR)/sigsuspend.Po
include ./$(DEPDIR)/sleep.Po
include ./$(DEPDIR)/socketcall.Po
include ./$(DEPDIR)/splice.Po
@@ -4800,7 +5102,9 @@
include ./$(DEPDIR)/stat64-stat64.Po
include ./$(DEPDIR)/statfs-statfs.Po
include ./$(DEPDIR)/statfs64.Po
+include ./$(DEPDIR)/statx.Po
include ./$(DEPDIR)/swap.Po
+include ./$(DEPDIR)/sxetmask.Po
include ./$(DEPDIR)/symlink.Po
include ./$(DEPDIR)/symlinkat.Po
include ./$(DEPDIR)/sync.Po
@@ -4925,6 +5229,20 @@
# 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-get_sigset_size.o: get_sigset_size.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+# $(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_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_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+# $(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_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_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_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
@@ -5037,6 +5355,20 @@
# 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-print_time.o: print_time.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+# $(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+# $(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.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
@@ -5079,6 +5411,20 @@
# 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-skip_unavailable.o: skip_unavailable.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+# $(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+# $(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.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
@@ -5603,7 +5949,7 @@
clean: clean-am
clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
- mostlyclean-am
+ clean-local mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
.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 \
+ clean-local 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
+$(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
# Valgrind check
#
@@ -5786,6 +7095,11 @@
ksysent.$(OBJEXT): ksysent.h
$(objects): scno.h
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+ -rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index 311d3bb..0000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,962 +0,0 @@
-# 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.
-
-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
-
-check_PROGRAMS = \
- _newselect \
- accept \
- accept4 \
- access \
- acct \
- add_key \
- 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 \
- chroot \
- clock_adjtime \
- clock_nanosleep \
- clock_xettime \
- copy_file_range \
- count-f \
- creat \
- delete_module \
- dup \
- dup2 \
- dup3 \
- epoll_create \
- epoll_create1 \
- epoll_ctl \
- epoll_pwait \
- epoll_wait \
- erestartsys \
- eventfd \
- execve \
- execve-v \
- execveat \
- execveat-v \
- faccessat \
- fadvise64 \
- fadvise64_64 \
- fallocate \
- fanotify_init \
- fanotify_mark \
- fchdir \
- fchmod \
- fchmodat \
- fchown \
- fchown32 \
- fchownat \
- fcntl \
- fcntl64 \
- fdatasync \
- file_handle \
- file_ioctl \
- filter-unavailable \
- finit_module \
- 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 \
- 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 \
- lchown \
- lchown32 \
- link \
- linkat \
- llseek \
- lookup_dcookie \
- 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 \
- mq_sendrecv \
- mq_sendrecv-read \
- mq_sendrecv-write \
- 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 \
- 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 \
- 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 \
- setns \
- 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 \
- threads-execve \
- time \
- timer_create \
- timer_xettime \
- timerfd_xettime \
- times \
- times-fail \
- truncate \
- truncate64 \
- ugetrlimit \
- uio \
- umask \
- umount \
- umount2 \
- umoven-illptr \
- umovestr \
- umovestr-illptr \
- umovestr2 \
- umovestr3 \
- uname \
- unix-pair-send-recv \
- unix-pair-sendto-recvfrom \
- unlink \
- unlinkat \
- unshare \
- userfaultfd \
- ustat \
- utime \
- utimensat \
- utimes \
- vfork-f \
- vhangup \
- vmsplice \
- wait4 \
- wait4-v \
- waitid \
- waitid-v \
- waitpid \
- xattr \
- xattr-strings \
- xet_robust_list \
- xetitimer \
- xetpgid \
- xetpriority \
- xettimeofday \
- # end of check_PROGRAMS
-
-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
-
-if USE_LIBUNWIND
-LIBUNWIND_TESTS = strace-k.test
-else
-LIBUNWIND_TESTS =
-endif
-
-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
-
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(LIBUNWIND_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_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 \
- 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)
-
-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 = $(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
index 3a4d792..4a51782 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -17,6 +17,7 @@
# Automake input for strace tests.
#
# Copyright (c) 2011-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2011-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
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 \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+ $(srcdir)/../scno.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/depcomp \
$(top_srcdir)/test-driver
+check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
+ attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
+ attach-p-cmd-p$(EXEEXT) caps-abbrev$(EXEEXT) count-f$(EXEEXT) \
+ execve-v$(EXEEXT) execveat-v$(EXEEXT) \
+ filter-unavailable$(EXEEXT) fork-f$(EXEEXT) getpid$(EXEEXT) \
+ getppid$(EXEEXT) gettid$(EXEEXT) int_0x80$(EXEEXT) \
+ ioctl_dm-v$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+ ioctl_loop-nv$(EXEEXT) ioctl_loop-v$(EXEEXT) \
+ ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) ksysent$(EXEEXT) \
+ mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
+ msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
+ netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+ netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \
+ perf_event_open_nonverbose$(EXEEXT) \
+ perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+ print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+ qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+ qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+ quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+ redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+ scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+ seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+ signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+ threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+ unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+ wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
@@ -300,6 +191,7 @@
libtests_a-error_msg.$(OBJEXT) \
libtests_a-fill_memory.$(OBJEXT) \
libtests_a-get_page_size.$(OBJEXT) \
+ libtests_a-get_sigset_size.$(OBJEXT) \
libtests_a-hexdump_strdup.$(OBJEXT) \
libtests_a-hexquote_strndup.$(OBJEXT) \
libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
libtests_a-overflowuid.$(OBJEXT) \
libtests_a-pipe_maxfd.$(OBJEXT) \
libtests_a-print_quoted_string.$(OBJEXT) \
+ libtests_a-print_time.$(OBJEXT) \
libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
- libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
- libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+ libtests_a-signal2name.$(OBJEXT) \
+ libtests_a-skip_unavailable.$(OBJEXT) \
+ libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+ libtests_a-tprintf.$(OBJEXT)
libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+ access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+ adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+ brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+ chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+ clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+ clock_xettime$(EXEEXT) copy_file_range$(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) \
+ execveat$(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) finit_module$(EXEEXT) flock$(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) getpid$(EXEEXT) getppid$(EXEEXT) \
+ getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+ getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+ getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+ getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(EXEEXT) \
+ inet-cmsg$(EXEEXT) init_module$(EXEEXT) inotify$(EXEEXT) \
+ inotify_init1$(EXEEXT) ioctl$(EXEEXT) ioctl_block$(EXEEXT) \
+ ioctl_dm$(EXEEXT) ioctl_evdev$(EXEEXT) ioctl_loop$(EXEEXT) \
+ ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) ioctl_scsi$(EXEEXT) \
+ ioctl_sg_io_v3$(EXEEXT) ioctl_sg_io_v4$(EXEEXT) \
+ ioctl_sock_gifconf$(EXEEXT) ioctl_uffdio$(EXEEXT) \
+ ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) iopl$(EXEEXT) \
+ ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) ipc_msg$(EXEEXT) \
+ ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+ kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+ keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+ lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+ llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+ lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(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_name$(EXEEXT) \
+ mount$(EXEEXT) move_pages$(EXEEXT) mq$(EXEEXT) \
+ mq_sendrecv$(EXEEXT) mq_sendrecv-read$(EXEEXT) \
+ mq_sendrecv-write$(EXEEXT) msg_control$(EXEEXT) \
+ msg_name$(EXEEXT) munlockall$(EXEEXT) nanosleep$(EXEEXT) \
+ net-icmp_filter$(EXEEXT) net-sockaddr$(EXEEXT) \
+ net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) \
+ net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+ netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+ old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+ oldselect$(EXEEXT) oldstat$(EXEEXT) open$(EXEEXT) \
+ openat$(EXEEXT) osf_utimes$(EXEEXT) pause$(EXEEXT) \
+ perf_event_open$(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-securebits$(EXEEXT) \
+ prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
+ pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+ preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+ printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+ process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+ pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+ read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+ readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
+ reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
+ recvmsg$(EXEEXT) remap_file_pages$(EXEEXT) rename$(EXEEXT) \
+ renameat$(EXEEXT) renameat2$(EXEEXT) request_key$(EXEEXT) \
+ rmdir$(EXEEXT) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+ rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(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) \
+ seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+ sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(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) \
+ signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(EXEEXT) \
+ socketcall$(EXEEXT) splice$(EXEEXT) stat$(EXEEXT) \
+ stat64$(EXEEXT) statfs$(EXEEXT) statfs64$(EXEEXT) \
+ statx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \
+ symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \
+ sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \
+ sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \
+ timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+ timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+ truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \
+ uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \
+ umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \
+ umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \
+ uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \
+ unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \
+ utime$(EXEEXT) utimensat$(EXEEXT) utimes$(EXEEXT) \
+ vhangup$(EXEEXT) vmsplice$(EXEEXT) wait4$(EXEEXT) \
+ waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+ xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+ xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+ xettimeofday$(EXEEXT)
_newselect_SOURCES = _newselect.c
_newselect_OBJECTS = _newselect.$(OBJEXT)
_newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
getpgrp_OBJECTS = getpgrp.$(OBJEXT)
getpgrp_LDADD = $(LDADD)
getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
getrandom_SOURCES = getrandom.c
getrandom_OBJECTS = getrandom.$(OBJEXT)
getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
getsockname_OBJECTS = getsockname.$(OBJEXT)
getsockname_LDADD = $(LDADD)
getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
getuid_SOURCES = getuid.c
getuid_OBJECTS = getuid.$(OBJEXT)
getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
inotify_init1_LDADD = $(LDADD)
inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
ioctl_SOURCES = ioctl.c
ioctl_OBJECTS = ioctl.$(OBJEXT)
ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
ioctl_mtd_LDADD = $(LDADD)
ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
ioctl_rtc_SOURCES = ioctl_rtc.c
ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
lstat64_LDADD = $(LDADD)
lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
mbind_SOURCES = mbind.c
mbind_OBJECTS = mbind.$(OBJEXT)
mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
openat_OBJECTS = openat.$(OBJEXT)
openat_LDADD = $(LDADD)
openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
pause_SOURCES = pause.c
pause_OBJECTS = pause.$(OBJEXT)
pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
ppoll_OBJECTS = ppoll.$(OBJEXT)
ppoll_LDADD = $(LDADD)
ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
rt_sigqueueinfo_LDADD = $(LDADD)
rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
rt_sigsuspend_SOURCES = rt_sigsuspend.c
rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
sigreturn_OBJECTS = sigreturn.$(OBJEXT)
sigreturn_LDADD = $(LDADD)
sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
sleep_SOURCES = sleep.c
sleep_OBJECTS = sleep.$(OBJEXT)
sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
statfs64_OBJECTS = statfs64.$(OBJEXT)
statfs64_LDADD = $(LDADD)
statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
swap_SOURCES = swap.c
swap_OBJECTS = swap.$(OBJEXT)
swap_LDADD = $(LDADD)
swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
symlink_SOURCES = symlink.c
symlink_OBJECTS = symlink.$(OBJEXT)
symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
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 \
+ getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+ getresgid.c getresgid32.c getresuid.c getresuid32.c \
+ getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+ getuid.c getuid32.c getxxid.c inet-cmsg.c init_module.c \
+ inotify.c inotify_init1.c int_0x80.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 \
+ ioctl_nsfs.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 \
+ lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+ memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
+ mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
+ move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
+ mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
+ munlockall.c nanosleep.c net-accept-connect.c \
+ net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
+ net-yy-netlink.c net-yy-unix.c netlink_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 osf_utimes.c pause.c \
+ pc.c perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
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 \
+ rt_sigreturn.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 \
+ sigsuspend.c sleep.c socketcall.c splice.c \
+ $(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
+ statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
threads-execve.c time.c timer_create.c timer_xettime.c \
timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
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 \
+ getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+ getresgid.c getresgid32.c getresuid.c getresuid32.c \
+ getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+ getuid.c getuid32.c getxxid.c inet-cmsg.c init_module.c \
+ inotify.c inotify_init1.c int_0x80.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 \
+ ioctl_nsfs.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 \
+ lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+ memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
+ mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
+ move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
+ mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
+ munlockall.c nanosleep.c net-accept-connect.c \
+ net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
+ net-yy-netlink.c net-yy-unix.c netlink_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 osf_utimes.c pause.c \
+ pc.c perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
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 \
+ rt_sigreturn.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 \
+ sigsuspend.c sleep.c socketcall.c splice.c \
+ $(stack_fcall_SOURCES) stat.c stat64.c statfs.c statfs64.c \
+ statx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
sync_file_range.c sync_file_range2.c sysinfo.c syslog.c tee.c \
threads-execve.c time.c timer_create.c timer_xettime.c \
timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
bases=`echo $$bases`
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_1 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
am__test_logs1 = $(TESTS:=.log)
@@ -2253,6 +2317,7 @@
CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
@@ -2389,6 +2454,7 @@
error_msg.c \
fill_memory.c \
get_page_size.c \
+ get_sigset_size.c \
hexdump_strdup.c \
hexquote_strndup.c \
inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
overflowuid.c \
pipe_maxfd.c \
print_quoted_string.c \
+ print_time.c \
printflags.c \
printxval.c \
signal2name.c \
+ skip_unavailable.c \
sprintrc.c \
tail_alloc.c \
tests.h \
@@ -2409,6 +2477,340 @@
libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
check_LIBRARIES = libtests.a
LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+ _newselect \
+ accept \
+ accept4 \
+ access \
+ acct \
+ add_key \
+ adjtimex \
+ aio \
+ alarm \
+ bpf \
+ brk \
+ btrfs \
+ caps \
+ chmod \
+ chown \
+ chown32 \
+ chroot \
+ clock_adjtime \
+ clock_nanosleep \
+ clock_xettime \
+ copy_file_range \
+ creat \
+ delete_module \
+ dup \
+ dup2 \
+ dup3 \
+ epoll_create \
+ epoll_create1 \
+ epoll_ctl \
+ epoll_pwait \
+ epoll_wait \
+ erestartsys \
+ eventfd \
+ execve \
+ execveat \
+ faccessat \
+ fadvise64 \
+ fadvise64_64 \
+ fallocate \
+ fanotify_init \
+ fanotify_mark \
+ fchdir \
+ fchmod \
+ fchmodat \
+ fchown \
+ fchown32 \
+ fchownat \
+ fcntl \
+ fcntl64 \
+ fdatasync \
+ file_handle \
+ file_ioctl \
+ finit_module \
+ flock \
+ 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 \
+ getpid \
+ getppid \
+ getrandom \
+ getresgid \
+ getresgid32 \
+ getresuid \
+ getresuid32 \
+ getrlimit \
+ getrusage \
+ getsid \
+ getsockname \
+ getuid \
+ getuid32 \
+ getxxid \
+ inet-cmsg \
+ init_module \
+ inotify \
+ inotify_init1 \
+ ioctl \
+ ioctl_block \
+ ioctl_dm \
+ ioctl_evdev \
+ ioctl_loop \
+ ioctl_mtd \
+ ioctl_rtc \
+ 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 \
+ lchown \
+ lchown32 \
+ link \
+ linkat \
+ llseek \
+ lookup_dcookie \
+ lseek \
+ lstat \
+ lstat64 \
+ madvise \
+ mbind \
+ membarrier \
+ memfd_create \
+ migrate_pages \
+ mincore \
+ mkdir \
+ mkdirat \
+ mknod \
+ mknodat \
+ mlock \
+ mlock2 \
+ mlockall \
+ mmap \
+ mmap64 \
+ mmsg \
+ mmsg_name \
+ mount \
+ move_pages \
+ mq \
+ mq_sendrecv \
+ mq_sendrecv-read \
+ mq_sendrecv-write \
+ msg_control \
+ msg_name \
+ munlockall \
+ nanosleep \
+ net-icmp_filter \
+ net-sockaddr \
+ net-y-unix \
+ net-yy-inet \
+ net-yy-netlink \
+ net-yy-unix \
+ netlink_protocol \
+ newfstatat \
+ old_mmap \
+ oldfstat \
+ oldlstat \
+ oldselect \
+ oldstat \
+ open \
+ openat \
+ osf_utimes \
+ pause \
+ perf_event_open \
+ personality \
+ pipe \
+ pipe2 \
+ pkey_alloc \
+ pkey_free \
+ pkey_mprotect \
+ poll \
+ ppoll \
+ prctl-arg2-intptr \
+ prctl-dumpable \
+ prctl-name \
+ prctl-no-args \
+ prctl-pdeathsig \
+ prctl-securebits \
+ prctl-tid_address \
+ prctl-tsc \
+ pread64-pwrite64 \
+ preadv \
+ preadv-pwritev \
+ preadv2-pwritev2 \
+ printstr \
+ prlimit64 \
+ process_vm_readv \
+ process_vm_writev \
+ pselect6 \
+ ptrace \
+ pwritev \
+ quotactl \
+ quotactl-xfs \
+ read-write \
+ readahead \
+ readdir \
+ readlink \
+ readlinkat \
+ readv \
+ reboot \
+ recvfrom \
+ recvmmsg-timeout \
+ recvmsg \
+ remap_file_pages \
+ rename \
+ renameat \
+ renameat2 \
+ request_key \
+ rmdir \
+ rt_sigpending \
+ rt_sigprocmask \
+ rt_sigqueueinfo \
+ rt_sigreturn \
+ rt_sigsuspend \
+ rt_sigtimedwait \
+ rt_tgsigqueueinfo \
+ sched_get_priority_mxx \
+ sched_rr_get_interval \
+ sched_xetaffinity \
+ sched_xetattr \
+ sched_xetparam \
+ sched_xetscheduler \
+ sched_yield \
+ seccomp-filter \
+ select \
+ semop \
+ sendfile \
+ sendfile64 \
+ set_mempolicy \
+ setdomainname \
+ setfsgid \
+ setfsgid32 \
+ setfsuid \
+ setfsuid32 \
+ setgid \
+ setgid32 \
+ setgroups \
+ setgroups32 \
+ sethostname \
+ setns \
+ setregid \
+ setregid32 \
+ setresgid \
+ setresgid32 \
+ setresuid \
+ setresuid32 \
+ setreuid \
+ setreuid32 \
+ setrlimit \
+ setuid \
+ setuid32 \
+ shmxt \
+ shutdown \
+ sigaction \
+ sigaltstack \
+ siginfo \
+ signalfd4 \
+ sigreturn \
+ sigsuspend \
+ socketcall \
+ splice \
+ stat \
+ stat64 \
+ statfs \
+ statfs64 \
+ statx \
+ swap \
+ sxetmask \
+ 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 \
+ umoven-illptr \
+ umovestr \
+ umovestr-illptr \
+ umovestr2 \
+ umovestr3 \
+ uname \
+ unlink \
+ unlinkat \
+ unshare \
+ userfaultfd \
+ ustat \
+ utime \
+ utimensat \
+ utimes \
+ vhangup \
+ vmsplice \
+ wait4 \
+ waitid \
+ waitpid \
+ xattr \
+ xattr-strings \
+ xet_robust_list \
+ xetitimer \
+ xetpgid \
+ xetpriority \
+ xettimeofday \
+ #
+
attach_f_p_LDADD = -lrt -lpthread $(LDADD)
clock_xettime_LDADD = -lrt $(LDADD)
count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
stack_fcall_SOURCES = stack-fcall.c \
stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
+GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
+ access.gen.test acct.gen.test add_key.gen.test \
+ adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test \
+ btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \
+ chroot.gen.test clock.gen.test clock_adjtime.gen.test \
+ clock_nanosleep.gen.test clock_xettime.gen.test \
+ copy_file_range.gen.test creat.gen.test delete_module.gen.test \
+ dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test \
+ epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test \
+ epoll_wait.gen.test erestartsys.gen.test execveat.gen.test \
+ execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test \
+ fallocate.gen.test fanotify_init.gen.test \
+ fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test \
+ fchmodat.gen.test fchown.gen.test fchown32.gen.test \
+ fchownat.gen.test fcntl.gen.test fcntl64.gen.test \
+ fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
+ finit_module.gen.test flock.gen.test fork-f.gen.test \
+ fstat.gen.test fstat64.gen.test fstatat64.gen.test \
+ fstatfs.gen.test fstatfs64.gen.test fsync.gen.test \
+ ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test \
+ get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test \
+ getdents.gen.test getdents64.gen.test getegid.gen.test \
+ getegid32.gen.test geteuid.gen.test geteuid32.gen.test \
+ getgid.gen.test getgid32.gen.test getgroups.gen.test \
+ getgroups32.gen.test getpeername.gen.test getpgrp.gen.test \
+ getpid.gen.test getppid.gen.test getrandom.gen.test \
+ getresgid.gen.test getresgid32.gen.test getresuid.gen.test \
+ getresuid32.gen.test getrlimit.gen.test getrusage.gen.test \
+ getsid.gen.test getsockname.gen.test gettid.gen.test \
+ getuid32.gen.test getxxid.gen.test inet-cmsg.gen.test \
+ init_module.gen.test inotify.gen.test inotify_init1.gen.test \
+ int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test \
+ ioctl_evdev-v.gen.test ioctl_loop.gen.test \
+ ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test \
+ ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
+ ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
+ ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
+ iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
+ ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
+ kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \
+ keyctl.gen.test kill.gen.test lchown.gen.test \
+ lchown32.gen.test link.gen.test linkat.gen.test \
+ lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
+ madvise.gen.test mbind.gen.test membarrier.gen.test \
+ memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
+ mkdir.gen.test mkdirat.gen.test mknod.gen.test \
+ mknodat.gen.test mlock.gen.test mlock2.gen.test \
+ mlockall.gen.test mmap64.gen.test mmsg.gen.test \
+ mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
+ mount.gen.test move_pages.gen.test mq.gen.test \
+ mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+ mq_sendrecv-write.gen.test msg_control.gen.test \
+ msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
+ nanosleep.gen.test net-icmp_filter.gen.test \
+ net-sockaddr.gen.test netlink_protocol.gen.test \
+ newfstatat.gen.test old_mmap.gen.test oldfstat.gen.test \
+ oldlstat.gen.test oldstat.gen.test open.gen.test \
+ openat.gen.test osf_utimes.gen.test pause.gen.test \
+ perf_event_open.gen.test perf_event_open_nonverbose.gen.test \
+ perf_event_open_unabbrev.gen.test pipe2.gen.test \
+ pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
+ ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
+ preadv.gen.test preadv-pwritev.gen.test \
+ preadv2-pwritev2.gen.test printstr.gen.test prlimit64.gen.test \
+ process_vm_readv.gen.test process_vm_writev.gen.test \
+ pselect6.gen.test ptrace.gen.test pwritev.gen.test \
+ quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test \
+ quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test \
+ readdir.gen.test readlink.gen.test readlinkat.gen.test \
+ reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test \
+ recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
+ rename.gen.test renameat.gen.test renameat2.gen.test \
+ request_key.gen.test rmdir.gen.test rt_sigpending.gen.test \
+ rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test \
+ rt_sigreturn.gen.test rt_sigsuspend.gen.test \
+ rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
+ sched.gen.test sched_get_priority_mxx.gen.test \
+ sched_rr_get_interval.gen.test sched_xetaffinity.gen.test \
+ sched_xetattr.gen.test sched_xetparam.gen.test \
+ sched_xetscheduler.gen.test sched_yield.gen.test \
+ seccomp-filter.gen.test seccomp-filter-v.gen.test \
+ select.gen.test semop.gen.test sendfile.gen.test \
+ sendfile64.gen.test set_mempolicy.gen.test \
+ setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
+ setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
+ setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
+ sethostname.gen.test setns.gen.test setregid.gen.test \
+ setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
+ setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
+ setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
+ setuid32.gen.test shmxt.gen.test shutdown.gen.test \
+ siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+ sigreturn.gen.test sigsuspend.gen.test socketcall.gen.test \
+ splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \
+ statfs64.gen.test statx.gen.test swap.gen.test \
+ sxetmask.gen.test symlink.gen.test symlinkat.gen.test \
+ sync.gen.test sync_file_range.gen.test \
+ sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test \
+ tee.gen.test time.gen.test timer_create.gen.test \
+ timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test \
+ times-fail.gen.test trace_fstat.gen.test \
+ trace_fstatfs.gen.test trace_lstat.gen.test \
+ trace_question.gen.test trace_stat.gen.test \
+ trace_stat_like.gen.test trace_statfs.gen.test \
+ trace_statfs_like.gen.test truncate.gen.test \
+ truncate64.gen.test ugetrlimit.gen.test umask.gen.test \
+ umoven-illptr.gen.test umovestr-illptr.gen.test \
+ umovestr3.gen.test unlink.gen.test unlinkat.gen.test \
+ unshare.gen.test userfaultfd.gen.test ustat.gen.test \
+ utime.gen.test utimensat.gen.test utimes.gen.test \
+ vfork-f.gen.test vhangup.gen.test vmsplice.gen.test \
+ wait4.gen.test wait4-v.gen.test waitid.gen.test \
+ waitid-v.gen.test waitpid.gen.test xattr.gen.test \
+ xattr-strings.gen.test xet_robust_list.gen.test \
+ xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \
+ xettimeofday.gen.test
@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_nsfs.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 \
@@ -2650,148 +3002,21 @@
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 = \
@@ -2804,7 +3029,7 @@
detach-sleeping.test \
detach-stopped.test \
filter-unavailable.test \
- fork-f.test \
+ get_regs.test \
ksysent.test \
opipe.test \
options-syntax.test \
@@ -2820,7 +3045,6 @@
redirect-fds.test \
redirect.test \
restart_syscall.test \
- signal_receive.test \
strace-C.test \
strace-E.test \
strace-S.test \
@@ -2832,77 +3056,94 @@
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))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+XFAIL_TESTS_x32 = int_0x80.gen.test
+XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME)) $(XFAIL_TESTS_$(ARCH))
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)
+EXTRA_DIST = \
+ caps-abbrev.awk \
+ caps.awk \
+ clock.in \
+ count-f.expected \
+ eventfd.expected \
+ fadvise.h \
+ filter-unavailable.expected \
+ fstatat.c \
+ fstatx.c \
+ gen_pure_executables.sh \
+ gen_tests.in \
+ gen_tests.sh \
+ getresugid.c \
+ init.sh \
+ init_delete_module.h \
+ ioctl-v.sh \
+ ipc.sh \
+ ipc_msgbuf.expected \
+ ksysent.sed \
+ lstatx.c \
+ match.awk \
+ net.expected \
+ oldselect.expected \
+ pipe.expected \
+ process_vm_readv_writev.c \
+ pure_executables.list \
+ qual_fault-exit_group.expected \
+ qual_inject-error-signal.expected \
+ qual_inject-signal.expected \
+ quotactl.h \
+ regex.in \
+ run.sh \
+ sched.in \
+ scno_tampering.sh \
+ setfsugid.c \
+ setresugid.c \
+ setreugid.c \
+ setugid.c \
+ sigaction.awk \
+ sigaltstack.expected \
+ sockname.c \
+ 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 \
+ trace_fstat.in \
+ trace_fstatfs.in \
+ trace_lstat.in \
+ trace_question.in \
+ trace_stat.in \
+ trace_stat_like.in \
+ trace_statfs.in \
+ trace_statfs_like.in \
+ 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 \
+ xutimes.c \
+ $(TESTS)
objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
@@ -2913,7 +3154,7 @@
.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)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -2934,7 +3175,7 @@
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:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
@rm -f getpgrp$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES)
+ @rm -f getpid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES)
+ @rm -f getppid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES)
@rm -f getrandom$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
@rm -f getsockname$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES)
+ @rm -f gettid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES)
@rm -f getuid$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
@rm -f inotify_init1$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES)
+ @rm -f int_0x80$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES)
@rm -f ioctl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
@rm -f ioctl_mtd$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES)
+ @rm -f ioctl_nsfs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_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)
@@ -3548,6 +3809,10 @@
@rm -f lstat64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES)
+ @rm -f madvise$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES)
@rm -f mbind$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
@rm -f openat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES)
+ @rm -f osf_utimes$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES)
@rm -f pause$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
@rm -f ppoll$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_LDADD) $(LIBS)
+ppoll-v$(EXEEXT): $(ppoll_v_OBJECTS) $(ppoll_v_DEPENDENCIES) $(EXTRA_ppoll_v_DEPENDENCIES)
+ @rm -f ppoll-v$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ppoll_v_OBJECTS) $(ppoll_v_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)
@@ -4004,6 +4277,10 @@
@rm -f rt_sigqueueinfo$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES)
+ @rm -f rt_sigreturn$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
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)
@@ -4204,6 +4481,10 @@
@rm -f sigreturn$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES)
+ @rm -f sigsuspend$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES)
@rm -f sleep$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
@rm -f statfs64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES)
+ @rm -f statx$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES)
@rm -f swap$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES)
+ @rm -f sxetmask$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES)
@rm -f symlink$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
@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)/getpid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.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@
@@ -4557,6 +4848,7 @@
@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)/gettid.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@
@@ -4564,6 +4856,7 @@
@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)/int_0x80.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@
@@ -4574,6 +4867,7 @@
@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_nsfs.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@
@@ -4603,6 +4897,7 @@
@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-get_sigset_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@
@@ -4611,9 +4906,11 @@
@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-print_time.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-skip_unavailable.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@
@@ -4624,6 +4921,7 @@
@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)/madvise.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@
@@ -4673,6 +4971,7 @@
@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)/osf_utimes.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@
@@ -4685,6 +4984,7 @@
@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-v.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@
@@ -4738,6 +5038,7 @@
@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_sigreturn.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@
@@ -4788,6 +5089,7 @@
@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)/sigsuspend.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@
@@ -4800,7 +5102,9 @@
@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)/statx.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.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@
@@ -4925,6 +5229,20 @@
@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-get_sigset_size.o: get_sigset_size.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_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_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_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_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_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
@@ -5037,6 +5355,20 @@
@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-print_time.o: print_time.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print_time.c' object='libtests_a-print_time.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='print_time.c' object='libtests_a-print_time.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.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
@@ -5079,6 +5411,20 @@
@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-skip_unavailable.o: skip_unavailable.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.o' libtool=no @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-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.obj' libtool=no @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-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.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
@@ -5603,7 +5949,7 @@
clean: clean-am
clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
- mostlyclean-am
+ clean-local mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
.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 \
+ clean-local 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
+$(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/accept.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_loop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_loop-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_mtd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/oldfstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/oldlstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rmdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/splice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
@VALGRIND_CHECK_RULES@
ksysent.h: $(srcdir)/ksysent.sed
@@ -5700,6 +7009,11 @@
ksysent.$(OBJEXT): ksysent.h
$(objects): scno.h
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+ -rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
diff --git a/tests/_newselect.gen.test b/tests/_newselect.gen.test
new file mode 100755
index 0000000..490abe4
--- /dev/null
+++ b/tests/_newselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/_newselect.test b/tests/_newselect.test
deleted file mode 100755
index 3371d4d..0000000
--- a/tests/_newselect.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check _newselect syscall decoding.
-
-. "${srcdir=.}/select.test"
diff --git a/tests/accept.gen.test b/tests/accept.gen.test
new file mode 100755
index 0000000..3ebba3b
--- /dev/null
+++ b/tests/accept.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/accept.test b/tests/accept.test
deleted file mode 100755
index b5e0790..0000000
--- a/tests/accept.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/accept4.gen.test b/tests/accept4.gen.test
new file mode 100755
index 0000000..5bd7fe6
--- /dev/null
+++ b/tests/accept4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests/accept4.test b/tests/accept4.test
deleted file mode 100755
index 722f25a..0000000
--- a/tests/accept4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests/access.c b/tests/access.c
index e6f169b..4420ba3 100644
--- a/tests/access.c
+++ b/tests/access.c
@@ -19,6 +19,7 @@
printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
sample, rc, errno2name());
+ puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/access.gen.test b/tests/access.gen.test
new file mode 100755
index 0000000..7d80e6f
--- /dev/null
+++ b/tests/access.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -P access_sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P access_sample
diff --git a/tests/access.test b/tests/access.test
deleted file mode 100755
index 3ab2eb4..0000000
--- a/tests/access.test
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-# Check access syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -eaccess -a30 $args > "$EXP"
-
-# Filter out access() calls made by libc.
-grep -F access_sample < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/acct.gen.test b/tests/acct.gen.test
new file mode 100755
index 0000000..fa14e85
--- /dev/null
+++ b/tests/acct.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/acct.test b/tests/acct.test
deleted file mode 100755
index b9bca75..0000000
--- a/tests/acct.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check acct syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/add_key.gen.test b/tests/add_key.gen.test
new file mode 100755
index 0000000..d6ffbc8
--- /dev/null
+++ b/tests/add_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (add_key -a30 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s12
diff --git a/tests/add_key.test b/tests/add_key.test
deleted file mode 100755
index eadd8c2..0000000
--- a/tests/add_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of add_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -s12
diff --git a/tests/adjtimex.c b/tests/adjtimex.c
index 1638b53..4d68ea1 100644
--- a/tests/adjtimex.c
+++ b/tests/adjtimex.c
@@ -1,7 +1,7 @@
/*
* This file is part of adjtimex strace test.
*
- * 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
@@ -33,38 +33,46 @@
#include <string.h>
#include <sys/timex.h>
+#include "xlat.h"
+#include "xlat/adjtimex_state.h"
+#include "xlat/adjtimex_status.h"
+
int
main(void)
{
- adjtimex(NULL);
- printf("adjtimex\\(NULL\\) = -1 EFAULT \\(%m\\)\n");
+ int state = adjtimex(NULL);
+ printf("adjtimex(NULL) = %s\n", sprintrc(state));
- struct timex * const tx = tail_alloc(sizeof(*tx));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
memset(tx, 0, sizeof(*tx));
- int state = adjtimex(tx);
+ state = adjtimex(tx);
if (state < 0)
perror_msg_and_skip("adjtimex");
- printf("adjtimex\\(\\{modes=0, offset=%jd, freq=%jd, maxerror=%jd"
- ", esterror=%jd, status=%s, constant=%jd, precision=%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
- "\\}\\) = %d \\(TIME_[A-Z]+\\)\n",
+ printf("adjtimex({modes=0, offset=%jd, freq=%jd, maxerror=%jd"
+ ", esterror=%jd, status=",
(intmax_t) tx->offset,
(intmax_t) tx->freq,
(intmax_t) tx->maxerror,
- (intmax_t) tx->esterror,
- tx->status ? "STA_[A-Z]+(\\|STA_[A-Z]+)*" : "0",
+ (intmax_t) tx->esterror);
+ if (tx->status)
+ printflags(adjtimex_status, (unsigned int) tx->status, NULL);
+ else
+ putchar('0');
+ printf(", constant=%jd, precision=%jd"
+ ", tolerance=%jd, time={tv_sec=%lld, tv_usec=%llu}, 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
+ "}) = %d (",
(intmax_t) tx->constant,
(intmax_t) tx->precision,
(intmax_t) tx->tolerance,
- (intmax_t) tx->time.tv_sec,
- (intmax_t) tx->time.tv_usec,
+ (long long) tx->time.tv_sec,
+ zero_extend_signed_to_ull(tx->time.tv_usec),
(intmax_t) tx->tick,
(intmax_t) tx->ppsfreq,
(intmax_t) tx->jitter,
@@ -78,6 +86,9 @@
tx->tai,
#endif
state);
+ printxval(adjtimex_state, (unsigned int) state, NULL);
+ puts(")");
+ puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/adjtimex.gen.test b/tests/adjtimex.gen.test
new file mode 100755
index 0000000..8db59f2
--- /dev/null
+++ b/tests/adjtimex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/adjtimex.test b/tests/adjtimex.test
deleted file mode 100755
index 0140550..0000000
--- a/tests/adjtimex.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check adjtimex syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a 15 -e adjtimex $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/aio.c b/tests/aio.c
index 0766d23..677a02b 100644
--- a/tests/aio.c
+++ b/tests/aio.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -198,15 +199,14 @@
};
const long *cbvs2 = tail_memdup(proto_cbvs2, sizeof(proto_cbvs2));
- unsigned long *ctx = tail_alloc(sizeof(unsigned long));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned long, ctx);
*ctx = 0;
const unsigned int nr = ARRAY_SIZE(proto_cb);
const unsigned long lnr = (unsigned long) (0xdeadbeef00000000ULL | nr);
const struct io_event *ev = tail_alloc(nr * sizeof(struct io_event));
- const struct timespec proto_ts = { .tv_nsec = 123456789 };
- const struct timespec *ts = tail_memdup(&proto_ts, sizeof(proto_ts));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
(void) close(0);
if (open("/dev/zero", O_RDONLY))
@@ -263,6 +263,24 @@
bogus_ctx, (long) 0xca7faceddeadf00dLL,
(long) 0xba5e1e505ca571e0LL, ts + 1, sprintrc(rc));
+ ts->tv_sec = 0xdeadbeefU;
+ ts->tv_nsec = 0xfacefeedU;
+ rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+ printf("io_getevents(%#lx, 0, 0, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ bogus_ctx, (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+ ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+ printf("io_getevents(%#lx, 0, 0, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ bogus_ctx, (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+ ts->tv_sec = 0;
+ ts->tv_nsec = 123456789;
rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts);
printf("io_getevents(%#lx, %ld, %ld, ["
"{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}, "
diff --git a/tests/aio.gen.test b/tests/aio.gen.test
new file mode 100755
index 0000000..8c8cbd5
--- /dev/null
+++ b/tests/aio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (aio -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
diff --git a/tests/aio.test b/tests/aio.test
deleted file mode 100755
index 2ba90da..0000000
--- a/tests/aio.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check io_* syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=io_setup,io_submit,io_getevents,io_cancel,io_destroy
-run_strace_match_diff -a14 -e trace=$syscalls
diff --git a/tests/alarm.gen.test b/tests/alarm.gen.test
new file mode 100755
index 0000000..ba1dea8
--- /dev/null
+++ b/tests/alarm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/alarm.test b/tests/alarm.test
deleted file mode 100755
index 267b223..0000000
--- a/tests/alarm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check alarm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/attach-f-p-cmd.c b/tests/attach-f-p-cmd.c
index 77594be..1e9ed99 100644
--- a/tests/attach-f-p-cmd.c
+++ b/tests/attach-f-p-cmd.c
@@ -2,6 +2,7 @@
* This file is part of attach-f-p strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,6 +35,8 @@
int
main(void)
{
+ skip_if_unavailable("/proc/self/task/");
+
static const char dir[] = "attach-f-p.test cmd";
pid_t pid = getpid();
int rc = chdir(dir);
diff --git a/tests/attach-f-p.test b/tests/attach-f-p.test
index f417074..368c775 100755
--- a/tests/attach-f-p.test
+++ b/tests/attach-f-p.test
@@ -3,6 +3,7 @@
# Check that -f -p attaches to threads properly.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,22 +30,17 @@
. "${srcdir=.}/init.sh"
-# strace -f -p is implemented using /proc/$pid/task/
-[ -d /proc/self/task/ ] ||
- framework_skip_ '/proc/self/task/ is not available'
run_prog_skip_if_failed \
kill -0 $$
-run_prog ./attach-f-p-cmd > /dev/null
+run_prog ../attach-f-p-cmd > /dev/null
-rm -f "$OUT"
-./set_ptracer_any sh -c "exec ./attach-f-p >> $OUT" > /dev/null &
+../set_ptracer_any sh -c "exec ../attach-f-p >> $EXP" > /dev/null &
tracee_pid=$!
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
kill -0 $tracee_pid 2> /dev/null ||
fail_ 'set_ptracer_any sh failed'
done
-run_strace -a32 -f -echdir -p $tracee_pid ./attach-f-p-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a32 -f -echdir -p $tracee_pid ../attach-f-p-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests/attach-p-cmd.test b/tests/attach-p-cmd.test
index 2068cf1..e7c1bfa 100755
--- a/tests/attach-p-cmd.test
+++ b/tests/attach-p-cmd.test
@@ -3,6 +3,7 @@
# Check that simultaneous use of -p option and tracing of a command works.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -32,16 +33,13 @@
run_prog_skip_if_failed \
kill -0 $$
-rm -rf attach-p-cmd.test-lock
-rm -f "$OUT"
-./set_ptracer_any ./attach-p-cmd-p >> "$OUT" &
+../set_ptracer_any ../attach-p-cmd-p >> "$EXP" &
tracee_pid=$!
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
kill -0 $tracee_pid 2> /dev/null ||
- fail_ 'set_ptracer_any ./attach-p-cmd-p failed'
+ fail_ 'set_ptracer_any ../attach-p-cmd-p failed'
done
-run_strace -a30 -echdir -p $tracee_pid ./attach-p-cmd-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a30 -echdir -p $tracee_pid ../attach-p-cmd-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests/bexecve.test b/tests/bexecve.test
index f1ab04f..325330e 100755
--- a/tests/bexecve.test
+++ b/tests/bexecve.test
@@ -3,6 +3,7 @@
# Check -bexecve behavior.
#
# Copyright (c) 2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2015-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -35,14 +36,14 @@
$STRACE "$@" 2> "$LOG"
}
-run_strace_redir -enone ./set_ptracer_any true ||
+run_strace_redir -enone ../set_ptracer_any true ||
dump_log_and_fail_with "$STRACE $args: unexpected exit status"
-run_strace_redir -enone ./set_ptracer_any false
+run_strace_redir -enone ../set_ptracer_any false
[ $? -eq 1 ] ||
dump_log_and_fail_with "$STRACE $args: unexpected exit status"
-run_strace_redir -bexecve -enone ./set_ptracer_any false ||
+run_strace_redir -bexecve -enone ../set_ptracer_any false ||
dump_log_and_fail_with "$STRACE $args: unexpected exit status"
pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
diff --git a/tests/bpf.c b/tests/bpf.c
index 7ef16c9..40f96a7 100644
--- a/tests/bpf.c
+++ b/tests/bpf.c
@@ -109,14 +109,15 @@
# endif
/* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
static int
prog_cgroup(int cmd)
{
union bpf_attr attr = {
.target_fd = -1,
.attach_bpf_fd = -1,
- .attach_type = 0
+ .attach_type = 0,
+ .attach_flags = 1
};
void *const t_attr = tail_memdup(&attr, sizeof(attr));
return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
@@ -205,11 +206,12 @@
BOGUS_BPF(BPF_OBJ_GET);
# endif
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
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",
+ ", attach_type=BPF_CGROUP_INET_INGRESS"
+ ", attach_flags=BPF_F_ALLOW_OVERRIDE}, %u) = %s\n",
(unsigned) sizeof(union bpf_attr), errstr);
BOGUS_BPF(BPF_PROG_ATTACH);
diff --git a/tests/bpf.gen.test b/tests/bpf.gen.test
new file mode 100755
index 0000000..7ee9e7f
--- /dev/null
+++ b/tests/bpf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/bpf.test b/tests/bpf.test
deleted file mode 100755
index adf0d57..0000000
--- a/tests/bpf.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check bpf syscall decoding.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a20
diff --git a/tests/brk.test b/tests/brk.test
index 8c0e2e4..3781220 100755
--- a/tests/brk.test
+++ b/tests/brk.test
@@ -7,4 +7,3 @@
run_prog > /dev/null
run_strace -a10 -ebrk $args > "$EXP"
match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/btrfs-v.test b/tests/btrfs-v.test
index 1ee17b4..8cc2724 100755
--- a/tests/btrfs-v.test
+++ b/tests/btrfs-v.test
@@ -4,12 +4,8 @@
. "${srcdir=.}/init.sh"
-run_prog ./btrfs -v > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
check_prog grep
+run_prog ../btrfs -v > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/btrfs-vw.test b/tests/btrfs-vw.test
index c7e40ad..913fba1 100755
--- a/tests/btrfs-vw.test
+++ b/tests/btrfs-vw.test
@@ -18,12 +18,8 @@
skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
fi
-run_prog ./btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
check_prog grep
+run_prog ../btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/btrfs-w.test b/tests/btrfs-w.test
index 6238dca..031f0b8 100755
--- a/tests/btrfs-w.test
+++ b/tests/btrfs-w.test
@@ -18,12 +18,8 @@
skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
fi
-run_prog ./btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
check_prog grep
+run_prog ../btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -eioctl $args > "$EXP"
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/btrfs.c b/tests/btrfs.c
index b3e23f8..7e5ccff 100644
--- a/tests/btrfs.c
+++ b/tests/btrfs.c
@@ -1548,9 +1548,9 @@
const char *name = xlookup(btrfs_dev_stats_values, i);
if (i)
printf(", ");
- if (name)
- printf("/* %s */ ", name);
printf("%" PRI__u64, args.values[i]);
+ if (name)
+ printf(" /* %s */", name);
}
printf("]}) = 0\n");
}
@@ -1799,13 +1799,13 @@
&supported_features);
printf("ioctl(%d, BTRFS_IOC_GET_SUPPORTED_FEATURES, ",
btrfs_test_dir_fd);
- printf("[ /* supported */ ");
+ printf("[");
btrfs_print_features(&supported_features[0]);
- printf(", /* safe to set */ ");
+ printf(" /* supported */, ");
btrfs_print_features(&supported_features[1]);
- printf(", /* safe to clear */ ");
+ printf(" /* safe to set */, ");
btrfs_print_features(&supported_features[2]);
- printf("]) = 0\n");
+ printf(" /* safe to clear */]) = 0\n");
}
}
diff --git a/tests/btrfs.gen.test b/tests/btrfs.gen.test
new file mode 100755
index 0000000..a7118ef
--- /dev/null
+++ b/tests/btrfs.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/btrfs.test b/tests/btrfs.test
deleted file mode 100755
index 2121b5b..0000000
--- a/tests/btrfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic btrfs ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/chmod.gen.test b/tests/chmod.gen.test
new file mode 100755
index 0000000..438665a
--- /dev/null
+++ b/tests/chmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/chmod.test b/tests/chmod.test
deleted file mode 100755
index 70e561a..0000000
--- a/tests/chmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/chown.gen.test b/tests/chown.gen.test
new file mode 100755
index 0000000..46889a1
--- /dev/null
+++ b/tests/chown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/chown.test b/tests/chown.test
deleted file mode 100755
index eb356ce..0000000
--- a/tests/chown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/chown32.gen.test b/tests/chown32.gen.test
new file mode 100755
index 0000000..f0f603e
--- /dev/null
+++ b/tests/chown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31
diff --git a/tests/chown32.test b/tests/chown32.test
deleted file mode 100755
index 0fa04c2..0000000
--- a/tests/chown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests/chroot.gen.test b/tests/chroot.gen.test
new file mode 100755
index 0000000..6ea81dd
--- /dev/null
+++ b/tests/chroot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/chroot.test b/tests/chroot.test
deleted file mode 100755
index 3b384f5..0000000
--- a/tests/chroot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chroot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/clock.gen.test b/tests/clock.gen.test
new file mode 100755
index 0000000..b76eaf5
--- /dev/null
+++ b/tests/clock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock test_trace_expr 'times|fcntl.*' -e/clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'times|fcntl.*' -e/clock
diff --git a/tests/clock.in b/tests/clock.in
new file mode 100755
index 0000000..864de29
--- /dev/null
+++ b/tests/clock.in
@@ -0,0 +1,3 @@
+clock_adjtime -a37
+clock_nanosleep
+clock_xettime -a36
diff --git a/tests/clock_adjtime.gen.test b/tests/clock_adjtime.gen.test
new file mode 100755
index 0000000..735e3af
--- /dev/null
+++ b/tests/clock_adjtime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_adjtime -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests/clock_adjtime.test b/tests/clock_adjtime.test
deleted file mode 100755
index df2c060..0000000
--- a/tests/clock_adjtime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_adjtime syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests/clock_nanosleep.c b/tests/clock_nanosleep.c
index 98407d7..72ac2e4 100644
--- a/tests/clock_nanosleep.c
+++ b/tests/clock_nanosleep.c
@@ -1,5 +1,8 @@
/*
+ * Check decoding of clock_nanosleep and clock_gettime syscalls.
+ *
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,9 +65,10 @@
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, {tv_sec=%jd, tv_nsec=%jd}, "
- "NULL) = 0\n",
- (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+ printf("clock_nanosleep(CLOCK_REALTIME, 0"
+ ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec));
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
NULL, &rem.ts) == -1);
@@ -73,52 +77,71 @@
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
&req.ts, &rem.ts) == 0);
- 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);
+ printf("clock_nanosleep(CLOCK_REALTIME, 0"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
req.ts.tv_nsec = 999999999 + 1;
assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
&req.ts, &rem.ts) == -1);
printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
- ", {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);
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+ req.ts.tv_sec = 0xdeadbeefU;
+ req.ts.tv_nsec = 0xfacefeedU;
+ assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
+ &req.ts, &rem.ts) == -1);
+ printf("clock_nanosleep(CLOCK_REALTIME, 0"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+ req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
+ &req.ts, &rem.ts) == -1);
+ printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
assert(sigaction(SIGALRM, &act, NULL) == 0);
assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
if (setitimer(ITIMER_REAL, &itv, NULL))
perror_msg_and_skip("setitimer");
- 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,
- (intmax_t) itv.it_value.tv_usec);
- --req.ts.tv_nsec;
+ req.ts.tv_sec = 0;
+ req.ts.tv_nsec = 999999999;
assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
&req.ts, &rem.ts) == -1);
- printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
- "{tv_sec=%jd, tv_nsec=%jd})"
+ printf("clock_nanosleep(CLOCK_REALTIME, 0"
+ ", {tv_sec=%lld, tv_nsec=%llu}, {tv_sec=%lld, tv_nsec=%llu})"
" = ? 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);
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec),
+ (long long) rem.ts.tv_sec,
+ zero_extend_signed_to_ull(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, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
- (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+ printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec));
++req.ts.tv_sec;
rem.ts.tv_sec = 0xc0de4;
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, {tv_sec=%jd, "
- "tv_nsec=%jd}, %p)"
+ printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p)"
" = ? ERESTARTNOHAND (To be restarted if no handler)\n",
- (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
puts("+++ exited with 0 +++");
diff --git a/tests/clock_nanosleep.gen.test b/tests/clock_nanosleep.gen.test
new file mode 100755
index 0000000..7a6025b
--- /dev/null
+++ b/tests/clock_nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_nanosleep -e trace=clock_nanosleep,clock_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=clock_nanosleep,clock_gettime
diff --git a/tests/clock_nanosleep.test b/tests/clock_nanosleep.test
deleted file mode 100755
index ec434a6..0000000
--- a/tests/clock_nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_nanosleep, clock_gettime, and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=clock_nanosleep,clock_gettime,setitimer
diff --git a/tests/clock_xettime.c b/tests/clock_xettime.c
index 3ef5695..e3ec1b5 100644
--- a/tests/clock_xettime.c
+++ b/tests/clock_xettime.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -48,26 +49,41 @@
if (syscall(__NR_clock_getres, CLOCK_REALTIME, &t.ts))
perror_msg_and_skip("clock_getres CLOCK_REALTIME");
- 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);
+ printf("clock_getres(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu})"
+ " = 0\n",
+ (long long) t.ts.tv_sec,
+ zero_extend_signed_to_ull(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, "
- "{tv_sec=%jd, tv_nsec=%jd}) = 0\n",
- (intmax_t) t.ts.tv_sec,
- (intmax_t) t.ts.tv_nsec);
+ printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+ (long long) t.ts.tv_sec,
+ zero_extend_signed_to_ull(t.ts.tv_nsec));
t.ts.tv_sec = 0xdeface1;
t.ts.tv_nsec = 0xdeface2;
- 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, {tv_sec=%jd, "
- "tv_nsec=%jd}) = -1 EINVAL (%m)\n",
- (intmax_t) t.ts.tv_sec,
- (intmax_t) t.ts.tv_nsec);
+ syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+ printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+ (long long) t.ts.tv_sec,
+ zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+ t.ts.tv_sec = 0xdeadbeefU;
+ t.ts.tv_nsec = 0xfacefeedU;
+ syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+ printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+ (long long) t.ts.tv_sec,
+ zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+ t.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ t.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+ printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+ (long long) t.ts.tv_sec,
+ zero_extend_signed_to_ull(t.ts.tv_nsec));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/clock_xettime.gen.test b/tests/clock_xettime.gen.test
new file mode 100755
index 0000000..590f058
--- /dev/null
+++ b/tests/clock_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_xettime -a36 -e trace=clock_getres,clock_gettime,clock_settime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests/clock_xettime.test b/tests/clock_xettime.test
deleted file mode 100755
index f045a66..0000000
--- a/tests/clock_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_getres, clock_gettime, and clock_settime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests/copy_file_range.c b/tests/copy_file_range.c
index 085010a..6bb989d 100644
--- a/tests/copy_file_range.c
+++ b/tests/copy_file_range.c
@@ -2,6 +2,7 @@
* This file is part of copy_file_range strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,8 +42,8 @@
{
const long int fd_in = (long int) 0xdeadbeefffffffff;
const long int fd_out = (long int) 0xdeadbeeffffffffe;
- long long int *const off_in = tail_alloc(sizeof(*off_in));
- long long int *const off_out = tail_alloc(sizeof(*off_out));
+ TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+ TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
*off_in = 0xdeadbef1facefed1;
*off_out = 0xdeadbef2facefed2;
const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests/copy_file_range.gen.test b/tests/copy_file_range.gen.test
new file mode 100755
index 0000000..4f3063b
--- /dev/null
+++ b/tests/copy_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/copy_file_range.test b/tests/copy_file_range.test
deleted file mode 100755
index c39f6ac..0000000
--- a/tests/copy_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check copy_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/count.test b/tests/count.test
index e75dc6b..a9752c0 100755
--- a/tests/count.test
+++ b/tests/count.test
@@ -3,6 +3,7 @@
# Check whether -c and -w options work.
#
# Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,14 +30,14 @@
. "${srcdir=.}/init.sh"
-run_prog ./sleep 0
+run_prog ../sleep 0
check_prog grep
grep_log()
{
local pattern="$1"; shift
- run_strace "$@" ./sleep 1
+ run_strace "$@" ../sleep 1
grep nanosleep "$LOG" > /dev/null ||
framework_skip_ 'sleep does not use nanosleep'
diff --git a/tests/creat.gen.test b/tests/creat.gen.test
new file mode 100755
index 0000000..d2e47d3
--- /dev/null
+++ b/tests/creat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/creat.test b/tests/creat.test
deleted file mode 100755
index 069648f..0000000
--- a/tests/creat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check creat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/delete_module.c b/tests/delete_module.c
index 5a31760..0de35fe 100644
--- a/tests/delete_module.c
+++ b/tests/delete_module.c
@@ -2,6 +2,7 @@
* Check decoding of delete_module syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -48,8 +49,7 @@
unsigned int val_prefix, val_suffix;
} flags[] = {
{ ARG_STR(0), 0, 0 },
- { (kernel_ulong_t) 0xffffffff00000000ULL | O_NONBLOCK,
- "O_NONBLOCK", 0, 0 },
+ { F8ILL_KULONG_MASK | 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,
@@ -65,7 +65,7 @@
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);
+ rc = syscall(__NR_delete_module, NULL, F8ILL_KULONG_MASK);
printf("delete_module(NULL, 0) = %s\n", sprintrc(rc));
rc = syscall(__NR_delete_module, bogus_param1, flags[0].val);
diff --git a/tests/delete_module.gen.test b/tests/delete_module.gen.test
new file mode 100755
index 0000000..4e4c671
--- /dev/null
+++ b/tests/delete_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (delete_module -a23); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23
diff --git a/tests/delete_module.test b/tests/delete_module.test
deleted file mode 100755
index fb86ec9..0000000
--- a/tests/delete_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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 006efb8..ba5ffbf 100755
--- a/tests/detach-running.test
+++ b/tests/detach-running.test
@@ -3,6 +3,7 @@
# Ensure that strace can detach from running processes.
#
# Copyright (c) 2013-2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -36,7 +37,7 @@
set -e
-./set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
+../set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
while ! [ -s "$LOG" ]; do
kill -0 $! 2> /dev/null ||
@@ -54,7 +55,6 @@
return 0
}
-rm -f "$LOG"
$STRACE -p $tracee_pid 2> "$LOG" &
while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests/detach-sleeping.test b/tests/detach-sleeping.test
index 54304f3..a0975e3 100755
--- a/tests/detach-sleeping.test
+++ b/tests/detach-sleeping.test
@@ -3,6 +3,7 @@
# Ensure that strace can detach from sleeping processes.
#
# Copyright (c) 2013-2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -36,8 +37,7 @@
set -e
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
while ! [ -s "$LOG" ]; do
kill -0 $! 2> /dev/null ||
@@ -55,7 +55,6 @@
return 0
}
-rm -f "$LOG"
$STRACE -p $tracee_pid 2> "$LOG" &
while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests/detach-stopped.test b/tests/detach-stopped.test
index 8f480e7..a9f9c72 100755
--- a/tests/detach-stopped.test
+++ b/tests/detach-stopped.test
@@ -3,6 +3,7 @@
# Ensure that strace can detach from stopped processes.
#
# Copyright (c) 2013-2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -41,8 +42,8 @@
set -e
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+> "$LOG"
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
while ! [ -s "$LOG" ]; do
kill -0 $! 2> /dev/null ||
@@ -62,7 +63,7 @@
return 0
}
-rm -f "$LOG"
+> "$LOG"
$STRACE -p $tracee_pid 2> "$LOG" &
while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests/dup.gen.test b/tests/dup.gen.test
new file mode 100755
index 0000000..e5729c0
--- /dev/null
+++ b/tests/dup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/dup.test b/tests/dup.test
deleted file mode 100755
index 1dc1919..0000000
--- a/tests/dup.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests/dup2.gen.test b/tests/dup2.gen.test
new file mode 100755
index 0000000..fd1f5c9
--- /dev/null
+++ b/tests/dup2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests/dup2.test b/tests/dup2.test
deleted file mode 100755
index 509c5db..0000000
--- a/tests/dup2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests/dup3.gen.test b/tests/dup3.gen.test
new file mode 100755
index 0000000..d6ff7d7
--- /dev/null
+++ b/tests/dup3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/dup3.test b/tests/dup3.test
deleted file mode 100755
index 293f78f..0000000
--- a/tests/dup3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup3 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/epoll_create.gen.test b/tests/epoll_create.gen.test
new file mode 100755
index 0000000..841da6d
--- /dev/null
+++ b/tests/epoll_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/epoll_create.test b/tests/epoll_create.test
deleted file mode 100755
index 472a9bd..0000000
--- a/tests/epoll_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/epoll_create1.gen.test b/tests/epoll_create1.gen.test
new file mode 100755
index 0000000..c5e62a0
--- /dev/null
+++ b/tests/epoll_create1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_create1 -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/epoll_create1.test b/tests/epoll_create1.test
deleted file mode 100755
index 7a926a9..0000000
--- a/tests/epoll_create1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create1 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/epoll_ctl.c b/tests/epoll_ctl.c
index e666055..2251b35 100644
--- a/tests/epoll_ctl.c
+++ b/tests/epoll_ctl.c
@@ -11,14 +11,14 @@
static long
invoke_syscall(unsigned long epfd, unsigned long op, unsigned long fd, void *ev)
{
- op |= (unsigned long) 0xffffffff00000000ULL;
- return syscall(__NR_epoll_ctl, epfd, op, fd, (unsigned long) ev);
+ return syscall(__NR_epoll_ctl, epfd, F8ILL_KULONG_MASK | op,
+ fd, (unsigned long) ev);
}
int
main(void)
{
- struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
ev->events = EPOLLIN;
long rc = invoke_syscall(-1U, EPOLL_CTL_ADD, -2U, ev);
diff --git a/tests/epoll_ctl.gen.test b/tests/epoll_ctl.gen.test
new file mode 100755
index 0000000..68c96eb
--- /dev/null
+++ b/tests/epoll_ctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/epoll_ctl.test b/tests/epoll_ctl.test
deleted file mode 100755
index 1aded54..0000000
--- a/tests/epoll_ctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_ctl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/epoll_pwait.c b/tests/epoll_pwait.c
index eaaa34d..841e722 100644
--- a/tests/epoll_pwait.c
+++ b/tests/epoll_pwait.c
@@ -12,7 +12,7 @@
main(void)
{
sigset_t set[2];
- struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
long rc = syscall(__NR_epoll_pwait, -1, ev, 1, -2,
set, (kernel_ulong_t) sizeof(set));
diff --git a/tests/epoll_pwait.gen.test b/tests/epoll_pwait.gen.test
new file mode 100755
index 0000000..c558efc
--- /dev/null
+++ b/tests/epoll_pwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/epoll_pwait.test b/tests/epoll_pwait.test
deleted file mode 100755
index c7aeeac..0000000
--- a/tests/epoll_pwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of epoll_pwait syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/epoll_wait.c b/tests/epoll_wait.c
index 038bf1f..caa3027 100644
--- a/tests/epoll_wait.c
+++ b/tests/epoll_wait.c
@@ -10,7 +10,7 @@
int
main(void)
{
- struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
long rc = syscall(__NR_epoll_wait, -1, ev, 1, -2);
printf("epoll_wait(-1, %p, 1, -2) = %ld %s (%m)\n",
diff --git a/tests/epoll_wait.gen.test b/tests/epoll_wait.gen.test
new file mode 100755
index 0000000..024cc0f
--- /dev/null
+++ b/tests/epoll_wait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_wait -a26); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26
diff --git a/tests/epoll_wait.test b/tests/epoll_wait.test
deleted file mode 100755
index 83ae161..0000000
--- a/tests/epoll_wait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_wait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
diff --git a/tests/erestartsys.gen.test b/tests/erestartsys.gen.test
new file mode 100755
index 0000000..0fc3215
--- /dev/null
+++ b/tests/erestartsys.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (erestartsys -a34 -e signal=none -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests/erestartsys.test b/tests/erestartsys.test
deleted file mode 100755
index 91f711f..0000000
--- a/tests/erestartsys.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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/execve-v.test b/tests/execve-v.test
index cce5860..52ff0d7 100755
--- a/tests/execve-v.test
+++ b/tests/execve-v.test
@@ -11,5 +11,3 @@
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/execve.c b/tests/execve.c
index 74749e7..c558dd3 100644
--- a/tests/execve.c
+++ b/tests/execve.c
@@ -2,6 +2,7 @@
* This file is part of execve strace test.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,13 +63,15 @@
#if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ???]"
#else
- ", [/* 5 vars, unterminated */]"
+ ", %p /* 5 vars, unterminated */"
#endif
") = -1 ENOENT (%m)\n",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5]
#if VERBOSE
, q_envp[0], q_envp[1], envp[2], envp[3], envp[4]
+#else
+ , tail_envp
#endif
);
@@ -80,12 +83,14 @@
#if VERBOSE
", [\"%s\", \"%s\"]"
#else
- ", [/* 2 vars */]"
+ ", %p /* 2 vars */"
#endif
") = -1 ENOENT (%m)\n",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
#if VERBOSE
, q_envp[0], q_envp[1]
+#else
+ , tail_envp
#endif
);
@@ -94,16 +99,18 @@
#if VERBOSE
", [\"%s\"]"
#else
- ", [/* 1 var */]"
+ ", %p /* 1 var */"
#endif
") = -1 ENOENT (%m)\n",
Q_FILENAME, q_argv[2]
#if VERBOSE
, q_envp[1]
+#else
+ , tail_envp + 1
#endif
);
- char **const empty = tail_alloc(sizeof(*empty));
+ TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
char **const efault = empty + 1;
*empty = NULL;
@@ -112,9 +119,13 @@
#if VERBOSE
", []"
#else
- ", [/* 0 vars */]"
+ ", %p /* 0 vars */"
#endif
- ") = -1 ENOENT (%m)\n", Q_FILENAME);
+ ") = -1 ENOENT (%m)\n", Q_FILENAME
+#if !VERBOSE
+ , empty
+#endif
+ );
char str_a[] = "012345678901234567890123456789012";
char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -141,10 +152,11 @@
printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
for (i = 1; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", b[i]);
+ printf("]");
#else
- printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+ printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
#endif
- printf("]) = -1 ENOENT (%m)\n");
+ printf(") = -1 ENOENT (%m)\n");
execve(FILENAME, a + 1, b + 1);
printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
@@ -154,10 +166,11 @@
printf("], [\"%s\"", b[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", b[i]);
+ printf("]");
#else
- printf("], [/* %d vars */", DEFAULT_STRLEN);
+ printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
#endif
- printf("]) = -1 ENOENT (%m)\n");
+ printf(") = -1 ENOENT (%m)\n");
execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n",
diff --git a/tests/execve.test b/tests/execve.test
index 263b6fc..5635a94 100755
--- a/tests/execve.test
+++ b/tests/execve.test
@@ -11,5 +11,3 @@
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/execveat-v.gen.test b/tests/execveat-v.gen.test
new file mode 100755
index 0000000..f7d572f
--- /dev/null
+++ b/tests/execveat-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat-v -v -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=execveat
diff --git a/tests/execveat-v.test b/tests/execveat-v.test
deleted file mode 100755
index a905224..0000000
--- a/tests/execveat-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of execveat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=execveat
diff --git a/tests/execveat.c b/tests/execveat.c
index 9083830..8ffc4d5 100644
--- a/tests/execveat.c
+++ b/tests/execveat.c
@@ -2,6 +2,7 @@
* This file is part of execveat strace test.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -67,13 +68,15 @@
#if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ???]"
#else
- ", [/* 5 vars, unterminated */]"
+ ", %p /* 5 vars, unterminated */"
#endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5],
#if VERBOSE
q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
+#else
+ tail_envp,
#endif
errno2name());
@@ -85,12 +88,14 @@
#if VERBOSE
", [\"%s\", \"%s\"]"
#else
- ", [/* 2 vars */]"
+ ", %p /* 2 vars */"
#endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
#if VERBOSE
q_envp[0], q_envp[1],
+#else
+ tail_envp,
#endif
errno2name());
@@ -99,16 +104,18 @@
#if VERBOSE
", [\"%s\"]"
#else
- ", [/* 1 var */]"
+ ", %p /* 1 var */"
#endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
Q_FILENAME, q_argv[2],
#if VERBOSE
q_envp[1],
+#else
+ tail_envp + 1,
#endif
errno2name());
- char **const empty = tail_alloc(sizeof(*empty));
+ TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
char **const efault = empty + 1;
*empty = NULL;
@@ -117,10 +124,14 @@
#if VERBOSE
", []"
#else
- ", [/* 0 vars */]"
+ ", %p /* 0 vars */"
#endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
- Q_FILENAME, errno2name());
+ Q_FILENAME,
+#if !VERBOSE
+ empty,
+#endif
+ errno2name());
char str_a[] = "012345678901234567890123456789012";
char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -147,10 +158,11 @@
printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
for (i = 1; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", b[i]);
+ printf("]");
#else
- printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+ printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
#endif
- printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
errno2name());
syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
@@ -161,10 +173,11 @@
printf("], [\"%s\"", b[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", b[i]);
+ printf("]");
#else
- printf("], [/* %d vars */", DEFAULT_STRLEN);
+ printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
#endif
- printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
errno2name());
syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
diff --git a/tests/execveat.gen.test b/tests/execveat.gen.test
new file mode 100755
index 0000000..c92e4d6
--- /dev/null
+++ b/tests/execveat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/execveat.test b/tests/execveat.test
deleted file mode 100755
index 879e03e..0000000
--- a/tests/execveat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check execveat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/faccessat.gen.test b/tests/faccessat.gen.test
new file mode 100755
index 0000000..4ccec2a
--- /dev/null
+++ b/tests/faccessat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests/faccessat.test b/tests/faccessat.test
deleted file mode 100755
index 61e7e2f..0000000
--- a/tests/faccessat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check faccessat syscall decoding.
-
-. "${srcdir=.}/openat.test"
diff --git a/tests/fadvise64.test b/tests/fadvise64.test
index 9f74672..161b28f 100755
--- a/tests/fadvise64.test
+++ b/tests/fadvise64.test
@@ -9,4 +9,3 @@
check_prog grep
grep -v "^$NAME([0123]," < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/fadvise64_64.gen.test b/tests/fadvise64_64.gen.test
new file mode 100755
index 0000000..5f95b3c
--- /dev/null
+++ b/tests/fadvise64_64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+. "${srcdir=.}/fadvise64.test"
diff --git a/tests/fadvise64_64.test b/tests/fadvise64_64.test
deleted file mode 100755
index a50fe2b..0000000
--- a/tests/fadvise64_64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fadvise64_64 syscall.
-
-. "${srcdir=.}/fadvise64.test"
diff --git a/tests/fallocate.gen.test b/tests/fallocate.gen.test
new file mode 100755
index 0000000..c6cfdb7
--- /dev/null
+++ b/tests/fallocate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fallocate.test b/tests/fallocate.test
deleted file mode 100755
index 405187e..0000000
--- a/tests/fallocate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/fanotify_init.c b/tests/fanotify_init.c
index c14b413..15e09ee 100644
--- a/tests/fanotify_init.c
+++ b/tests/fanotify_init.c
@@ -2,6 +2,7 @@
* Check decoding of fanotify_init syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -60,7 +61,7 @@
main(void)
{
static const struct strval flags[] = {
- { (kernel_ulong_t) 0xffffffff00000000ULL, "FAN_CLASS_NOTIF" },
+ { F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
{ (kernel_ulong_t) 0xffffffff0000000cULL,
"0xc /* FAN_CLASS_??? */" },
{ (kernel_ulong_t) 0xdec0deddefaced04ULL,
@@ -70,7 +71,7 @@
"FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|0xffffffc0" },
};
static const struct strval event_f_flags[] = {
- { (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+ { F8ILL_KULONG_MASK, "O_RDONLY" },
{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
"O_WRONLY|0x80000000" }
};
diff --git a/tests/fanotify_init.gen.test b/tests/fanotify_init.gen.test
new file mode 100755
index 0000000..ee519e6
--- /dev/null
+++ b/tests/fanotify_init.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/fanotify_init.test b/tests/fanotify_init.test
deleted file mode 100755
index 8d26af4..0000000
--- a/tests/fanotify_init.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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 43f285d..11cf7d0 100644
--- a/tests/fanotify_mark.c
+++ b/tests/fanotify_mark.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -90,11 +91,11 @@
static const kernel_ulong_t fds[] = {
(kernel_ulong_t) 0xdeadfeed12345678ULL,
- (kernel_ulong_t) 0xffffffff00000000ULL,
+ F8ILL_KULONG_MASK,
(kernel_ulong_t) 0xdeb0d1edffffffffULL,
};
static const struct strval flags[] = {
- { (kernel_ulong_t) 0xffffffff00000000ULL, "0" },
+ { F8ILL_KULONG_MASK, "0" },
{ (kernel_ulong_t) 0xdec0deddefaced00ULL,
"0xefaced00 /* FAN_MARK_??? */" },
{ (kernel_ulong_t) 0xda7a105700000040ULL,
diff --git a/tests/fanotify_mark.gen.test b/tests/fanotify_mark.gen.test
new file mode 100755
index 0000000..ce16a55
--- /dev/null
+++ b/tests/fanotify_mark.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_mark -a32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32
diff --git a/tests/fanotify_mark.test b/tests/fanotify_mark.test
deleted file mode 100755
index fd67138..0000000
--- a/tests/fanotify_mark.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_mark syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests/fchdir.gen.test b/tests/fchdir.gen.test
new file mode 100755
index 0000000..c80e141
--- /dev/null
+++ b/tests/fchdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/fchdir.test b/tests/fchdir.test
deleted file mode 100755
index 3a4296e..0000000
--- a/tests/fchdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests/fchmod.gen.test b/tests/fchmod.gen.test
new file mode 100755
index 0000000..f327fb7
--- /dev/null
+++ b/tests/fchmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/fchmod.test b/tests/fchmod.test
deleted file mode 100755
index 4cb1263..0000000
--- a/tests/fchmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests/fchmodat.gen.test b/tests/fchmodat.gen.test
new file mode 100755
index 0000000..9ee1f01
--- /dev/null
+++ b/tests/fchmodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/fchmodat.test b/tests/fchmodat.test
deleted file mode 100755
index 13cbe80..0000000
--- a/tests/fchmodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchmodat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/fchown.gen.test b/tests/fchown.gen.test
new file mode 100755
index 0000000..63ee545
--- /dev/null
+++ b/tests/fchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests/fchown.test b/tests/fchown.test
deleted file mode 100755
index 63a0f2e..0000000
--- a/tests/fchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
diff --git a/tests/fchown32.gen.test b/tests/fchown32.gen.test
new file mode 100755
index 0000000..d8167dd
--- /dev/null
+++ b/tests/fchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fchown32.test b/tests/fchown32.test
deleted file mode 100755
index e837f54..0000000
--- a/tests/fchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/fchownat.gen.test b/tests/fchownat.gen.test
new file mode 100755
index 0000000..2ec9e32
--- /dev/null
+++ b/tests/fchownat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/fchownat.test b/tests/fchownat.test
deleted file mode 100755
index e5d0f28..0000000
--- a/tests/fchownat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchownat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/fcntl.c b/tests/fcntl.c
index f060cdf..4f62ca2 100644
--- a/tests/fcntl.c
+++ b/tests/fcntl.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,9 +45,9 @@
.l_start = 0xdefaced1facefeedULL,
.l_len = 0xdefaced2cafef00dULL
};
- invoke_test_syscall(cmd, &fl);
+ long rc = invoke_test_syscall(cmd, &fl);
printf("%s(0, %s, %p) = %s\n",
- TEST_SYSCALL_STR, name, &fl, EINVAL_STR);
+ TEST_SYSCALL_STR, name, &fl, sprintrc(rc));
}
static void
diff --git a/tests/fcntl.gen.test b/tests/fcntl.gen.test
new file mode 100755
index 0000000..83a1af4
--- /dev/null
+++ b/tests/fcntl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/fcntl.test b/tests/fcntl.test
deleted file mode 100755
index 9aea122..0000000
--- a/tests/fcntl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fcntl decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests/fcntl64.c b/tests/fcntl64.c
index 5ecd6eb..068956e 100644
--- a/tests/fcntl64.c
+++ b/tests/fcntl64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,10 +45,10 @@
.l_start = 0xdefaced1facefeedULL,
.l_len = 0xdefaced2cafef00dULL
};
- invoke_test_syscall(cmd, &fl);
+ long rc = invoke_test_syscall(cmd, &fl);
printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
- (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+ (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
}
static void
@@ -67,7 +68,7 @@
long rc = invoke_test_syscall(F_SETLK64, &fl);
printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
", l_start=0, l_len=%d}) = %s\n",
- TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+ TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
if (rc)
return;
diff --git a/tests/fcntl64.gen.test b/tests/fcntl64.gen.test
new file mode 100755
index 0000000..9d3b98a
--- /dev/null
+++ b/tests/fcntl64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/fcntl64.test b/tests/fcntl64.test
deleted file mode 100755
index 00ba671..0000000
--- a/tests/fcntl64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fcntl64 syscall decoding.
-
-. "${srcdir=.}/fcntl.test"
diff --git a/tests/fdatasync.gen.test b/tests/fdatasync.gen.test
new file mode 100755
index 0000000..0dbea8a
--- /dev/null
+++ b/tests/fdatasync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/fdatasync.test b/tests/fdatasync.test
deleted file mode 100755
index ff59749..0000000
--- a/tests/fdatasync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fdatasync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/file_handle.c b/tests/file_handle.c
index a5ad6c7..bbdf48b 100644
--- a/tests/file_handle.c
+++ b/tests/file_handle.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -187,7 +188,7 @@
(kernel_ulong_t) 0x12345678ffffff9cULL,
};
static const struct strval open_flags[] = {
- { (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+ { F8ILL_KULONG_MASK, "O_RDONLY" },
{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
"O_WRONLY|0x80000000" }
};
@@ -208,7 +209,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
diff --git a/tests/file_handle.gen.test b/tests/file_handle.gen.test
new file mode 100755
index 0000000..8280f9f
--- /dev/null
+++ b/tests/file_handle.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_handle -e trace=name_to_handle_at,open_by_handle_at); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests/file_handle.test b/tests/file_handle.test
deleted file mode 100755
index 1ccc9d4..0000000
--- a/tests/file_handle.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check name_to_handle_at and open_by_handle_at syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests/file_ioctl.c b/tests/file_ioctl.c
index 0fe17b1..ded67a9 100644
--- a/tests/file_ioctl.c
+++ b/tests/file_ioctl.c
@@ -13,7 +13,7 @@
test_fiemap(void)
{
(void) tail_alloc(1);
- struct fiemap *const args = tail_alloc(sizeof(*args));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct fiemap, args);
printf("ioctl(-1, FS_IOC_FIEMAP, {fm_start=%" PRI__u64
", fm_length=%" PRI__u64", fm_flags=",
diff --git a/tests/file_ioctl.gen.test b/tests/file_ioctl.gen.test
new file mode 100755
index 0000000..f7e58f5
--- /dev/null
+++ b/tests/file_ioctl.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/file_ioctl.test b/tests/file_ioctl.test
deleted file mode 100755
index 7b8b8ce..0000000
--- a/tests/file_ioctl.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check FS_IOC_FIEMAP ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/finit_module.c b/tests/finit_module.c
index 3f0178f..c97471a 100644
--- a/tests/finit_module.c
+++ b/tests/finit_module.c
@@ -2,6 +2,7 @@
* Check decoding of finit_module syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -68,7 +69,8 @@
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);
+ rc = syscall(__NR_finit_module, F8ILL_KULONG_MASK, NULL,
+ F8ILL_KULONG_MASK);
printf("finit_module(0, NULL, 0) = %s\n", sprintrc(rc));
rc = syscall(__NR_finit_module, bogus_fd, bogus_param1, flags[0].val);
diff --git a/tests/finit_module.gen.test b/tests/finit_module.gen.test
new file mode 100755
index 0000000..f2e56af
--- /dev/null
+++ b/tests/finit_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (finit_module -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/finit_module.test b/tests/finit_module.test
deleted file mode 100755
index bd644f3..0000000
--- a/tests/finit_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of finit_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/flock.gen.test b/tests/flock.gen.test
new file mode 100755
index 0000000..dff2bac
--- /dev/null
+++ b/tests/flock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/flock.test b/tests/flock.test
deleted file mode 100755
index 24fcd74..0000000
--- a/tests/flock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check flock syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/fork-f.gen.test b/tests/fork-f.gen.test
new file mode 100755
index 0000000..b534e13
--- /dev/null
+++ b/tests/fork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests/fork-f.test b/tests/fork-f.test
deleted file mode 100755
index d8ca1e3..0000000
--- a/tests/fork-f.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows fork syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26 -qq -f -e trace=chdir -e signal=none
diff --git a/tests/fstat.c b/tests/fstat.c
index 12df3e1..1482bb1 100644
--- a/tests/fstat.c
+++ b/tests/fstat.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/fstat.gen.test b/tests/fstat.gen.test
new file mode 100755
index 0000000..8686ec8
--- /dev/null
+++ b/tests/fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat -a15 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -v -P stat.sample
diff --git a/tests/fstat.test b/tests/fstat.test
deleted file mode 100755
index 2ba0fba..0000000
--- a/tests/fstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check fstat 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/fstat64.c b/tests/fstat64.c
index a9c2e07..c63be60 100644
--- a/tests/fstat64.c
+++ b/tests/fstat64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/fstat64.gen.test b/tests/fstat64.gen.test
new file mode 100755
index 0000000..a452b84
--- /dev/null
+++ b/tests/fstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat64 -a17 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -v -P stat.sample
diff --git a/tests/fstat64.test b/tests/fstat64.test
deleted file mode 100755
index 8b4f5ef..0000000
--- a/tests/fstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstat64 syscall decoding.
-
-. "${srcdir=.}/fstat.test"
diff --git a/tests/fstatat.c b/tests/fstatat.c
index 66138c2..ea331b4 100644
--- a/tests/fstatat.c
+++ b/tests/fstatat.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/fstatat64.c b/tests/fstatat64.c
index 03082a8..8de7ba6 100644
--- a/tests/fstatat64.c
+++ b/tests/fstatat64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/fstatat64.gen.test b/tests/fstatat64.gen.test
new file mode 100755
index 0000000..8da5c7f
--- /dev/null
+++ b/tests/fstatat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/fstatat64.test b/tests/fstatat64.test
deleted file mode 100755
index 484008a..0000000
--- a/tests/fstatat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/fstatfs.gen.test b/tests/fstatfs.gen.test
new file mode 100755
index 0000000..3dd04d8
--- /dev/null
+++ b/tests/fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fstatfs.test b/tests/fstatfs.test
deleted file mode 100755
index 646e66f..0000000
--- a/tests/fstatfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests/fstatfs64.gen.test b/tests/fstatfs64.gen.test
new file mode 100755
index 0000000..b9527be
--- /dev/null
+++ b/tests/fstatfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/fstatfs64.test b/tests/fstatfs64.test
deleted file mode 100755
index 179ff1b..0000000
--- a/tests/fstatfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests/fstatx.c b/tests/fstatx.c
index f88d9a9..70804af 100644
--- a/tests/fstatx.c
+++ b/tests/fstatx.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/fsync.gen.test b/tests/fsync.gen.test
new file mode 100755
index 0000000..921e804
--- /dev/null
+++ b/tests/fsync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/fsync.test b/tests/fsync.test
deleted file mode 100755
index a58b67b..0000000
--- a/tests/fsync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fsync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/ftruncate.gen.test b/tests/ftruncate.gen.test
new file mode 100755
index 0000000..709a851
--- /dev/null
+++ b/tests/ftruncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/ftruncate.test b/tests/ftruncate.test
deleted file mode 100755
index ec8a1e0..0000000
--- a/tests/ftruncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/ftruncate64.gen.test b/tests/ftruncate64.gen.test
new file mode 100755
index 0000000..4cb1fe7
--- /dev/null
+++ b/tests/ftruncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/ftruncate64.test b/tests/ftruncate64.test
deleted file mode 100755
index 9068210..0000000
--- a/tests/ftruncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/futex.c b/tests/futex.c
index 586b95d..9a9ab66 100644
--- a/tests/futex.c
+++ b/tests/futex.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -55,8 +56,6 @@
# include "xlat/futexwakeops.h"
# include "xlat/futexwakecmps.h"
-static struct timespec *tmout;
-
void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
int *uaddr2, unsigned long val3, int rc)
{
@@ -163,8 +162,8 @@
int
main(int argc, char *argv[])
{
- int *uaddr = tail_alloc(sizeof(*uaddr));
- int *uaddr2 = tail_alloc(sizeof(*uaddr2));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr);
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr2);
int rc;
unsigned i;
unsigned j;
@@ -172,7 +171,7 @@
uaddr[0] = 0x1deadead;
uaddr2[0] = 0xbadf00d;
- tmout = tail_alloc(sizeof(*tmout));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tmout);
tmout->tv_sec = 123;
tmout->tv_nsec = 0xbadc0de;
@@ -189,37 +188,59 @@
/* uaddr is NULL */
CHECK_FUTEX(NULL, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
(rc == -1) && (errno == EFAULT));
- 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));
+ printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
- uaddr + 1, VAL_PR, (intmax_t) tmout->tv_sec,
- (intmax_t) tmout->tv_nsec, sprintrc(rc));
+ printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr + 1, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
/* timeout is faulty */
CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout + 1, uaddr2, VAL3,
(rc == -1) && (errno == EFAULT));
printf("futex(%p, FUTEX_WAIT, %u, %p) = %s\n",
- uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+ uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+
+ /* timeout is invalid */
+ tmout->tv_sec = 0xdeadbeefU;
+ tmout->tv_nsec = 0xfacefeedU;
+
+ CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+ (rc == -1) && (errno == EINVAL));
+ printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+ tmout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ tmout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+ CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+ (rc == -1) && (errno == EINVAL));
+ printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+ tmout->tv_sec = 123;
+ tmout->tv_nsec = 0xbadc0de;
/* 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, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
- uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
- (intmax_t) tmout->tv_nsec, sprintrc(rc));
+ printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, {tv_sec=%jd, tv_nsec=%jd}) = "
- "%s\n",
- uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
- (intmax_t) tmout->tv_nsec, sprintrc(rc));
+ printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%lld, tv_nsec=%llu})"
+ " = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
/* Next 2 tests are with CLOCKRT bit set */
@@ -227,18 +248,18 @@
CHECK_FUTEX_ENOSYS(uaddr,
FUTEX_CLOCK_REALTIME | FUTEX_WAIT,
VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u, "
- "{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
- (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
- sprintrc(rc));
+ printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr,
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, "
- "{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
- (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
- sprintrc(rc));
+ printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
/* FUTEX_WAIT_BITSET - FUTEX_WAIT which provides additional bitmask
* which should be matched at least in one bit with
@@ -254,50 +275,54 @@
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1,
VAL3, (rc == -1) && (errno == EAGAIN));
- 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));
+ printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %#x) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, {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));
+ printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %#x) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, "
- "{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));
+ printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+ sprintrc(rc));
/* Next 3 tests are with CLOCKRT bit set */
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, "
- "{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));
+ printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+ sprintrc(rc));
/* val3 of 0 is invalid */
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, "
- "{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));
+ printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, VAL3,
(rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %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));
+ printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+ sprintrc(rc));
/* FUTEX_WAKE - wake val processes waiting for uaddr
* Possible flags: PRIVATE
@@ -522,9 +547,9 @@
CHECK_FUTEX_ENOSYS(uaddr,
j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
- printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s) = "
- "%s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i,
- uaddr2, wake_ops[i].str, sprintrc(rc));
+ printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
+ " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
+ i, uaddr2, wake_ops[i].str, sprintrc(rc));
}
}
@@ -552,16 +577,16 @@
CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_LOCK_PI, VAL, tmout, uaddr2 + 1,
VAL3, (rc == -1) && (errno == EFAULT));
- 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));
+ printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ uaddr + 1, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, {tv_sec=%jd, tv_nsec=%jd}) = "
- "%s\n",
- uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
- sprintrc(rc));
+ printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%lld, tv_nsec=%llu})"
+ " = %s\n",
+ uaddr + 1, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
/* NULL is passed by invalid_op() in cases valid timeout address is
* needed */
@@ -633,32 +658,32 @@
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2,
VAL3, (rc == -1) && (errno == EAGAIN));
- 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));
+ printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, "
- "{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));
+ printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(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, "
- "{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));
+ printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2, VAL3,
(rc == -1) && (errno == EAGAIN));
- printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME, "
- "%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));
+ printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME"
+ ", %u, {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+ uaddr, VAL_PR, (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
/* FUTEX_CMP_REQUEUE_PI - version of FUTEX_CMP_REQUEUE which re-queues
* on PI-aware futex.
diff --git a/tests/futimesat.c b/tests/futimesat.c
index c356629..733fd09 100644
--- a/tests/futimesat.c
+++ b/tests/futimesat.c
@@ -1,7 +1,7 @@
/*
* Check decoding of futimesat syscall.
*
- * 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
@@ -37,46 +37,123 @@
# include <sys/time.h>
# include <unistd.h>
+static void
+print_tv(const struct timeval *tv)
+{
+ printf("{tv_sec=%lld, tv_usec=%llu}",
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec));
+ print_time_t_usec(tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_futimesat(const kernel_ulong_t dirfd,
+ const kernel_ulong_t pathname,
+ const kernel_ulong_t times)
+{
+ long rc = syscall(__NR_futimesat, dirfd, pathname, times);
+ errstr = sprintrc(rc);
+ return rc;
+}
int
main(void)
{
- struct timeval tv;
- if (gettimeofday(&tv, NULL))
- perror_msg_and_fail("gettimeofday");
+ static const kernel_ulong_t bogus_fd =
+ (kernel_ulong_t) 0xbadfaceddeadbeaf;
+ static const kernel_ulong_t kfdcwd =
+ (kernel_ulong_t) 0xdefaced00000000 | -100U;
+ static const char proto_fname[] = "futimesat_sample";
+ static const char qname[] = "\"futimesat_sample\"";
- static const char sample[] = "futimesat_sample";
- 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) 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());
+ char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+ const kernel_ulong_t kfname = (uintptr_t) fname;
+ struct timeval *const tv = tail_alloc(sizeof(*tv) * 2);
(void) close(0);
- rc = syscall(__NR_futimesat, 0, "", ts);
- 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());
+
+ /* dirfd */
+ k_futimesat(0, kfname, 0);
+ printf("futimesat(0, %s, NULL) = %s\n", qname, errstr);
+
+ k_futimesat(bogus_fd, kfname, 0);
+ printf("futimesat(%d, %s, NULL) = %s\n", (int) bogus_fd, qname, errstr);
+
+ k_futimesat(-100U, kfname, 0);
+ printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+ k_futimesat(kfdcwd, kfname, 0);
+ printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+ /* pathname */
+ k_futimesat(kfdcwd, 0, 0);
+ printf("futimesat(AT_FDCWD, NULL, NULL) = %s\n", errstr);
+
+ k_futimesat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0);
+ printf("futimesat(AT_FDCWD, \"\", NULL) = %s\n", errstr);
+
+ fname[sizeof(proto_fname) - 1] = '+';
+ k_futimesat(kfdcwd, kfname, 0);
+ fname[sizeof(proto_fname) - 1] = '\0';
+ printf("futimesat(AT_FDCWD, %p, NULL) = %s\n", fname, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_futimesat(kfdcwd, f8ill_ptr_to_kulong(fname), 0);
+ printf("futimesat(AT_FDCWD, %#jx, NULL) = %s\n",
+ (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+ }
+
+ /* times */
+ k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 1));
+ printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+ qname, tv + 1, errstr);
+
+ k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 2));
+ printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+ qname, tv + 2, errstr);
+
+ tv[0].tv_sec = 0xdeadbeefU;
+ tv[0].tv_usec = 0xfacefeedU;
+ tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+ k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+ printf("futimesat(AT_FDCWD, %s, [", qname);
+ print_tv(&tv[0]);
+ printf(", ");
+ print_tv(&tv[1]);
+ printf("]) = %s\n", errstr);
+
+ tv[0].tv_sec = 1492356708;
+ tv[0].tv_usec = 567891234;
+ tv[1].tv_sec = 1492357086;
+ tv[1].tv_usec = 678902345;
+
+ k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+ printf("futimesat(AT_FDCWD, %s, [", qname);
+ print_tv(&tv[0]);
+ printf(", ");
+ print_tv(&tv[1]);
+ printf("]) = %s\n", errstr);
+
+ tv[0].tv_usec = 567891;
+ tv[1].tv_usec = 678902;
+
+ k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+ printf("futimesat(AT_FDCWD, %s, [", qname);
+ print_tv(&tv[0]);
+ printf(", ");
+ print_tv(&tv[1]);
+ printf("]) = %s\n", errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_futimesat(kfdcwd, kfname, f8ill_ptr_to_kulong(tv));
+ printf("futimesat(AT_FDCWD, %s, %#jx) = %s\n",
+ qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+ }
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/futimesat.gen.test b/tests/futimesat.gen.test
new file mode 100755
index 0000000..c3add8c
--- /dev/null
+++ b/tests/futimesat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/futimesat.test b/tests/futimesat.test
deleted file mode 100755
index 3a67c04..0000000
--- a/tests/futimesat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check futimesat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/sigreturn.test b/tests/gen_pure_executables.sh
similarity index 69%
rename from tests/sigreturn.test
rename to tests/gen_pure_executables.sh
index f9a612b..c0e2152 100755
--- a/tests/sigreturn.test
+++ b/tests/gen_pure_executables.sh
@@ -1,8 +1,6 @@
-#!/bin/sh
+#!/bin/sh -efu
#
-# Check rt_sigprocmask and sigreturn/rt_sigreturn decoding.
-#
-# Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2017 Dmitry V. Levin <[email protected]>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,22 +25,26 @@
# (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"
+usage()
+{
+ cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
-run_prog
-run_strace -esignal $args
+Generate pure_executables.am from <input> list.
+Deduce output file from <input> unless an <output> is specified.
+EOF
+ exit 1
+}
-mask='\[(USR2 CHLD|CHLD USR2) RT_3 RT_4 RT_5 RT_26 RT_27\]'
-rt_sigprocmask='rt_sigprocmask\(SIG_SETMASK, '"$mask"', NULL, [[:digit:]]+\) += 0'
-osf_sigprocmask='osf_sigprocmask\(SIG_SETMASK, '"$mask"'\) += 0 +\(old mask \[[^]]*\]\)'
-EXPECTED="$LOG.expected"
+input="${0%/*}/pure_executables.list"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output="$(dirname "$input")/pure_executables.am"
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
-cat > "$EXPECTED" << __EOF__
-$rt_sigprocmask|$osf_sigprocmask
-(rt_)?sigreturn\\((\\{mask=$mask\\})?\\) += 0
-__EOF__
+exec > "$output"
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
+echo "# Generated by $0 from $input; do not edit."
+echo 'PURE_EXECUTABLES = \'
+sed -n 's/^[^#].*/ & \\/p' < "$input"
+echo ' #'
diff --git a/tests/gen_tests.in b/tests/gen_tests.in
new file mode 100644
index 0000000..be0a3a2
--- /dev/null
+++ b/tests/gen_tests.in
@@ -0,0 +1,348 @@
+# Input for gen_tests.sh
+#
+# Copyright (c) 2017 The strace developers.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+_newselect
+accept -a22
+accept4 -a37
+access -a30 -P access_sample
+acct -a20
+add_key -a30 -s12
+adjtimex -a15
+aio -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
+alarm -a10
+bpf -a20
+btrfs +ioctl.test
+chmod -a28
+chown -a28
+chown32 -a31
+chroot -a24
+clock test_trace_expr 'times|fcntl.*' -e/clock
+clock_adjtime -a37
+clock_nanosleep -e trace=clock_nanosleep,clock_gettime
+clock_xettime -a36 -e trace=clock_getres,clock_gettime,clock_settime
+copy_file_range
+creat -a20
+delete_module -a23
+dup -a8
+dup2 -a13
+dup3 -a24
+epoll_create -a17
+epoll_create1 -a28
+epoll_ctl
+epoll_pwait
+epoll_wait -a26
+erestartsys -a34 -e signal=none -e trace=recvfrom
+execveat
+execveat-v -v -e trace=execveat
+faccessat -P $NAME.sample
+fadvise64_64 +fadvise64.test
+fallocate -a18
+fanotify_init
+fanotify_mark -a32
+fchdir -a11
+fchmod -a15
+fchmodat
+fchown -a16
+fchown32 -a18
+fchownat
+fcntl -a8
+fcntl64 -a8
+fdatasync -a14
+file_handle -e trace=name_to_handle_at,open_by_handle_at
+file_ioctl +ioctl.test
+finit_module -a25
+flock -a19
+fork-f -a26 -qq -f -e signal=none -e trace=chdir
+fstat -a15 -v -P stat.sample
+fstat64 -a17 -v -P stat.sample
+fstatat64 -a32 -v -P stat.sample -P /dev/full
+fstatfs -a18
+fstatfs64 -a24
+fsync -a10
+ftruncate -a24
+ftruncate64 -a36
+futimesat -a28
+get_mempolicy -s3 -a38
+getcpu -a25
+getcwd -a18
+getdents -a22 -v
+getdents64 -a24 -v
+getegid +getuid.test
+getegid32 +getuid.test
+geteuid +getuid.test
+geteuid32 +getuid.test
+getgid +getuid.test
+getgid32 +getuid.test
+getgroups -a17
+getgroups32 -a19
+getpeername -a27
+getpgrp -a10
+getpid -a9
+getppid -a10
+getrandom -a32 -s3
+getresgid -a25
+getresgid32 -a27
+getresuid -a25
+getresuid32 -a27
+getrlimit -a27
+getrusage -v
+getsid -a10
+getsockname -a27
+gettid -a9
+getuid32 +getuid.test
+getxxid -a10 -e trace=getxpid,getxuid,getxgid
+inet-cmsg -e trace=recvmsg
+init_module -a27
+inotify -a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init1 -a27
+int_0x80 -a11 -e trace=getgid32
+ioctl_block +ioctl.test
+ioctl_evdev +ioctl.test
+ioctl_evdev-v +ioctl-v.sh
+ioctl_loop +ioctl.test
+ioctl_loop-v +ioctl-v.sh
+ioctl_mtd +ioctl.test
+ioctl_rtc +ioctl.test
+ioctl_rtc-v +ioctl-v.sh
+ioctl_scsi +ioctl.test
+ioctl_sg_io_v3 +ioctl.test
+ioctl_sg_io_v4 +ioctl.test
+ioctl_uffdio +ioctl.test
+ioctl_v4l2 +ioctl.test
+ioperm -a27
+iopl -a8
+ioprio -a18 -e trace=ioprio_get,ioprio_set
+ip_mreq -e trace=setsockopt
+ipc -a19
+ipc_msg +ipc.sh
+ipc_sem +ipc.sh
+ipc_shm +ipc.sh
+kcmp -a27
+kexec_file_load -s9
+kexec_load -s9
+keyctl -a31 -s10
+kill -a12 -esignal=none
+lchown -a30
+lchown32 -a32
+link
+linkat
+lookup_dcookie -a27
+lstat -a32 -v -P stat.sample -P /dev/full
+lstat64 -a32 -v -P stat.sample -P /dev/full
+madvise -a33
+mbind
+membarrier -a36
+memfd_create
+migrate_pages -a33
+mincore -a22
+mkdir -a20
+mkdirat -a28
+mknod -a18
+mknodat -a35
+mlock -a20 -e trace=mlock,munlock
+mlock2
+mlockall -a12
+mmap64 +mmap.test
+mmsg -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
+mmsg-silent -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
+mmsg_name -a25 -e trace=sendmmsg,recvmmsg
+mmsg_name-v -v -a25 -e trace=sendmmsg,recvmmsg
+mount
+move_pages -s3
+mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
+mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-write -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+msg_control -a21 -e trace=sendmsg
+msg_control-v -v -a21 -e trace=sendmsg
+msg_name -a20 -e trace=recvmsg
+munlockall -a13
+nanosleep -a20
+net-icmp_filter -e trace=getsockopt,setsockopt
+net-sockaddr -a24 -e trace=connect
+netlink_protocol -e trace=%network
+newfstatat -a32 -v -P stat.sample -P /dev/full
+old_mmap -a11 -e trace=mmap
+oldfstat -a18 -v -P stat.sample
+oldlstat -a32 -v -P stat.sample -P /dev/full
+oldstat -a32 -v -P stat.sample -P /dev/full
+open -a30 -P $NAME.sample
+openat -P $NAME.sample
+osf_utimes -a21
+pause -a8 -esignal=none
+perf_event_open -a1
+perf_event_open_nonverbose -a34 -e verbose=none -e trace=perf_event_open
+perf_event_open_unabbrev -a1 -v -e trace=perf_event_open
+pipe2 -a15
+pkey_alloc -a17
+pkey_free -a13
+pkey_mprotect -a37
+ppoll -s2
+ppoll-v -v -s2 -e trace=ppoll
+pread64-pwrite64 -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
+preadv -a21
+preadv-pwritev -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
+preadv2-pwritev2 -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
+printstr -e trace=writev
+prlimit64
+process_vm_readv -s5 -a37
+process_vm_writev -s5 -a38
+pselect6
+ptrace -a23 -e signal=none
+pwritev -a22 -s7
+quotactl
+quotactl-v -v -e trace=quotactl
+quotactl-xfs -e trace=quotactl
+quotactl-xfs-v -v -e trace=quotactl
+read-write -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
+readahead -a1
+readdir -a16
+readlink -xx
+readlinkat -xx
+reboot
+recvfrom -a35
+recvmmsg-timeout -a25 -e trace=recvmmsg
+recvmsg -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
+regex test_trace_expr '' -etrace='/^(.*_)?statv?fs'
+remap_file_pages
+rename -a35
+renameat
+renameat2
+request_key -a33 -s12
+rmdir -a22
+rt_sigpending -a20
+rt_sigprocmask
+rt_sigqueueinfo -esignal=none
+rt_sigreturn -esignal='!USR1'
+rt_sigsuspend -a20 -esignal=none
+rt_sigtimedwait -a38
+rt_tgsigqueueinfo -esignal=none
+sched test_trace_expr times -e/sched
+sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max
+sched_rr_get_interval -a31
+sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetattr -a29 -e trace=sched_getattr,sched_setattr
+sched_xetparam -a23 -e trace=sched_getparam,sched_setparam
+sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_yield -a14
+seccomp-filter -e trace=seccomp
+seccomp-filter-v -v -e trace=seccomp
+select -a36
+semop -a32 -e trace=semop,semtimedop
+sendfile -a27
+sendfile64 -a29
+set_mempolicy -s3 -a35
+setdomainname -a24
+setfsgid -a12
+setfsgid32 -a14
+setfsuid -a12
+setfsuid32 -a14
+setgid -a10
+setgid32 -a12
+setgroups -s2 -a17
+setgroups32 -s2 -a19
+sethostname -a22
+setns -a21
+setregid -a15
+setregid32 -a17
+setresgid -a19
+setresgid32 -a21
+setresuid -a19
+setresuid32 -a21
+setreuid -a15
+setreuid32 -a17
+setrlimit -a27
+setuid -a10
+setuid32 -a12
+shmxt -a11 -e trace='/(osf_)?shmat,shmdt'
+shutdown -a24
+siginfo -e trace=none
+signal_receive -a16 -e trace=kill
+signalfd4
+sigreturn -esignal='!USR1'
+sigsuspend -a19 -esignal=none
+socketcall -a20
+splice
+stat -a32 -v -P stat.sample -P /dev/full
+stat64 -a32 -v -P stat.sample -P /dev/full
+statfs -a17
+statfs64 -a23
+statx -a32 -v -P stat.sample -P /dev/full
+swap -a23 -e trace=swapon,swapoff
+sxetmask -a11 -e trace=sgetmask,ssetmask
+symlink -a34
+symlinkat
+sync -a7
+sync_file_range
+sync_file_range2
+sysinfo -a14
+syslog -a36
+tee
+time -a10
+timer_create
+timer_xettime -e trace=timer_create,timer_settime,timer_gettime
+timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime
+times -esignal=none
+times-fail -a12 -e trace=times
+trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
+trace_fstatfs test_trace_expr '' -e%fstatfs
+trace_lstat test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
+trace_question test_trace_expr '' -e?osf_utimes,?/^pkey_.*
+trace_stat test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
+trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
+trace_statfs test_trace_expr '' -e%statfs
+trace_statfs_like test_trace_expr '' -e%%statfs
+truncate
+truncate64
+ugetrlimit -a28
+umask -a11
+umoven-illptr -a36 -e trace=nanosleep
+umovestr-illptr -a11 -e trace=chdir
+umovestr3 -a14 -e trace=chdir
+unlink -a24
+unlinkat -a35
+unshare -a11
+userfaultfd -a38
+ustat -a33
+utime -a16
+utimensat -a33
+utimes -a17
+vfork-f -a26 -qq -f -e signal=none -e trace=chdir
+vhangup -a10
+vmsplice -ewrite=1
+wait4 -esignal=none
+wait4-v -v -e signal=none -e trace=wait4
+waitid -esignal=none
+waitid-v -v -e signal=none -e trace=waitid
+waitpid -a28
+xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
+xattr-strings -a22 -s 4 -e trace=fsetxattr
+xet_robust_list -a24 -e trace=get_robust_list,set_robust_list
+xetitimer -a29 -e trace=setitimer,getitimer
+xetpgid -a11 -e trace=getpgid,setpgid
+xetpriority -a29 -e trace=getpriority,setpriority
+xettimeofday -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh
new file mode 100755
index 0000000..b062436
--- /dev/null
+++ b/tests/gen_tests.sh
@@ -0,0 +1,110 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+ cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate test script(s) from <input> table.
+If a <output> is specified, generate the script for this test only,
+otherwise generate scripts for all tests specified in <input> table.
+EOF
+ exit 1
+}
+
+input="${0%/*}/gen_tests.in"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output=
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+if [ -n "$output" ]; then
+ match="${output##*/}"
+ match="${match%.gen.test}"
+ [ -n "$match" ] || usage
+else
+ match=
+ dir="$(dirname "$input")"
+fi
+
+names=
+
+while read -r name args; do {
+ [ -n "${name###*}" ] || continue
+ if [ -z "$match" ]; then
+ names="$names $name"
+ output="$dir/$name.gen.test"
+ else
+ [ "$match" = "$name" ] || continue
+ fi
+
+ hdr="\
+#!/bin/sh -efu
+# Generated by $0 from $input ($name $args); do not edit."
+
+ case "$args" in
+ +*)
+ cat <<-EOF
+ $hdr
+ . "\${srcdir=.}/${args#+}"
+ EOF
+ ;;
+
+ ''|-*)
+ cat <<-EOF
+ $hdr
+ . "\${srcdir=.}/init.sh"
+ run_strace_match_diff $args
+ EOF
+ ;;
+
+ *)
+ cat <<-EOF
+ $hdr
+ . "\${srcdir=.}/init.sh"
+ $args
+ EOF
+ ;;
+ esac > "$output"
+
+ chmod a+x "$output"
+} < /dev/null; done < "$input"
+
+if [ -n "$names" ]; then
+ {
+ printf '# Generated by %s from %s; do not edit.\n' "$0" "$input"
+ printf 'GEN_TESTS ='
+ printf ' %s.gen.test' $names
+ echo
+ target='$(srcdir)/%s.gen.test'
+ dep1='$(abs_srcdir)/gen_tests.sh'
+ dep2='$(srcdir)/gen_tests.in'
+ recipe='$(AM_V_GEN) $^ $@'
+ printf "\\n$target: $dep1 $dep2\\n\\t$recipe\\n" $names
+ } > "$dir/gen_tests.am"
+fi
diff --git a/tests/get_mempolicy.gen.test b/tests/get_mempolicy.gen.test
new file mode 100755
index 0000000..ec6efb3
--- /dev/null
+++ b/tests/get_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (get_mempolicy -s3 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a38
diff --git a/tests/get_mempolicy.test b/tests/get_mempolicy.test
deleted file mode 100755
index 9227097..0000000
--- a/tests/get_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a38
diff --git a/tests/sigreturn.test b/tests/get_regs.test
similarity index 63%
copy from tests/sigreturn.test
copy to tests/get_regs.test
index f9a612b..c673fe9 100755
--- a/tests/sigreturn.test
+++ b/tests/get_regs.test
@@ -1,8 +1,8 @@
#!/bin/sh
#
-# Check rt_sigprocmask and sigreturn/rt_sigreturn decoding.
+# Check that get_regs is skipped for filtered syscalls.
#
-# Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2017 Dmitry V. Levin <[email protected]>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,25 @@
. "${srcdir=.}/init.sh"
-run_prog
-run_strace -esignal $args
+check_prog env
+check_prog grep
+run_prog ../gettid > /dev/null
-mask='\[(USR2 CHLD|CHLD USR2) RT_3 RT_4 RT_5 RT_26 RT_27\]'
-rt_sigprocmask='rt_sigprocmask\(SIG_SETMASK, '"$mask"', NULL, [[:digit:]]+\) += 0'
-osf_sigprocmask='osf_sigprocmask\(SIG_SETMASK, '"$mask"'\) += 0 +\(old mask \[[^]]*\]\)'
-EXPECTED="$LOG.expected"
+run_strace -qq -esignal=none -eraw=all -etrace=none ../gettid > /dev/null
-cat > "$EXPECTED" << __EOF__
-$rt_sigprocmask|$osf_sigprocmask
-(rt_)?sigreturn\\((\\{mask=$mask\\})?\\) += 0
-__EOF__
+run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > less' \
+ -- ${STRACE##* } -o "$LOG" $args > /dev/null
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+[ "$(cat less)" -gt 0 ] ||
+ fail_ "$STRACE $args failed to catch any ptrace syscalls"
-exit 0
+run_strace -qq -esignal=none -eraw=all -etrace=all ../gettid > /dev/null
+
+run_strace -qq -esignal=none -eraw=all -eptrace -o '|grep -c ^ptrace > more' \
+ -- ${STRACE##* } -o "$LOG" $args > /dev/null
+
+[ "$(cat more)" -gt 0 ] ||
+ fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+[ "$(cat more)" -gt "$(cat less)" ] ||
+ fail_ "$STRACE failed to skip get_regs for filtered syscalls"
diff --git a/tests/get_sigset_size.c b/tests/get_sigset_size.c
new file mode 100644
index 0000000..357829d
--- /dev/null
+++ b/tests/get_sigset_size.c
@@ -0,0 +1,66 @@
+/*
+ * Find out the size of kernel's sigset_t.
+ *
+ * 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.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+/*
+ * If the sigset size specified to rt_sigprocmask is not equal to the size
+ * of kernel's sigset_t, the kernel does not look at anything else and fails
+ * with EINVAL.
+ *
+ * Otherwise, if both pointers specified to rt_sigprocmask are NULL,
+ * the kernel just returns 0.
+ *
+ * This vaguely documented kernel feature can be used to probe
+ * the kernel and find out the size of kernel's sigset_t.
+ */
+
+unsigned int
+get_sigset_size(void)
+{
+ static unsigned int set_size;
+
+ if (!set_size) {
+ static const unsigned int big_size = 1024 / 8;
+
+ for (set_size = big_size; set_size; set_size >>= 1) {
+ if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
+ NULL, NULL, set_size))
+ break;
+ }
+
+ if (!set_size)
+ perror_msg_and_fail("rt_sigprocmask");
+ }
+
+ return set_size;
+}
diff --git a/tests/getcpu.c b/tests/getcpu.c
index ec671f1..3cb49cb 100644
--- a/tests/getcpu.c
+++ b/tests/getcpu.c
@@ -2,6 +2,7 @@
* Check decoding of getcpu syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,8 +48,8 @@
(unsigned *) tail_alloc(sizeof(* bogus_tcache)) + 1;
long res;
- unsigned *cpu = tail_alloc(sizeof(*cpu));
- unsigned *node = tail_alloc(sizeof(*node));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, cpu);
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, node);
long * tcache = tail_alloc(128);
res = syscall(__NR_getcpu, NULL, NULL, NULL);
diff --git a/tests/getcpu.gen.test b/tests/getcpu.gen.test
new file mode 100755
index 0000000..44d9a4b
--- /dev/null
+++ b/tests/getcpu.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getcpu.test b/tests/getcpu.test
deleted file mode 100755
index fe21265..0000000
--- a/tests/getcpu.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getcpu syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/getcwd.gen.test b/tests/getcwd.gen.test
new file mode 100755
index 0000000..af2ff08
--- /dev/null
+++ b/tests/getcwd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/getcwd.test b/tests/getcwd.test
deleted file mode 100755
index 405187e..0000000
--- a/tests/getcwd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/getdents.c b/tests/getdents.c
index b787c83..338eab0 100644
--- a/tests/getdents.c
+++ b/tests/getdents.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -92,12 +93,10 @@
}
int
-main(int ac, const char **av)
+main(void)
{
- char *dname;
+ static const char dname[] = "getdents.test.tmp.dir";
- assert(ac == 1);
- assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
assert(!mkdir(dname, 0700));
assert(!chdir(dname));
(void) close(0);
diff --git a/tests/getdents.gen.test b/tests/getdents.gen.test
new file mode 100755
index 0000000..0db5f20
--- /dev/null
+++ b/tests/getdents.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v
diff --git a/tests/getdents.test b/tests/getdents.test
deleted file mode 100755
index 23c4ac3..0000000
--- a/tests/getdents.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a22 -v
diff --git a/tests/getdents64.c b/tests/getdents64.c
index 9da2a23..1f6b47e 100644
--- a/tests/getdents64.c
+++ b/tests/getdents64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -98,12 +99,10 @@
}
int
-main(int ac, const char **av)
+main(void)
{
- char *dname;
+ static const char dname[] = "getdents64.test.tmp.dir";
- assert(ac == 1);
- assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
assert(!mkdir(dname, 0700));
assert(!chdir(dname));
(void) close(0);
diff --git a/tests/getdents64.gen.test b/tests/getdents64.gen.test
new file mode 100755
index 0000000..6e24d40
--- /dev/null
+++ b/tests/getdents64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v
diff --git a/tests/getdents64.test b/tests/getdents64.test
deleted file mode 100755
index 401cfc7..0000000
--- a/tests/getdents64.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a24 -v
diff --git a/tests/getegid.gen.test b/tests/getegid.gen.test
new file mode 100755
index 0000000..d6fecc2
--- /dev/null
+++ b/tests/getegid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getegid.test b/tests/getegid.test
deleted file mode 100755
index 4354158..0000000
--- a/tests/getegid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getegid32.gen.test b/tests/getegid32.gen.test
new file mode 100755
index 0000000..38c4a4b
--- /dev/null
+++ b/tests/getegid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getegid32.test b/tests/getegid32.test
deleted file mode 100755
index a266620..0000000
--- a/tests/getegid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid.gen.test b/tests/geteuid.gen.test
new file mode 100755
index 0000000..9e8c12f
--- /dev/null
+++ b/tests/geteuid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid.test b/tests/geteuid.test
deleted file mode 100755
index 14ff6a6..0000000
--- a/tests/geteuid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid32.gen.test b/tests/geteuid32.gen.test
new file mode 100755
index 0000000..5b78331
--- /dev/null
+++ b/tests/geteuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid32.test b/tests/geteuid32.test
deleted file mode 100755
index 9dd173d..0000000
--- a/tests/geteuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid.gen.test b/tests/getgid.gen.test
new file mode 100755
index 0000000..5a87aee
--- /dev/null
+++ b/tests/getgid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid.test b/tests/getgid.test
deleted file mode 100755
index f4f0c2e..0000000
--- a/tests/getgid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid32.gen.test b/tests/getgid32.gen.test
new file mode 100755
index 0000000..05e2d70
--- /dev/null
+++ b/tests/getgid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid32.test b/tests/getgid32.test
deleted file mode 100755
index 3bc98d1..0000000
--- a/tests/getgid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getgroups.c b/tests/getgroups.c
index 2617303..c7cd874 100644
--- a/tests/getgroups.c
+++ b/tests/getgroups.c
@@ -2,6 +2,7 @@
* Check decoding of getgroups/getgroups32 syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -91,7 +92,7 @@
if (ngroups < 0)
perror_msg_and_fail(SYSCALL_NAME);
- rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+ rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
printf("%s(0, NULL) = %ld\n", SYSCALL_NAME, rc);
rc = syscall(SYSCALL_NR, -1U, 0);
@@ -105,7 +106,7 @@
rc = syscall(SYSCALL_NR, ngroups_max, 0);
printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
- rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL | ngroups_max, 0);
+ rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, 0);
printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
/* check how the second argument is decoded */
diff --git a/tests/getgroups.gen.test b/tests/getgroups.gen.test
new file mode 100755
index 0000000..48b09be
--- /dev/null
+++ b/tests/getgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/getgroups.test b/tests/getgroups.test
deleted file mode 100755
index 2eb3056..0000000
--- a/tests/getgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/getgroups32.gen.test b/tests/getgroups32.gen.test
new file mode 100755
index 0000000..74637d0
--- /dev/null
+++ b/tests/getgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/getgroups32.test b/tests/getgroups32.test
deleted file mode 100755
index 12a8bcc..0000000
--- a/tests/getgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/getpeername.gen.test b/tests/getpeername.gen.test
new file mode 100755
index 0000000..66fb0a9
--- /dev/null
+++ b/tests/getpeername.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getpeername.test b/tests/getpeername.test
deleted file mode 100755
index 81f01bb..0000000
--- a/tests/getpeername.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getpeername syscall.
-
-. "${srcdir=.}/getsockname.test"
diff --git a/tests/getpgrp.gen.test b/tests/getpgrp.gen.test
new file mode 100755
index 0000000..1ec48e9
--- /dev/null
+++ b/tests/getpgrp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/getpgrp.test b/tests/getpgrp.test
deleted file mode 100755
index e116bb5..0000000
--- a/tests/getpgrp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgrp syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/getpid.c b/tests/getpid.c
new file mode 100644
index 0000000..96f2d15
--- /dev/null
+++ b/tests/getpid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ printf("getpid() = %ld\n", syscall(__NR_getpid));
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests/getpid.gen.test b/tests/getpid.gen.test
new file mode 100755
index 0000000..4691774
--- /dev/null
+++ b/tests/getpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests/getppid.c b/tests/getppid.c
new file mode 100644
index 0000000..58901fc
--- /dev/null
+++ b/tests/getppid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getppid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ printf("getppid() = %ld\n", syscall(__NR_getppid));
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getppid")
+
+#endif
diff --git a/tests/getppid.gen.test b/tests/getppid.gen.test
new file mode 100755
index 0000000..52116a0
--- /dev/null
+++ b/tests/getppid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/getrandom.gen.test b/tests/getrandom.gen.test
new file mode 100755
index 0000000..2f5b989
--- /dev/null
+++ b/tests/getrandom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrandom -a32 -s3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -s3
diff --git a/tests/getrandom.test b/tests/getrandom.test
deleted file mode 100755
index ad34048..0000000
--- a/tests/getrandom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrandom syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -s3
diff --git a/tests/getresgid.gen.test b/tests/getresgid.gen.test
new file mode 100755
index 0000000..f53bccc
--- /dev/null
+++ b/tests/getresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getresgid.test b/tests/getresgid.test
deleted file mode 100755
index 9f5186e..0000000
--- a/tests/getresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/getresgid32.gen.test b/tests/getresgid32.gen.test
new file mode 100755
index 0000000..5f00506
--- /dev/null
+++ b/tests/getresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getresgid32.test b/tests/getresgid32.test
deleted file mode 100755
index a979891..0000000
--- a/tests/getresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/getresugid.c b/tests/getresugid.c
index 0ee721c..af9f015 100644
--- a/tests/getresugid.c
+++ b/tests/getresugid.c
@@ -2,6 +2,7 @@
* Check decoding of getresuid/getresgid/getresuid32/getresgid32 syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,9 +35,9 @@
int
main(void)
{
- unsigned UGID_TYPE *const r = tail_alloc(sizeof(*r));
- unsigned UGID_TYPE *const e = tail_alloc(sizeof(*e));
- unsigned UGID_TYPE *const s = tail_alloc(sizeof(*s));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, r);
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, e);
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, s);
if (syscall(SYSCALL_NR, r, e, s))
perror_msg_and_fail(SYSCALL_NAME);
diff --git a/tests/getresuid.gen.test b/tests/getresuid.gen.test
new file mode 100755
index 0000000..e947a94
--- /dev/null
+++ b/tests/getresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getresuid.test b/tests/getresuid.test
deleted file mode 100755
index eee1ac0..0000000
--- a/tests/getresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/getresuid32.gen.test b/tests/getresuid32.gen.test
new file mode 100755
index 0000000..b088a22
--- /dev/null
+++ b/tests/getresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getresuid32.test b/tests/getresuid32.test
deleted file mode 100755
index fdc76a3..0000000
--- a/tests/getresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/getrlimit.gen.test b/tests/getrlimit.gen.test
new file mode 100755
index 0000000..b97c176
--- /dev/null
+++ b/tests/getrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getrlimit.test b/tests/getrlimit.test
deleted file mode 100755
index 6fd88ae..0000000
--- a/tests/getrlimit.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit syscall.
-
-. "${srcdir=.}/setrlimit.test"
diff --git a/tests/getrusage.c b/tests/getrusage.c
index 8b76eff..bb52dd9 100644
--- a/tests/getrusage.c
+++ b/tests/getrusage.c
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2016 Fei Jie <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -35,27 +36,46 @@
# include <stdint.h>
# include <sys/resource.h>
# include <unistd.h>
+# include <errno.h>
+
+# include "xlat.h"
+# include "xlat/usagewho.h"
int
-main(void)
+invoke_print(int who, const char *who_str, struct rusage *usage)
{
- struct rusage *const usage = tail_alloc(sizeof(struct rusage));
- int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage);
- printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}"
- ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu"
+ int rc = syscall(__NR_getrusage, who, usage);
+ int saved_errno = errno;
+ printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
+ ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
- ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n",
- (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,
+ ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+ who_str,
+ (long long) usage->ru_utime.tv_sec,
+ zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
+ (long long) usage->ru_stime.tv_sec,
+ zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
- usage->ru_nvcsw, usage->ru_nivcsw, rc);
+ usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+ errno = saved_errno;
+ return rc;
+}
+
+int
+main(void)
+{
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+ if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
+ perror_msg_and_fail("RUSAGE_SELF");
+ }
+ if (invoke_print(ARG_STR(RUSAGE_THREAD), usage) && errno != EINVAL) {
+ perror_msg_and_fail("RUSAGE_THREAD");
+ }
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/getrusage.gen.test b/tests/getrusage.gen.test
new file mode 100755
index 0000000..c4fb182
--- /dev/null
+++ b/tests/getrusage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v
diff --git a/tests/getrusage.test b/tests/getrusage.test
deleted file mode 100755
index 4a3e8ed..0000000
--- a/tests/getrusage.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrusage syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v
diff --git a/tests/getsid.gen.test b/tests/getsid.gen.test
new file mode 100755
index 0000000..123f177
--- /dev/null
+++ b/tests/getsid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/getsid.test b/tests/getsid.test
deleted file mode 100755
index 3fcf979..0000000
--- a/tests/getsid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getsid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/getsockname.gen.test b/tests/getsockname.gen.test
new file mode 100755
index 0000000..cd40d3e
--- /dev/null
+++ b/tests/getsockname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getsockname.test b/tests/getsockname.test
deleted file mode 100755
index 99b2850..0000000
--- a/tests/getsockname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getsockname syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/gettid.c b/tests/gettid.c
new file mode 100644
index 0000000..9b13eb8
--- /dev/null
+++ b/tests/gettid.c
@@ -0,0 +1,12 @@
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+ printf("gettid() = %ld\n", syscall(__NR_gettid));
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/gettid.gen.test b/tests/gettid.gen.test
new file mode 100755
index 0000000..1ceaa53
--- /dev/null
+++ b/tests/gettid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests/getuid.test b/tests/getuid.test
index 9aaf74b..0bad1ff 100755
--- a/tests/getuid.test
+++ b/tests/getuid.test
@@ -9,4 +9,3 @@
run_strace -qq -a9 -e$NAME $args > "$EXP"
uniq < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests/getuid32.gen.test b/tests/getuid32.gen.test
new file mode 100755
index 0000000..ac0d0ad
--- /dev/null
+++ b/tests/getuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getuid32.test b/tests/getuid32.test
deleted file mode 100755
index ae0c557..0000000
--- a/tests/getuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getxxid.gen.test b/tests/getxxid.gen.test
new file mode 100755
index 0000000..5aa89f6
--- /dev/null
+++ b/tests/getxxid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests/getxxid.test b/tests/getxxid.test
deleted file mode 100755
index 9b89d7c..0000000
--- a/tests/getxxid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getxpid, getxuid, and getxgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests/inet-cmsg.gen.test b/tests/inet-cmsg.gen.test
new file mode 100755
index 0000000..8eeb7c9
--- /dev/null
+++ b/tests/inet-cmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inet-cmsg -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvmsg
diff --git a/tests/inet-cmsg.test b/tests/inet-cmsg.test
deleted file mode 100755
index 52ff5f5..0000000
--- a/tests/inet-cmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check IPPROTO_IP control messages decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmsg
diff --git a/tests/init.sh b/tests/init.sh
index f368b98..2844765 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -1,6 +1,7 @@
#!/bin/sh
#
# Copyright (c) 2011-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2011-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,10 +27,9 @@
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ME_="${0##*/}"
-LOG="$ME_.tmp"
-OUT="$LOG.out"
-EXP="$LOG.exp"
-NAME="${ME_%.test}"
+LOG="log"
+OUT="out"
+EXP="exp"
warn_() { printf >&2 '%s\n' "$*"; }
fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -52,7 +52,7 @@
run_prog()
{
if [ $# -eq 0 ]; then
- set -- "./$NAME"
+ set -- "../$NAME"
fi
args="$*"
"$@" || {
@@ -72,6 +72,20 @@
"$@" || framework_skip_ "$args failed with code $?"
}
+try_run_prog()
+{
+ local rc
+
+ "$@" > /dev/null || {
+ rc=$?
+ if [ $rc -eq 77 ]; then
+ return 1
+ else
+ fail_ "$* failed with code $rc"
+ fi
+ }
+}
+
run_strace()
{
> "$LOG" || fail_ "failed to write $LOG"
@@ -213,7 +227,6 @@
run_prog > /dev/null
run_strace "$@" $args > "$EXP"
match_diff "$LOG" "$EXP"
- rm -f "$EXP"
}
# Print kernel version code.
@@ -250,22 +263,110 @@
cat < "/proc/$pid/status" | grep "$@"
}
+# Subtracts one program set from another.
+# If an optional regular expression is specified, the lines in the minuend file
+# that match this regular expression are elso excluded from the output.
+#
+# Usage: prog_set_subtract minuend_file subtrahend_file [subtrahend_regexp]
+prog_set_subtract()
+{
+ local min sub re pat
+ min="$1"; shift
+ sub="$1"; shift
+ re="${1-}"
+ pat="$re|$(sed 's/[[:space:]].*//' < "$sub" | tr -s '\n' '|')"
+ grep -E -v -x -e "$pat" < "$min"
+}
+
+# Usage: test_pure_prog_set [--expfile FILE] COMMON_ARGS < tests_file
+# stdin should consist of lines in "test_name strace_args..." format.
+test_pure_prog_set()
+{
+ local expfile
+
+ expfile="$EXP"
+
+ while [ -n "$1" ]; do
+ case "$1" in
+ --expfile)
+ shift
+ expfile="$1"
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+
+ while read -r t prog_args; do {
+ # skip lines beginning with "#" symbol
+ [ "${t###}" = "$t" ] || continue
+
+ try_run_prog "../$t" || continue
+ run_strace $prog_args "$@" "../$t" > "$expfile"
+ match_diff "$LOG" "$expfile"
+ } < /dev/null; done
+}
+
+# Run strace against list of programs put in "$NAME.in" and then against the
+# rest of pure_executables.list with the expectation of empty output in the
+# latter case.
+#
+# Usage: source this file after init.sh and call:
+# test_trace_expr subtrahend_regexp strace_args
+# Environment:
+# $NAME: test name, used for "$NAME.in" file containing list of tests
+# for positive trace expression match;
+# $srcdir: used to find pure_executables.list and "$NAME.in" files.
+# Files created:
+# negative.list: File containing list of tests for negative match.
+test_trace_expr()
+{
+ local subtrahend_regexp
+ subtrahend_regexp="$1"; shift
+ test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+ prog_set_subtract "$srcdir/pure_executables.list" "$srcdir/$NAME.in" \
+ "$subtrahend_regexp" > negative.list
+ test_pure_prog_set --expfile /dev/null -qq -esignal=none "$@" \
+ < negative.list
+}
+
check_prog cat
check_prog rm
-rm -f "$LOG"
+case "$ME_" in
+ *.gen.test) NAME="${ME_%.gen.test}" ;;
+ *.test) NAME="${ME_%.test}" ;;
+ *) NAME=
+esac
-[ -n "${STRACE-}" ] || {
- STRACE=../strace
- case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
- *--suppressions=*--error-exitcode=*--tool=*)
+if [ -n "$NAME" ]; then
+ TESTDIR="$NAME.dir"
+ rm -rf -- "$TESTDIR"
+ mkdir -- "$TESTDIR"
+ cd "$TESTDIR"
+
+ case "$srcdir" in
+ /*) ;;
+ *) srcdir="../$srcdir" ;;
+ esac
+
+ [ -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
-}
+ esac
+ }
+else
+ [ -n "${STRACE-}" ] ||
+ STRACE=../strace
+fi
-: "${TIMEOUT_DURATION:=60}"
+: "${TIMEOUT_DURATION:=120}"
: "${SLEEP_A_BIT:=sleep 1}"
[ -z "${VERBOSE-}" ] ||
diff --git a/tests/init_delete_module.h b/tests/init_delete_module.h
index db550c3..cabf26f 100644
--- a/tests/init_delete_module.h
+++ b/tests/init_delete_module.h
@@ -3,6 +3,7 @@
* and delete_module tests.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -42,9 +43,6 @@
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)
{
diff --git a/tests/init_module.c b/tests/init_module.c
index 88ef9ec..8fbb263 100644
--- a/tests/init_module.c
+++ b/tests/init_module.c
@@ -2,6 +2,7 @@
* Check decoding of init_module syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -55,9 +56,9 @@
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);
+ rc = syscall(__NR_init_module, NULL, F8ILL_KULONG_MASK, NULL);
printf("init_module(NULL, %llu, NULL) = %s\n",
- (unsigned long long) bogus_zero, sprintrc(rc));
+ (unsigned long long) F8ILL_KULONG_MASK, sprintrc(rc));
rc = syscall(__NR_init_module, bogus_addr, 0, bogus_param1);
errstr = sprintrc(rc);
diff --git a/tests/init_module.gen.test b/tests/init_module.gen.test
new file mode 100755
index 0000000..8948e2e
--- /dev/null
+++ b/tests/init_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (init_module -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/init_module.test b/tests/init_module.test
deleted file mode 100755
index ef7c732..0000000
--- a/tests/init_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of init_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/inotify.gen.test b/tests/inotify.gen.test
new file mode 100755
index 0000000..7010206
--- /dev/null
+++ b/tests/inotify.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify -a23 -e trace=inotify_add_watch,inotify_rm_watch); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=inotify_add_watch,inotify_rm_watch
diff --git a/tests/inotify.test b/tests/inotify.test
deleted file mode 100755
index 436f3bc..0000000
--- a/tests/inotify.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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.gen.test b/tests/inotify_init1.gen.test
new file mode 100755
index 0000000..d847b50
--- /dev/null
+++ b/tests/inotify_init1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/inotify_init1.test b/tests/inotify_init1.test
deleted file mode 100755
index 1a7c926..0000000
--- a/tests/inotify_init1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_init1 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/int_0x80.c b/tests/int_0x80.c
new file mode 100644
index 0000000..012694f
--- /dev/null
+++ b/tests/int_0x80.c
@@ -0,0 +1,52 @@
+/*
+ * Check decoding of int 0x80 on x86_64, x32, and x86.
+ *
+ * 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"
+
+#if defined __x86_64__ || defined __i386__
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+ /* 200 is __NR_getgid32 on x86 and __NR_tkill on x86_64. */
+ __asm__("movl $200, %eax; int $0x80");
+ printf("getgid32() = %d\n", getegid());
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__x86_64__ || __i386__")
+
+#endif
diff --git a/tests/int_0x80.gen.test b/tests/int_0x80.gen.test
new file mode 100755
index 0000000..2ab4f2f
--- /dev/null
+++ b/tests/int_0x80.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (int_0x80 -a11 -e trace=getgid32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getgid32
diff --git a/tests/ioctl-v.sh b/tests/ioctl-v.sh
new file mode 100755
index 0000000..be89671
--- /dev/null
+++ b/tests/ioctl-v.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Check non-abbreviated decoding of ioctls.
+
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -a16 -v -eioctl $args > "$EXP"
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests/ioctl.c b/tests/ioctl.c
index 92a3191..5dc0864 100644
--- a/tests/ioctl.c
+++ b/tests/ioctl.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/ioctl.test b/tests/ioctl.test
index 94bc5d4..1eb469e 100755
--- a/tests/ioctl.test
+++ b/tests/ioctl.test
@@ -4,12 +4,8 @@
. "${srcdir=.}/init.sh"
+check_prog grep
run_prog > /dev/null
run_strace -a16 -eioctl $args > "$EXP"
-check_prog grep
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/ioctl_block.c b/tests/ioctl_block.c
index f62b0b3..8e883d4 100644
--- a/tests/ioctl_block.c
+++ b/tests/ioctl_block.c
@@ -2,6 +2,7 @@
* This file is part of ioctl_block strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -113,7 +114,7 @@
ioctl(-1, BLKFRASET, lmagic);
printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
- int *const val_int = tail_alloc(sizeof(*val_int));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
*val_int = magic;
ioctl(-1, BLKROSET, val_int);
@@ -144,7 +145,7 @@
" = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
#endif
- struct blkpg_ioctl_arg *const blkpg = tail_alloc(sizeof(*blkpg));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_ioctl_arg, blkpg);
blkpg->op = 3;
blkpg->flags = 0xdeadbeef;
blkpg->datalen = 0xbadc0ded;
@@ -156,7 +157,7 @@
"BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
(unsigned long) blkpg->data);
- struct blkpg_partition *const bp = tail_alloc(sizeof(*bp));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_partition, bp);
bp->start = 0xfac1fed2dad3bef4ULL;
bp->length = 0xfac5fed6dad7bef8ULL;
bp->pno = magic;
@@ -177,7 +178,7 @@
(int) sizeof(bp->volname) - 1, bp->volname);
#if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
- struct blk_user_trace_setup *const buts = tail_alloc(sizeof(*buts));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
fill_memory(buts, sizeof(*buts));
ioctl(-1, BLKTRACESETUP, buts);
diff --git a/tests/ioctl_block.gen.test b/tests/ioctl_block.gen.test
new file mode 100755
index 0000000..0ffec6f
--- /dev/null
+++ b/tests/ioctl_block.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_block.test b/tests/ioctl_block.test
deleted file mode 100755
index 0bf2500..0000000
--- a/tests/ioctl_block.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of BLK* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_dm-v.test b/tests/ioctl_dm-v.test
index ade3b9e..eed37c2 100755
--- a/tests/ioctl_dm-v.test
+++ b/tests/ioctl_dm-v.test
@@ -4,9 +4,8 @@
. "${srcdir=.}/init.sh"
+check_prog grep
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
index 08f036c..544d70b 100644
--- a/tests/ioctl_dm.c
+++ b/tests/ioctl_dm.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2016 Mikulas Patocka <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -234,15 +235,15 @@
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 */ ...}) = "
+ 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");
+ printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14"
+ " /* data_size too small */}) = -1 EBADF (%m)\n");
/* Unterminated name/uuid */
init_s(dm_arg, min_sizeof_dm_ioctl, 0);
@@ -395,8 +396,8 @@
"dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
"target_count=1234, flags=0, "
# if VERBOSE
- "/* misplaced struct dm_target_spec */ ..."
-# else /* !VERBOSE */
+ "??? /* misplaced struct dm_target_spec */"
+# else
"..."
# endif /* VERBOSE */
"}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
@@ -491,7 +492,7 @@
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 */ ...");
+ printf("\"\\1\\2\"}, ??? /* misplaced struct dm_target_spec */");
# else /* !VERBOSE */
printf("...");
# endif /* VERBOSE */
@@ -575,7 +576,7 @@
"{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 */"
+ "??? /* misplaced struct dm_target_msg */"
# else /* !VERBOSE */
"..."
# endif /* VERBOSE */
@@ -590,7 +591,7 @@
"{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 */"
+ "??? /* misplaced struct dm_target_msg */"
# else /* !VERBOSE */
"..."
# endif /* VERBOSE */
@@ -706,7 +707,7 @@
"dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
"flags=0, "
# if VERBOSE
- "/* misplaced string */"
+ "??? /* misplaced string */"
# else /* !VERBOSE */
"..."
# endif /* VERBOSE */
@@ -757,10 +758,12 @@
"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 */ "
+ "{sector_start=0, length=0, target_type=\"\", string=\"\"}"
+ ", ??? /* misplaced struct dm_target_spec */"
+# else
+ "..."
# endif /* VERBOSE */
- "...}) = -1 EBADF (%m)\n",
+ "}) = -1 EBADF (%m)\n",
s.ioc.data_size, s.ioc.data_start);
puts("+++ exited with 0 +++");
diff --git a/tests/ioctl_dm.test b/tests/ioctl_dm.test
index 6485205..e9cca03 100755
--- a/tests/ioctl_dm.test
+++ b/tests/ioctl_dm.test
@@ -4,9 +4,8 @@
. "${srcdir=.}/init.sh"
+check_prog grep
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-v.gen.test b/tests/ioctl_evdev-v.gen.test
new file mode 100755
index 0000000..fc7e2f0
--- /dev/null
+++ b/tests/ioctl_evdev-v.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl-v.sh); do not edit.
+. "${srcdir=.}/ioctl-v.sh"
diff --git a/tests/ioctl_evdev-v.test b/tests/ioctl_evdev-v.test
deleted file mode 100755
index 8794101..0000000
--- a/tests/ioctl_evdev-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding EVIOC* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -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_evdev.c b/tests/ioctl_evdev.c
index d12323e..6cbc09f 100644
--- a/tests/ioctl_evdev.c
+++ b/tests/ioctl_evdev.c
@@ -2,6 +2,7 @@
* This file is part of ioctl_evdev strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -148,7 +149,7 @@
void *const page = tail_alloc(size);
fill_memory(page, size);
- int *const val_int = tail_alloc(sizeof(*val_int));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
*val_int = magic;
# ifdef EVIOCSCLOCKID
@@ -172,7 +173,7 @@
pair_int[0], "KEY_ESC");
# ifdef EVIOCSKEYCODE_V2
- struct input_keymap_entry *const ike = tail_alloc(sizeof(*ike));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
fill_memory(ike, sizeof(*ike));
ike->keycode = 2;
@@ -196,7 +197,7 @@
printf("}) = -1 EBADF (%m)\n");
# endif
- struct ff_effect *const ffe = tail_alloc(sizeof(*ffe));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct ff_effect, ffe);
fill_memory(ffe, sizeof(*ffe));
ffe->type = FF_CONSTANT;
diff --git a/tests/ioctl_evdev.gen.test b/tests/ioctl_evdev.gen.test
new file mode 100755
index 0000000..26f0a28
--- /dev/null
+++ b/tests/ioctl_evdev.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev.test b/tests/ioctl_evdev.test
deleted file mode 100755
index 7ed2e98..0000000
--- a/tests/ioctl_evdev.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of EVIOC* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_loop-nv.test b/tests/ioctl_loop-nv.test
index dcc27e1..7d59cc2 100755
--- a/tests/ioctl_loop-nv.test
+++ b/tests/ioctl_loop-nv.test
@@ -4,9 +4,8 @@
. "${srcdir=.}/init.sh"
+check_prog grep
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.gen.test b/tests/ioctl_loop-v.gen.test
new file mode 100755
index 0000000..7fd9f66
--- /dev/null
+++ b/tests/ioctl_loop-v.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop-v +ioctl-v.sh); do not edit.
+. "${srcdir=.}/ioctl-v.sh"
diff --git a/tests/ioctl_loop-v.test b/tests/ioctl_loop-v.test
deleted file mode 100755
index ff3995d..0000000
--- a/tests/ioctl_loop-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/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
index a95e775..4dcbf9a 100644
--- a/tests/ioctl_loop.c
+++ b/tests/ioctl_loop.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2016 JingPiao Chen <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -175,8 +176,8 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
/* Unknown loop commands */
ioctl(-1, unknown_loop_cmd, magic);
diff --git a/tests/ioctl_loop.gen.test b/tests/ioctl_loop.gen.test
new file mode 100755
index 0000000..f7aee8e
--- /dev/null
+++ b/tests/ioctl_loop.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_mtd.c b/tests/ioctl_mtd.c
index a37d5d0..71d0c0d 100644
--- a/tests/ioctl_mtd.c
+++ b/tests/ioctl_mtd.c
@@ -2,6 +2,7 @@
* This file is part of ioctl_mtd strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,13 +96,13 @@
ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL);
printf("ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL) = -1 EBADF (%m)\n");
- int *const opt = tail_alloc(sizeof(*opt));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, opt);
*opt = MTD_OTP_OFF;
ioctl(-1, OTPSELECT, opt);
printf("ioctl(-1, MIXER_READ(%u) or OTPSELECT, [MTD_OTP_OFF])"
" = -1 EBADF (%m)\n", (unsigned int) _IOC_NR(OTPSELECT));
- uint64_t *const v64 = tail_alloc(sizeof(*v64));
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, v64);
fill_memory(v64, sizeof(*v64));
ioctl(-1, MEMGETBADBLOCK, v64);
@@ -114,7 +115,7 @@
" = -1 EBADF (%m)\n",
(unsigned int) _IOC_NR(MEMSETBADBLOCK), *v64);
- struct region_info_user *const riu = tail_alloc(sizeof(*riu));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct region_info_user, riu);
fill_memory(riu, sizeof(*riu));
ioctl(-1, MEMGETREGIONINFO, riu);
printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
@@ -124,7 +125,7 @@
#endif
, riu->regionindex);
- struct erase_info_user *const eiu = tail_alloc(sizeof(*eiu));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
fill_memory(eiu, sizeof(*eiu));
TEST_erase_info_user(MEMERASE, eiu);
@@ -132,7 +133,7 @@
TEST_erase_info_user(MEMUNLOCK, eiu);
TEST_erase_info_user(MEMISLOCKED, eiu);
- struct erase_info_user64 *const eiu64 = tail_alloc(sizeof(*eiu64));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user64, eiu64);
fill_memory(eiu64, sizeof(*eiu64));
ioctl(-1, MEMERASE64, eiu64);
printf("ioctl(-1, MIXER_WRITE(%u) or %s, {start=%#llx, length=%#llx})"
@@ -141,7 +142,7 @@
(unsigned long long) eiu64->start,
(unsigned long long) eiu64->length);
- struct mtd_oob_buf *const oob = tail_alloc(sizeof(*oob));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf, oob);
fill_memory(oob, sizeof(*oob));
ioctl(-1, MEMWRITEOOB, oob);
@@ -152,7 +153,7 @@
printf("ioctl(-1, MEMREADOOB, {start=%#x, length=%#x, ptr=%p})"
" = -1 EBADF (%m)\n", oob->start, oob->length, oob->ptr);
- struct mtd_oob_buf64 *const oob64 = tail_alloc(sizeof(*oob64));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf64, oob64);
fill_memory(oob64, sizeof(*oob64));
ioctl(-1, MEMWRITEOOB64, oob64);
@@ -168,14 +169,14 @@
(unsigned long long) oob64->usr_ptr);
- struct otp_info *const oi = tail_alloc(sizeof(*oi));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct otp_info, 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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_write_req, wr);
fill_memory(wr, sizeof(*wr));
wr->mode = MTD_OPS_PLACE_OOB;
ioctl(-1, MEMWRITE, wr);
diff --git a/tests/ioctl_mtd.gen.test b/tests/ioctl_mtd.gen.test
new file mode 100755
index 0000000..cbc3104
--- /dev/null
+++ b/tests/ioctl_mtd.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_mtd.test b/tests/ioctl_mtd.test
deleted file mode 100755
index 0842807..0000000
--- a/tests/ioctl_mtd.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of 'M' type ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_nsfs.c b/tests/ioctl_nsfs.c
new file mode 100644
index 0000000..b2dbd1b
--- /dev/null
+++ b/tests/ioctl_nsfs.c
@@ -0,0 +1,145 @@
+/*
+ * Check decoding of NS_* commands of ioctl syscall.
+ *
+ * Copyright (c) 2017 Nikolay Marchuk <[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 <fcntl.h>
+#include <sched.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include "nsfs.h"
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+static void
+test_no_namespace(void)
+{
+ ioctl(-1, NS_GET_USERNS);
+ printf("ioctl(-1, NS_GET_USERNS) = -1 EBADF (%m)\n");
+ ioctl(-1, NS_GET_PARENT);
+ printf("ioctl(-1, NS_GET_PARENT) = -1 EBADF (%m)\n");
+ ioctl(-1, NS_GET_NSTYPE);
+ printf("ioctl(-1, NS_GET_NSTYPE) = -1 EBADF (%m)\n");
+ ioctl(-1, NS_GET_OWNER_UID, NULL);
+ printf("ioctl(-1, NS_GET_OWNER_UID, NULL) = -1 EBADF (%m)\n");
+}
+
+static void
+test_clone(pid_t pid)
+{
+ char path[sizeof("/proc/%d/ns/user") + sizeof(int)*3];
+ snprintf(path, sizeof(path), "/proc/%d/ns/user", pid);
+
+ int ns_fd = open(path, O_RDONLY);
+ if (ns_fd == -1)
+ perror_msg_and_skip("open: %s", path);
+
+ int userns_fd = ioctl(ns_fd, NS_GET_USERNS);
+ printf("ioctl(%d, NS_GET_USERNS) = %s\n", ns_fd, sprintrc(userns_fd));
+
+ int parent_ns_fd = ioctl(userns_fd, NS_GET_PARENT);
+ printf("ioctl(%d, NS_GET_PARENT) = %s\n",
+ userns_fd, sprintrc(parent_ns_fd));
+
+ int nstype = ioctl(userns_fd, NS_GET_NSTYPE);
+ if (nstype == -1) {
+ printf("ioctl(%d, NS_GET_NSTYPE) = %s\n",
+ userns_fd, sprintrc(nstype));
+ } else {
+ printf("ioctl(%d, NS_GET_NSTYPE) = %d (CLONE_NEWUSER)\n",
+ userns_fd, nstype);
+ }
+
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, uid);
+ int rc = ioctl(userns_fd, NS_GET_OWNER_UID, uid);
+ if (rc == -1) {
+ printf("ioctl(%d, NS_GET_OWNER_UID, %p) = %s\n",
+ userns_fd, uid, sprintrc(rc));
+ } else {
+ printf("ioctl(%d, NS_GET_OWNER_UID, [%u]) = %d\n",
+ userns_fd, *uid, rc);
+ }
+}
+
+static int
+child(void *arg)
+{
+ int *pipefd = (int *) arg;
+ close(pipefd[1]);
+ /* Wait for EOF from pipe. */
+ if (read(pipefd[0], &pipefd[1], 1))
+ perror_msg_and_fail("read");
+ return 0;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define clone(fn, child_stack, flags, arg) \
+ __clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+#endif
+
+static void
+test_user_namespace(void)
+{
+ pid_t pid;
+ int pipefd[2];
+ int status;
+
+ if (pipe(pipefd))
+ perror_msg_and_fail("pipe");
+
+ pid = clone(child, tail_alloc(get_page_size() / 2),
+ CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+ if (pid == -1) {
+ perror("clone");
+ return;
+ }
+ close(pipefd[0]);
+ test_clone(pid);
+ close(pipefd[1]);
+ if (wait(&status) != pid) {
+ perror_msg_and_fail("wait");
+ } else if (status != 0) {
+ error_msg_and_fail("unexpected child exit status %d", status);
+ }
+}
+
+int
+main(void)
+{
+ test_no_namespace();
+ test_user_namespace();
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/ioctl_loop.test b/tests/ioctl_nsfs.test
similarity index 60%
rename from tests/ioctl_loop.test
rename to tests/ioctl_nsfs.test
index 112cd63..acdfb61 100755
--- a/tests/ioctl_loop.test
+++ b/tests/ioctl_nsfs.test
@@ -1,12 +1,11 @@
#!/bin/sh
-# Check decoding of LOOP_* ioctls.
+# Check decoding of NS_* ioctls.
. "${srcdir=.}/init.sh"
-run_prog > /dev/null
-run_strace -a22 -eioctl $args > "$EXP"
check_prog grep
+run_prog > /dev/null
+run_strace -a16 -eioctl -esignal=none $args > "$EXP"
grep -v '^ioctl([012],' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_rtc-v.gen.test b/tests/ioctl_rtc-v.gen.test
new file mode 100755
index 0000000..b534a02
--- /dev/null
+++ b/tests/ioctl_rtc-v.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc-v +ioctl-v.sh); do not edit.
+. "${srcdir=.}/ioctl-v.sh"
diff --git a/tests/ioctl_rtc-v.test b/tests/ioctl_rtc-v.test
deleted file mode 100755
index a255322..0000000
--- a/tests/ioctl_rtc-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of RTC_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -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_rtc.c b/tests/ioctl_rtc.c
index 49d7ec7..466a1d3 100644
--- a/tests/ioctl_rtc.c
+++ b/tests/ioctl_rtc.c
@@ -2,6 +2,7 @@
* This file is part of ioctl_rtc strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -73,13 +74,13 @@
void *const page = tail_alloc(size);
fill_memory(page, size);
- struct rtc_time *rt = tail_alloc(sizeof(*rt));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_time, rt);
fill_memory(rt, sizeof(*rt));
- struct rtc_wkalrm *wk = tail_alloc(sizeof(*wk));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_wkalrm, wk);
fill_memory(wk, sizeof(*wk));
- struct rtc_pll_info *pll = tail_alloc(sizeof(*pll));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_pll_info, pll);
fill_memory(pll, sizeof(*pll));
/* RTC_ALM_READ */
diff --git a/tests/ioctl_rtc.gen.test b/tests/ioctl_rtc.gen.test
new file mode 100755
index 0000000..e430a82
--- /dev/null
+++ b/tests/ioctl_rtc.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_rtc.test b/tests/ioctl_rtc.test
deleted file mode 100755
index 4545f2a..0000000
--- a/tests/ioctl_rtc.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic decoding of RTC_* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_scsi.c b/tests/ioctl_scsi.c
index 0db94d8..a9ecf28 100644
--- a/tests/ioctl_scsi.c
+++ b/tests/ioctl_scsi.c
@@ -69,7 +69,7 @@
int
main(void)
{
- int *const pint = tail_alloc(sizeof(*pint));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, pint);
*pint = (int) 0xfacefeed;
TEST_NO_ARG(SG_GET_TIMEOUT);
diff --git a/tests/ioctl_scsi.gen.test b/tests/ioctl_scsi.gen.test
new file mode 100755
index 0000000..23ac307
--- /dev/null
+++ b/tests/ioctl_scsi.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_scsi.test b/tests/ioctl_scsi.test
deleted file mode 100755
index 2710f12..0000000
--- a/tests/ioctl_scsi.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/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
index ef25795..3808b20 100644
--- a/tests/ioctl_sg_io_v3.c
+++ b/tests/ioctl_sg_io_v3.c
@@ -43,7 +43,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_hdr, sg_io);
fill_memory(sg_io, sizeof(*sg_io));
const void *const efault = sg_io + 1;
@@ -53,7 +53,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, 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);
diff --git a/tests/ioctl_sg_io_v3.gen.test b/tests/ioctl_sg_io_v3.gen.test
new file mode 100755
index 0000000..e7e5ea5
--- /dev/null
+++ b/tests/ioctl_sg_io_v3.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v3.test b/tests/ioctl_sg_io_v3.test
deleted file mode 100755
index dacacdf..0000000
--- a/tests/ioctl_sg_io_v3.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/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
index 5f899ee..9c1e9fa 100644
--- a/tests/ioctl_sg_io_v4.c
+++ b/tests/ioctl_sg_io_v4.c
@@ -45,7 +45,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_v4, sg_io);
fill_memory(sg_io, sizeof(*sg_io));
const void *const efault = sg_io + 1;
@@ -55,7 +55,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, pguard);
*pguard = (unsigned char) 'Q';
ioctl(-1, SG_IO, pguard);
printf("ioctl(-1, SG_IO, {guard='Q', %p}) = -1 EBADF (%m)\n", pguard + 1);
diff --git a/tests/ioctl_sg_io_v4.gen.test b/tests/ioctl_sg_io_v4.gen.test
new file mode 100755
index 0000000..575ad96
--- /dev/null
+++ b/tests/ioctl_sg_io_v4.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v4.test b/tests/ioctl_sg_io_v4.test
deleted file mode 100755
index 2556722..0000000
--- a/tests/ioctl_sg_io_v4.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/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
index ae0bea4..f81faef 100644
--- a/tests/ioctl_sock_gifconf.c
+++ b/tests/ioctl_sock_gifconf.c
@@ -2,6 +2,7 @@
* Check decoding of SIOCGIFCONF command of ioctl syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -134,7 +135,7 @@
main(int argc, char *argv[])
{
struct ifreq *ifr = tail_alloc(2 * sizeof(*ifr));
- struct ifconf *ifc = tail_alloc(sizeof(*ifc));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct ifconf, ifc);
struct sockaddr_in addr;
int fd;
diff --git a/tests/ioctl_sock_gifconf.test b/tests/ioctl_sock_gifconf.test
index 2e2fc01..22d7ea4 100755
--- a/tests/ioctl_sock_gifconf.test
+++ b/tests/ioctl_sock_gifconf.test
@@ -4,9 +4,8 @@
. "${srcdir=.}/init.sh"
+check_prog grep
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_uffdio.c b/tests/ioctl_uffdio.c
index 10b8b84..c98e4a0 100644
--- a/tests/ioctl_uffdio.c
+++ b/tests/ioctl_uffdio.c
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Red Hat, Inc.
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
perror_msg_and_skip("userfaultfd");
/* ---- API ---- */
- struct uffdio_api *api_struct = tail_alloc(sizeof(*api_struct));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_api, api_struct);
/* With a bad fd */
memset(api_struct, 0, sizeof(*api_struct));
@@ -127,7 +128,7 @@
* userfaultfd will cause us to stall.
*/
/* ---- COPY ---- */
- struct uffdio_copy *copy_struct = tail_alloc(sizeof(*copy_struct));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_copy, copy_struct);
memset(copy_struct, 0, sizeof(*copy_struct));
rc = ioctl(-1, UFFDIO_COPY, copy_struct);
@@ -148,7 +149,7 @@
fd, area2, area1, pagesize, pagesize, rc);
/* ---- ZEROPAGE ---- */
- struct uffdio_zeropage *zero_struct = tail_alloc(sizeof(*zero_struct));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
madvise(area2, pagesize, MADV_DONTNEED);
memset(zero_struct, 0, sizeof(*zero_struct));
@@ -169,7 +170,7 @@
fd, area2, pagesize, pagesize, rc);
/* ---- WAKE ---- */
- struct uffdio_range *range_struct = tail_alloc(sizeof(*range_struct));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_range, range_struct);
memset(range_struct, 0, sizeof(*range_struct));
rc = ioctl(-1, UFFDIO_WAKE, range_struct);
diff --git a/tests/ioctl_uffdio.gen.test b/tests/ioctl_uffdio.gen.test
new file mode 100755
index 0000000..80fd2a6
--- /dev/null
+++ b/tests/ioctl_uffdio.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_uffdio.test b/tests/ioctl_uffdio.test
deleted file mode 100755
index fae9b55..0000000
--- a/tests/ioctl_uffdio.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c
index af8c341..921e7a8 100644
--- a/tests/ioctl_v4l2.c
+++ b/tests/ioctl_v4l2.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -56,6 +57,272 @@
static const unsigned int magic = 0xdeadbeef;
+static void
+init_v4l2_format(struct v4l2_format *const f,
+ const unsigned int buf_type)
+{
+ memset(f, -1, sizeof(*f));
+ f->type = buf_type;
+ switch (buf_type) {
+ case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+ case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+ f->fmt.pix.width = 0x657b8160;
+ f->fmt.pix.height = 0x951c0047;
+ f->fmt.pix.pixelformat = magic;
+ f->fmt.pix.field = V4L2_FIELD_NONE;
+ f->fmt.pix.bytesperline = 0xdf20d185;
+ f->fmt.pix.sizeimage = 0x0cf7be41;
+ f->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
+ break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+ case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+ unsigned int i;
+
+ f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+ f->fmt.pix_mp.width = 0x1f3b774b;
+ f->fmt.pix_mp.height = 0xab96a8d6;
+ f->fmt.pix_mp.pixelformat = magic;
+ f->fmt.pix_mp.field = V4L2_FIELD_NONE;
+ f->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
+ struct v4l2_plane_pix_format* cur_pix =
+ f->fmt.pix_mp.plane_fmt;
+ for (i = 0;
+ i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+ i++) {
+ cur_pix[i].sizeimage = 0x1e3c531c | i;
+ cur_pix[i].bytesperline = 0xa983d721 | i;
+ }
+ break;
+ }
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+ case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+ case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+ f->fmt.win.w.left = 0xe8373662;
+ f->fmt.win.w.top = 0x0336d283;
+ f->fmt.win.w.width = 0x9235fe72;
+ f->fmt.win.w.height = 0xbbd886c8;
+ f->fmt.win.field = V4L2_FIELD_ANY;
+ f->fmt.win.chromakey = 0xdb1f991f;
+ f->fmt.win.clipcount = 2;
+ f->fmt.win.clips =
+ tail_alloc(sizeof(*f->fmt.win.clips) *
+ f->fmt.win.clipcount);
+ f->fmt.win.clips[0].c.left = 0x3313d36e;
+ f->fmt.win.clips[0].c.top = 0xcdffe510;
+ f->fmt.win.clips[0].c.width = 0x2064f3a8;
+ f->fmt.win.clips[0].c.height = 0xd06d314a;
+ f->fmt.win.clips[1].c.left = 0xd8c8a83f;
+ f->fmt.win.clips[1].c.top = 0x336e87ba;
+ f->fmt.win.clips[1].c.width = 0x9e3a6fb3;
+ f->fmt.win.clips[1].c.height = 0x05617b76;
+
+ f->fmt.win.bitmap = (void*) -2UL;
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+ f->fmt.win.global_alpha = 0xce;
+#endif
+ break;
+ case V4L2_BUF_TYPE_VBI_CAPTURE:
+ case V4L2_BUF_TYPE_VBI_OUTPUT:
+ f->fmt.vbi.sampling_rate = 0x3d9b5b79;
+ f->fmt.vbi.offset = 0x055b3a09;
+ f->fmt.vbi.samples_per_line = 0xf176d436;
+ f->fmt.vbi.sample_format = magic;
+ f->fmt.vbi.start[0] = 0x9858e2eb;
+ f->fmt.vbi.start[1] = 0x8a4dc8c1;
+ f->fmt.vbi.count[0] = 0x4bcf36a3;
+ f->fmt.vbi.count[1] = 0x97dff65f;
+ f->fmt.vbi.flags = V4L2_VBI_INTERLACED;
+ break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+ case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+ case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+ unsigned int i;
+
+ f->fmt.sliced.service_set = V4L2_SLICED_VPS;
+ f->fmt.sliced.io_size = 0xd897925a;
+ for (i = 0;
+ i < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+ i++) {
+ f->fmt.sliced.service_lines[0][i] = 0xc38e | i;
+ f->fmt.sliced.service_lines[1][i] = 0x3abb | i;
+ }
+ break;
+ }
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+ case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+ case V4L2_BUF_TYPE_SDR_CAPTURE:
+ f->fmt.sdr.pixelformat = magic;
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+ f->fmt.sdr.buffersize = 0x25afabfb;
+#endif
+ break;
+#endif
+ }
+}
+
+static void
+dprint_ioctl_v4l2(struct v4l2_format *const f,
+ const char* request, const unsigned int buf_type,
+ const char* buf_type_string)
+{
+ switch (buf_type) {
+ case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+ case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+ printf("ioctl(-1, %s, {type=%s"
+ ", fmt.pix={width=%u, height=%u, pixelformat="
+ "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+ ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
+ ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+ request,
+ buf_type_string,
+ f->fmt.pix.width, f->fmt.pix.height,
+ cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+ f->fmt.pix.bytesperline,
+ f->fmt.pix.sizeimage);
+ break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+ case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+ unsigned int i;
+
+ printf("ioctl(-1, %s"
+ ", {type=%s"
+ ", fmt.pix_mp={width=%u, height=%u, pixelformat="
+ "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+ ", field=V4L2_FIELD_NONE, colorspace="
+ "V4L2_COLORSPACE_JPEG, plane_fmt=[",
+ request,
+ buf_type_string,
+ f->fmt.pix_mp.width, f->fmt.pix_mp.height,
+ cc0(magic), cc1(magic), cc2(magic), cc3(magic));
+ for (i = 0;
+ i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+ ++i) {
+ if (i)
+ printf(", ");
+ printf("{sizeimage=%u, bytesperline=%u}",
+ f->fmt.pix_mp.plane_fmt[i].sizeimage,
+ f->fmt.pix_mp.plane_fmt[i].bytesperline);
+ }
+ printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
+ f->fmt.pix_mp.num_planes);
+ break;
+ }
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+ case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+ case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+ printf("ioctl(-1, %s, {type=%s"
+ ", fmt.win={left=%d, top=%d, width=%u, height=%u"
+ ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+ "[{left=%d, top=%d, width=%u, height=%u}, "
+ "{left=%d, top=%d, width=%u, height=%u}]"
+ ", clipcount=%u, bitmap=%p"
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+ ", global_alpha=%#x"
+#endif
+ "}}) = -1 EBADF (%m)\n",
+ request,
+ buf_type_string,
+ f->fmt.win.w.left, f->fmt.win.w.top,
+ f->fmt.win.w.width, f->fmt.win.w.height,
+ f->fmt.win.chromakey,
+ f->fmt.win.clips[0].c.left,
+ f->fmt.win.clips[0].c.top,
+ f->fmt.win.clips[0].c.width,
+ f->fmt.win.clips[0].c.height,
+ f->fmt.win.clips[1].c.left,
+ f->fmt.win.clips[1].c.top,
+ f->fmt.win.clips[1].c.width,
+ f->fmt.win.clips[1].c.height,
+ f->fmt.win.clipcount, f->fmt.win.bitmap
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+ , f->fmt.win.global_alpha
+#endif
+ );
+ break;
+ case V4L2_BUF_TYPE_VBI_CAPTURE:
+ case V4L2_BUF_TYPE_VBI_OUTPUT:
+ printf("ioctl(-1, %s, {type=%s"
+ ", fmt.vbi={sampling_rate=%u, offset=%u"
+ ", samples_per_line=%u, sample_format="
+ "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+ ", start=[%u, %u], count=[%u, %u]"
+ ", flags=V4L2_VBI_INTERLACED}})"
+ " = -1 EBADF (%m)\n",
+ request,
+ buf_type_string,
+ f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
+ f->fmt.vbi.samples_per_line,
+ cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+ f->fmt.vbi.start[0], f->fmt.vbi.start[1],
+ f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+ break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+ case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+ case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+ unsigned int i, j;
+
+ printf("ioctl(-1, %s, {type=%s"
+ ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+ ", io_size=%u, service_lines=[",
+ request,
+ buf_type_string,
+ f->fmt.sliced.io_size);
+ for (i = 0;
+ i < ARRAY_SIZE(f->fmt.sliced.service_lines);
+ i++) {
+ if (i > 0)
+ printf(", ");
+ printf("[");
+ for (j = 0;
+ j < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+ j++) {
+ if (j > 0)
+ printf(", ");
+ printf("%#x",
+ f->fmt.sliced.service_lines[i][j]);
+ }
+ printf("]");
+ }
+ printf("]}}) = -1 EBADF (%m)\n");
+ break;
+ }
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+ case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+ case V4L2_BUF_TYPE_SDR_CAPTURE:
+ printf("ioctl(-1, %s, {type=%s"
+ ", fmt.sdr={pixelformat=v4l2_fourcc('\\x%x', '\\x%x',"
+ " '\\x%x', '\\x%x')"
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+ ", buffersize=%u"
+#endif
+ "}}) = -1 EBADF (%m)\n",
+ request,
+ buf_type_string,
+ cc0(magic), cc1(magic), cc2(magic), cc3(magic)
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+ , f->fmt.sdr.buffersize
+#endif
+ );
+ break;
+#endif
+ }
+}
+#define print_ioctl_v4l2(v4l2_format, request, buf_type) do { \
+ dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type); \
+} while (0)
+
int
main(void )
{
@@ -76,7 +343,7 @@
ioctl(-1, VIDIOC_ENUM_FMT, 0);
printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
- struct v4l2_fmtdesc *const p_fmtdesc = tail_alloc(sizeof(*p_fmtdesc));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
p_fmtdesc->index = magic;
p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
@@ -88,78 +355,146 @@
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));
- p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
+ p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl(-1, VIDIOC_G_FMT, p_format);
printf("ioctl(-1, VIDIOC_G_FMT"
", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
+ " -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+ p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
+ " -1 EBADF (%m)\n");
+#endif
+ p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
+ " -1 EBADF (%m)\n");
+ p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+ p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+ p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+ p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
+ ioctl(-1, VIDIOC_G_FMT, p_format);
+ printf("ioctl(-1, VIDIOC_G_FMT"
+ ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+#endif
/* VIDIOC_S_FMT */
ioctl(-1, VIDIOC_S_FMT, 0);
printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
- 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 = magic;
- p_format->fmt.pix.field = V4L2_FIELD_NONE;
- p_format->fmt.pix.bytesperline = 0xdad3beaf;
- p_format->fmt.pix.sizeimage = 0xdad4beaf;
- p_format->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
-
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
ioctl(-1, VIDIOC_S_FMT, p_format);
- printf("ioctl(-1, VIDIOC_S_FMT, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
- ", fmt.pix={width=%u, height=%u, pixelformat="
- "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
- ", 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,
- cc0(magic), cc1(magic), cc2(magic), cc3(magic),
- p_format->fmt.pix.bytesperline, p_format->fmt.pix.sizeimage);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+ V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+ V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+ V4L2_BUF_TYPE_VIDEO_OVERLAY);
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+ V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+ ioctl(-1, VIDIOC_S_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
/* VIDIOC_TRY_FMT */
ioctl(-1, VIDIOC_TRY_FMT, 0);
printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
-#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
- memset(p_format, -1, sizeof(*p_format));
- 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 = magic;
- p_format->fmt.pix_mp.field = V4L2_FIELD_NONE;
- p_format->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
- unsigned int i;
- for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
- p_format->fmt.pix_mp.plane_fmt[i].sizeimage = 0xbadc0de0 | i;
- p_format->fmt.pix_mp.plane_fmt[i].bytesperline = 0xdadbeaf0 | i;
- }
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
ioctl(-1, VIDIOC_TRY_FMT, p_format);
- printf("ioctl(-1, VIDIOC_TRY_FMT"
- ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE"
- ", fmt.pix_mp={width=%u, height=%u, pixelformat="
- "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
- ", field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_JPEG"
- ", plane_fmt=[",
- p_format->fmt.pix_mp.width, p_format->fmt.pix_mp.height,
- 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(", ");
- printf("{sizeimage=%u, bytesperline=%u}",
- p_format->fmt.pix_mp.plane_fmt[i].sizeimage,
- p_format->fmt.pix_mp.plane_fmt[i].bytesperline);
- }
- printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
- p_format->fmt.pix_mp.num_planes);
-#else
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+ V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+ V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+ V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+ V4L2_BUF_TYPE_VIDEO_OVERLAY);
+
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+ V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+ init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+ ioctl(-1, VIDIOC_TRY_FMT, p_format);
+ print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
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", p_v4l2_format->type);
-#endif
/* VIDIOC_REQBUFS */
ioctl(-1, VIDIOC_REQBUFS, 0);
@@ -259,8 +594,7 @@
printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
" = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
- struct v4l2_streamparm *const p_streamparm =
- tail_alloc(sizeof(*p_streamparm));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
p_streamparm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
p_streamparm->parm.capture.capturemode = V4L2_MODE_HIGHQUALITY;
@@ -339,6 +673,42 @@
", value=%d}) = -1 EBADF (%m)\n",
p_v4l2_control->id, p_v4l2_control->value);
+ /* VIDIOC_G_TUNER */
+ ioctl(-1, VIDIOC_G_TUNER, 0);
+ printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+
+ struct v4l2_tuner *const p_v4l2_tuner =
+ page + size - sizeof(*p_v4l2_tuner);
+ ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
+ printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
+ " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+
+ /* VIDIOC_S_TUNER */
+ ioctl(-1, VIDIOC_S_TUNER, 0);
+ printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
+ p_tuner->index = 0x4fb6df39;
+ strcpy((char*)p_tuner->name, "cum tacent clamant");
+ p_tuner->type = V4L2_TUNER_RADIO;
+ p_tuner->capability = V4L2_TUNER_CAP_LOW;
+ p_tuner->rangelow = 0xa673bc29;
+ p_tuner->rangehigh = 0xbaf16d12;
+ p_tuner->rxsubchans = V4L2_TUNER_SUB_MONO;
+ p_tuner->audmode = V4L2_TUNER_MODE_MONO;
+ p_tuner->signal = 0x10bf92c8;
+ p_tuner->afc = 0x3bf7e18b;
+ ioctl(-1, VIDIOC_S_TUNER, p_tuner);
+ printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
+ ", name=\"cum tacent clamant\""
+ ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+ ", rangelow=%u, rangehigh=%u"
+ ", rxsubchans=V4L2_TUNER_SUB_MONO"
+ ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
+ "}) = -1 EBADF (%m)\n",
+ p_tuner->index, p_tuner->rangelow,
+ p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+
/* VIDIOC_QUERYCTRL */
ioctl(-1, VIDIOC_QUERYCTRL, 0);
printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
@@ -355,8 +725,7 @@
" = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
# endif
- struct v4l2_queryctrl *const p_queryctrl =
- tail_alloc(sizeof(*p_queryctrl));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
p_queryctrl->id = V4L2_CID_SATURATION;
ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
@@ -414,8 +783,7 @@
ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
- struct v4l2_ext_controls *const p_ext_controls =
- tail_alloc(sizeof(*p_ext_controls));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
p_ext_controls->count = 0;
p_ext_controls->controls = (void *) -2UL;
@@ -500,8 +868,7 @@
ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
- struct v4l2_frmsizeenum *const p_frmsizeenum =
- tail_alloc(sizeof(*p_frmsizeenum));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
p_frmsizeenum->index = magic;
p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
diff --git a/tests/ioctl_v4l2.gen.test b/tests/ioctl_v4l2.gen.test
new file mode 100755
index 0000000..cbd36ba
--- /dev/null
+++ b/tests/ioctl_v4l2.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2.test b/tests/ioctl_v4l2.test
deleted file mode 100755
index a092a3c..0000000
--- a/tests/ioctl_v4l2.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic VIDIOC_* ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioperm.gen.test b/tests/ioperm.gen.test
new file mode 100755
index 0000000..154d60a
--- /dev/null
+++ b/tests/ioperm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/ioperm.test b/tests/ioperm.test
deleted file mode 100755
index 8c1c1cc..0000000
--- a/tests/ioperm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ioperm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/iopl.gen.test b/tests/iopl.gen.test
new file mode 100755
index 0000000..3d9704c
--- /dev/null
+++ b/tests/iopl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/iopl.test b/tests/iopl.test
deleted file mode 100755
index d0b5b11..0000000
--- a/tests/iopl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iopl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests/ioprio.gen.test b/tests/ioprio.gen.test
new file mode 100755
index 0000000..f43f78e
--- /dev/null
+++ b/tests/ioprio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests/ioprio.test b/tests/ioprio.test
deleted file mode 100755
index e79310b..0000000
--- a/tests/ioprio.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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 fa0c504..4bcda09 100644
--- a/tests/ip_mreq.c
+++ b/tests/ip_mreq.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,8 +45,8 @@
static const char multi6addr[] = "ff01::c";
static const char interface[] = "127.0.0.1";
- struct ip_mreq *const m4 = tail_alloc(sizeof(*m4));
- struct ipv6_mreq *const m6 = tail_alloc(sizeof(*m6));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct ip_mreq, m4);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct ipv6_mreq, m6);
unsigned int i;
int rc;
diff --git a/tests/ip_mreq.gen.test b/tests/ip_mreq.gen.test
new file mode 100755
index 0000000..990387a
--- /dev/null
+++ b/tests/ip_mreq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ip_mreq -e trace=setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=setsockopt
diff --git a/tests/ip_mreq.test b/tests/ip_mreq.test
deleted file mode 100755
index d0a9e0f..0000000
--- a/tests/ip_mreq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check {IP,IPV6}_{ADD,DROP}_MEMBERSHIP setsockopt decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setsockopt
diff --git a/tests/ipc.gen.test b/tests/ipc.gen.test
new file mode 100755
index 0000000..5ed1f0d
--- /dev/null
+++ b/tests/ipc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/ipc.sh b/tests/ipc.sh
index 752d4bb..5943c1a 100644
--- a/tests/ipc.sh
+++ b/tests/ipc.sh
@@ -5,9 +5,7 @@
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -eipc $args > "$OUT"
-match_grep "$LOG" "$OUT"
-
-rm -f "$OUT"
+run_strace -eipc $args > "$EXP"
+match_grep "$LOG" "$EXP"
exit 0
diff --git a/tests/ipc.test b/tests/ipc.test
deleted file mode 100755
index aa33fa6..0000000
--- a/tests/ipc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/ipc_msg.gen.test b/tests/ipc_msg.gen.test
new file mode 100755
index 0000000..f4fec80
--- /dev/null
+++ b/tests/ipc_msg.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_msg.test b/tests/ipc_msg.test
deleted file mode 100755
index 177495b..0000000
--- a/tests/ipc_msg.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc msgget/msgctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c
index 8f6382c..0b730c1 100644
--- a/tests/ipc_sem.c
+++ b/tests/ipc_sem.c
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2015 Andreas Schwab <[email protected]>
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/ipc_sem.gen.test b/tests/ipc_sem.gen.test
new file mode 100755
index 0000000..54159a6
--- /dev/null
+++ b/tests/ipc_sem.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_sem.test b/tests/ipc_sem.test
deleted file mode 100755
index cc93d07..0000000
--- a/tests/ipc_sem.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc semget/semctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_shm.gen.test b/tests/ipc_shm.gen.test
new file mode 100755
index 0000000..505eaba
--- /dev/null
+++ b/tests/ipc_shm.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_shm.test b/tests/ipc_shm.test
deleted file mode 100755
index a67ea29..0000000
--- a/tests/ipc_shm.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc shmget/shmctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests/kcmp.gen.test b/tests/kcmp.gen.test
new file mode 100755
index 0000000..da79d7c
--- /dev/null
+++ b/tests/kcmp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/kcmp.test b/tests/kcmp.test
deleted file mode 100755
index d022aeb..0000000
--- a/tests/kcmp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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
index be90a37..c939e4f 100644
--- a/tests/kexec_file_load.c
+++ b/tests/kexec_file_load.c
@@ -2,6 +2,7 @@
* Check decoding of kexec_file_load syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/kexec_file_load.gen.test b/tests/kexec_file_load.gen.test
new file mode 100755
index 0000000..aefaab3
--- /dev/null
+++ b/tests/kexec_file_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_file_load -s9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s9
diff --git a/tests/kexec_file_load.test b/tests/kexec_file_load.test
deleted file mode 100755
index c95e123..0000000
--- a/tests/kexec_file_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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
index 330238d..2a6b441 100644
--- a/tests/kexec_load.c
+++ b/tests/kexec_load.c
@@ -2,6 +2,7 @@
* Check decoding of kexec_load syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,8 +63,7 @@
};
static const kernel_ulong_t bogus_zero =
- sizeof(long) < sizeof(kernel_long_t) ?
- (kernel_ulong_t) 0xffffffff00000000ULL : 0;
+ sizeof(long) < sizeof(kernel_long_t) ? F8ILL_KULONG_MASK : 0;
static const kernel_ulong_t bogus_entry =
(kernel_ulong_t) 0xdeadca57badda7a1ULL;
static const kernel_ulong_t bogus_nsegs =
diff --git a/tests/kexec_load.gen.test b/tests/kexec_load.gen.test
new file mode 100755
index 0000000..0af9527
--- /dev/null
+++ b/tests/kexec_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kexec_load -s9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s9
diff --git a/tests/kexec_load.test b/tests/kexec_load.test
deleted file mode 100755
index 4b1511e..0000000
--- a/tests/kexec_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests/keyctl.gen.test b/tests/keyctl.gen.test
new file mode 100755
index 0000000..82afad9
--- /dev/null
+++ b/tests/keyctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (keyctl -a31 -s10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31 -s10
diff --git a/tests/keyctl.test b/tests/keyctl.test
deleted file mode 100755
index 875a82d..0000000
--- a/tests/keyctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of keyctl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31 -s10
diff --git a/tests/kill.gen.test b/tests/kill.gen.test
new file mode 100755
index 0000000..08a004e
--- /dev/null
+++ b/tests/kill.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill -a12 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -esignal=none
diff --git a/tests/kill.test b/tests/kill.test
deleted file mode 100755
index 7a3a51a..0000000
--- a/tests/kill.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kill syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -esignal=none
diff --git a/tests/ksysent.c b/tests/ksysent.c
index 8cac93c..f598664 100644
--- a/tests/ksysent.c
+++ b/tests/ksysent.c
@@ -2,6 +2,7 @@
* Validate syscallent.h file.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,6 +41,13 @@
#define TP 0
#define TS 0
#define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
#define NF 0
#define MA 0
#define SI 0
diff --git a/tests/lchown.gen.test b/tests/lchown.gen.test
new file mode 100755
index 0000000..b31e29d
--- /dev/null
+++ b/tests/lchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30
diff --git a/tests/lchown.test b/tests/lchown.test
deleted file mode 100755
index ceeaa85..0000000
--- a/tests/lchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
diff --git a/tests/lchown32.gen.test b/tests/lchown32.gen.test
new file mode 100755
index 0000000..83be4bc
--- /dev/null
+++ b/tests/lchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32
diff --git a/tests/lchown32.test b/tests/lchown32.test
deleted file mode 100755
index 6ee1ac9..0000000
--- a/tests/lchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests/link.gen.test b/tests/link.gen.test
new file mode 100755
index 0000000..b6db34d
--- /dev/null
+++ b/tests/link.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/link.test b/tests/link.test
deleted file mode 100755
index cfa2b0c..0000000
--- a/tests/link.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check link syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/linkat.gen.test b/tests/linkat.gen.test
new file mode 100755
index 0000000..54b12b9
--- /dev/null
+++ b/tests/linkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/linkat.test b/tests/linkat.test
deleted file mode 100755
index 5627de7..0000000
--- a/tests/linkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check linkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/llseek.test b/tests/llseek.test
index cf1607e..8dcd65d 100755
--- a/tests/llseek.test
+++ b/tests/llseek.test
@@ -9,7 +9,3 @@
run_strace -e_llseek $args > "$EXP"
grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/lookup_dcookie.gen.test b/tests/lookup_dcookie.gen.test
new file mode 100755
index 0000000..6357e19
--- /dev/null
+++ b/tests/lookup_dcookie.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lookup_dcookie -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/lookup_dcookie.test b/tests/lookup_dcookie.test
deleted file mode 100755
index 47e1c2d..0000000
--- a/tests/lookup_dcookie.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of lookup_cookie syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/lseek.test b/tests/lseek.test
index f96a91d..5b20a7f 100755
--- a/tests/lseek.test
+++ b/tests/lseek.test
@@ -9,7 +9,3 @@
run_strace -a30 -elseek $args > "$EXP"
grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/lstat.c b/tests/lstat.c
index 3754f76..8441bf8 100644
--- a/tests/lstat.c
+++ b/tests/lstat.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/lstat.gen.test b/tests/lstat.gen.test
new file mode 100755
index 0000000..7231c49
--- /dev/null
+++ b/tests/lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/lstat.test b/tests/lstat.test
deleted file mode 100755
index f513bb4..0000000
--- a/tests/lstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/lstat64.c b/tests/lstat64.c
index da06609..500b60f 100644
--- a/tests/lstat64.c
+++ b/tests/lstat64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/lstat64.gen.test b/tests/lstat64.gen.test
new file mode 100755
index 0000000..124cce4
--- /dev/null
+++ b/tests/lstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/lstat64.test b/tests/lstat64.test
deleted file mode 100755
index fcafe79..0000000
--- a/tests/lstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/lstatx.c b/tests/lstatx.c
index cdd1124..8049bea 100644
--- a/tests/lstatx.c
+++ b/tests/lstatx.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/madvise.c b/tests/madvise.c
new file mode 100644
index 0000000..bf9cd78
--- /dev/null
+++ b/tests/madvise.c
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+static const char *errstr;
+
+static long
+k_madvise(const kernel_ulong_t addr,
+ const kernel_ulong_t length,
+ const kernel_ulong_t advice)
+{
+ long rc = syscall(__NR_madvise, addr, length, advice);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ const unsigned long length = get_page_size();
+ void *const addr = tail_alloc(length);
+ long rc;
+
+ rc = madvise(addr, length, MADV_NORMAL);
+ printf("madvise(%p, %lu, MADV_NORMAL) = %s\n",
+ addr, length, sprintrc(rc));
+
+ static const kernel_ulong_t advice =
+ (kernel_ulong_t) 0xfacefeed00000000ULL | MADV_RANDOM;
+ rc = k_madvise((uintptr_t) addr, length, advice);
+ printf("madvise(%p, %lu, MADV_RANDOM) = %s\n",
+ addr, length, sprintrc(rc));
+
+ static const kernel_ulong_t bogus_length =
+ (kernel_ulong_t) 0xfffffffffffffaceULL;
+ rc = k_madvise(0, bogus_length, MADV_SEQUENTIAL);
+ printf("madvise(NULL, %llu, MADV_SEQUENTIAL) = %s\n",
+ (unsigned long long) bogus_length, sprintrc(rc));
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ rc = k_madvise(f8ill_ptr_to_kulong(addr), length, MADV_NORMAL);
+ printf("madvise(%#llx, %lu, MADV_NORMAL) = %s\n",
+ (unsigned long long) f8ill_ptr_to_kulong(addr),
+ length, sprintrc(rc));
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/madvise.gen.test b/tests/madvise.gen.test
new file mode 100755
index 0000000..bd36dad
--- /dev/null
+++ b/tests/madvise.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/mbind.gen.test b/tests/mbind.gen.test
new file mode 100755
index 0000000..a0d144d
--- /dev/null
+++ b/tests/mbind.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/mbind.test b/tests/mbind.test
deleted file mode 100755
index 2a07cac..0000000
--- a/tests/mbind.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mbind syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/membarrier.gen.test b/tests/membarrier.gen.test
new file mode 100755
index 0000000..7a6ea10
--- /dev/null
+++ b/tests/membarrier.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/membarrier.test b/tests/membarrier.test
deleted file mode 100755
index ad1f713..0000000
--- a/tests/membarrier.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check membarrier syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/memfd_create.gen.test b/tests/memfd_create.gen.test
new file mode 100755
index 0000000..11762be
--- /dev/null
+++ b/tests/memfd_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/memfd_create.test b/tests/memfd_create.test
deleted file mode 100755
index 4361dae..0000000
--- a/tests/memfd_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of memfd_create syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/migrate_pages.gen.test b/tests/migrate_pages.gen.test
new file mode 100755
index 0000000..20b7cad
--- /dev/null
+++ b/tests/migrate_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/migrate_pages.test b/tests/migrate_pages.test
deleted file mode 100755
index fad53b7..0000000
--- a/tests/migrate_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check migrate_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests/mincore.gen.test b/tests/mincore.gen.test
new file mode 100755
index 0000000..dc40726
--- /dev/null
+++ b/tests/mincore.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/mincore.test b/tests/mincore.test
deleted file mode 100755
index 6af9f49..0000000
--- a/tests/mincore.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mincore syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/mkdir.gen.test b/tests/mkdir.gen.test
new file mode 100755
index 0000000..80b4995
--- /dev/null
+++ b/tests/mkdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/mkdir.test b/tests/mkdir.test
deleted file mode 100755
index 38ed692..0000000
--- a/tests/mkdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/mkdirat.gen.test b/tests/mkdirat.gen.test
new file mode 100755
index 0000000..0f3fdae
--- /dev/null
+++ b/tests/mkdirat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/mkdirat.test b/tests/mkdirat.test
deleted file mode 100755
index 0fcb841..0000000
--- a/tests/mkdirat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdirat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/mknod.c b/tests/mknod.c
index 4cc1c5c..b387149 100644
--- a/tests/mknod.c
+++ b/tests/mknod.c
@@ -8,7 +8,7 @@
# include <sys/sysmacros.h>
# include <unistd.h>
-static const char sample[] = "mknod";
+static const char *sample;
static long
call_mknod(unsigned short mode, unsigned long dev)
@@ -18,9 +18,10 @@
}
int
-main(void)
+main(int ac, char **av)
{
unsigned long dev = (unsigned long) 0xdeadbeefbadc0dedULL;
+ sample = av[0];
long rc = call_mknod(0, dev);
printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
diff --git a/tests/mknod.gen.test b/tests/mknod.gen.test
new file mode 100755
index 0000000..870c88b
--- /dev/null
+++ b/tests/mknod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/mknod.test b/tests/mknod.test
deleted file mode 100755
index 195f1e3..0000000
--- a/tests/mknod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/mknodat.gen.test b/tests/mknodat.gen.test
new file mode 100755
index 0000000..747fcbe
--- /dev/null
+++ b/tests/mknodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/mknodat.test b/tests/mknodat.test
deleted file mode 100755
index 1701a36..0000000
--- a/tests/mknodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknodat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/mlock.gen.test b/tests/mlock.gen.test
new file mode 100755
index 0000000..2c8ea5e
--- /dev/null
+++ b/tests/mlock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock -a20 -e trace=mlock,munlock); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=mlock,munlock
diff --git a/tests/mlock.test b/tests/mlock.test
deleted file mode 100755
index 9a73a30..0000000
--- a/tests/mlock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock and munlock syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mlock,munlock -a20
diff --git a/tests/mlock2.gen.test b/tests/mlock2.gen.test
new file mode 100755
index 0000000..aa1818e
--- /dev/null
+++ b/tests/mlock2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/mlock2.test b/tests/mlock2.test
deleted file mode 100755
index bc412e9..0000000
--- a/tests/mlock2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/mlockall.gen.test b/tests/mlockall.gen.test
new file mode 100755
index 0000000..06d8ca4
--- /dev/null
+++ b/tests/mlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/mlockall.test b/tests/mlockall.test
deleted file mode 100755
index d7a6182..0000000
--- a/tests/mlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mlockall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/mmap.c b/tests/mmap.c
index f726f63..0321bf5 100644
--- a/tests/mmap.c
+++ b/tests/mmap.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -89,10 +90,6 @@
printf("mremap(%p, %lu, %lu, MREMAP_MAYMOVE|MREMAP_FIXED"
", %p) = %p\n", addr, length2, length3, addr + length2, p);
- if (madvise(p, length3, MADV_NORMAL))
- perror_msg_and_fail("madvise");
- printf("madvise(%p, %lu, MADV_NORMAL) = 0\n", p, length3);
-
if (munmap(p, length3))
perror_msg_and_fail("munmap");
printf("munmap(%p, %lu) = 0\n", p, length3);
diff --git a/tests/mmap.test b/tests/mmap.test
index 0b87114..7ba664e 100755
--- a/tests/mmap.test
+++ b/tests/mmap.test
@@ -4,6 +4,7 @@
# syscalls decoding.
#
# Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2015-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -50,9 +51,7 @@
syscall=$mmap,madvise,mlockall,mprotect,mremap,msync,munmap
-run_prog "./$NAME" $mmap > /dev/null
+run_prog "../$NAME" $mmap > /dev/null
run_strace -a20 -e$syscall $args > "$EXP"
sed -n "/^$mmap(NULL, 0, PROT_NONE,/,\$p" < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/mmap64.gen.test b/tests/mmap64.gen.test
new file mode 100755
index 0000000..5e747b0
--- /dev/null
+++ b/tests/mmap64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+. "${srcdir=.}/mmap.test"
diff --git a/tests/mmap64.test b/tests/mmap64.test
deleted file mode 100755
index 51f1896..0000000
--- a/tests/mmap64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mmap/mprotect/munmap syscalls decoding.
-# Target executable was compiled with -D_FILE_OFFSET_BITS=64.
-
-. "${srcdir=.}/mmap.test"
diff --git a/tests/mmsg-silent.gen.test b/tests/mmsg-silent.gen.test
new file mode 100755
index 0000000..47863f2
--- /dev/null
+++ b/tests/mmsg-silent.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg-silent -a25 -e verbose=none -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg-silent.test b/tests/mmsg-silent.test
deleted file mode 100755
index 775e0ad..0000000
--- a/tests/mmsg-silent.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check silent decoding of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg.gen.test b/tests/mmsg.gen.test
new file mode 100755
index 0000000..4d90e3d
--- /dev/null
+++ b/tests/mmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
diff --git a/tests/mmsg.test b/tests/mmsg.test
deleted file mode 100755
index a8148ba..0000000
--- a/tests/mmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how iovecs in struct mmsghdr are decoded.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmmsg,sendmmsg -e read=0 -e write=1
diff --git a/tests/mmsg_name-v.gen.test b/tests/mmsg_name-v.gen.test
new file mode 100755
index 0000000..e34946f
--- /dev/null
+++ b/tests/mmsg_name-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name-v -v -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg_name-v.test b/tests/mmsg_name-v.test
deleted file mode 100755
index ab8dfba..0000000
--- a/tests/mmsg_name-v.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg_name.gen.test b/tests/mmsg_name.gen.test
new file mode 100755
index 0000000..ac54294
--- /dev/null
+++ b/tests/mmsg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg_name.test b/tests/mmsg_name.test
deleted file mode 100755
index e18c972..0000000
--- a/tests/mmsg_name.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mount.gen.test b/tests/mount.gen.test
new file mode 100755
index 0000000..0b124bc
--- /dev/null
+++ b/tests/mount.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/mount.test b/tests/mount.test
deleted file mode 100755
index 40fdca9..0000000
--- a/tests/mount.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mount syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/move_pages.c b/tests/move_pages.c
index f4ccafa..5ec25aa 100644
--- a/tests/move_pages.c
+++ b/tests/move_pages.c
@@ -2,6 +2,7 @@
* Check decoding of move_pages syscall.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -126,7 +127,7 @@
printf("%d", status[i]);
} else {
errno = -status[i];
- printf("%s", errno2name());
+ printf("-%s", errno2name());
}
}
printf("]");
@@ -190,9 +191,9 @@
const unsigned page_size = get_page_size();
const void *const page = tail_alloc(page_size);
const void *const efault = page + page_size;
- const void **pages = tail_alloc(sizeof(*pages));
- int *nodes = tail_alloc(sizeof(*nodes));
- int *status = tail_alloc(sizeof(*status));
+ TAIL_ALLOC_OBJECT_VAR_PTR(const void *, pages);
+ TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
+ TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
print_stat_pages(pid, 0, pages, status);
print_move_pages(pid, 0, 0, pages, nodes, status);
diff --git a/tests/move_pages.gen.test b/tests/move_pages.gen.test
new file mode 100755
index 0000000..2f060fa
--- /dev/null
+++ b/tests/move_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages -s3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3
diff --git a/tests/move_pages.test b/tests/move_pages.test
deleted file mode 100755
index f957717..0000000
--- a/tests/move_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of move_pages syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
diff --git a/tests/mq.c b/tests/mq.c
index 9c2ffc8..ee2d059 100644
--- a/tests/mq.c
+++ b/tests/mq.c
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2015 Elvira Khabirova <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -37,17 +38,19 @@
# 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("/" NAME, O_CREAT, 0700, NULL))
+ char *name;
+ if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0)
+ perror_msg_and_fail("asprintf");
+
+ 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);
+ printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", name + 1);
if (mq_getattr(0, &attr))
perror_msg_and_skip("mq_getattr");
@@ -63,9 +66,9 @@
(long long) attr.mq_maxmsg,
(long long) attr.mq_msgsize);
- if (mq_unlink("/" NAME))
+ if (mq_unlink(name))
perror_msg_and_skip("mq_unlink");
- printf("mq_unlink(\"%s\") = 0\n", NAME);
+ printf("mq_unlink(\"%s\") = 0\n", name + 1);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/mq.gen.test b/tests/mq.gen.test
new file mode 100755
index 0000000..8be520d
--- /dev/null
+++ b/tests/mq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests/mq.test b/tests/mq.test
deleted file mode 100755
index 746b07b..0000000
--- a/tests/mq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_getsetattr, and mq_unlink syscalls.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a28 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests/mq_sendrecv-read.gen.test b/tests/mq_sendrecv-read.gen.test
new file mode 100755
index 0000000..278e9b7
--- /dev/null
+++ b/tests/mq_sendrecv-read.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/mq_sendrecv-read.test b/tests/mq_sendrecv-read.test
deleted file mode 100755
index eb4ad75..0000000
--- a/tests/mq_sendrecv-read.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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.gen.test b/tests/mq_sendrecv-write.gen.test
new file mode 100755
index 0000000..5963eb4
--- /dev/null
+++ b/tests/mq_sendrecv-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-write -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/mq_sendrecv-write.test b/tests/mq_sendrecv-write.test
deleted file mode 100755
index 38277ec..0000000
--- a/tests/mq_sendrecv-write.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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
index c151542..e3ad0d5 100644
--- a/tests/mq_sendrecv.c
+++ b/tests/mq_sendrecv.c
@@ -3,6 +3,7 @@
* mq_unlink syscalls.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -49,10 +50,6 @@
# include "sigevent.h"
-# ifndef MQ_NAME
-# define MQ_NAME "mq_sendrecv.sample"
-# endif
-
# ifndef DUMPIO_READ
# define DUMPIO_READ 0
# endif
@@ -61,6 +58,7 @@
# define DUMPIO_WRITE 0
# endif
+static char *mq_name;
enum {
NUM_ATTRS = 8,
@@ -124,8 +122,8 @@
{
long rc;
- rc = syscall(__NR_mq_unlink, MQ_NAME);
- printf("mq_unlink(\"" MQ_NAME "\") = %s\n", sprintrc(rc));
+ rc = syscall(__NR_mq_unlink, mq_name);
+ printf("mq_unlink(\"%s\") = %s\n", mq_name, sprintrc(rc));
puts("+++ exited with 0 +++");
}
@@ -147,9 +145,9 @@
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));
+ printf(", %u, 42, {tv_sec=%lld, tv_nsec=%llu}) = %s\n", msg_size,
+ (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
errno = saved_errno;
if (rc == -1) {
@@ -185,9 +183,9 @@
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));
+ printf(", %u, [42], {tv_sec=%lld, tv_nsec=%llu}) = %s\n", MSG_SIZE,
+ (long long) tmout->tv_sec,
+ zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
errno = saved_errno;
if (rc == -1) {
@@ -242,7 +240,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, bogus_prio_ptr);
struct timespec *bogus_tmout = tail_memdup(&bogus_tmout_data,
sizeof(*bogus_tmout));
struct timespec *future_tmout = tail_memdup(&future_tmout_data,
@@ -278,8 +276,8 @@
/* 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",
+ 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],
@@ -304,12 +302,12 @@
/* 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",
+ printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%lld, tv_nsec=%llu})"
+ " = %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));
+ (long long) bogus_tmout->tv_sec,
+ zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
/* Fully valid message, uncut */
rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
@@ -317,10 +315,10 @@
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",
+ printf(", %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
(unsigned long long) MSG_CUT, (unsigned) bogus_prio,
- (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
- errstr);
+ (long long) bogus_tmout->tv_sec,
+ zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
/* Partially invalid message, cut at maxstrlen */
rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_CUT, MSG_SIZE,
@@ -328,10 +326,10 @@
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",
+ printf("..., %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
(unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
- (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
- errstr);
+ (long long) bogus_tmout->tv_sec,
+ zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
/* mq_timedreceive */
@@ -351,11 +349,11 @@
/* 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",
+ printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%lld, tv_nsec=%llu}) "
+ "= %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));
+ bogus_prio_ptr, (long long) bogus_tmout->tv_sec,
+ zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
/* mq_notify */
@@ -381,8 +379,8 @@
/* 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",
+ 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));
@@ -391,8 +389,8 @@
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",
+ 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));
@@ -403,10 +401,10 @@
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",
+ 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,
@@ -430,12 +428,15 @@
/* Sending and receiving test */
+ if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0)
+ perror_msg_and_fail("asprintf");
+
# 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,
+ fd = rc = syscall(__NR_mq_open, mq_name,
O_CREAT|O_RDWR|O_NONBLOCK, S_IRWXU, bogus_attrs);
errstr = sprintrc(rc);
if (rc < 0)
@@ -448,11 +449,11 @@
# 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);
+ printf("mq_open(\"%s\", O_RDWR|O_CREAT|O_NONBLOCK, 0700"
+ ", {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u"
+ ", mq_curmsgs=%lld}) = %s\n",
+ mq_name, (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)
diff --git a/tests/mq_sendrecv.gen.test b/tests/mq_sendrecv.gen.test
new file mode 100755
index 0000000..d82576f
--- /dev/null
+++ b/tests/mq_sendrecv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/mq_sendrecv.test b/tests/mq_sendrecv.test
deleted file mode 100755
index 67f4d63..0000000
--- a/tests/mq_sendrecv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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-v.gen.test b/tests/msg_control-v.gen.test
new file mode 100755
index 0000000..0a0de15
--- /dev/null
+++ b/tests/msg_control-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control-v -v -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests/msg_control-v.test b/tests/msg_control-v.test
deleted file mode 100755
index 41f9842..0000000
--- a/tests/msg_control-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests/msg_control.c b/tests/msg_control.c
index 709a307..1e64f1a 100644
--- a/tests/msg_control.c
+++ b/tests/msg_control.c
@@ -2,6 +2,7 @@
* Check decoding of struct msghdr ancillary data.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -689,7 +690,7 @@
int rc = sendmsg(-1, 0, 0);
printf("sendmsg(-1, NULL, 0) = %d %s (%m)\n", rc, errno2name());
- struct msghdr *mh = tail_alloc(sizeof(*mh));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
memset(mh, 0, sizeof(*mh));
test_big_len(mh);
diff --git a/tests/msg_control.gen.test b/tests/msg_control.gen.test
new file mode 100755
index 0000000..446ebcb
--- /dev/null
+++ b/tests/msg_control.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests/msg_control.test b/tests/msg_control.test
deleted file mode 100755
index 809ec7b..0000000
--- a/tests/msg_control.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests/msg_name.c b/tests/msg_name.c
index c2ddda2..9e98e4e 100644
--- a/tests/msg_name.c
+++ b/tests/msg_name.c
@@ -2,6 +2,7 @@
* Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,13 +48,13 @@
static void
test_msg_name(const int send_fd, const int recv_fd)
{
- char *const recv_buf = tail_alloc(sizeof(*recv_buf));
- struct iovec *const iov = tail_alloc(sizeof(*iov));
+ TAIL_ALLOC_OBJECT_CONST_PTR(char, recv_buf);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
iov->iov_base = recv_buf;
iov->iov_len = sizeof(*recv_buf);
- struct sockaddr_un *const addr = tail_alloc(sizeof(*addr));
- struct msghdr *const msg = tail_alloc(sizeof(*msg));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sockaddr_un, addr);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, msg);
msg->msg_name = addr;
msg->msg_namelen = sizeof(*addr);
msg->msg_iov = iov;
diff --git a/tests/msg_name.gen.test b/tests/msg_name.gen.test
new file mode 100755
index 0000000..2d0ae90
--- /dev/null
+++ b/tests/msg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_name -a20 -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests/msg_name.test b/tests/msg_name.test
deleted file mode 100755
index ac06dd5..0000000
--- a/tests/msg_name.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests/munlockall.gen.test b/tests/munlockall.gen.test
new file mode 100755
index 0000000..18343cb
--- /dev/null
+++ b/tests/munlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests/munlockall.test b/tests/munlockall.test
deleted file mode 100755
index e25d60a..0000000
--- a/tests/munlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check munlockall syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests/nanosleep.c b/tests/nanosleep.c
index 9f0e626..8f9724e 100644
--- a/tests/nanosleep.c
+++ b/tests/nanosleep.c
@@ -1,5 +1,8 @@
/*
+ * Check decoding of nanosleep syscall.
+ *
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -57,40 +60,62 @@
if (nanosleep(&req.ts, NULL))
perror_msg_and_fail("nanosleep");
- printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, NULL) = 0\n",
- (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec));
assert(nanosleep(NULL, &rem.ts) == -1);
printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
if (nanosleep(&req.ts, &rem.ts))
perror_msg_and_fail("nanosleep");
- 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);
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
req.ts.tv_nsec = 1000000000;
assert(nanosleep(&req.ts, &rem.ts) == -1);
- printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
- (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+ req.ts.tv_sec = 0xdeadbeefU;
+ req.ts.tv_nsec = 0xfacefeedU;
+ assert(nanosleep(&req.ts, &rem.ts) == -1);
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+ req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ assert(nanosleep(&req.ts, &rem.ts) == -1);
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+ req.ts.tv_sec = -1;
+ req.ts.tv_nsec = -1;
+ assert(nanosleep(&req.ts, &rem.ts) == -1);
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
assert(sigaction(SIGALRM, &act, NULL) == 0);
assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
if (setitimer(ITIMER_REAL, &itv, NULL))
perror_msg_and_skip("setitimer");
- 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,
- (intmax_t) itv.it_value.tv_usec);
+ req.ts.tv_sec = 0;
req.ts.tv_nsec = 999999999;
assert(nanosleep(&req.ts, &rem.ts) == -1);
- printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, {tv_sec=%jd, tv_nsec=%jd})"
+ printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
+ ", {tv_sec=%lld, tv_nsec=%llu})"
" = ? 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);
+ (long long) req.ts.tv_sec,
+ zero_extend_signed_to_ull(req.ts.tv_nsec),
+ (long long) rem.ts.tv_sec,
+ zero_extend_signed_to_ull(rem.ts.tv_nsec));
puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
puts("+++ exited with 0 +++");
diff --git a/tests/nanosleep.gen.test b/tests/nanosleep.gen.test
new file mode 100755
index 0000000..ea5b19a
--- /dev/null
+++ b/tests/nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/nanosleep.test b/tests/nanosleep.test
deleted file mode 100755
index 055a8dc..0000000
--- a/tests/nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check nanosleep and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=nanosleep,setitimer
diff --git a/tests/net-icmp_filter.c b/tests/net-icmp_filter.c
index f3f99f1..71e530d 100644
--- a/tests/net-icmp_filter.c
+++ b/tests/net-icmp_filter.c
@@ -2,6 +2,7 @@
* Check decoding of ICMP_FILTER.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,9 +44,9 @@
printf("setsockopt(-1, SOL_RAW, ICMP_FILTER, NULL, 0) = -1 %s (%m)\n",
errno2name());
- socklen_t *const plen = tail_alloc(sizeof(*plen));
+ TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
void *const efault = plen + 1;
- struct icmp_filter *const f = tail_alloc(sizeof(*f));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct icmp_filter, f);
getsockopt(-1, SOL_RAW, ICMP_FILTER, f, plen);
printf("getsockopt(-1, SOL_RAW, ICMP_FILTER, %p, %p) = -1 %s (%m)\n",
diff --git a/tests/net-icmp_filter.gen.test b/tests/net-icmp_filter.gen.test
new file mode 100755
index 0000000..bf6c765
--- /dev/null
+++ b/tests/net-icmp_filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-icmp_filter -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests/net-icmp_filter.test b/tests/net-icmp_filter.test
deleted file mode 100755
index c05a5e6..0000000
--- a/tests/net-icmp_filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ICMP_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests/net-sockaddr.c b/tests/net-sockaddr.c
index bf37779..9dc9ecf 100644
--- a/tests/net-sockaddr.c
+++ b/tests/net-sockaddr.c
@@ -2,6 +2,7 @@
* Check decoding of sockaddr structures
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -57,7 +58,7 @@
static void
check_un(void)
{
- struct sockaddr_un *un = tail_alloc(sizeof(*un));
+ TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_un, un);
un->sun_family = AF_UNIX;
memset(un->sun_path, '0', sizeof(un->sun_path));
unsigned int len = sizeof(*un);
@@ -133,7 +134,7 @@
const unsigned short h_port = 12345;
static const char h_addr[] = "12.34.56.78";
- struct sockaddr_in *in = tail_alloc(sizeof(*in));
+ TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in, in);
in->sin_family = AF_INET;
in->sin_port = htons(h_port);
in->sin_addr.s_addr = inet_addr(h_addr);
@@ -207,7 +208,7 @@
const unsigned int h_flowinfo = 1234567890;
static const char h_addr[] = "12:34:56:78:90:ab:cd:ef";
- struct sockaddr_in6 *in6 = tail_alloc(sizeof(*in6));
+ TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in6, in6);
in6->sin6_family = AF_INET6;
in6->sin6_port = htons(h_port);
in6->sin6_flowinfo = htonl(h_flowinfo);
@@ -298,7 +299,7 @@
static void
check_nl(void)
{
- struct sockaddr_nl *nl = tail_alloc(sizeof(*nl));
+ TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_nl, nl);
nl->nl_family = AF_NETLINK;
nl->nl_pid = 1234567890;
nl->nl_groups = 0xfacefeed;
@@ -390,7 +391,7 @@
check_hci(void)
{
const unsigned short h_port = 12345;
- struct sockaddr_hci *hci = tail_alloc(sizeof(*hci));
+ TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
hci->hci_family = AF_BLUETOOTH;
hci->hci_dev = htobs(h_port);
hci->hci_channel = HCI_CHANNEL_RAW;
diff --git a/tests/net-sockaddr.gen.test b/tests/net-sockaddr.gen.test
new file mode 100755
index 0000000..53c8335
--- /dev/null
+++ b/tests/net-sockaddr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=connect
diff --git a/tests/net-sockaddr.test b/tests/net-sockaddr.test
deleted file mode 100755
index cdfe536..0000000
--- a/tests/net-sockaddr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr structures.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=connect
diff --git a/tests/net-y-unix.c b/tests/net-y-unix.c
index 3efc2f6..df56ad6 100644
--- a/tests/net-y-unix.c
+++ b/tests/net-y-unix.c
@@ -1,7 +1,7 @@
/*
* This file is part of net-y-unix strace test.
*
- * Copyright (c) 2013-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
#include <sys/socket.h>
#include <sys/un.h>
-int
-main(int ac, const char **av)
-{
- assert(ac == 2);
+#define TEST_SOCKET "net-y-unix.socket"
- struct sockaddr_un addr = { .sun_family = AF_UNIX };
- unsigned int sun_path_len = strlen(av[1]);
- assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
- strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ static const struct sockaddr_un addr = {
+ .sun_family = AF_UNIX,
+ .sun_path = TEST_SOCKET
+ };
struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
- socklen_t * const len = tail_alloc(sizeof(socklen_t));
- *len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+ TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+ *len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
if (*len > sizeof(addr))
*len = sizeof(addr);
@@ -61,17 +63,18 @@
printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<socket:[%lu]>\n",
listen_fd, listen_inode);
- (void) unlink(av[1]);
+ (void) unlink(TEST_SOCKET);
if (bind(listen_fd, listen_sa, *len))
perror_msg_and_skip("bind");
printf("bind(%d<socket:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
- ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+ ", %u) = 0\n",
+ listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
if (listen(listen_fd, 1))
perror_msg_and_skip("listen");
printf("listen(%d<socket:[%lu]>, 1) = 0\n", listen_fd, listen_inode);
- unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
*len = sizeof(*optval);
if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
perror_msg_and_fail("getsockopt");
@@ -85,7 +88,7 @@
perror_msg_and_fail("getsockname");
printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
- av[1], (int) sizeof(addr), (int) *len);
+ TEST_SOCKET, (int) sizeof(addr), (int) *len);
int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (connect_fd < 0)
@@ -98,7 +101,7 @@
perror_msg_and_fail("connect");
printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, %u) = 0\n",
- connect_fd, connect_inode, av[1], (unsigned) *len);
+ connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
memset(accept_sa, 0, sizeof(addr));
@@ -119,7 +122,7 @@
perror_msg_and_fail("getpeername");
printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
- av[1], (int) sizeof(addr), (int) *len);
+ TEST_SOCKET, (int) sizeof(addr), (int) *len);
char text[] = "text";
assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -163,14 +166,14 @@
perror_msg_and_fail("getsockname");
printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n",
- listen_fd, listen_inode, av[1],
+ listen_fd, listen_inode, TEST_SOCKET,
(int) sizeof(addr), (int) *len);
if (connect(connect_fd, listen_sa, *len))
perror_msg_and_fail("connect");
printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, %u) = 0\n",
- connect_fd, connect_inode, av[1], (unsigned) *len);
+ connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
memset(accept_sa, 0, sizeof(addr));
*len = sizeof(addr);
@@ -192,7 +195,7 @@
perror_msg_and_fail("getpeername");
printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n",
- connect_fd, connect_inode, av[1],
+ connect_fd, connect_inode, TEST_SOCKET,
(int) sizeof(addr), (int) *len);
memset(accept_sa, 0, sizeof(addr));
@@ -224,7 +227,7 @@
assert(close(accept_fd) == 0);
printf("close(%d<socket:[%lu]>) = 0\n", accept_fd, accept_inode);
- assert(unlink(av[1]) == 0);
+ assert(unlink(TEST_SOCKET) == 0);
assert(close(listen_fd) == 0);
printf("close(%d<socket:[%lu]>) = 0\n",
diff --git a/tests/net-y-unix.test b/tests/net-y-unix.test
index aec8159..fd3fd68 100755
--- a/tests/net-y-unix.test
+++ b/tests/net-y-unix.test
@@ -2,7 +2,7 @@
#
# Check decoding of network syscalls in -y mode.
#
-# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 Dmitry V. Levin <[email protected]>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,18 +29,11 @@
. "${srcdir=.}/init.sh"
-# strace -y is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
check_prog sed
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog > /dev/null
run_strace -a20 -y -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net-yy-inet.c b/tests/net-yy-inet.c
index f76f941..af1262e 100644
--- a/tests/net-yy-inet.c
+++ b/tests/net-yy-inet.c
@@ -2,6 +2,7 @@
* This file is part of net-yy-inet strace test.
*
* Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,12 +42,14 @@
int
main(void)
{
+ skip_if_unavailable("/proc/self/fd/");
+
const struct sockaddr_in addr = {
.sin_family = AF_INET,
.sin_addr.s_addr = htonl(INADDR_LOOPBACK)
};
struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
- socklen_t * const len = tail_alloc(sizeof(socklen_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
*len = sizeof(addr);
const int listen_fd = socket(AF_INET, SOCK_STREAM, 0);
@@ -77,7 +80,7 @@
", [%u]) = 0\n",
listen_fd, listen_port, listen_port, (unsigned) *len);
- unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
*len = sizeof(*optval);
if (getsockopt(listen_fd, SOL_TCP, TCP_MAXSEG, optval, len))
perror_msg_and_fail("getsockopt");
diff --git a/tests/net-yy-inet.test b/tests/net-yy-inet.test
index 2ebf91f..6b527db 100755
--- a/tests/net-yy-inet.test
+++ b/tests/net-yy-inet.test
@@ -3,6 +3,7 @@
# Check decoding of ip:port pairs associated with socket descriptors
#
# Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,18 +30,12 @@
. "${srcdir=.}/init.sh"
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
check_prog sed
-run_prog ./netlink_inet_diag
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_inet_diag
+run_prog > /dev/null
run_strace -a22 -yy -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net-yy-netlink.c b/tests/net-yy-netlink.c
index 64d0efc..6539eda 100644
--- a/tests/net-yy-netlink.c
+++ b/tests/net-yy-netlink.c
@@ -1,7 +1,7 @@
/*
* This file is part of net-yy-netlink strace test.
*
- * Copyright (c) 2013-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Fabien Siron <[email protected]>
* All rights reserved.
*
@@ -47,13 +47,14 @@
int
main(void)
{
- unsigned magic = 1234;
+ skip_if_unavailable("/proc/self/fd/");
+
struct sockaddr_nl addr = {
.nl_family = AF_NETLINK,
- .nl_pid = 1234
+ .nl_pid = getpid()
};
struct sockaddr *const sa = tail_memdup(&addr, sizeof(addr));
- socklen_t * const len = tail_alloc(sizeof(socklen_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
*len = sizeof(addr);
const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
@@ -67,17 +68,17 @@
perror_msg_and_skip("bind");
printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
- fd, inode, magic, (unsigned) *len);
+ fd, inode, addr.nl_pid, (unsigned) *len);
if (getsockname(fd, sa, len))
perror_msg_and_fail("getsockname");
printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
- fd, magic, magic, (unsigned) *len);
+ fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
if (close(fd))
perror_msg_and_fail("close");
- printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, magic);
+ printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/net-yy-netlink.test b/tests/net-yy-netlink.test
index bff1d86..3a07e45 100755
--- a/tests/net-yy-netlink.test
+++ b/tests/net-yy-netlink.test
@@ -6,6 +6,7 @@
# Copyright (c) 2014 Masatake YAMATO <[email protected]>
# Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
# Copyright (c) 2016 Fabien Siron <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -32,18 +33,12 @@
. "${srcdir=.}/init.sh"
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
check_prog sed
-run_prog ./netlink_netlink_diag
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_netlink_diag
+run_prog > /dev/null
run_strace -a22 -yy -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net-yy-unix.c b/tests/net-yy-unix.c
index 63637bd..f27cdc0 100644
--- a/tests/net-yy-unix.c
+++ b/tests/net-yy-unix.c
@@ -1,7 +1,7 @@
/*
* This file is part of net-yy-unix strace test.
*
- * Copyright (c) 2013-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
#include <sys/socket.h>
#include <sys/un.h>
-int
-main(int ac, const char **av)
-{
- assert(ac == 2);
+#define TEST_SOCKET "net-yy-unix.socket"
- struct sockaddr_un addr = { .sun_family = AF_UNIX };
- unsigned int sun_path_len = strlen(av[1]);
- assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
- strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ struct sockaddr_un addr = {
+ .sun_family = AF_UNIX,
+ .sun_path = TEST_SOCKET
+ };
struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
- socklen_t * const len = tail_alloc(sizeof(socklen_t));
- *len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+ TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+ *len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
if (*len > sizeof(addr))
*len = sizeof(addr);
@@ -61,24 +63,25 @@
printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<UNIX:[%lu]>\n",
listen_fd, listen_inode);
- (void) unlink(av[1]);
+ (void) unlink(TEST_SOCKET);
if (bind(listen_fd, listen_sa, *len))
perror_msg_and_skip("bind");
printf("bind(%d<UNIX:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
- ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+ ", %u) = 0\n",
+ listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
if (listen(listen_fd, 1))
perror_msg_and_skip("listen");
printf("listen(%d<UNIX:[%lu,\"%s\"]>, 1) = 0\n",
- listen_fd, listen_inode, av[1]);
+ listen_fd, listen_inode, TEST_SOCKET);
- unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
*len = sizeof(*optval);
if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
perror_msg_and_fail("getsockopt");
printf("getsockopt(%d<UNIX:[%lu,\"%s\"]>, SOL_SOCKET, SO_PASSCRED"
", [%u], [%u]) = 0\n",
- listen_fd, listen_inode, av[1], *optval, (unsigned) *len);
+ listen_fd, listen_inode, TEST_SOCKET, *optval, (unsigned) *len);
memset(listen_sa, 0, sizeof(addr));
*len = sizeof(addr);
@@ -86,7 +89,7 @@
perror_msg_and_fail("getsockname");
printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
- av[1], av[1], (int) sizeof(addr), (int) *len);
+ TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (connect_fd < 0)
@@ -99,7 +102,7 @@
perror_msg_and_fail("connect");
printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, %u) = 0\n",
- connect_fd, connect_inode, av[1], (unsigned) *len);
+ connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
memset(accept_sa, 0, sizeof(addr));
@@ -110,8 +113,9 @@
unsigned long accept_inode = inode_of_sockfd(accept_fd);
printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX}"
", [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
- listen_fd, listen_inode, av[1], (int) sizeof(addr), (int) *len,
- accept_fd, accept_inode, connect_inode, av[1]);
+ listen_fd, listen_inode, TEST_SOCKET,
+ (int) sizeof(addr), (int) *len,
+ accept_fd, accept_inode, connect_inode, TEST_SOCKET);
memset(listen_sa, 0, sizeof(addr));
*len = sizeof(addr);
@@ -120,7 +124,7 @@
printf("getpeername(%d<UNIX:[%lu->%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n",
connect_fd, connect_inode,
- accept_inode, av[1], (int) sizeof(addr), (int) *len);
+ accept_inode, TEST_SOCKET, (int) sizeof(addr), (int) *len);
char text[] = "text";
assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -134,7 +138,7 @@
== sizeof(text) - 1);
printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
", NULL, NULL) = %u\n",
- accept_fd, accept_inode, connect_inode, av[1], text,
+ accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
(unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
assert(close(connect_fd) == 0);
@@ -143,7 +147,7 @@
assert(close(accept_fd) == 0);
printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
- accept_fd, accept_inode, connect_inode, av[1]);
+ accept_fd, accept_inode, connect_inode, TEST_SOCKET);
connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (connect_fd < 0)
@@ -166,13 +170,13 @@
perror_msg_and_fail("getsockname");
printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
- av[1], av[1], (int) sizeof(addr), (int) *len);
+ TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
if (connect(connect_fd, listen_sa, *len))
perror_msg_and_fail("connect");
printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, %u) = 0\n",
- connect_fd, connect_inode, av[1], (unsigned) *len);
+ connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
memset(accept_sa, 0, sizeof(addr));
*len = sizeof(addr);
@@ -184,9 +188,9 @@
((struct sockaddr_un *) accept_sa) -> sun_path + 1;
printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
", sun_path=@\"%s\"}, [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
- listen_fd, listen_inode, av[1], sun_path1,
+ listen_fd, listen_inode, TEST_SOCKET, sun_path1,
(int) sizeof(addr), (int) *len,
- accept_fd, accept_inode, connect_inode, av[1]);
+ accept_fd, accept_inode, connect_inode, TEST_SOCKET);
memset(listen_sa, 0, sizeof(addr));
*len = sizeof(addr);
@@ -194,7 +198,7 @@
perror_msg_and_fail("getpeername");
printf("getpeername(%d<UNIX:[%lu->%lu,@\"%s\"]>, {sa_family=AF_UNIX"
", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
- accept_inode, sun_path1, av[1], (int) sizeof(addr), (int) *len);
+ accept_inode, sun_path1, TEST_SOCKET, (int) sizeof(addr), (int) *len);
assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
== sizeof(text) - 1);
@@ -207,7 +211,7 @@
== sizeof(text) - 1);
printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
", NULL, NULL) = %u\n",
- accept_fd, accept_inode, connect_inode, av[1], text,
+ accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
(unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
assert(close(connect_fd) == 0);
@@ -216,13 +220,13 @@
assert(close(accept_fd) == 0);
printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
- accept_fd, accept_inode, connect_inode, av[1]);
+ accept_fd, accept_inode, connect_inode, TEST_SOCKET);
- assert(unlink(av[1]) == 0);
+ assert(unlink(TEST_SOCKET) == 0);
assert(close(listen_fd) == 0);
printf("close(%d<UNIX:[%lu,\"%s\"]>) = 0\n",
- listen_fd, listen_inode, av[1]);
+ listen_fd, listen_inode, TEST_SOCKET);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/net-yy-unix.test b/tests/net-yy-unix.test
index b82761c..59323a4 100755
--- a/tests/net-yy-unix.test
+++ b/tests/net-yy-unix.test
@@ -4,7 +4,7 @@
# associated with unix domain socket descriptors.
#
# Copyright (c) 2014 Masatake YAMATO <[email protected]>
-# Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 Dmitry V. Levin <[email protected]>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -31,19 +31,12 @@
. "${srcdir=.}/init.sh"
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
check_prog sed
-run_prog ./netlink_unix_diag
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog ../netlink_unix_diag
+run_prog > /dev/null
run_strace -a22 -yy -eclose,network $args > "$EXP"
+
# Filter out close() calls made by ld.so and libc.
sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net.test b/tests/net.test
index cf943ff..8320707 100755
--- a/tests/net.test
+++ b/tests/net.test
@@ -4,8 +4,8 @@
. "${srcdir=.}/init.sh"
-run_prog ./net-accept-connect net-local-stream
-run_strace_merge -enetwork $args
+run_prog ../net-accept-connect net-local-stream
+run_strace_merge -e%network $args
match_grep
exit 0
diff --git a/tests/netlink_protocol.c b/tests/netlink_protocol.c
index 34e114b..35f954f 100644
--- a/tests/netlink_protocol.c
+++ b/tests/netlink_protocol.c
@@ -1,7 +1,7 @@
/*
* Check decoding of netlink protocol.
*
- * Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2014-2017 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Fabien Siron <[email protected]>
* All rights reserved.
*
@@ -199,6 +199,121 @@
printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %s\n", msg_len, errstr);
}
+static void
+test_nlmsgerr(const int fd)
+{
+ struct nlmsgerr *err;
+ struct nlmsghdr *nlh;
+ void *const nlh0 = tail_alloc(NLMSG_HDRLEN);
+ long rc;
+
+ /* error message without enough room for the error code */
+ nlh = nlh0;
+ nlh->nlmsg_len = NLMSG_HDRLEN + 4;
+ nlh->nlmsg_type = NLMSG_ERROR;
+ nlh->nlmsg_flags = NLM_F_REQUEST;
+ nlh->nlmsg_seq = 0;
+ nlh->nlmsg_pid = 0;
+
+ rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, %p}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+ nlh->nlmsg_len, sprintrc(rc));
+
+ nlh->nlmsg_len = NLMSG_HDRLEN + 2;
+ nlh = nlh0 - 2;
+ memmove(nlh, nlh0, sizeof(*nlh));
+ memcpy(NLMSG_DATA(nlh), "42", 2);
+
+ rc = sendto(fd, nlh, NLMSG_HDRLEN + 2, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, \"42\"}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, NLMSG_HDRLEN + 2, NLMSG_HDRLEN + 2, sprintrc(rc));
+
+ /* error message with room for the error code only */
+ nlh = nlh0 - sizeof(err->error);
+ nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(err->error);
+ nlh->nlmsg_type = NLMSG_ERROR;
+ nlh->nlmsg_flags = NLM_F_REQUEST;
+ nlh->nlmsg_seq = 0;
+ nlh->nlmsg_pid = 0;
+ err = NLMSG_DATA(nlh);
+ err->error = 42;
+
+ rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, {error=42}}, %u, MSG_DONTWAIT, NULL, 0)"
+ " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+ err->error = -1;
+
+ rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, {error=-EPERM}}, %u, MSG_DONTWAIT, NULL, 0)"
+ " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+ err->error = -32767;
+ nlh->nlmsg_len += sizeof(err->msg.nlmsg_len);
+
+ rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, {error=-32767, msg=%p}}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+ nlh->nlmsg_len, sprintrc(rc));
+
+ /* error message with room for the error code and a header */
+ nlh = nlh0 - sizeof(*err);
+ nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err);
+ nlh->nlmsg_type = NLMSG_ERROR;
+ nlh->nlmsg_flags = NLM_F_REQUEST;
+ nlh->nlmsg_seq = 0;
+ nlh->nlmsg_pid = 0;
+ err = NLMSG_DATA(nlh);
+ err->error = -13;
+ err->msg.nlmsg_len = NLMSG_HDRLEN;
+ err->msg.nlmsg_type = NLMSG_NOOP;
+ err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+ err->msg.nlmsg_seq = 42;
+ err->msg.nlmsg_pid = 1234;
+
+ rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, {error=-EACCES"
+ ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+ ", seq=%u, pid=%u}}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+ err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+ nlh->nlmsg_len, sprintrc(rc));
+
+ /* error message with room for the error code, a header, and some data */
+ nlh = nlh0 - sizeof(*err) - 4;
+ nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err) + 4;
+ nlh->nlmsg_type = NLMSG_ERROR;
+ nlh->nlmsg_flags = NLM_F_REQUEST;
+ nlh->nlmsg_seq = 0;
+ nlh->nlmsg_pid = 0;
+ err = NLMSG_DATA(nlh);
+ err->error = -13;
+ err->msg.nlmsg_len = NLMSG_HDRLEN + 4;
+ err->msg.nlmsg_type = NLMSG_NOOP;
+ err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+ err->msg.nlmsg_seq = 421;
+ err->msg.nlmsg_pid = 12345;
+ memcpy(NLMSG_DATA(&err->msg), "abcd", 4);
+
+ rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+ ", seq=0, pid=0}, {error=-EACCES"
+ ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+ ", seq=%u, pid=%u}, \"abcd\"}}}, %u, MSG_DONTWAIT, NULL, 0)"
+ " = %s\n",
+ fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+ err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+ nlh->nlmsg_len, sprintrc(rc));
+}
+
int main(void)
{
struct sockaddr_nl addr;
@@ -227,6 +342,7 @@
free(path);
send_query(fd);
+ test_nlmsgerr(fd);
printf("+++ exited with 0 +++\n");
diff --git a/tests/netlink_protocol.gen.test b/tests/netlink_protocol.gen.test
new file mode 100755
index 0000000..9a132fa
--- /dev/null
+++ b/tests/netlink_protocol.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_protocol -e trace=%network); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=%network
diff --git a/tests/netlink_protocol.test b/tests/netlink_protocol.test
deleted file mode 100755
index ab2bb1e..0000000
--- a/tests/netlink_protocol.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of netlink protocol.
-
-. "${srcdir=.}/init.sh"
-
-# getfdproto is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
-run_strace_match_diff -e trace=network
diff --git a/tests/newfstatat.gen.test b/tests/newfstatat.gen.test
new file mode 100755
index 0000000..40ec797
--- /dev/null
+++ b/tests/newfstatat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/newfstatat.test b/tests/newfstatat.test
deleted file mode 100755
index 6d83ec0..0000000
--- a/tests/newfstatat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check newfstatat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c
index aecf7aa..7fda5ba 100644
--- a/tests/nsyscalls.c
+++ b/tests/nsyscalls.c
@@ -2,6 +2,7 @@
* Check decoding of out-of-range syscalls.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,6 +42,13 @@
#define TP 0
#define TS 0
#define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
#define NF 0
#define MA 0
#define SI 0
diff --git a/tests/old_mmap.gen.test b/tests/old_mmap.gen.test
new file mode 100755
index 0000000..1913eec
--- /dev/null
+++ b/tests/old_mmap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap -a11 -e trace=mmap); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests/old_mmap.test b/tests/old_mmap.test
deleted file mode 100755
index af776ff..0000000
--- a/tests/old_mmap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of "old mmap" edition of mmap syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests/oldfstat.c b/tests/oldfstat.c
index f5a9441..353614c 100644
--- a/tests/oldfstat.c
+++ b/tests/oldfstat.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/oldfstat.gen.test b/tests/oldfstat.gen.test
new file mode 100755
index 0000000..2b48b39
--- /dev/null
+++ b/tests/oldfstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldfstat -a18 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -v -P stat.sample
diff --git a/tests/oldfstat.test b/tests/oldfstat.test
deleted file mode 100755
index 66a1056..0000000
--- a/tests/oldfstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/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
index 6613237..6f07531 100644
--- a/tests/oldlstat.c
+++ b/tests/oldlstat.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/oldlstat.gen.test b/tests/oldlstat.gen.test
new file mode 100755
index 0000000..3202b92
--- /dev/null
+++ b/tests/oldlstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldlstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/oldlstat.test b/tests/oldlstat.test
deleted file mode 100755
index a0f9ab9..0000000
--- a/tests/oldlstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldlstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/oldstat.c b/tests/oldstat.c
index d06e2bc..ddacd24 100644
--- a/tests/oldstat.c
+++ b/tests/oldstat.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/oldstat.gen.test b/tests/oldstat.gen.test
new file mode 100755
index 0000000..f265ac5
--- /dev/null
+++ b/tests/oldstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/oldstat.test b/tests/oldstat.test
deleted file mode 100755
index 42d70f7..0000000
--- a/tests/oldstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/open.gen.test b/tests/open.gen.test
new file mode 100755
index 0000000..eb931a3
--- /dev/null
+++ b/tests/open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open -a30 -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests/open.test b/tests/open.test
deleted file mode 100755
index 6df19cb..0000000
--- a/tests/open.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests/openat.gen.test b/tests/openat.gen.test
new file mode 100755
index 0000000..fe29e1c
--- /dev/null
+++ b/tests/openat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests/openat.test b/tests/openat.test
deleted file mode 100755
index 68c4cee..0000000
--- a/tests/openat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check openat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests/opipe.test b/tests/opipe.test
index 90e6838..f622045 100755
--- a/tests/opipe.test
+++ b/tests/opipe.test
@@ -6,11 +6,9 @@
check_prog grep
run_prog grep chdir $srcdir/umovestr.expected > "$EXP"
-run_prog ./umovestr
+run_prog ../umovestr
-> "$LOG" || fail_ "failed to write $LOG"
$STRACE -o "|cat > $LOG && $SLEEP_A_BIT && grep chdir < $LOG > $OUT" -e chdir $args ||
dump_log_and_fail_with "$STRACE $args failed"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/options-syntax.test b/tests/options-syntax.test
index 592b0e0..4c778b3 100755
--- a/tests/options-syntax.test
+++ b/tests/options-syntax.test
@@ -3,6 +3,7 @@
# Check strace options syntax.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -39,6 +40,16 @@
"strace $* failed to print expected diagnostics"
}
+check_exit_status_and_stderr_using_grep()
+{
+ $STRACE "$@" 2> "$LOG" &&
+ dump_log_and_fail_with \
+ "strace $* failed to handle the error properly"
+ match_grep "$LOG" "$EXP" ||
+ dump_log_and_fail_with \
+ "strace $* failed to print expected diagnostics"
+}
+
strace_exp="${STRACE##* }"
check_e()
@@ -50,6 +61,15 @@
check_exit_status_and_stderr "$@"
}
+check_e_using_grep()
+{
+ local pattern="$1"; shift
+ cat > "$EXP" << __EOF__
+$strace_exp: $pattern
+__EOF__
+ check_exit_status_and_stderr_using_grep "$@"
+}
+
check_h()
{
local pattern="$1"; shift
@@ -72,6 +92,7 @@
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 '/non_syscall'" -e trace=/non_syscall
check_e "invalid system call '2147483647'" -e 2147483647
check_e "invalid system call '2147483648'" -e 2147483648
check_e "invalid system call '4294967295'" -e 4294967295
@@ -88,6 +109,12 @@
check_e "invalid descriptor '!'" -eread='0,!'
check_e "invalid descriptor '!,'" -ewrite='!,'
+check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
+check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
+check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
+check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
+check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
+
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
@@ -144,5 +171,3 @@
[ -z "$args" ] ||
dump_log_and_fail_with \
"strace $args failed to print expected diagnostics"
-
-rm -f "$EXP"
diff --git a/tests/osf_utimes.c b/tests/osf_utimes.c
new file mode 100644
index 0000000..7ac083e
--- /dev/null
+++ b/tests/osf_utimes.c
@@ -0,0 +1,45 @@
+/*
+ * Check decoding of osf_utimes 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_osf_utimes
+
+# define TEST_SYSCALL_NR __NR_osf_utimes
+# define TEST_SYSCALL_STR "osf_utimes"
+# define TEST_STRUCT struct timeval32
+struct timeval32 { int tv_sec, tv_usec; };
+# include "xutimes.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_osf_utimes")
+
+#endif
diff --git a/tests/osf_utimes.gen.test b/tests/osf_utimes.gen.test
new file mode 100755
index 0000000..b6be305
--- /dev/null
+++ b/tests/osf_utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (osf_utimes -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/pause.gen.test b/tests/pause.gen.test
new file mode 100755
index 0000000..76492b6
--- /dev/null
+++ b/tests/pause.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pause -a8 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 -esignal=none
diff --git a/tests/pause.test b/tests/pause.test
deleted file mode 100755
index c5fdacd..0000000
--- a/tests/pause.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pause syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8 -esignal=none
diff --git a/tests/pc.test b/tests/pc.test
index beadb7d..af09701 100755
--- a/tests/pc.test
+++ b/tests/pc.test
@@ -3,6 +3,7 @@
# Check -i option.
#
# Copyright (c) 2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2015-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -47,15 +48,11 @@
[ -n "$addr" ] ||
dump_log_and_fail_with
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
\\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .*
\\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} ---
\\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+
\\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests/perf_event_open.c b/tests/perf_event_open.c
index 0ffea29..3f544a6 100644
--- a/tests/perf_event_open.c
+++ b/tests/perf_event_open.c
@@ -2,6 +2,7 @@
* Check verbose decoding of perf_event_open syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -681,7 +682,7 @@
ATTR_REC(attr_big_size),
};
- struct perf_event_attr *small_attr = tail_alloc(sizeof(*small_attr));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, small_attr);
struct {
struct perf_event_attr *attr;
diff --git a/tests/perf_event_open.gen.test b/tests/perf_event_open.gen.test
new file mode 100755
index 0000000..85336c3
--- /dev/null
+++ b/tests/perf_event_open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open -a1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1
diff --git a/tests/perf_event_open.test b/tests/perf_event_open.test
deleted file mode 100755
index 499134b..0000000
--- a/tests/perf_event_open.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1
diff --git a/tests/perf_event_open_nonverbose.c b/tests/perf_event_open_nonverbose.c
index 45d7c8f..b67715c 100644
--- a/tests/perf_event_open_nonverbose.c
+++ b/tests/perf_event_open_nonverbose.c
@@ -2,6 +2,7 @@
* Check decoding of perf_event_open syscall.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,7 +63,7 @@
int
main(void)
{
- struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, attr);
attr->type = PERF_TYPE_HARDWARE;
attr->size = sizeof(*attr);
diff --git a/tests/perf_event_open_nonverbose.gen.test b/tests/perf_event_open_nonverbose.gen.test
new file mode 100755
index 0000000..f1ed333
--- /dev/null
+++ b/tests/perf_event_open_nonverbose.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_nonverbose -a34 -e verbose=none -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests/perf_event_open_nonverbose.test b/tests/perf_event_open_nonverbose.test
deleted file mode 100755
index 404827f..0000000
--- a/tests/perf_event_open_nonverbose.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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.gen.test b/tests/perf_event_open_unabbrev.gen.test
new file mode 100755
index 0000000..1d9bd85
--- /dev/null
+++ b/tests/perf_event_open_unabbrev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_unabbrev -a1 -v -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests/perf_event_open_unabbrev.test b/tests/perf_event_open_unabbrev.test
deleted file mode 100755
index f17fd17..0000000
--- a/tests/perf_event_open_unabbrev.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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/personality.test b/tests/personality.test
index 8f8c0ad..ab2faf4 100755
--- a/tests/personality.test
+++ b/tests/personality.test
@@ -5,8 +5,5 @@
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -a20 -epersonality $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -epersonality $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests/pipe.c b/tests/pipe.c
index 41c7f21..3df2094 100644
--- a/tests/pipe.c
+++ b/tests/pipe.c
@@ -2,6 +2,7 @@
* Check decoding of pipe syscall.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/pipe2.c b/tests/pipe2.c
index 375ae74..3a0e046 100644
--- a/tests/pipe2.c
+++ b/tests/pipe2.c
@@ -39,18 +39,16 @@
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);
+ rc = syscall(__NR_pipe2, fds, F8ILL_KULONG_MASK | 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);
+ rc = syscall(__NR_pipe2, efault, F8ILL_KULONG_MASK);
printf("pipe2(%p, 0) = %s\n", efault, sprintrc(rc));
if (F8ILL_KULONG_SUPPORTED) {
diff --git a/tests/pipe2.gen.test b/tests/pipe2.gen.test
new file mode 100755
index 0000000..5a06c03
--- /dev/null
+++ b/tests/pipe2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/pipe2.test b/tests/pipe2.test
deleted file mode 100755
index aff6cd4..0000000
--- a/tests/pipe2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pipe2 syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a15
diff --git a/tests/pkey_alloc.gen.test b/tests/pkey_alloc.gen.test
new file mode 100755
index 0000000..b3e5869
--- /dev/null
+++ b/tests/pkey_alloc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_alloc -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/pkey_alloc.test b/tests/pkey_alloc.test
deleted file mode 100755
index f168c21..0000000
--- a/tests/pkey_alloc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_alloc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/pkey_free.gen.test b/tests/pkey_free.gen.test
new file mode 100755
index 0000000..588d1aa
--- /dev/null
+++ b/tests/pkey_free.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_free -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests/pkey_free.test b/tests/pkey_free.test
deleted file mode 100755
index 9c01c3e..0000000
--- a/tests/pkey_free.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_free syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests/pkey_mprotect.gen.test b/tests/pkey_mprotect.gen.test
new file mode 100755
index 0000000..14be231
--- /dev/null
+++ b/tests/pkey_mprotect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pkey_mprotect -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests/pkey_mprotect.test b/tests/pkey_mprotect.test
deleted file mode 100755
index 922d491..0000000
--- a/tests/pkey_mprotect.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_mprotect syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests/poll.test b/tests/poll.test
index b74be29..d09193d 100755
--- a/tests/poll.test
+++ b/tests/poll.test
@@ -5,13 +5,11 @@
. "${srcdir=.}/init.sh"
run_prog > /dev/null
-run_strace -a16 -vepoll $args > "$OUT"
-match_diff "$LOG" "$OUT"
+run_strace -a16 -vepoll $args > "$EXP"
+match_diff "$LOG" "$EXP"
for abbrev in 0 1 2 3 4 5; do
- run_prog "./$NAME" $abbrev > /dev/null
- run_strace -a16 -epoll -s$abbrev $args > "$OUT"
- match_diff "$LOG" "$OUT"
+ run_prog "../$NAME" $abbrev > /dev/null
+ run_strace -a16 -epoll -s$abbrev $args > "$EXP"
+ match_diff "$LOG" "$EXP"
done
-
-rm -f "$OUT"
diff --git a/tests/ppoll-v.c b/tests/ppoll-v.c
new file mode 100644
index 0000000..cf4fdea
--- /dev/null
+++ b/tests/ppoll-v.c
@@ -0,0 +1,3 @@
+/* This file is part of ppoll-v strace test. */
+#define VERBOSE 1
+#include "ppoll.c"
diff --git a/tests/ppoll-v.expected b/tests/ppoll-v.expected
deleted file mode 100644
index 31070ad..0000000
--- a/tests/ppoll-v.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-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-v.gen.test b/tests/ppoll-v.gen.test
new file mode 100755
index 0000000..cd1fcc6
--- /dev/null
+++ b/tests/ppoll-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-v -v -s2 -e trace=ppoll); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -s2 -e trace=ppoll
diff --git a/tests/ppoll.c b/tests/ppoll.c
index 46d7e81..85a7e0c 100644
--- a/tests/ppoll.c
+++ b/tests/ppoll.c
@@ -1,5 +1,7 @@
/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Check decoding of ppoll syscall.
+ *
+ * Copyright (c) 2015-2017 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,69 +28,165 @@
*/
#include "tests.h"
-#include <assert.h>
-#include <poll.h>
-#include <signal.h>
-#include <unistd.h>
+#include <asm/unistd.h>
-static void
-test1(void)
+#ifdef __NR_ppoll
+
+# include <errno.h>
+# include <poll.h>
+# include <signal.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+sys_ppoll(const kernel_ulong_t ufds,
+ const kernel_ulong_t nfds,
+ const kernel_ulong_t tsp,
+ const kernel_ulong_t sigmask,
+ const kernel_ulong_t sigsetsize)
{
- const struct timespec timeout = { .tv_sec = 42, .tv_nsec = 999999999 };
- struct pollfd fds[] = {
- { .fd = 0, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
- { .fd = 1, .events = POLLOUT | POLLWRNORM | POLLWRBAND },
- { .fd = 3, .events = POLLIN | POLLPRI },
- { .fd = 4, .events = POLLOUT }
- };
-
- sigset_t mask;
- sigemptyset(&mask);
- sigaddset(&mask, SIGUSR2);
- sigaddset(&mask, SIGCHLD);
-
- int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
- if (rc < 0)
- perror_msg_and_skip("ppoll");
- assert(rc == 2);
-}
-
-static void
-test2(void)
-{
- const struct timespec timeout = { .tv_sec = 0, .tv_nsec = 999 };
- struct pollfd fds[] = {
- { .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
- { .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
- };
-
- sigset_t mask;
- sigfillset(&mask);
- sigdelset(&mask, SIGHUP);
- sigdelset(&mask, SIGKILL);
- sigdelset(&mask, SIGSTOP);
-
- int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
- if (rc < 0)
- perror_msg_and_skip("ppoll");
- assert(rc == 0);
+ long rc = syscall(__NR_ppoll, ufds, nfds, tsp, sigmask, sigsetsize);
+ errstr = sprintrc(rc);
+ return rc;
}
int
main(void)
{
- int fds[2];
+ static const kernel_ulong_t bogus_nfds =
+ (kernel_ulong_t) 0xdeadbeeffacefeedULL;
+ static const kernel_ulong_t bogus_sigsetsize =
+ (kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+ static const char *const POLLWRNORM_str =
+ (POLLWRNORM == POLLOUT) ? "" : "|POLLWRNORM";
+ static const char *const USR2_CHLD_str =
+ (SIGUSR2 < SIGCHLD) ? "USR2 CHLD" : "CHLD USR2";
+ void *const efault = tail_alloc(1024) + 1024;
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+ const unsigned int sigset_size = get_sigset_size();
+ void *const sigmask = tail_alloc(sigset_size);
+ struct pollfd *fds;
+ sigset_t mask;
+ int pipe_fd[4];
+ long rc;
- (void) close(0);
- (void) close(1);
- (void) close(3);
- (void) close(4);
- if (pipe(fds) || pipe(fds))
+ sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
+ if (ENOSYS == errno)
+ perror_msg_and_skip("ppoll");
+ printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
+ (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
+ errstr);
+
+ sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
+ (unsigned long) efault + 16, sigset_size);
+ printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
+ efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+
+ ts->tv_sec = 0xdeadbeefU;
+ ts->tv_nsec = 0xfacefeedU;
+ sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+ printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
+ (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+ sigset_size, errstr);
+
+ ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
+ sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+ printf("ppoll(NULL, 0, {tv_sec=%lld, tv_nsec=%llu}, NULL, %u) = %s\n",
+ (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+ sigset_size, errstr);
+
+ if (pipe(pipe_fd) || pipe(pipe_fd + 2))
perror_msg_and_fail("pipe");
- test1();
- test2();
+ ts->tv_sec = 42;
+ ts->tv_nsec = 999999999;
- assert(ppoll(NULL, 42, NULL, NULL) < 0);
+ const struct pollfd fds1[] = {
+ { .fd = pipe_fd[0], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+ { .fd = pipe_fd[1], .events = POLLOUT | POLLWRNORM | POLLWRBAND },
+ { .fd = pipe_fd[2], .events = POLLIN | POLLPRI },
+ { .fd = pipe_fd[3], .events = POLLOUT }
+ };
+ fds = efault - sizeof(fds1);
+ memcpy(fds, fds1, sizeof(fds1));
+
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGUSR2);
+ sigaddset(&mask, SIGCHLD);
+ memcpy(sigmask, &mask, sigset_size);
+
+ rc = sys_ppoll((unsigned long) fds,
+ F8ILL_KULONG_MASK | ARRAY_SIZE(fds1), (unsigned long) ts,
+ (unsigned long) sigmask, sigset_size);
+ if (rc != 2)
+ perror_msg_and_fail("ppoll 1");
+ printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
+ ", {fd=%d, events=POLLOUT%s|POLLWRBAND}"
+#if VERBOSE
+ ", {fd=%d, events=POLLIN|POLLPRI}, {fd=%d, events=POLLOUT}]"
+#else
+ ", ...]"
+#endif
+ ", %u, {tv_sec=42, tv_nsec=999999999}, [%s], %u) = %ld"
+ " ([{fd=%d, revents=POLLOUT%s}, {fd=%d, revents=POLLOUT}]"
+ ", left {tv_sec=%u, tv_nsec=%u})\n",
+ pipe_fd[0], pipe_fd[1], POLLWRNORM_str,
+#if VERBOSE
+ pipe_fd[2], pipe_fd[3],
+#endif
+ (unsigned) ARRAY_SIZE(fds1), USR2_CHLD_str,
+ (unsigned) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+ pipe_fd[3], (unsigned ) ts->tv_sec, (unsigned) ts->tv_nsec);
+
+ ts->tv_sec = 0;
+ ts->tv_nsec = 999;
+ const struct pollfd fds2[] = {
+ { .fd = pipe_fd[1], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+ { .fd = pipe_fd[0], .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+ };
+ fds = efault - sizeof(fds2);
+ memcpy(fds, fds2, sizeof(fds2));
+
+ memset(&mask, -1, sizeof(mask));
+ sigdelset(&mask, SIGHUP);
+ sigdelset(&mask, SIGKILL);
+ sigdelset(&mask, SIGSTOP);
+ memcpy(sigmask, &mask, sigset_size);
+
+ rc = sys_ppoll((unsigned long) fds,
+ F8ILL_KULONG_MASK | ARRAY_SIZE(fds2), (unsigned long) ts,
+ (unsigned long) sigmask, sigset_size);
+ if (rc != 0)
+ perror_msg_and_fail("ppoll 2");
+ printf("ppoll([{fd=%d, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}"
+ ", {fd=%d, events=POLLOUT%s|POLLWRBAND}], %u"
+ ", {tv_sec=0, tv_nsec=999}, ~[HUP KILL STOP], %u)"
+ " = %ld (Timeout)\n",
+ pipe_fd[1], pipe_fd[0], POLLWRNORM_str,
+ (unsigned) ARRAY_SIZE(fds2), sigset_size, rc);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ sys_ppoll(f8ill_ptr_to_kulong(fds), ARRAY_SIZE(fds2),
+ f8ill_ptr_to_kulong(ts), f8ill_ptr_to_kulong(sigmask),
+ sigset_size);
+ printf("ppoll(%#llx, %u, %#llx, %#llx, %u) = %s\n",
+ (unsigned long long) f8ill_ptr_to_kulong(fds),
+ (unsigned) ARRAY_SIZE(fds2),
+ (unsigned long long) f8ill_ptr_to_kulong(ts),
+ (unsigned long long) f8ill_ptr_to_kulong(sigmask),
+ (unsigned) sigset_size, errstr);
+ }
+
+ puts("+++ exited with 0 +++");
return 0;
}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ppoll")
+
+#endif
diff --git a/tests/ppoll.expected b/tests/ppoll.expected
deleted file mode 100644
index c38a206..0000000
--- a/tests/ppoll.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-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/ppoll.gen.test b/tests/ppoll.gen.test
new file mode 100755
index 0000000..4c07598
--- /dev/null
+++ b/tests/ppoll.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2
diff --git a/tests/ppoll.test b/tests/ppoll.test
deleted file mode 100755
index 98389ee..0000000
--- a/tests/ppoll.test
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Check ppoll syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a30 -s2 -e ppoll $args
-match_grep
-run_strace -a30 -v -s2 -e ppoll $args
-match_grep "$LOG" "$srcdir/$NAME-v.expected"
-
-exit 0
diff --git a/tests/prctl-arg2-intptr.c b/tests/prctl-arg2-intptr.c
index ee000eb..9cc3308 100644
--- a/tests/prctl-arg2-intptr.c
+++ b/tests/prctl-arg2-intptr.c
@@ -4,6 +4,7 @@
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -70,7 +71,7 @@
{ 11, "PR_GET_FPEXC" },
};
- unsigned int *ptr = tail_alloc(sizeof(*ptr));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
long rc;
unsigned int i;
diff --git a/tests/prctl-arg2-intptr.test b/tests/prctl-arg2-intptr.test
index bcef806..4f9e3a1 100755
--- a/tests/prctl-arg2-intptr.test
+++ b/tests/prctl-arg2-intptr.test
@@ -10,5 +10,3 @@
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.test b/tests/prctl-dumpable.test
index 08acb8b..05f1310 100755
--- a/tests/prctl-dumpable.test
+++ b/tests/prctl-dumpable.test
@@ -8,5 +8,3 @@
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.test b/tests/prctl-name.test
index 071179c..95d34b6 100755
--- a/tests/prctl-name.test
+++ b/tests/prctl-name.test
@@ -8,5 +8,3 @@
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
index 57e1b73..496cd1a 100644
--- a/tests/prctl-no-args.c
+++ b/tests/prctl-no-args.c
@@ -4,6 +4,7 @@
* PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -57,7 +58,7 @@
{ 32, "PR_TASK_PERF_EVENTS_ENABLE" },
};
- unsigned int *ptr = tail_alloc(sizeof(*ptr));
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
unsigned int i;
for (i = 0; i < ARRAY_SIZE(options); i++) {
diff --git a/tests/prctl-no-args.test b/tests/prctl-no-args.test
index ce8ca67..8ff300b 100755
--- a/tests/prctl-no-args.test
+++ b/tests/prctl-no-args.test
@@ -10,5 +10,3 @@
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
index c176030..ef56374 100644
--- a/tests/prctl-pdeathsig.c
+++ b/tests/prctl-pdeathsig.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2016 JingPiao Chen <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
static const kernel_ulong_t bogus_signal =
(kernel_ulong_t) 0xbadc0deddeadfeedULL;
- int *pdeathsig = tail_alloc(sizeof(*pdeathsig));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, pdeathsig);
long rc;
rc = syscall(__NR_prctl, PR_SET_PDEATHSIG, bogus_signal);
diff --git a/tests/prctl-pdeathsig.test b/tests/prctl-pdeathsig.test
index 2777503..b6e0140 100755
--- a/tests/prctl-pdeathsig.test
+++ b/tests/prctl-pdeathsig.test
@@ -9,5 +9,3 @@
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-seccomp-filter-v.test b/tests/prctl-seccomp-filter-v.test
index 44e4a78..3663ad8 100755
--- a/tests/prctl-seccomp-filter-v.test
+++ b/tests/prctl-seccomp-filter-v.test
@@ -9,5 +9,3 @@
run_strace -v -eprctl $args > "$EXP"
grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-seccomp-strict.test b/tests/prctl-seccomp-strict.test
index 1f987df..bee85b8 100755
--- a/tests/prctl-seccomp-strict.test
+++ b/tests/prctl-seccomp-strict.test
@@ -5,7 +5,7 @@
. "${srcdir=.}/init.sh"
check_prog grep
-set -- "./$NAME"
+set -- "../$NAME"
"$@" > /dev/null || {
case $? in
77) skip_ "$* exited with code 77" ;;
@@ -16,4 +16,3 @@
run_strace -eprctl "$@" > "$EXP"
grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-securebits.test b/tests/prctl-securebits.test
index c91e62a..32b0f2a 100755
--- a/tests/prctl-securebits.test
+++ b/tests/prctl-securebits.test
@@ -8,5 +8,3 @@
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
index 24e4503..609e549 100644
--- a/tests/prctl-tid_address.c
+++ b/tests/prctl-tid_address.c
@@ -2,6 +2,7 @@
* Check decoding of prctl PR_GET_TID_ADDRESS operation.
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -59,7 +60,7 @@
(kernel_ulong_t) 0xfffffffffffffffdULL;
/* Note that kernel puts kernel-sized pointer even on x32 */
- kernel_ulong_t *ptr = tail_alloc(sizeof(*ptr));
+ TAIL_ALLOC_OBJECT_CONST_PTR(kernel_ulong_t, ptr);
long rc;
long set_ok;
diff --git a/tests/prctl-tid_address.test b/tests/prctl-tid_address.test
index dc7b7c3..62a39e5 100755
--- a/tests/prctl-tid_address.test
+++ b/tests/prctl-tid_address.test
@@ -8,5 +8,3 @@
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
index fd9362d..0ddb380 100644
--- a/tests/prctl-tsc.c
+++ b/tests/prctl-tsc.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2016 JingPiao Chen <[email protected]>
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,7 +44,7 @@
static const kernel_ulong_t bogus_tsc =
(kernel_ulong_t) 0xdeadc0defacebeefULL;
- int *tsc = tail_alloc(sizeof(*tsc));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, tsc);
long rc;
rc = syscall(__NR_prctl, PR_SET_TSC, 0);
diff --git a/tests/prctl-tsc.test b/tests/prctl-tsc.test
index a906ba8..439d9d5 100755
--- a/tests/prctl-tsc.test
+++ b/tests/prctl-tsc.test
@@ -9,5 +9,3 @@
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/pread64-pwrite64.c b/tests/pread64-pwrite64.c
index 4a0932a..e9d7a64 100644
--- a/tests/pread64-pwrite64.c
+++ b/tests/pread64-pwrite64.c
@@ -2,6 +2,7 @@
* Check decoding of pread64 and pwrite64 syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -123,7 +124,9 @@
{
tprintf("%s", "");
- static char tmp[] = "pread64-pwrite64-tmpfile";
+ skip_if_unavailable("/proc/self/fd/");
+
+ static const char tmp[] = "pread64-pwrite64-tmpfile";
if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
perror_msg_and_fail("creat: %s", tmp);
if (open(tmp, O_WRONLY) != 1)
diff --git a/tests/pread64-pwrite64.gen.test b/tests/pread64-pwrite64.gen.test
new file mode 100755
index 0000000..b53e069
--- /dev/null
+++ b/tests/pread64-pwrite64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pread64-pwrite64 -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests/pread64-pwrite64.test b/tests/pread64-pwrite64.test
deleted file mode 100755
index e585406..0000000
--- a/tests/pread64-pwrite64.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of pread64 and pwrite64 syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=pread64-pwrite64-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
- -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 \
- -P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests/preadv-pwritev.gen.test b/tests/preadv-pwritev.gen.test
new file mode 100755
index 0000000..5ed8297
--- /dev/null
+++ b/tests/preadv-pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv-pwritev -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests/preadv-pwritev.test b/tests/preadv-pwritev.test
deleted file mode 100755
index cb2a077..0000000
--- a/tests/preadv-pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv and pwritev syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests/preadv.c b/tests/preadv.c
index fb5d3ad..a55909b 100644
--- a/tests/preadv.c
+++ b/tests/preadv.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -66,7 +67,7 @@
{
const off_t offset = 0xdefaceddeadbeefLL;
char *buf = tail_alloc(LEN);
- struct iovec *iov = tail_alloc(sizeof(*iov));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
iov->iov_base = buf;
iov->iov_len = LEN;
diff --git a/tests/preadv.gen.test b/tests/preadv.gen.test
new file mode 100755
index 0000000..8fb7b54
--- /dev/null
+++ b/tests/preadv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/preadv.test b/tests/preadv.test
deleted file mode 100755
index d1abdb7..0000000
--- a/tests/preadv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check preadv syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/preadv2-pwritev2.c b/tests/preadv2-pwritev2.c
index f7c46c0..e31e046 100644
--- a/tests/preadv2-pwritev2.c
+++ b/tests/preadv2-pwritev2.c
@@ -2,6 +2,7 @@
* Check decoding of preadv2 and pwritev2 syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -181,26 +182,45 @@
main(void)
{
const kernel_ulong_t vlen = (kernel_ulong_t) 0xfac1fed2dad3bef4ULL;
- const unsigned long long pos = 0xfac5fed6dad7bef8;
+ const unsigned long long pos = 0x7ac5fed6dad7bef8;
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;
+ long rc;
+ int test_dumpio;
tprintf("%s", "");
- syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
- if (ENOSYS == errno)
- test_dumpio = 0;
- tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
- (unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+ /*
+ * x32 is the only architecture where preadv2 takes 5 arguments,
+ * see preadv64v2 in kernel sources.
+ */
+ rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, 1);
+#else
+ const kernel_ulong_t pos_h =
+ (sizeof(pos_l) == sizeof(pos)) ?
+ (kernel_ulong_t) 0xbadc0deddeadbeefULL :
+ (kernel_ulong_t) (pos >> 32);
+ rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+ if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+ perror_msg_and_fail("preadv2");
+ test_dumpio = EBADF == errno;
+ tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+ (unsigned long) vlen, pos, sprintrc(rc));
- 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",
- (unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+ /*
+ * x32 is the only architecture where pwritev2 takes 5 arguments,
+ * see pwritev64v2 in kernel sources.
+ */
+ rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, 1);
+#else
+ rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+ if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+ perror_msg_and_fail("pwritev2");
+ tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+ (unsigned long) vlen, pos, sprintrc(rc));
if (test_dumpio)
dumpio();
diff --git a/tests/preadv2-pwritev2.gen.test b/tests/preadv2-pwritev2.gen.test
new file mode 100755
index 0000000..2f89b41
--- /dev/null
+++ b/tests/preadv2-pwritev2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv2-pwritev2 -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests/preadv2-pwritev2.test b/tests/preadv2-pwritev2.test
deleted file mode 100755
index 5641ef4..0000000
--- a/tests/preadv2-pwritev2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv2 and pwritev2 syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests/print_time.c b/tests/print_time.c
new file mode 100644
index 0000000..4292329
--- /dev/null
+++ b/tests/print_time.c
@@ -0,0 +1,75 @@
+/*
+ * Print time_t and nanoseconds in symbolic format.
+ *
+ * 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 <stdio.h>
+#include <time.h>
+
+static void
+print_time_t_ex(const time_t t, const unsigned long long part_sec,
+ const unsigned int max_part_sec, const int width,
+ const int comment)
+{
+
+ if ((!t && !part_sec) || part_sec > max_part_sec)
+ return;
+
+ const struct tm *const p = localtime(&t);
+ char buf[256];
+ if (!p || !strftime(buf, sizeof(buf), "%FT%T", p))
+ return;
+
+ if (comment)
+ fputs(" /* ", stdout);
+
+ fputs(buf, stdout);
+
+ if (part_sec)
+ printf(".%0*llu", width, part_sec);
+
+ if (strftime(buf, sizeof(buf), "%z", p))
+ fputs(buf, stdout);
+
+ if (comment)
+ fputs(" */", stdout);
+
+ return;
+}
+
+void
+print_time_t_nsec(const time_t t, const unsigned long long nsec, int comment)
+{
+ print_time_t_ex(t, nsec, 999999999, 9, comment);
+}
+
+void
+print_time_t_usec(const time_t t, const unsigned long long usec, int comment)
+{
+ print_time_t_ex(t, usec, 999999, 6, comment);
+}
diff --git a/tests/printstr.gen.test b/tests/printstr.gen.test
new file mode 100755
index 0000000..c3bd93a
--- /dev/null
+++ b/tests/printstr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (printstr -e trace=writev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=writev
diff --git a/tests/printstr.test b/tests/printstr.test
deleted file mode 100755
index 5f164eb..0000000
--- a/tests/printstr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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.gen.test b/tests/prlimit64.gen.test
new file mode 100755
index 0000000..11964a5
--- /dev/null
+++ b/tests/prlimit64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/prlimit64.test b/tests/prlimit64.test
deleted file mode 100755
index 2d2240d..0000000
--- a/tests/prlimit64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of prlimit64 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/process_vm_readv.gen.test b/tests/process_vm_readv.gen.test
new file mode 100755
index 0000000..3142588
--- /dev/null
+++ b/tests/process_vm_readv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv -s5 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a37
diff --git a/tests/process_vm_readv.test b/tests/process_vm_readv.test
deleted file mode 100755
index c092f5a..0000000
--- a/tests/process_vm_readv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_readv syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a37
diff --git a/tests/process_vm_writev.gen.test b/tests/process_vm_writev.gen.test
new file mode 100755
index 0000000..0b912c0
--- /dev/null
+++ b/tests/process_vm_writev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev -s5 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a38
diff --git a/tests/process_vm_writev.test b/tests/process_vm_writev.test
deleted file mode 100755
index f690e6a..0000000
--- a/tests/process_vm_writev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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 f264485..f5939f3 100644
--- a/tests/pselect6.c
+++ b/tests/pselect6.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,13 +96,13 @@
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, "
- "{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],
- (long long) tm.ts.tv_sec, (long long) tm.ts.tv_nsec);
+ printf("pselect6(%d, NULL, [1 2 %d %d], NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 3 (out [1 2 %d]"
+ ", left {tv_sec=%lld, tv_nsec=%llu})\n",
+ fds[1] + 1, fds[0], fds[1], (long long) tm_in.ts.tv_sec,
+ zero_extend_signed_to_ull(tm_in.ts.tv_nsec),
+ fds[1], (long long) tm.ts.tv_sec,
+ zero_extend_signed_to_ull(tm.ts.tv_nsec));
/*
* Now the crash case that trinity found, negative nfds
@@ -122,21 +123,40 @@
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, {tv_sec=0, tv_nsec=123}, "
- "{[HUP CHLD], %u}) = 0 (Timeout)\n",
+ 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.
*/
+ tm.ts.tv_sec = 0xdeadbeefU;
+ tm.ts.tv_nsec = 0xfacefeedU;
+ assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+ printf("pselect6(0, NULL, NULL, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+ (long long) tm.ts.tv_sec,
+ zero_extend_signed_to_ull(tm.ts.tv_nsec),
+ NSIG_BYTES, sprintrc(-1));
+
+ tm.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ tm.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+ printf("pselect6(0, NULL, NULL, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+ (long long) tm.ts.tv_sec,
+ zero_extend_signed_to_ull(tm.ts.tv_nsec),
+ NSIG_BYTES, sprintrc(-1));
+
assert(sigaction(SIGALRM, &act, NULL) == 0);
assert(setitimer(ITIMER_REAL, &itv, NULL) == 0);
+ tm.ts.tv_sec = 0;
tm.ts.tv_nsec = 222222222;
assert(pselect(0, NULL, NULL, NULL, &tm.ts, &mask) == -1);
- printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}, "
- "{[HUP CHLD], %u}) = "
- "? ERESTARTNOHAND (To be restarted if no handler)\n",
+ 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} ---");
diff --git a/tests/pselect6.gen.test b/tests/pselect6.gen.test
new file mode 100755
index 0000000..c89e705
--- /dev/null
+++ b/tests/pselect6.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/pselect6.test b/tests/pselect6.test
deleted file mode 100755
index 203f8e2..0000000
--- a/tests/pselect6.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pselect6 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/ptrace.c b/tests/ptrace.c
index 80ce8cb..9e0ffdc 100644
--- a/tests/ptrace.c
+++ b/tests/ptrace.c
@@ -2,6 +2,7 @@
* Check decoding of ptrace syscall.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,16 +31,14 @@
#include "tests.h"
#include <asm/unistd.h>
-#ifdef __NR_rt_sigprocmask
-
-# include <errno.h>
-# include <signal.h>
-# include <stdio.h>
-# include <string.h>
-# include <sys/wait.h>
-# include <unistd.h>
-# include "ptrace.h"
-# include <linux/audit.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include "ptrace.h"
+#include <linux/audit.h>
static const char *errstr;
@@ -178,46 +177,38 @@
const unsigned long pid =
(unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
- unsigned int sigset_size;
-
- for (sigset_size = 1024 / 8; sigset_size; sigset_size >>= 1) {
- if (!syscall(__NR_rt_sigprocmask,
- SIG_SETMASK, NULL, NULL, sigset_size))
- break;
- }
- if (!sigset_size)
- perror_msg_and_fail("rt_sigprocmask");
+ const unsigned int sigset_size = get_sigset_size();
void *const k_set = tail_alloc(sigset_size);
- siginfo_t *const sip = tail_alloc(sizeof(*sip));
+ TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sip);
do_ptrace(bad_request, pid, 0, 0);
printf("ptrace(%#lx /* PTRACE_??? */, %u, NULL, NULL) = %s\n",
bad_request, (unsigned) pid, errstr);
do_ptrace(PTRACE_PEEKDATA, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
printf("ptrace(PTRACE_PEEKDATA, %u, %#lx) = %s\n",
(unsigned) pid, bad_request, errstr);
-# else
+#else
printf("ptrace(PTRACE_PEEKDATA, %u, %#lx, %#lx) = %s\n",
(unsigned) pid, bad_request, bad_data, errstr);
#endif
do_ptrace(PTRACE_PEEKTEXT, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx) = %s\n",
(unsigned) pid, bad_request, errstr);
-# else
+#else
printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx, %#lx) = %s\n",
(unsigned) pid, bad_request, bad_data, errstr);
#endif
do_ptrace(PTRACE_PEEKUSER, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
printf("ptrace(PTRACE_PEEKUSER, %u, %#lx) = %s\n",
(unsigned) pid, bad_request, errstr);
-# else
+#else
printf("ptrace(PTRACE_PEEKUSER, %u, %#lx, %#lx) = %s\n",
(unsigned) pid, bad_request, bad_data, errstr);
#endif
@@ -446,10 +437,3 @@
puts("+++ exited with 0 +++");
return 0;
}
-
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask")
-
-#endif
diff --git a/tests/ptrace.gen.test b/tests/ptrace.gen.test
new file mode 100755
index 0000000..4b93250
--- /dev/null
+++ b/tests/ptrace.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ptrace -a23 -e signal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e signal=none
diff --git a/tests/ptrace.test b/tests/ptrace.test
deleted file mode 100755
index 5add9be..0000000
--- a/tests/ptrace.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ptrace syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e signal=none
diff --git a/tests/pure_executables.list b/tests/pure_executables.list
new file mode 100755
index 0000000..cc65614
--- /dev/null
+++ b/tests/pure_executables.list
@@ -0,0 +1,330 @@
+# executables without side effects
+_newselect
+accept
+accept4
+access
+acct
+add_key
+adjtimex
+aio
+alarm
+bpf
+brk
+btrfs
+caps
+chmod
+chown
+chown32
+chroot
+clock_adjtime
+clock_nanosleep
+clock_xettime
+copy_file_range
+creat
+delete_module
+dup
+dup2
+dup3
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erestartsys
+eventfd
+execve
+execveat
+faccessat
+fadvise64
+fadvise64_64
+fallocate
+fanotify_init
+fanotify_mark
+fchdir
+fchmod
+fchmodat
+fchown
+fchown32
+fchownat
+fcntl
+fcntl64
+fdatasync
+file_handle
+file_ioctl
+finit_module
+flock
+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
+getpid
+getppid
+getrandom
+getresgid
+getresgid32
+getresuid
+getresuid32
+getrlimit
+getrusage
+getsid
+getsockname
+getuid
+getuid32
+getxxid
+inet-cmsg
+init_module
+inotify
+inotify_init1
+ioctl
+ioctl_block
+ioctl_dm
+ioctl_evdev
+ioctl_loop
+ioctl_mtd
+ioctl_rtc
+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
+lchown
+lchown32
+link
+linkat
+llseek
+lookup_dcookie
+lseek
+lstat
+lstat64
+madvise
+mbind
+membarrier
+memfd_create
+migrate_pages
+mincore
+mkdir
+mkdirat
+mknod
+mknodat
+mlock
+mlock2
+mlockall
+mmap
+mmap64
+mmsg
+mmsg_name
+mount
+move_pages
+mq
+mq_sendrecv
+mq_sendrecv-read
+mq_sendrecv-write
+msg_control
+msg_name
+munlockall
+nanosleep
+net-icmp_filter
+net-sockaddr
+net-y-unix
+net-yy-inet
+net-yy-netlink
+net-yy-unix
+netlink_protocol
+newfstatat
+old_mmap
+oldfstat
+oldlstat
+oldselect
+oldstat
+open
+openat
+osf_utimes
+pause
+perf_event_open
+personality
+pipe
+pipe2
+pkey_alloc
+pkey_free
+pkey_mprotect
+poll
+ppoll
+prctl-arg2-intptr
+prctl-dumpable
+prctl-name
+prctl-no-args
+prctl-pdeathsig
+prctl-securebits
+prctl-tid_address
+prctl-tsc
+pread64-pwrite64
+preadv
+preadv-pwritev
+preadv2-pwritev2
+printstr
+prlimit64
+process_vm_readv
+process_vm_writev
+pselect6
+ptrace
+pwritev
+quotactl
+quotactl-xfs
+read-write
+readahead
+readdir
+readlink
+readlinkat
+readv
+reboot
+recvfrom
+recvmmsg-timeout
+recvmsg
+remap_file_pages
+rename
+renameat
+renameat2
+request_key
+rmdir
+rt_sigpending
+rt_sigprocmask
+rt_sigqueueinfo
+rt_sigreturn
+rt_sigsuspend
+rt_sigtimedwait
+rt_tgsigqueueinfo
+sched_get_priority_mxx
+sched_rr_get_interval
+sched_xetaffinity
+sched_xetattr
+sched_xetparam
+sched_xetscheduler
+sched_yield
+seccomp-filter
+select
+semop
+sendfile
+sendfile64
+set_mempolicy
+setdomainname
+setfsgid
+setfsgid32
+setfsuid
+setfsuid32
+setgid
+setgid32
+setgroups
+setgroups32
+sethostname
+setns
+setregid
+setregid32
+setresgid
+setresgid32
+setresuid
+setresuid32
+setreuid
+setreuid32
+setrlimit
+setuid
+setuid32
+shmxt
+shutdown
+sigaction
+sigaltstack
+siginfo
+signalfd4
+sigreturn
+sigsuspend
+socketcall
+splice
+stat
+stat64
+statfs
+statfs64
+statx
+swap
+sxetmask
+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
+umoven-illptr
+umovestr
+umovestr-illptr
+umovestr2
+umovestr3
+uname
+unlink
+unlinkat
+unshare
+userfaultfd
+ustat
+utime
+utimensat
+utimes
+vhangup
+vmsplice
+wait4
+waitid
+waitpid
+xattr
+xattr-strings
+xet_robust_list
+xetitimer
+xetpgid
+xetpriority
+xettimeofday
diff --git a/tests/pwritev.gen.test b/tests/pwritev.gen.test
new file mode 100755
index 0000000..e54fd15
--- /dev/null
+++ b/tests/pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pwritev -a22 -s7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s7
diff --git a/tests/pwritev.test b/tests/pwritev.test
deleted file mode 100755
index 0aed683..0000000
--- a/tests/pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pwritev syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -s7
diff --git a/tests/qual_fault-exit_group.test b/tests/qual_fault-exit_group.test
index c98ffc6..34a2da5 100755
--- a/tests/qual_fault-exit_group.test
+++ b/tests/qual_fault-exit_group.test
@@ -3,6 +3,7 @@
# Check decoding of fault injected exit_group syscall.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -41,13 +42,13 @@
match_diff
}
-test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ./answer
+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
+ -efault=\!process:error=1 ../answer
test_with -eexit,exit_group -efault=all:error=ENOSYS \
- -efault=exit:error=1:when=2+ ./answer
+ -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
+ -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
index 85093fc..0cce539 100755
--- a/tests/qual_fault-syntax.test
+++ b/tests/qual_fault-syntax.test
@@ -2,7 +2,7 @@
#
# Check -e fault= syntax.
#
-# Copyright (c) 2016=2017 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 Dmitry V. Levin <[email protected]>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
diff --git a/tests/qual_fault.c b/tests/qual_fault.c
index d26dc7c..ab692cb 100644
--- a/tests/qual_fault.c
+++ b/tests/qual_fault.c
@@ -2,6 +2,7 @@
* Check that fault injection works properly.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/qual_fault.test b/tests/qual_fault.test
index e194a78..f8e57d2 100755
--- a/tests/qual_fault.test
+++ b/tests/qual_fault.test
@@ -3,6 +3,7 @@
# Check that fault injection works properly.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -76,12 +77,11 @@
run_strace -a11 -e trace=$trace \
"$@" -e fault=$fault$when$error $extra \
- ./$NAME $raw "$err" "$first" "$step" $N \
+ ../$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
diff --git a/tests/qual_inject-error-signal.test b/tests/qual_inject-error-signal.test
index fcbcc39..1fe4612 100755
--- a/tests/qual_inject-error-signal.test
+++ b/tests/qual_inject-error-signal.test
@@ -4,5 +4,5 @@
. "${srcdir=.}/scno_tampering.sh"
run_strace -a12 -echdir,exit_group -einject=chdir:error=ENOENT:signal=USR1 \
- "./$NAME"
+ "../$NAME"
match_diff
diff --git a/tests/qual_inject-retval.test b/tests/qual_inject-retval.test
index 419030a..5a4efd1 100755
--- a/tests/qual_inject-retval.test
+++ b/tests/qual_inject-retval.test
@@ -12,9 +12,8 @@
rval="$1"; shift
run_strace -a12 -e$syscall -einject="$syscall:retval=$rval" "$@" \
- ./qual_inject-retval "$rval" > "$EXP"
+ ../qual_inject-retval "$rval" > "$EXP"
match_diff "$LOG" "$EXP"
- rm -f "$EXP"
}
check_injection 0
diff --git a/tests/qual_inject-signal.test b/tests/qual_inject-signal.test
index 88002ce..f17e5a0 100755
--- a/tests/qual_inject-signal.test
+++ b/tests/qual_inject-signal.test
@@ -4,5 +4,5 @@
. "${srcdir=.}/init.sh"
run_strace -a12 -echdir,exit_group -einject=chdir:signal=USR1 \
- ./$NAME
+ ../$NAME
match_diff
diff --git a/tests/qual_signal.test b/tests/qual_signal.test
index 54a37a3..52812b7 100755
--- a/tests/qual_signal.test
+++ b/tests/qual_signal.test
@@ -3,6 +3,7 @@
# Check how strace -e signal=set works.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -34,10 +35,9 @@
local sigs
sigs="$1"; shift
- run_prog "./$NAME" "$@" > /dev/null
- run_strace -e trace=none -e signal="$sigs" "./$NAME" "$@" > "$EXP"
+ run_prog "../$NAME" "$@" > /dev/null
+ run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
match_diff "$LOG" "$EXP"
- rm -f "$EXP"
}
test_sigs()
diff --git a/tests/qual_syscall.test b/tests/qual_syscall.test
index f7eb06d..1524405 100755
--- a/tests/qual_syscall.test
+++ b/tests/qual_syscall.test
@@ -5,17 +5,17 @@
. "${srcdir=.}/init.sh"
-run_prog ./umovestr
-pattern_abbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[/\* [[:digit:]]* vars \*/\]) = 0'
-pattern_nonabbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
-pattern_nonverbose='execve("\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
+run_prog ../umovestr
+pattern_abbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/) = 0'
+pattern_nonabbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
+pattern_nonverbose='execve("\.\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
pattern_raw='execve(0x[[:xdigit:]]*, 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
check_output_mismatch()
{
local pattern
pattern="$1"; shift
- run_strace "$@" ./umovestr
+ run_strace "$@" ../umovestr
LC_ALL=C grep -x "$pattern" "$LOG" > /dev/null || {
printf '%s\n%s\n' \
'Failed patterns of expected output:' "$pattern"
@@ -28,15 +28,19 @@
LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
dump_log_and_fail_with "$STRACE $args unexpected output"
-check_output_mismatch "$pattern_abbrev_verbose" -e trace=process
+check_output_mismatch "$pattern_abbrev_verbose" -e trace=%process
LC_ALL=C grep '^chdir' "$LOG" > /dev/null &&
dump_log_and_fail_with "$STRACE $args unexpected output"
-run_strace -e 42 ./umovestr
+run_strace -e 42 ../umovestr
LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
dump_log_and_fail_with "$STRACE $args unexpected output"
-for a in execve \!chdir all \!none \
+run_strace -e/ -e42 ../umovestr
+LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
+ dump_log_and_fail_with "$STRACE $args unexpected output"
+
+for a in execve \!chdir /. all \!none \
file process \!desc \!ipc \!memory \!network \!signal; do
check_output_mismatch \
"$pattern_abbrev_verbose" -e abbrev="$a" -e execve
diff --git a/tests/quotactl-v.gen.test b/tests/quotactl-v.gen.test
new file mode 100755
index 0000000..8659ed2
--- /dev/null
+++ b/tests/quotactl-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-v.test b/tests/quotactl-v.test
deleted file mode 100755
index 6adaf82..0000000
--- a/tests/quotactl-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs-v.gen.test b/tests/quotactl-xfs-v.gen.test
new file mode 100755
index 0000000..f1f7e0a
--- /dev/null
+++ b/tests/quotactl-xfs-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs-v.test b/tests/quotactl-xfs-v.test
deleted file mode 100755
index d5ffc7d..0000000
--- a/tests/quotactl-xfs-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs.c b/tests/quotactl-xfs.c
index e420d1c..b2a884b 100644
--- a/tests/quotactl-xfs.c
+++ b/tests/quotactl-xfs.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -207,10 +208,10 @@
char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
long rc;
- struct fs_disk_quota *xdq = tail_alloc(sizeof(*xdq));
- struct fs_quota_stat *xqstat = tail_alloc(sizeof(*xqstat));
- struct fs_quota_statv *xqstatv = tail_alloc(sizeof(*xqstatv));
- uint32_t *flags = tail_alloc(sizeof(*flags));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_disk_quota, xdq);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_stat, xqstat);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_statv, xqstatv);
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, flags);
char *unterminated = tail_memdup(unterminated_data,
sizeof(unterminated_data));
diff --git a/tests/quotactl-xfs.gen.test b/tests/quotactl-xfs.gen.test
new file mode 100755
index 0000000..cd7d11c
--- /dev/null
+++ b/tests/quotactl-xfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=quotactl
diff --git a/tests/quotactl-xfs.test b/tests/quotactl-xfs.test
deleted file mode 100755
index 404a737..0000000
--- a/tests/quotactl-xfs.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=quotactl
diff --git a/tests/quotactl.c b/tests/quotactl.c
index 3a7c113..88c3fda 100644
--- a/tests/quotactl.c
+++ b/tests/quotactl.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -173,10 +174,10 @@
long rc;
char *unterminated = tail_memdup(unterminated_data,
sizeof(unterminated_data));
- struct if_dqblk *dqblk = tail_alloc(sizeof(*dqblk));
- struct if_dqinfo *dqinfo = tail_alloc(sizeof(*dqinfo));
- uint32_t *fmt = tail_alloc(sizeof(*fmt));
- struct if_nextdqblk *nextdqblk = tail_alloc(sizeof(*nextdqblk));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqblk, dqblk);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqinfo, dqinfo);
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, fmt);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct if_nextdqblk, nextdqblk);
snprintf(bogus_special_str, sizeof(bogus_special_str), "%p",
diff --git a/tests/quotactl.gen.test b/tests/quotactl.gen.test
new file mode 100755
index 0000000..c6ad6e1
--- /dev/null
+++ b/tests/quotactl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/quotactl.test b/tests/quotactl.test
deleted file mode 100755
index d0101f4..0000000
--- a/tests/quotactl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/read-write.c b/tests/read-write.c
index 262e07b..ed4c64d 100644
--- a/tests/read-write.c
+++ b/tests/read-write.c
@@ -2,6 +2,7 @@
* Check decoding and dumping of read and write syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -137,7 +138,9 @@
{
tprintf("%s", "");
- static char tmp[] = "read-write-tmpfile";
+ skip_if_unavailable("/proc/self/fd/");
+
+ static const char tmp[] = "read-write-tmpfile";
if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
perror_msg_and_fail("creat: %s", tmp);
if (open(tmp, O_WRONLY) != 1)
diff --git a/tests/read-write.gen.test b/tests/read-write.gen.test
new file mode 100755
index 0000000..df1b3fb
--- /dev/null
+++ b/tests/read-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (read-write -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests/read-write.test b/tests/read-write.test
deleted file mode 100755
index 3700541..0000000
--- a/tests/read-write.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of read and write syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
- framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=read-write-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
- -a15 -eread=0 -ewrite=1 -e trace=read,write \
- -P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests/readahead.c b/tests/readahead.c
index c11b577..c243ae4 100644
--- a/tests/readahead.c
+++ b/tests/readahead.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2016 Eugene Syromyatnikov <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/readahead.gen.test b/tests/readahead.gen.test
new file mode 100755
index 0000000..4e88efa
--- /dev/null
+++ b/tests/readahead.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1
diff --git a/tests/readahead.test b/tests/readahead.test
deleted file mode 100755
index 397c690..0000000
--- a/tests/readahead.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readahead syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
diff --git a/tests/readdir.c b/tests/readdir.c
index 8c48362..a47856f 100644
--- a/tests/readdir.c
+++ b/tests/readdir.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -58,9 +59,9 @@
"A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
int
-main(int ac, const char **av)
+main(void)
{
- char *dname;
+ static const char dname[] = "readdir.test.tmp.dir";
struct {
unsigned long d_ino;
unsigned long d_off;
@@ -69,8 +70,6 @@
} e;
int rc;
- assert(ac == 1);
- assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
assert(!mkdir(dname, 0700));
assert(!chdir(dname));
(void) close(0);
diff --git a/tests/readdir.gen.test b/tests/readdir.gen.test
new file mode 100755
index 0000000..10da83b
--- /dev/null
+++ b/tests/readdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests/readdir.test b/tests/readdir.test
deleted file mode 100755
index e313273..0000000
--- a/tests/readdir.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check readdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a16
diff --git a/tests/readlink.gen.test b/tests/readlink.gen.test
new file mode 100755
index 0000000..755fc8b
--- /dev/null
+++ b/tests/readlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests/readlink.test b/tests/readlink.test
deleted file mode 100755
index c026ecb..0000000
--- a/tests/readlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
diff --git a/tests/readlinkat.gen.test b/tests/readlinkat.gen.test
new file mode 100755
index 0000000..2a50299
--- /dev/null
+++ b/tests/readlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests/readlinkat.test b/tests/readlinkat.test
deleted file mode 100755
index 229c8e1..0000000
--- a/tests/readlinkat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check readlinkat syscall decoding.
-
-. "${srcdir=.}/readlink.test"
diff --git a/tests/readv.test b/tests/readv.test
index dc18799..d75e370 100755
--- a/tests/readv.test
+++ b/tests/readv.test
@@ -3,6 +3,7 @@
# Check decoding and dumping of readv and writev syscalls.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -38,7 +39,7 @@
run_strace_match_diff -a16 -e trace=readv,writev \
-eread='!all' -ewrite=none -eread='!0,1,2' -ewrite='!0,1,2'
-wfd="$(./print_maxfd)"
+wfd="$(../print_maxfd)"
rfd="$(($wfd - 1))"
run_strace_match_diff -a16 -e trace=readv,writev \
-eread="$rfd" -ewrite="$wfd"
diff --git a/tests/reboot.gen.test b/tests/reboot.gen.test
new file mode 100755
index 0000000..0a48dea
--- /dev/null
+++ b/tests/reboot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/reboot.test b/tests/reboot.test
deleted file mode 100755
index a97dd21..0000000
--- a/tests/reboot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check reboot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/recvfrom.gen.test b/tests/recvfrom.gen.test
new file mode 100755
index 0000000..c23780c
--- /dev/null
+++ b/tests/recvfrom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/recvfrom.test b/tests/recvfrom.test
deleted file mode 100755
index 9dfbc89..0000000
--- a/tests/recvfrom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr related arguments of recvfrom syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/recvmmsg-timeout.c b/tests/recvmmsg-timeout.c
index 7cf064d..64ce16a 100644
--- a/tests/recvmmsg-timeout.c
+++ b/tests/recvmmsg-timeout.c
@@ -2,6 +2,7 @@
* Check decoding of timeout argument of recvmmsg syscall.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -50,13 +51,15 @@
.msg_iovlen = 1
}
};
- struct timespec t = { .tv_sec = 0, .tv_nsec = 12345678 };
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+ ts->tv_sec = 0;
+ ts->tv_nsec = 12345678;
- int rc = recv_mmsg(-1, &mh, 1, 0, &t);
+ int rc = recv_mmsg(-1, &mh, 1, 0, ts);
printf("recvmmsg(-1, %p, 1, 0, {tv_sec=0, tv_nsec=12345678})"
- " = %d %s (%m)\n", &mh, rc, errno2name());
+ " = %s\n", &mh, sprintrc(rc));
- rc = recv_mmsg(fds[0], &mh, 1, 0, &t);
+ rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
if (rc < 0)
perror_msg_and_skip("recvmmsg");
printf("recvmmsg(%d, [{msg_hdr={msg_name=NULL, msg_namelen=0"
@@ -64,7 +67,23 @@
", msg_controllen=0, msg_flags=0}, msg_len=1}], 1, 0"
", {tv_sec=0, tv_nsec=12345678}) = "
"%d (left {tv_sec=0, tv_nsec=%d})\n",
- fds[0], rc, (int) t.tv_nsec);
+ fds[0], rc, (int) ts->tv_nsec);
+
+ ts->tv_sec = 0xdeadbeefU;
+ ts->tv_nsec = 0xfacefeedU;
+
+ rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+ printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ fds[0], &mh, (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+ ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+ rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+ printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ fds[0], &mh, (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/recvmmsg-timeout.gen.test b/tests/recvmmsg-timeout.gen.test
new file mode 100755
index 0000000..6306de7
--- /dev/null
+++ b/tests/recvmmsg-timeout.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmmsg-timeout -a25 -e trace=recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests/recvmmsg-timeout.test b/tests/recvmmsg-timeout.test
deleted file mode 100755
index 36a1222..0000000
--- a/tests/recvmmsg-timeout.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of timeout argument of recvmmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests/recvmsg.gen.test b/tests/recvmsg.gen.test
new file mode 100755
index 0000000..fc8ef06
--- /dev/null
+++ b/tests/recvmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmsg -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests/recvmsg.test b/tests/recvmsg.test
deleted file mode 100755
index e373a20..0000000
--- a/tests/recvmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of recvmsg and sendmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests/redirect-fds.test b/tests/redirect-fds.test
index ddef8fa..3da6942 100755
--- a/tests/redirect-fds.test
+++ b/tests/redirect-fds.test
@@ -3,6 +3,7 @@
# Check that strace does not leak placeholder descriptors.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -47,18 +48,17 @@
a2="$2"
a3="$3"
+ rm -f "$LOG" "$fd0" "$fd1" "$fd2"
touch "$LOG" "$fd0" ||
framework_skip_ 'failed to create files'
- set -- "\"./$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
+ set -- "\"../$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
fail_ "$* failed with code $rc"
set -- "$STRACE" -o"$LOG" -echdir "$@"
eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
dump_log_and_fail_with "$* failed with code $?"
-
- rm -f "$LOG" "$fd0" "$fd1" "$fd2"
}
check_fd "$fd0" "$fd1" "$fd2"
diff --git a/tests/redirect.test b/tests/redirect.test
index fa0c536..d70754e 100755
--- a/tests/redirect.test
+++ b/tests/redirect.test
@@ -3,6 +3,7 @@
# Ensure that strace does not retain stdin and stdout descriptors.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -74,5 +75,3 @@
if [ -s "$OUT" ]; then
fail_ "$STRACE failed to redirect standard output"
fi
-
-rm -f -- "$OUT"
diff --git a/tests/regex.gen.test b/tests/regex.gen.test
new file mode 100755
index 0000000..71a02d6
--- /dev/null
+++ b/tests/regex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (regex test_trace_expr '' -etrace='/^(.*_)?statv?fs'); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -etrace='/^(.*_)?statv?fs'
diff --git a/tests/regex.in b/tests/regex.in
new file mode 100755
index 0000000..7c4adfe
--- /dev/null
+++ b/tests/regex.in
@@ -0,0 +1,2 @@
+statfs -a17
+statfs64 -a23
diff --git a/tests/remap_file_pages.gen.test b/tests/remap_file_pages.gen.test
new file mode 100755
index 0000000..e489473
--- /dev/null
+++ b/tests/remap_file_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/remap_file_pages.test b/tests/remap_file_pages.test
deleted file mode 100755
index 9d51a9a..0000000
--- a/tests/remap_file_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check remap_file_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/rename.gen.test b/tests/rename.gen.test
new file mode 100755
index 0000000..07f0180
--- /dev/null
+++ b/tests/rename.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/rename.test b/tests/rename.test
deleted file mode 100755
index 9067e4c..0000000
--- a/tests/rename.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rename syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/renameat.gen.test b/tests/renameat.gen.test
new file mode 100755
index 0000000..f2879cd
--- /dev/null
+++ b/tests/renameat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/renameat.test b/tests/renameat.test
deleted file mode 100755
index 9b0a61d..0000000
--- a/tests/renameat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/renameat2.gen.test b/tests/renameat2.gen.test
new file mode 100755
index 0000000..cd7c34c
--- /dev/null
+++ b/tests/renameat2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/renameat2.test b/tests/renameat2.test
deleted file mode 100755
index 4c176bb..0000000
--- a/tests/renameat2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/request_key.gen.test b/tests/request_key.gen.test
new file mode 100755
index 0000000..aeac708
--- /dev/null
+++ b/tests/request_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (request_key -a33 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -s12
diff --git a/tests/request_key.test b/tests/request_key.test
deleted file mode 100755
index 9812a18..0000000
--- a/tests/request_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of request_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -s12
diff --git a/tests/restart_syscall.c b/tests/restart_syscall.c
index e492e62..d06f9c2 100644
--- a/tests/restart_syscall.c
+++ b/tests/restart_syscall.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -55,11 +56,11 @@
if (nanosleep(&req, &rem))
perror_msg_and_fail("nanosleep");
- printf("nanosleep\\(\\{tv_sec=%jd, tv_nsec=%jd\\}, "
- "\\{tv_sec=%jd, tv_nsec=%jd\\}\\)"
+ printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
+ ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
" = \\? 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);
+ (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+ (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
#ifdef __arm__
/* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -67,11 +68,12 @@
#else
# define ALTERNATIVE_NANOSLEEP_REQ ""
#endif
- printf("(nanosleep\\((%s\\{tv_sec=%jd, tv_nsec=%jd\\}), "
- "%p|restart_syscall\\(<\\.\\.\\."
+ printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
+ ", %p|restart_syscall\\(<\\.\\.\\."
" resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
ALTERNATIVE_NANOSLEEP_REQ,
- (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec, &rem);
+ (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+ &rem);
puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
return 0;
diff --git a/tests/restart_syscall.test b/tests/restart_syscall.test
index 6dfda16..f7dfa04 100755
--- a/tests/restart_syscall.test
+++ b/tests/restart_syscall.test
@@ -6,8 +6,5 @@
run_prog > /dev/null
syscalls=nanosleep,restart_syscall
-run_strace -a20 -e trace=$syscalls $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -e trace=$syscalls $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests/rmdir.gen.test b/tests/rmdir.gen.test
new file mode 100755
index 0000000..b511039
--- /dev/null
+++ b/tests/rmdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/rmdir.test b/tests/rmdir.test
deleted file mode 100755
index 81ee66b..0000000
--- a/tests/rmdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rmdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/rt_sigpending.c b/tests/rt_sigpending.c
index accf691..b57921f 100644
--- a/tests/rt_sigpending.c
+++ b/tests/rt_sigpending.c
@@ -2,6 +2,7 @@
* This file is part of rt_sigpending strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -78,7 +79,7 @@
const unsigned int big_size = 1024 / 8;
void *k_set = tail_alloc(big_size);
- sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
sigemptyset(libc_set);
if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests/rt_sigpending.gen.test b/tests/rt_sigpending.gen.test
new file mode 100755
index 0000000..0458876
--- /dev/null
+++ b/tests/rt_sigpending.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigpending -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/rt_sigpending.test b/tests/rt_sigpending.test
deleted file mode 100755
index 40c83a8..0000000
--- a/tests/rt_sigpending.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigpending syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/rt_sigprocmask.c b/tests/rt_sigprocmask.c
index 27e357f..c38ac94 100644
--- a/tests/rt_sigprocmask.c
+++ b/tests/rt_sigprocmask.c
@@ -2,6 +2,7 @@
* This file is part of rt_sigprocmask strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -91,7 +92,7 @@
void *const k_set = tail_alloc(set_size);
void *const old_set = tail_alloc(set_size);
- sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
memset(k_set, 0, set_size);
if (k_sigprocmask(SIG_SETMASK, k_set, NULL, set_size))
diff --git a/tests/rt_sigprocmask.gen.test b/tests/rt_sigprocmask.gen.test
new file mode 100755
index 0000000..a21c6db
--- /dev/null
+++ b/tests/rt_sigprocmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/rt_sigprocmask.test b/tests/rt_sigprocmask.test
deleted file mode 100755
index 1e60ebd..0000000
--- a/tests/rt_sigprocmask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigprocmask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/rt_sigqueueinfo.c b/tests/rt_sigqueueinfo.c
index aba6776..f803d91 100644
--- a/tests/rt_sigqueueinfo.c
+++ b/tests/rt_sigqueueinfo.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015 Elvira Khabirova <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/rt_sigqueueinfo.gen.test b/tests/rt_sigqueueinfo.gen.test
new file mode 100755
index 0000000..7baf0e4
--- /dev/null
+++ b/tests/rt_sigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal=none
diff --git a/tests/rt_sigqueueinfo.test b/tests/rt_sigqueueinfo.test
deleted file mode 100755
index c03c76f..0000000
--- a/tests/rt_sigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_sigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/rt_sigreturn.c b/tests/rt_sigreturn.c
new file mode 100644
index 0000000..40d1589
--- /dev/null
+++ b/tests/rt_sigreturn.c
@@ -0,0 +1,79 @@
+/*
+ * 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 <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef ASM_SIGRTMIN
+# define RT_0 ASM_SIGRTMIN
+#else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+# define RT_0 32
+#endif
+
+static void
+handler(int no, siginfo_t *si, void *uc)
+{
+}
+
+int
+main(void)
+{
+ static sigset_t set;
+ sigemptyset(&set);
+ sigaddset(&set, SIGINT);
+ sigaddset(&set, SIGUSR2);
+ sigaddset(&set, SIGCHLD);
+ sigaddset(&set, RT_0 + 3);
+ sigaddset(&set, RT_0 + 4);
+ sigaddset(&set, RT_0 + 5);
+ sigaddset(&set, RT_0 + 26);
+ sigaddset(&set, RT_0 + 27);
+ if (sigprocmask(SIG_SETMASK, &set, NULL))
+ perror_msg_and_fail("sigprocmask");
+ sigemptyset(&set);
+
+ static const struct sigaction sa = {
+ .sa_sigaction = handler,
+ .sa_flags = SA_SIGINFO
+ };
+ if (sigaction(SIGUSR1, &sa, NULL))
+ perror_msg_and_fail("sigaction");
+
+ if (raise(SIGUSR1))
+ perror_msg_and_fail("raise");
+
+ static const char *const sigs =
+ (SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+ static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+ printf("rt_sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/rt_sigreturn.gen.test b/tests/rt_sigreturn.gen.test
new file mode 100755
index 0000000..0672f11
--- /dev/null
+++ b/tests/rt_sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigreturn -esignal='!USR1'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal='!USR1'
diff --git a/tests/rt_sigsuspend.c b/tests/rt_sigsuspend.c
index 73e1336..422ec19 100644
--- a/tests/rt_sigsuspend.c
+++ b/tests/rt_sigsuspend.c
@@ -2,6 +2,7 @@
* This file is part of rt_sigsuspend strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -88,7 +89,7 @@
void *k_set = tail_alloc(big_size);
memset(k_set, 0, big_size);
- sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
sigemptyset(libc_set);
sigaddset(libc_set, SIGUSR1);
if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests/rt_sigsuspend.gen.test b/tests/rt_sigsuspend.gen.test
new file mode 100755
index 0000000..d5d1d5f
--- /dev/null
+++ b/tests/rt_sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigsuspend -a20 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -esignal=none
diff --git a/tests/rt_sigsuspend.test b/tests/rt_sigsuspend.test
deleted file mode 100755
index 2e30fd4..0000000
--- a/tests/rt_sigsuspend.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigsuspend syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -esignal=none
diff --git a/tests/rt_sigtimedwait.c b/tests/rt_sigtimedwait.c
index 10311e6..40544c7 100644
--- a/tests/rt_sigtimedwait.c
+++ b/tests/rt_sigtimedwait.c
@@ -2,6 +2,7 @@
* This file is part of rt_sigtimedwait strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -54,25 +55,27 @@
for (;;) {
assert(k_sigtimedwait(set, NULL, timeout, size) == -1);
if (EINTR == errno) {
- tprintf("rt_sigtimedwait(%s, NULL, "
- "{tv_sec=%jd, tv_nsec=%jd}, %u)"
+ tprintf("rt_sigtimedwait(%s, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %u)"
" = -1 EAGAIN (%m)\n", text,
- (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec,
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
size);
} else {
if (size < sizeof(long))
- tprintf("rt_sigtimedwait(%p, NULL, "
- "{tv_sec=%jd, tv_nsec=%jd}"
+ tprintf("rt_sigtimedwait(%p, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}"
", %u) = -1 EINVAL (%m)\n",
- set, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, size);
+ set, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
+ size);
else
- tprintf("rt_sigtimedwait(%s, NULL, "
- "{tv_sec=%jd, tv_nsec=%jd}"
+ tprintf("rt_sigtimedwait(%s, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}"
", %u) = -1 EINVAL (%m)\n",
- text, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, size);
+ text, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
+ size);
}
if (!size)
break;
@@ -86,8 +89,8 @@
{
tprintf("%s", "");
- siginfo_t *const info = tail_alloc(sizeof(*info));
- struct timespec *const timeout = tail_alloc(sizeof(*timeout));
+ TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, timeout);
timeout->tv_sec = 0;
timeout->tv_nsec = 42;
@@ -100,37 +103,58 @@
assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
if (EAGAIN == errno)
break;
- 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);
+ tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %u) = -1 EINVAL (%m)\n",
+ k_set, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
}
if (!set_size)
perror_msg_and_fail("rt_sigtimedwait");
- 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);
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
- sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+ timeout->tv_sec = 0xdeadbeefU;
+ timeout->tv_nsec = 0xfacefeedU;
+ assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %u) = -1 EINVAL (%m)\n",
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+ timeout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ timeout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %u) = -1 EINVAL (%m)\n",
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+ timeout->tv_sec = 0;
+ timeout->tv_nsec = 42;
+
+ TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
sigemptyset(libc_set);
sigaddset(libc_set, SIGHUP);
memcpy(k_set, libc_set, set_size);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- 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);
+ tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
sigaddset(libc_set, SIGINT);
memcpy(k_set, libc_set, set_size);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%jd, tv_nsec=%jd}, %u)"
+ tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
" = -1 EAGAIN (%m)\n",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
sigaddset(libc_set, SIGQUIT);
sigaddset(libc_set, SIGALRM);
@@ -139,17 +163,19 @@
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
+ tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
"[HUP INT QUIT ALRM TERM]",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
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, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
if (sigprocmask(SIG_SETMASK, libc_set, NULL))
perror_msg_and_fail("sigprocmask");
@@ -164,9 +190,11 @@
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}, {tv_sec=%jd, tv_nsec=%jd}, %u) = %d (%s)\n",
+ ", si_pid=%d, si_uid=%d}, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = %d (%s)\n",
"[HUP INT QUIT ALRM TERM]", "SIGALRM", getpid(), getuid(),
- (intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
set_size, SIGALRM, "SIGALRM");
raise(SIGALRM);
diff --git a/tests/rt_sigtimedwait.gen.test b/tests/rt_sigtimedwait.gen.test
new file mode 100755
index 0000000..2b18e7a
--- /dev/null
+++ b/tests/rt_sigtimedwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigtimedwait -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a38
diff --git a/tests/rt_sigtimedwait.test b/tests/rt_sigtimedwait.test
deleted file mode 100755
index e15fb77..0000000
--- a/tests/rt_sigtimedwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigtimedwait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests/rt_tgsigqueueinfo.c b/tests/rt_tgsigqueueinfo.c
index ec09348..3b2da2a 100644
--- a/tests/rt_tgsigqueueinfo.c
+++ b/tests/rt_tgsigqueueinfo.c
@@ -2,6 +2,7 @@
* This file is part of rt_tgsigqueueinfo strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -42,9 +43,9 @@
k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
{
return syscall(__NR_rt_tgsigqueueinfo,
- (unsigned long) 0xffffffff00000000ULL | pid,
- (unsigned long) 0xffffffff00000000ULL | pid,
- (unsigned long) 0xffffffff00000000ULL | sig,
+ F8ILL_KULONG_MASK | pid,
+ F8ILL_KULONG_MASK | pid,
+ F8ILL_KULONG_MASK | sig,
info);
}
@@ -57,7 +58,7 @@
if (sigaction(SIGUSR1, &sa, NULL))
perror_msg_and_fail("sigaction");
- siginfo_t *const info = tail_alloc(sizeof(*info));
+ TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
memset(info, 0, sizeof(*info));
info->si_signo = SIGUSR1;
info->si_errno = ENOENT;
diff --git a/tests/rt_tgsigqueueinfo.gen.test b/tests/rt_tgsigqueueinfo.gen.test
new file mode 100755
index 0000000..407bbff
--- /dev/null
+++ b/tests/rt_tgsigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal=none
diff --git a/tests/rt_tgsigqueueinfo.test b/tests/rt_tgsigqueueinfo.test
deleted file mode 100755
index ab24e2d..0000000
--- a/tests/rt_tgsigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_tgsigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/sched.gen.test b/tests/sched.gen.test
new file mode 100755
index 0000000..6747117
--- /dev/null
+++ b/tests/sched.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched test_trace_expr times -e/sched); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr times -e/sched
diff --git a/tests/sched.in b/tests/sched.in
new file mode 100755
index 0000000..46031d6
--- /dev/null
+++ b/tests/sched.in
@@ -0,0 +1,7 @@
+sched_xetaffinity -a28
+sched_xetparam -a23
+sched_rr_get_interval -a31
+sched_get_priority_mxx -a33
+sched_xetattr -a29
+sched_xetscheduler -a22
+sched_yield -a14
diff --git a/tests/sched_get_priority_mxx.gen.test b/tests/sched_get_priority_mxx.gen.test
new file mode 100755
index 0000000..a235997
--- /dev/null
+++ b/tests/sched_get_priority_mxx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests/sched_get_priority_mxx.test b/tests/sched_get_priority_mxx.test
deleted file mode 100755
index 0d1a1a7..0000000
--- a/tests/sched_get_priority_mxx.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_get_priority_min and sched_get_priority_max syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests/sched_rr_get_interval.c b/tests/sched_rr_get_interval.c
index 0aacd2b..000a0be 100644
--- a/tests/sched_rr_get_interval.c
+++ b/tests/sched_rr_get_interval.c
@@ -11,7 +11,7 @@
int
main(void)
{
- struct timespec *const tp = tail_alloc(sizeof(struct timespec));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tp);
long rc;
rc = syscall(__NR_sched_rr_get_interval, 0, NULL);
@@ -25,8 +25,10 @@
rc = syscall(__NR_sched_rr_get_interval, 0, tp);
if (rc == 0)
- printf("sched_rr_get_interval(0, {tv_sec=%jd, tv_nsec=%jd}) = "
- "0\n", (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+ printf("sched_rr_get_interval(0, {tv_sec=%lld, tv_nsec=%llu})"
+ " = 0\n",
+ (long long) tp->tv_sec,
+ zero_extend_signed_to_ull(tp->tv_nsec));
else
printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
sprintrc(rc));
diff --git a/tests/sched_rr_get_interval.gen.test b/tests/sched_rr_get_interval.gen.test
new file mode 100755
index 0000000..493de64
--- /dev/null
+++ b/tests/sched_rr_get_interval.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_rr_get_interval -a31); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31
diff --git a/tests/sched_rr_get_interval.test b/tests/sched_rr_get_interval.test
deleted file mode 100755
index 828ba5d..0000000
--- a/tests/sched_rr_get_interval.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_rr_get_interval syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests/sched_xetaffinity.gen.test b/tests/sched_xetaffinity.gen.test
new file mode 100755
index 0000000..7a1c75b
--- /dev/null
+++ b/tests/sched_xetaffinity.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests/sched_xetaffinity.test b/tests/sched_xetaffinity.test
deleted file mode 100755
index 246ea21..0000000
--- a/tests/sched_xetaffinity.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getaffinity and sched_setaffinity syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests/sched_xetattr.c b/tests/sched_xetattr.c
index 1b48491..a9bd2ba 100644
--- a/tests/sched_xetattr.c
+++ b/tests/sched_xetattr.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
@@ -32,95 +32,214 @@
# include <inttypes.h>
# include <stdio.h>
+# include <sched.h>
# include <unistd.h>
+# include "sched_attr.h"
+# include "xlat.h"
+# include "xlat/schedulers.h"
+
+static const char *errstr;
+
+static long
+sys_sched_getattr(kernel_ulong_t pid, kernel_ulong_t attr,
+ kernel_ulong_t size, kernel_ulong_t flags)
+{
+ long rc = syscall(__NR_sched_getattr, pid, attr, size, flags);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+static long
+sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
+{
+ long rc = syscall(__NR_sched_setattr, pid, attr, flags);
+ errstr = sprintrc(rc);
+ return rc;
+}
int
main(void)
{
- struct {
- uint32_t size;
- uint32_t sched_policy;
- uint64_t sched_flags;
- int32_t sched_nice;
- uint32_t sched_priority;
- uint64_t sched_runtime;
- uint64_t sched_deadline;
- uint64_t sched_period;
- } *sched_attr = tail_alloc(sizeof(*sched_attr));
+ static const kernel_ulong_t bogus_pid =
+ (kernel_ulong_t) 0xdefacedfacefeedULL;
+ static const kernel_ulong_t bogus_size =
+ (kernel_ulong_t) 0xdefacedcafef00dULL;
+ static const kernel_ulong_t bogus_flags =
+ (kernel_ulong_t) 0xdefaceddeadc0deULL;
- long rc = syscall(__NR_sched_getattr, 0xdeadface, NULL, 0, 0);
- printf("sched_getattr\\(%d, NULL, 0, 0\\) += %s\n",
- 0xdeadface, sprintrc_grep(rc));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
+ TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
+ void *const efault = attr + 1;
- rc = syscall(__NR_sched_getattr, -1,
- sched_attr, 0xbadfaced, 0xc0defeed);
- printf("sched_getattr\\(-1, %p, %u, %u\\) += %s\n",
- sched_attr, 0xbadfaced, 0xc0defeed, sprintrc_grep(rc));
+ sys_sched_getattr(0, 0, 0, 0);
+ printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
- rc = syscall(__NR_sched_getattr, 0,
- sched_attr + 1, sizeof(*sched_attr), 0);
- printf("sched_getattr\\(0, %p, %u, 0\\) += %s\n",
- sched_attr + 1, (unsigned)sizeof(*sched_attr),
- sprintrc_grep(rc));
+ sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+ printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
- if (syscall(__NR_sched_getattr, 0, sched_attr, sizeof(*sched_attr), 0))
+ sys_sched_getattr(bogus_pid, 0, 0, 0);
+ printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
+
+ sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+ printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
+ attr,
+# if defined __arm64__ || defined __aarch64__
+ "0xdefaced<<32|",
+# else
+ "",
+# endif
+ (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
+
+ sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+ printf("sched_getattr(0, %p, %u, 0) = %s\n",
+ efault, (unsigned) sizeof(*attr), errstr);
+
+ if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
perror_msg_and_skip("sched_getattr");
-
- printf("sched_getattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
- ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+ printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+ printxval(schedulers, attr->sched_policy, NULL);
+ printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
- ", sched_period=%" PRIu64 "\\}, %u, 0\\) += 0\n",
- sched_attr->size,
- sched_attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
- sched_attr->sched_nice,
- sched_attr->sched_priority,
- sched_attr->sched_runtime,
- sched_attr->sched_deadline,
- sched_attr->sched_period,
- (unsigned) sizeof(*sched_attr));
+ ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+ attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+ attr->sched_nice,
+ attr->sched_priority,
+ attr->sched_runtime,
+ attr->sched_deadline,
+ attr->sched_period,
+ (unsigned) sizeof(*attr));
- sched_attr->sched_flags |= 1;
- if (syscall(__NR_sched_setattr, 0, sched_attr, 0))
+# if defined __arm64__ || defined __aarch64__
+ long rc =
+# endif
+ sys_sched_getattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+ F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
+# if defined __arm64__ || defined __aarch64__
+ if (rc) {
+ printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
+ attr, (unsigned) sizeof(*attr), errstr);
+ } else
+# endif
+ {
+ printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+ printxval(schedulers, attr->sched_policy, NULL);
+ printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+ ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+ ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+ attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+ attr->sched_nice,
+ attr->sched_priority,
+ attr->sched_runtime,
+ attr->sched_deadline,
+ attr->sched_period,
+ (unsigned) sizeof(*attr));
+ }
+
+ sys_sched_setattr(bogus_pid, 0, 0);
+ printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
+
+ attr->sched_flags |= 1;
+
+ if (sys_sched_setattr(0, (unsigned long) attr, 0))
perror_msg_and_skip("sched_setattr");
-
- printf("sched_setattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
- ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+ printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+ printxval(schedulers, attr->sched_policy, NULL);
+ printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
- ", sched_period=%" PRIu64 "\\}, 0\\) += 0\n",
- sched_attr->size,
+ ", sched_period=%" PRIu64 "}, 0) = 0\n",
"SCHED_FLAG_RESET_ON_FORK",
- sched_attr->sched_nice,
- sched_attr->sched_priority,
- sched_attr->sched_runtime,
- sched_attr->sched_deadline,
- sched_attr->sched_period);
+ attr->sched_nice,
+ attr->sched_priority,
+ attr->sched_runtime,
+ attr->sched_deadline,
+ attr->sched_period);
- sched_attr->size = 0x90807060;
- sched_attr->sched_policy = 0xca7faced;
- sched_attr->sched_flags = 0xbadc0ded1057da7aULL;
- sched_attr->sched_nice = 0xafbfcfdf;
- sched_attr->sched_priority = 0xb8c8d8e8;
- sched_attr->sched_runtime = 0xbadcaffedeadf157ULL;
- sched_attr->sched_deadline = 0xc0de70a57badac75ULL;
- sched_attr->sched_period = 0xded1ca7edda7aca7ULL;
+ sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+ F8ILL_KULONG_MASK);
+ printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+ printxval(schedulers, attr->sched_policy, NULL);
+ printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+ ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+ ", sched_period=%" PRIu64 "}, 0) = 0\n",
+ "SCHED_FLAG_RESET_ON_FORK",
+ attr->sched_nice,
+ attr->sched_priority,
+ attr->sched_runtime,
+ attr->sched_deadline,
+ attr->sched_period);
- rc = syscall(__NR_sched_setattr, 0xfacec0de, sched_attr, 0xbeeff00d);
+ *psize = attr->size;
- printf("sched_setattr\\(%d, \\{size=%u, "
- "sched_policy=%#x /\\* SCHED_\\?\\?\\? \\*/, "
- "sched_flags=%#" PRIx64 " /\\* SCHED_FLAG_\\?\\?\\? \\*/, "
- "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
- "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, "
- "%u\\) += %s\n",
- 0xfacec0de, sched_attr->size,
- sched_attr->sched_policy,
- sched_attr->sched_flags,
- sched_attr->sched_nice,
- sched_attr->sched_priority,
- sched_attr->sched_runtime,
- sched_attr->sched_deadline,
- sched_attr->sched_period, 0xbeeff00d, sprintrc_grep(rc));
+ sys_sched_setattr(0, (unsigned long) psize, 0);
+ printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
+ attr->size = 0;
+
+ sys_sched_setattr(0, (unsigned long) attr, 0);
+ printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+ printxval(schedulers, attr->sched_policy, NULL);
+ printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+ ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+ ", sched_period=%" PRIu64 "}, 0) = 0\n",
+ "SCHED_FLAG_RESET_ON_FORK",
+ attr->sched_nice,
+ attr->sched_priority,
+ attr->sched_runtime,
+ attr->sched_deadline,
+ attr->sched_period);
+
+ attr->size = 1;
+
+ sys_sched_setattr(0, (unsigned long) attr, 0);
+ printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+ 1, attr->size, errstr);
+
+ attr->size = SCHED_ATTR_MIN_SIZE - 1;
+
+ sys_sched_setattr(0, (unsigned long) attr, 0);
+ printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+ SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
+
+ attr->size = 0x90807060;
+ attr->sched_policy = 0xca7faced;
+ attr->sched_flags = 0xbadc0ded1057da7aULL;
+ attr->sched_nice = 0xafbfcfdf;
+ attr->sched_priority = 0xb8c8d8e8;
+ attr->sched_runtime = 0xbadcaffedeadf157ULL;
+ attr->sched_deadline = 0xc0de70a57badac75ULL;
+ attr->sched_period = 0xded1ca7edda7aca7ULL;
+
+ sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+ printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+ "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
+ "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+ "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+ " = %s\n",
+ (int) bogus_pid,
+ attr->size,
+ attr->sched_policy,
+ attr->sched_flags,
+ attr->sched_nice,
+ attr->sched_priority,
+ attr->sched_runtime,
+ attr->sched_deadline,
+ attr->sched_period,
+ (unsigned) bogus_flags, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+ sys_sched_getattr(0, ill, sizeof(*attr), 0);
+ printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+ (unsigned long long) ill, (unsigned) sizeof(*attr),
+ errstr);
+
+ sys_sched_setattr(0, ill, 0);
+ printf("sched_setattr(0, %#llx, 0) = %s\n",
+ (unsigned long long) ill, errstr);
+ }
+
+ puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/sched_xetattr.gen.test b/tests/sched_xetattr.gen.test
new file mode 100755
index 0000000..e4f31c5
--- /dev/null
+++ b/tests/sched_xetattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=sched_getattr,sched_setattr
diff --git a/tests/sched_xetattr.test b/tests/sched_xetattr.test
deleted file mode 100755
index c2c7914..0000000
--- a/tests/sched_xetattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check sched_getattr and sched_setattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e sched_getattr,sched_setattr $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/sched_xetparam.gen.test b/tests/sched_xetparam.gen.test
new file mode 100755
index 0000000..220ffb2
--- /dev/null
+++ b/tests/sched_xetparam.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests/sched_xetparam.test b/tests/sched_xetparam.test
deleted file mode 100755
index c9fede1..0000000
--- a/tests/sched_xetparam.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getparam and sched_setparam syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests/sched_xetscheduler.c b/tests/sched_xetscheduler.c
index 7faee8c..8248a0c 100644
--- a/tests/sched_xetscheduler.c
+++ b/tests/sched_xetscheduler.c
@@ -10,7 +10,7 @@
int
main(void)
{
- struct sched_param *const param = tail_alloc(sizeof(struct sched_param));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
long rc = syscall(__NR_sched_getscheduler, 0);
const char *scheduler;
switch (rc) {
diff --git a/tests/sched_xetscheduler.gen.test b/tests/sched_xetscheduler.gen.test
new file mode 100755
index 0000000..0a80072
--- /dev/null
+++ b/tests/sched_xetscheduler.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests/sched_xetscheduler.test b/tests/sched_xetscheduler.test
deleted file mode 100755
index 07c93f3..0000000
--- a/tests/sched_xetscheduler.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getscheduler and sched_setscheduler syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests/sched_yield.gen.test b/tests/sched_yield.gen.test
new file mode 100755
index 0000000..3f4542f
--- /dev/null
+++ b/tests/sched_yield.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_yield -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/sched_yield.test b/tests/sched_yield.test
deleted file mode 100755
index f0c2c30..0000000
--- a/tests/sched_yield.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_yield syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/scm_rights-fd.test b/tests/scm_rights-fd.test
index 8447375..279666e 100755
--- a/tests/scm_rights-fd.test
+++ b/tests/scm_rights-fd.test
@@ -3,6 +3,7 @@
# Check how SCM_RIGHTS and SCM_CREDENTIALS control messages are decoded in -y mode.
#
# Copyright (c) 2014-2015 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -34,22 +35,19 @@
framework_skip_ '/proc/self/fd/ is not available'
check_prog mkdir
-check_prog rm
check_prog seq
check_prog touch
-dir="$LOG.dir"
-rm -rf -- "$dir"
-mkdir -- "$dir" ||
+mkdir dir ||
framework_skip_ 'failed to create a directory'
-file="$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
+file="dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
touch -- "$file" ||
framework_skip_ 'failed to create a file'
-run_prog ./scm_rights /dev/zero
-run_strace -y -x -enetwork $args "$file"
+run_prog ../scm_rights /dev/zero
+run_strace -y -x -e%network $args "$file"
hex='[[:xdigit:]]'
n='[1-9][0-9]*'
@@ -66,15 +64,9 @@
rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, cmsg_data='"$rights_data"'\}'
creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data='"$ids"'\}'
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
sendmsg\\(3$socket, $msg_head\\[$rights\\]$msg_tail\\}, 0\\) = 15
recvmsg\\(0$socket, $msg_head\\[$creds, $rights\\]$msg_tail\\}, 0\\) = 15
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-rm -rf -- "$dir"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests/scm_rights.c b/tests/scm_rights.c
index 42caed7..632cf91 100644
--- a/tests/scm_rights.c
+++ b/tests/scm_rights.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2014-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,11 +45,11 @@
void *data = tail_alloc(data_size);
memcpy(data, sample, data_size);
- struct iovec *iov = tail_alloc(sizeof(struct iovec));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
iov->iov_base = data;
iov->iov_len = data_size;
- struct msghdr *mh = tail_alloc(sizeof(struct msghdr));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
memset(mh, 0, sizeof(*mh));
mh->msg_iov = iov;
mh->msg_iovlen = 1;
diff --git a/tests/scno_tampering.sh b/tests/scno_tampering.sh
index 6aa7843..094175e 100755
--- a/tests/scno_tampering.sh
+++ b/tests/scno_tampering.sh
@@ -3,6 +3,7 @@
# Skip the test if arch+kernel combination is not supported.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
diff --git a/tests/seccomp-filter-v.c b/tests/seccomp-filter-v.c
index dbf686d..fe88ac7 100644
--- a/tests/seccomp-filter-v.c
+++ b/tests/seccomp-filter-v.c
@@ -2,6 +2,7 @@
* Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -105,7 +106,7 @@
tail_memdup(filter_c, sizeof(filter_c));
struct sock_filter *const big_filter =
tail_alloc(sizeof(*big_filter) * (BPF_MAXINSNS + 1));
- struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
int fds[2];
if (pipe(fds))
diff --git a/tests/seccomp-filter-v.gen.test b/tests/seccomp-filter-v.gen.test
new file mode 100755
index 0000000..efce637
--- /dev/null
+++ b/tests/seccomp-filter-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter-v -v -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=seccomp
diff --git a/tests/seccomp-filter-v.test b/tests/seccomp-filter-v.test
deleted file mode 100755
index f873eb6..0000000
--- a/tests/seccomp-filter-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=seccomp
diff --git a/tests/seccomp-filter.c b/tests/seccomp-filter.c
index d4d76dd..e2bea06 100644
--- a/tests/seccomp-filter.c
+++ b/tests/seccomp-filter.c
@@ -2,6 +2,7 @@
* Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -49,7 +50,7 @@
{
struct sock_filter *const filter = tail_alloc(sizeof(*filter) * N);
const void *const efault = tail_alloc(1);
- struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
long rc;
prog->filter = filter;
diff --git a/tests/seccomp-filter.gen.test b/tests/seccomp-filter.gen.test
new file mode 100755
index 0000000..52af0d5
--- /dev/null
+++ b/tests/seccomp-filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests/seccomp-filter.test b/tests/seccomp-filter.test
deleted file mode 100755
index 65c6d49..0000000
--- a/tests/seccomp-filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=seccomp
diff --git a/tests/seccomp-strict.test b/tests/seccomp-strict.test
index b354c6a..b039871 100755
--- a/tests/seccomp-strict.test
+++ b/tests/seccomp-strict.test
@@ -4,7 +4,7 @@
. "${srcdir=.}/init.sh"
-set -- "./$NAME"
+set -- "../$NAME"
"$@" > /dev/null || {
case $? in
77) skip_ "$* exited with code 77" ;;
@@ -14,4 +14,3 @@
}
run_strace -eseccomp "$@" > "$EXP"
match_diff "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/select.gen.test b/tests/select.gen.test
new file mode 100755
index 0000000..cb3b8f1
--- /dev/null
+++ b/tests/select.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/select.test b/tests/select.test
deleted file mode 100755
index 60b88ca..0000000
--- a/tests/select.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/semop.c b/tests/semop.c
index a2ff263..3d1f384 100644
--- a/tests/semop.c
+++ b/tests/semop.c
@@ -33,9 +33,7 @@
static void * const bogus_sops = (void *) -1L;
static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
- static const struct timespec ts_data = { 1, 123456789 };
-
- struct timespec *ts = tail_memdup(&ts_data, sizeof(*ts));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
int rc;
id = semget(IPC_PRIVATE, 1, 0600);
@@ -47,8 +45,8 @@
if (semctl(id, 0, SETVAL, sem_union) == -1)
perror_msg_and_skip("semctl");
- struct sembuf *const sem_b = tail_alloc(sizeof(*sem_b));
- struct sembuf *const sem_b2 = tail_alloc(sizeof(*sem_b2));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
rc = semop(bogus_semid, NULL, bogus_nsops);
printf("semop(%d, NULL, %u) = %s\n",
@@ -91,15 +89,17 @@
printf("semtimedop(%d, %p, 1, %p) = %s\n",
id, sem_b + 1, ts + 1, sprintrc(rc));
+ ts->tv_sec = 1;
+ ts->tv_nsec = 123456789;
rc = semtimedop(bogus_semid, sem_b2, 2, ts);
- printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, "
- "{tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+ printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT),
sem_b2 + 1, 2,
- (intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec,
+ (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
sprintrc(rc));
sem_b->sem_op = 1;
@@ -110,9 +110,27 @@
sem_b->sem_op = -1;
if (semtimedop(id, sem_b, 1, ts))
perror_msg_and_skip("semtimedop, -1");
- printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, "
- "{tv_sec=%jd, tv_nsec=%jd}) = 0\n", id,
- (intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec);
+ printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+ (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+ sem_b->sem_op = 1;
+ ts->tv_sec = 0xdeadbeefU;
+ ts->tv_nsec = 0xfacefeedU;
+ rc = semtimedop(id, sem_b, 1, ts);
+ printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ id, (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+ sem_b->sem_op = -1;
+ ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ rc = semtimedop(id, sem_b, 1, ts);
+ printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+ ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+ id, (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/semop.gen.test b/tests/semop.gen.test
new file mode 100755
index 0000000..21b67ea
--- /dev/null
+++ b/tests/semop.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests/semop.test b/tests/semop.test
deleted file mode 100755
index 3e77d2f..0000000
--- a/tests/semop.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check semop syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests/sendfile.c b/tests/sendfile.c
index 23f096b..9253c10 100644
--- a/tests/sendfile.c
+++ b/tests/sendfile.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -69,7 +70,7 @@
printf("sendfile(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
(unsigned long) page_len);
- uint32_t *p_off = tail_alloc(sizeof(uint32_t));
+ TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
void *p = p_off + 1;
*p_off = 0;
diff --git a/tests/sendfile.gen.test b/tests/sendfile.gen.test
new file mode 100755
index 0000000..433878f
--- /dev/null
+++ b/tests/sendfile.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/sendfile.test b/tests/sendfile.test
deleted file mode 100755
index 48dba58..0000000
--- a/tests/sendfile.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/sendfile64.c b/tests/sendfile64.c
index 7208c30..de02400 100644
--- a/tests/sendfile64.c
+++ b/tests/sendfile64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -69,7 +70,7 @@
printf("sendfile64(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
(unsigned long) page_len);
- uint64_t *p_off = tail_alloc(sizeof(uint64_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
void *p = p_off + 1;
*p_off = 0;
diff --git a/tests/sendfile64.gen.test b/tests/sendfile64.gen.test
new file mode 100755
index 0000000..1655dd3
--- /dev/null
+++ b/tests/sendfile64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29
diff --git a/tests/sendfile64.test b/tests/sendfile64.test
deleted file mode 100755
index faa0525..0000000
--- a/tests/sendfile64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
diff --git a/tests/set_mempolicy.gen.test b/tests/set_mempolicy.gen.test
new file mode 100755
index 0000000..f8c81c7
--- /dev/null
+++ b/tests/set_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a35
diff --git a/tests/set_mempolicy.test b/tests/set_mempolicy.test
deleted file mode 100755
index 0ed6666..0000000
--- a/tests/set_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check set_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
diff --git a/tests/set_ptracer_any.c b/tests/set_ptracer_any.c
index bc2f90c..3b4ea2c 100644
--- a/tests/set_ptracer_any.c
+++ b/tests/set_ptracer_any.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2013-2015 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2013-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/setdomainname.gen.test b/tests/setdomainname.gen.test
new file mode 100755
index 0000000..2b12e08
--- /dev/null
+++ b/tests/setdomainname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/setdomainname.test b/tests/setdomainname.test
deleted file mode 100755
index 2159e7c..0000000
--- a/tests/setdomainname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setdomainname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/setfsgid.gen.test b/tests/setfsgid.gen.test
new file mode 100755
index 0000000..caff401
--- /dev/null
+++ b/tests/setfsgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setfsgid.test b/tests/setfsgid.test
deleted file mode 100755
index 0ae2b0a..0000000
--- a/tests/setfsgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/setfsgid32.gen.test b/tests/setfsgid32.gen.test
new file mode 100755
index 0000000..fae29e0
--- /dev/null
+++ b/tests/setfsgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/setfsgid32.test b/tests/setfsgid32.test
deleted file mode 100755
index 9b7a2bf..0000000
--- a/tests/setfsgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/setfsugid.c b/tests/setfsugid.c
index 79ba34d..7484db5 100644
--- a/tests/setfsugid.c
+++ b/tests/setfsugid.c
@@ -2,6 +2,7 @@
* Check decoding of setfsuid/setfsgid/setfsuid32/setfsgid32 syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,7 +48,7 @@
const kernel_ulong_t tests[] = {
ugid,
0xffff0000U | ugid,
- (kernel_ulong_t) 0xffffffff00000000ULL | ugid,
+ F8ILL_KULONG_MASK | ugid,
0xffffU,
-1U,
-1L,
diff --git a/tests/setfsuid.gen.test b/tests/setfsuid.gen.test
new file mode 100755
index 0000000..e4c4d20
--- /dev/null
+++ b/tests/setfsuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setfsuid.test b/tests/setfsuid.test
deleted file mode 100755
index 18a1021..0000000
--- a/tests/setfsuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/setfsuid32.gen.test b/tests/setfsuid32.gen.test
new file mode 100755
index 0000000..b6cd67d
--- /dev/null
+++ b/tests/setfsuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/setfsuid32.test b/tests/setfsuid32.test
deleted file mode 100755
index 2dce3cc..0000000
--- a/tests/setfsuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/setgid.gen.test b/tests/setgid.gen.test
new file mode 100755
index 0000000..f10add6
--- /dev/null
+++ b/tests/setgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/setgid.test b/tests/setgid.test
deleted file mode 100755
index a3a9004..0000000
--- a/tests/setgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/setgid32.gen.test b/tests/setgid32.gen.test
new file mode 100755
index 0000000..26f194e
--- /dev/null
+++ b/tests/setgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setgid32.test b/tests/setgid32.test
deleted file mode 100755
index 11a87e1..0000000
--- a/tests/setgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/setgroups.c b/tests/setgroups.c
index 1ec8333..5645c22 100644
--- a/tests/setgroups.c
+++ b/tests/setgroups.c
@@ -2,6 +2,7 @@
* Check decoding of setgroups/setgroups32 syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -75,7 +76,7 @@
long rc = syscall(SYSCALL_NR, 0, 0);
printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
- rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+ rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
rc = syscall(SYSCALL_NR, 1, 0);
@@ -91,7 +92,7 @@
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(const GID_TYPE, g1);
GID_TYPE *const g2 = tail_alloc(sizeof(*g2) * 2);
GID_TYPE *const g3 = tail_alloc(sizeof(*g3) * 3);
@@ -164,9 +165,7 @@
printuid(g3[1]);
printf(", ...]) = %s\n", errstr);
- const unsigned long size =
- (unsigned long) 0xffffffff00000000ULL | ngroups_max;
- rc = syscall(SYSCALL_NR, size, g3);
+ rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, g3);
errstr = sprintrc(rc);
printf("%s(%d, [", SYSCALL_NAME, ngroups_max);
printuid(g3[0]);
diff --git a/tests/setgroups.gen.test b/tests/setgroups.gen.test
new file mode 100755
index 0000000..01ec2e7
--- /dev/null
+++ b/tests/setgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups -s2 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a17
diff --git a/tests/setgroups.test b/tests/setgroups.test
deleted file mode 100755
index 0dcc8f7..0000000
--- a/tests/setgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a17
diff --git a/tests/setgroups32.gen.test b/tests/setgroups32.gen.test
new file mode 100755
index 0000000..e9e70ad
--- /dev/null
+++ b/tests/setgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups32 -s2 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a19
diff --git a/tests/setgroups32.test b/tests/setgroups32.test
deleted file mode 100755
index ee4750d..0000000
--- a/tests/setgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a19
diff --git a/tests/sethostname.gen.test b/tests/sethostname.gen.test
new file mode 100755
index 0000000..2827b1d
--- /dev/null
+++ b/tests/sethostname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/sethostname.test b/tests/sethostname.test
deleted file mode 100755
index 78f8c58..0000000
--- a/tests/sethostname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sethostname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/setns.gen.test b/tests/setns.gen.test
new file mode 100755
index 0000000..45fcc60
--- /dev/null
+++ b/tests/setns.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setns.test b/tests/setns.test
deleted file mode 100755
index e9a905a..0000000
--- a/tests/setns.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/setregid.gen.test b/tests/setregid.gen.test
new file mode 100755
index 0000000..0125d7a
--- /dev/null
+++ b/tests/setregid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/setregid.test b/tests/setregid.test
deleted file mode 100755
index 101c7bd..0000000
--- a/tests/setregid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests/setregid32.gen.test b/tests/setregid32.gen.test
new file mode 100755
index 0000000..24f1505
--- /dev/null
+++ b/tests/setregid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/setregid32.test b/tests/setregid32.test
deleted file mode 100755
index e57e66c..0000000
--- a/tests/setregid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/setresgid.gen.test b/tests/setresgid.gen.test
new file mode 100755
index 0000000..ca5bc6b
--- /dev/null
+++ b/tests/setresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/setresgid.test b/tests/setresgid.test
deleted file mode 100755
index 5a69574..0000000
--- a/tests/setresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/setresgid32.gen.test b/tests/setresgid32.gen.test
new file mode 100755
index 0000000..a5edb90
--- /dev/null
+++ b/tests/setresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setresgid32.test b/tests/setresgid32.test
deleted file mode 100755
index 528b2c9..0000000
--- a/tests/setresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/setresuid.gen.test b/tests/setresuid.gen.test
new file mode 100755
index 0000000..a6e0664
--- /dev/null
+++ b/tests/setresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/setresuid.test b/tests/setresuid.test
deleted file mode 100755
index f1219e0..0000000
--- a/tests/setresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/setresuid32.gen.test b/tests/setresuid32.gen.test
new file mode 100755
index 0000000..3fbf36b
--- /dev/null
+++ b/tests/setresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setresuid32.test b/tests/setresuid32.test
deleted file mode 100755
index 942a3a6..0000000
--- a/tests/setresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/setreuid.gen.test b/tests/setreuid.gen.test
new file mode 100755
index 0000000..4c3dc93
--- /dev/null
+++ b/tests/setreuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/setreuid.test b/tests/setreuid.test
deleted file mode 100755
index b6db3c1..0000000
--- a/tests/setreuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests/setreuid32.gen.test b/tests/setreuid32.gen.test
new file mode 100755
index 0000000..d179053
--- /dev/null
+++ b/tests/setreuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/setreuid32.test b/tests/setreuid32.test
deleted file mode 100755
index 23323d4..0000000
--- a/tests/setreuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/setrlimit.gen.test b/tests/setrlimit.gen.test
new file mode 100755
index 0000000..dfe2da3
--- /dev/null
+++ b/tests/setrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/setrlimit.test b/tests/setrlimit.test
deleted file mode 100755
index 7920608..0000000
--- a/tests/setrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit/ugetrlimit/setrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/setuid.gen.test b/tests/setuid.gen.test
new file mode 100755
index 0000000..98d470f
--- /dev/null
+++ b/tests/setuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/setuid.test b/tests/setuid.test
deleted file mode 100755
index 9279233..0000000
--- a/tests/setuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/setuid32.gen.test b/tests/setuid32.gen.test
new file mode 100755
index 0000000..7d15495
--- /dev/null
+++ b/tests/setuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setuid32.test b/tests/setuid32.test
deleted file mode 100755
index 7998392..0000000
--- a/tests/setuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/shmxt.gen.test b/tests/shmxt.gen.test
new file mode 100755
index 0000000..dd9d35f
--- /dev/null
+++ b/tests/shmxt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shmxt -a11 -e trace='/(osf_)?shmat,shmdt'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace='/(osf_)?shmat,shmdt'
diff --git a/tests/shmxt.test b/tests/shmxt.test
deleted file mode 100755
index 3757cfa..0000000
--- a/tests/shmxt.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check shmat and shmdt syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-case "$STRACE_ARCH" in
- alpha) shmat=osf_shmat ;;
- *) shmat=shmat ;;
-esac
-
-run_strace_match_diff -e trace=$shmat,shmdt -a11
diff --git a/tests/shutdown.gen.test b/tests/shutdown.gen.test
new file mode 100755
index 0000000..3412513
--- /dev/null
+++ b/tests/shutdown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/shutdown.test b/tests/shutdown.test
deleted file mode 100755
index 22f0d5a..0000000
--- a/tests/shutdown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of shutdown syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/siginfo.gen.test b/tests/siginfo.gen.test
new file mode 100755
index 0000000..33792b9
--- /dev/null
+++ b/tests/siginfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (siginfo -e trace=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=none
diff --git a/tests/siginfo.test b/tests/siginfo.test
deleted file mode 100755
index 725f714..0000000
--- a/tests/siginfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check SIGCHLD siginfo_t decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=none
diff --git a/tests/signal_receive.gen.test b/tests/signal_receive.gen.test
new file mode 100755
index 0000000..79e8fb8
--- /dev/null
+++ b/tests/signal_receive.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -e trace=kill
diff --git a/tests/signal_receive.test b/tests/signal_receive.test
deleted file mode 100755
index 9685b66..0000000
--- a/tests/signal_receive.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check whether strace traces signals properly.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16 -e trace=kill
diff --git a/tests/signalfd4.c b/tests/signalfd4.c
index 47e49b5..4391b92 100644
--- a/tests/signalfd4.c
+++ b/tests/signalfd4.c
@@ -2,6 +2,7 @@
* Check decoding of signalfd4 syscall.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,8 +32,7 @@
#include <fcntl.h>
#include <asm/unistd.h>
-#if defined __NR_rt_sigprocmask \
- && defined HAVE_SYS_SIGNALFD_H \
+#if defined HAVE_SYS_SIGNALFD_H \
&& defined HAVE_SIGNALFD \
&& defined O_CLOEXEC
@@ -41,24 +41,6 @@
# include <unistd.h>
# include <sys/signalfd.h>
-static unsigned int
-get_sigset_size(void)
-{
- const unsigned int big_size = 1024 / 8;
- unsigned int set_size;
-
- for (set_size = big_size; set_size; set_size >>= 1) {
- if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
- NULL, NULL, set_size))
- break;
- }
-
- if (!set_size)
- perror_msg_and_fail("rt_sigprocmask");
-
- return set_size;
-}
-
int
main(void)
{
@@ -80,7 +62,6 @@
#else
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask && HAVE_SYS_SIGNALFD_H"
- " && HAVE_SIGNALFD && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
#endif
diff --git a/tests/signalfd4.gen.test b/tests/signalfd4.gen.test
new file mode 100755
index 0000000..e91a9fe
--- /dev/null
+++ b/tests/signalfd4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/signalfd4.test b/tests/signalfd4.test
deleted file mode 100755
index a615a5b..0000000
--- a/tests/signalfd4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of signalfd4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sigreturn.c b/tests/sigreturn.c
index dace040..ff9a59f 100644
--- a/tests/sigreturn.c
+++ b/tests/sigreturn.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,23 +26,38 @@
*/
#include "tests.h"
-#include <stdlib.h>
-#include <signal.h>
+#include <asm/unistd.h>
-#ifdef ASM_SIGRTMIN
-# define RT_0 ASM_SIGRTMIN
-#else
-/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
-# define RT_0 32
+#if defined __powerpc64__ \
+ || (defined __sparc__ && defined __arch64__)
+/* Old sigreturn is defined but not implemented in the kernel. */
+# undef __NR_sigreturn
#endif
-static void handler(int sig)
+#ifdef __NR_sigreturn
+
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+
+# ifdef ASM_SIGRTMIN
+# define RT_0 ASM_SIGRTMIN
+# else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+# define RT_0 32
+# endif
+
+static void
+handler(int sig)
{
}
-int main(void) {
- sigset_t set;
+int
+main(void)
+{
+ static sigset_t set;
sigemptyset(&set);
+ sigaddset(&set, SIGINT);
sigaddset(&set, SIGUSR2);
sigaddset(&set, SIGCHLD);
sigaddset(&set, RT_0 + 3);
@@ -50,8 +65,28 @@
sigaddset(&set, RT_0 + 5);
sigaddset(&set, RT_0 + 26);
sigaddset(&set, RT_0 + 27);
- sigprocmask(SIG_SETMASK, &set, NULL);
- signal(SIGUSR1, handler);
- raise(SIGUSR1);
+ if (sigprocmask(SIG_SETMASK, &set, NULL))
+ perror_msg_and_fail("sigprocmask");
+ sigemptyset(&set);
+
+ /* This should result to old sigreturn. */
+ if (signal(SIGUSR1, handler) == SIG_ERR)
+ perror_msg_and_fail("sigaction");
+
+ if (raise(SIGUSR1))
+ perror_msg_and_fail("raise");
+
+ static const char *const sigs =
+ (SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+ static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+ printf("sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+ puts("+++ exited with 0 +++");
return 0;
}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigreturn")
+
+#endif
diff --git a/tests/sigreturn.gen.test b/tests/sigreturn.gen.test
new file mode 100755
index 0000000..f317e89
--- /dev/null
+++ b/tests/sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigreturn -esignal='!USR1'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal='!USR1'
diff --git a/tests/sigsuspend.c b/tests/sigsuspend.c
new file mode 100644
index 0000000..dac6890
--- /dev/null
+++ b/tests/sigsuspend.c
@@ -0,0 +1,117 @@
+/*
+ * Check decoding of sigsuspend syscall.
+ *
+ * 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 <asm/unistd.h>
+
+#ifdef __NR_sigsuspend
+
+# include <assert.h>
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# ifdef MIPS
+# define SIGNAL_MASK_BY_REF 1
+# else
+# define SIGNAL_MASK_BY_REF 0
+# endif
+
+static long
+k_sigsuspend(const kernel_ulong_t arg1,
+ const kernel_ulong_t arg2,
+ const kernel_ulong_t arg3)
+{
+ return syscall(__NR_sigsuspend, arg1, arg2, arg3);
+}
+
+static int signo;
+static const char *sigtxt[] = {
+ [SIGUSR1] = "USR1",
+ [SIGUSR2] = "USR2"
+};
+
+static void
+handler(int i)
+{
+ signo = i;
+}
+
+int
+main(void)
+{
+ union {
+ sigset_t libc_mask;
+ unsigned long old_mask;
+ } u;
+
+ sigemptyset(&u.libc_mask);
+ sigaddset(&u.libc_mask, SIGUSR1);
+ sigaddset(&u.libc_mask, SIGUSR2);
+ if (sigprocmask(SIG_SETMASK, &u.libc_mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ const struct sigaction sa = { .sa_handler = handler };
+ if (sigaction(SIGUSR1, &sa, NULL) || sigaction(SIGUSR2, &sa, NULL))
+ perror_msg_and_fail("sigaction");
+
+ raise(SIGUSR1);
+ raise(SIGUSR2);
+
+ u.old_mask = -1UL;
+ sigdelset(&u.libc_mask, SIGUSR1);
+ const unsigned long mask1 = u.old_mask;
+
+ u.old_mask = -1UL;
+ sigdelset(&u.libc_mask, SIGUSR2);
+ const unsigned long mask2 = u.old_mask;
+
+#if SIGNAL_MASK_BY_REF
+ k_sigsuspend((uintptr_t) &mask1, 0xdeadbeef, (uintptr_t) &mask2);
+#else
+ k_sigsuspend(mask1, 0xdeadbeef, mask2);
+#endif
+ if (EINTR != errno)
+ perror_msg_and_skip("sigsuspend");
+
+ printf("sigsuspend(~[%s]) = ? ERESTARTNOHAND"
+ " (To be restarted if no handler)\n", sigtxt[signo]);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigsuspend")
+
+#endif
diff --git a/tests/sigsuspend.gen.test b/tests/sigsuspend.gen.test
new file mode 100755
index 0000000..afd0207
--- /dev/null
+++ b/tests/sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigsuspend -a19 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -esignal=none
diff --git a/tests/skip_unavailable.c b/tests/skip_unavailable.c
new file mode 100644
index 0000000..074fc3a
--- /dev/null
+++ b/tests/skip_unavailable.c
@@ -0,0 +1,13 @@
+#include "tests.h"
+
+#include <sys/stat.h>
+#include <unistd.h>
+
+void
+skip_if_unavailable(const char *const path)
+{
+ struct stat st;
+
+ if (stat(path, &st))
+ perror_msg_and_skip("stat: %s", path);
+}
diff --git a/tests/socketcall.gen.test b/tests/socketcall.gen.test
new file mode 100755
index 0000000..95c45fd
--- /dev/null
+++ b/tests/socketcall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/socketcall.test b/tests/socketcall.test
deleted file mode 100755
index 959bc83..0000000
--- a/tests/socketcall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of socketcall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/sockname.c b/tests/sockname.c
index c5072ca..9bab8ed 100644
--- a/tests/sockname.c
+++ b/tests/sockname.c
@@ -2,6 +2,7 @@
* Check decoding of sockname family syscalls.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -74,7 +75,7 @@
static void
test_sockname_syscall(const int fd)
{
- socklen_t *const plen = tail_alloc(sizeof(*plen));
+ TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
*plen = sizeof(struct sockaddr_un);
struct sockaddr_un *addr = tail_alloc(*plen);
diff --git a/tests/splice.c b/tests/splice.c
index b6f2525..cf07c80 100644
--- a/tests/splice.c
+++ b/tests/splice.c
@@ -2,6 +2,7 @@
* This file is part of splice strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,8 +41,8 @@
{
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));
+ TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+ TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
*off_in = 0xdeadbef1facefed1ULL;
*off_out = 0xdeadbef2facefed2ULL;
const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests/splice.gen.test b/tests/splice.gen.test
new file mode 100755
index 0000000..83c8406
--- /dev/null
+++ b/tests/splice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/splice.test b/tests/splice.test
deleted file mode 100755
index cc5c327..0000000
--- a/tests/splice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check splice syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/stat.c b/tests/stat.c
index d4ca7b0..79e9175 100644
--- a/tests/stat.c
+++ b/tests/stat.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/stat.gen.test b/tests/stat.gen.test
new file mode 100755
index 0000000..13ccd0b
--- /dev/null
+++ b/tests/stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/stat.test b/tests/stat.test
deleted file mode 100755
index ba8938c..0000000
--- a/tests/stat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/stat64.c b/tests/stat64.c
index 782de33..74927de 100644
--- a/tests/stat64.c
+++ b/tests/stat64.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
diff --git a/tests/stat64.gen.test b/tests/stat64.gen.test
new file mode 100755
index 0000000..f49df37
--- /dev/null
+++ b/tests/stat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/stat64.test b/tests/stat64.test
deleted file mode 100755
index abcfb9e..0000000
--- a/tests/stat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/statfs.expected b/tests/statfs.expected
deleted file mode 100644
index 11e9f0b..0000000
--- a/tests/statfs.expected
+++ /dev/null
@@ -1 +0,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/statfs.gen.test b/tests/statfs.gen.test
new file mode 100755
index 0000000..19b26dd
--- /dev/null
+++ b/tests/statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/statfs.test b/tests/statfs.test
deleted file mode 100755
index 6075576..0000000
--- a/tests/statfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check statfs syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# this test probes /proc/self/status
-[ -f /proc/self/status ] ||
- framework_skip_ '/proc/self/status is not available'
-
-run_strace_match_diff -a17
diff --git a/tests/statfs64.gen.test b/tests/statfs64.gen.test
new file mode 100755
index 0000000..66409f9
--- /dev/null
+++ b/tests/statfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23
diff --git a/tests/statfs64.test b/tests/statfs64.test
deleted file mode 100755
index 9c0aa27..0000000
--- a/tests/statfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check statfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests/statx.c b/tests/statx.c
new file mode 100644
index 0000000..f36fb0e
--- /dev/null
+++ b/tests/statx.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_statx
+
+# include <linux/stat.h>
+# include "xlat.h"
+# include "xlat/statx_masks.h"
+# include "xlat/statx_attrs.h"
+# include "xlat/at_statx_sync_types.h"
+
+# define IS_STATX 1
+# define TEST_SYSCALL_STR "statx"
+# define STRUCT_STAT struct statx
+# define STRUCT_STAT_STR "struct statx"
+# define STRUCT_STAT_IS_STAT64 0
+
+static unsigned TEST_SYSCALL_STATX_FLAGS = AT_STATX_SYNC_AS_STAT;
+static const char *TEST_SYSCALL_STATX_FLAGS_STR = "AT_STATX_SYNC_AS_STAT";
+static unsigned TEST_SYSCALL_STATX_MASK = STATX_ALL;
+static const char *TEST_SYSCALL_STATX_MASK_STR = "STATX_ALL";
+
+# define TEST_SYSCALL_INVOKE(sample, pst) \
+ syscall(__NR_statx, AT_FDCWD, sample, TEST_SYSCALL_STATX_FLAGS, \
+ TEST_SYSCALL_STATX_MASK, pst)
+# define PRINT_SYSCALL_HEADER(sample) \
+ do { \
+ int saved_errno = errno; \
+ printf("%s(AT_FDCWD, \"%s\", %s, %s, ", \
+ TEST_SYSCALL_STR, sample, TEST_SYSCALL_STATX_FLAGS_STR, \
+ TEST_SYSCALL_STATX_MASK_STR)
+# define PRINT_SYSCALL_FOOTER(rc) \
+ errno = saved_errno; \
+ printf(") = %s\n", sprintrc(rc)); \
+ } while (0)
+
+# include "xstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_statx")
+
+#endif
diff --git a/tests/statx.gen.test b/tests/statx.gen.test
new file mode 100755
index 0000000..bff3e3f
--- /dev/null
+++ b/tests/statx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/statx.sh b/tests/statx.sh
deleted file mode 100755
index a630193..0000000
--- a/tests/statx.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of stat family syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -P $NAME.sample -P /dev/full -a32
diff --git a/tests/strace-C.test b/tests/strace-C.test
index ccca9a0..359ddbd 100755
--- a/tests/strace-C.test
+++ b/tests/strace-C.test
@@ -4,6 +4,6 @@
. "${srcdir=.}/init.sh"
-run_prog ./sleep 0
-run_strace -a24 -C -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -C -enanosleep ../sleep 1
match_grep
diff --git a/tests/strace-E.expected b/tests/strace-E.expected
index d7823b7..3ae2c28 100644
--- a/tests/strace-E.expected
+++ b/tests/strace-E.expected
@@ -1 +1 @@
-execve\("\./sleep", \["\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
diff --git a/tests/strace-E.test b/tests/strace-E.test
index d76ec3f..843f27a 100755
--- a/tests/strace-E.test
+++ b/tests/strace-E.test
@@ -4,6 +4,6 @@
. "${srcdir=.}/init.sh"
-run_prog ./sleep 0 > /dev/null
+run_prog ../sleep 0 > /dev/null
run_strace -E option_E_var=OPTION_E_VAL -v $args
match_grep
diff --git a/tests/strace-S.test b/tests/strace-S.test
index 3ea315c..64e4a41 100755
--- a/tests/strace-S.test
+++ b/tests/strace-S.test
@@ -4,7 +4,7 @@
. "${srcdir=.}/init.sh"
-run_prog ./readv > /dev/null
+run_prog ../readv > /dev/null
test_c()
{
@@ -13,7 +13,7 @@
sortopts="$1"; shift
sedexpr="$1"; shift
- run_strace -c -w -S "$sortby" ./readv > /dev/null
+ run_strace -c -w -S "$sortby" ../readv > /dev/null
sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
[ -s "$OUT" ] ||
@@ -28,5 +28,3 @@
c='[[:space:]]+([^[:space:]]+)'
test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
-
-rm -f "$OUT"
diff --git a/tests/strace-T.test b/tests/strace-T.test
index 7ab84a7..a6dac4e 100755
--- a/tests/strace-T.test
+++ b/tests/strace-T.test
@@ -4,6 +4,6 @@
. "${srcdir=.}/init.sh"
-run_prog ./sleep 0
-run_strace -a24 -T -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -T -enanosleep ../sleep 1
match_grep
diff --git a/tests/strace-V.test b/tests/strace-V.test
index 9a051e0..d5c3ac0 100755
--- a/tests/strace-V.test
+++ b/tests/strace-V.test
@@ -10,15 +10,22 @@
getval()
{
- sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' ../config.h
+ sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+ ../../config.h
+}
+
+config_year=$(getval COPYRIGHT_YEAR)
+
+[ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
+ echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
+ exit 1
}
cat > "$EXP" << __EOF__
$(getval PACKAGE_NAME) -- version $(getval PACKAGE_VERSION)
-Copyright (C) 1991-$year The strace developers <$(getval PACKAGE_URL)>.
+Copyright (C) 1991-${config_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"
+match_diff "$LOG" "$EXP"
diff --git a/tests/strace-ff.test b/tests/strace-ff.test
index 2ce06f1..7107527 100755
--- a/tests/strace-ff.test
+++ b/tests/strace-ff.test
@@ -7,7 +7,7 @@
run_prog_skip_if_failed \
kill -0 $$
-./set_ptracer_any ./sleep 1 > "$OUT" &
+../set_ptracer_any ../sleep 1 > "$OUT" &
tracee_pid=$!
while ! [ -s "$OUT" ]; do
@@ -15,7 +15,6 @@
fail_ 'set_ptracer_any sleep failed'
done
-rm -f "$LOG".*
run_strace -a14 -eexit_group -ff -p $tracee_pid
# check that output matches
@@ -25,5 +24,3 @@
set -- "$LOG".*
[ "$LOG.$tracee_pid" = "$*" ] ||
fail_ "too many output files: $*"
-
-rm -f "$OUT" "$LOG.$tracee_pid"
diff --git a/tests/strace-k.test b/tests/strace-k.test
index d5e8ed2..e68951e 100755
--- a/tests/strace-k.test
+++ b/tests/strace-k.test
@@ -4,6 +4,7 @@
#
# Copyright (c) 2014 Masatake YAMATO <[email protected]>
# Copyright (c) 2014-2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2014-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -37,7 +38,7 @@
check_prog sed
check_prog tr
-run_prog ./stack-fcall
+run_prog ../stack-fcall
run_strace -e getpid -k $args
expected='getpid f3 f2 f1 f0 main '
diff --git a/tests/strace-r.expected b/tests/strace-r.expected
index 8009c35..2a5b977 100644
--- a/tests/strace-r.expected
+++ b/tests/strace-r.expected
@@ -1,2 +1,2 @@
-[ ]{5}0\.0{6} execve\("\./sleep", \["\./sleep", "1"\], \[/\* [[:digit:]]+ vars \*/\]\) = 0
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace-r.test b/tests/strace-r.test
index 4ba01f1..00649b5 100755
--- a/tests/strace-r.test
+++ b/tests/strace-r.test
@@ -4,6 +4,6 @@
. "${srcdir=.}/init.sh"
-run_prog ./sleep 0
-run_strace -r -eexecve ./sleep 1
+run_prog ../sleep 0
+run_strace -r -eexecve ../sleep 1
match_grep
diff --git a/tests/strace-t.test b/tests/strace-t.test
index 1d213e6..38070f3 100755
--- a/tests/strace-t.test
+++ b/tests/strace-t.test
@@ -5,16 +5,14 @@
. "${srcdir=.}/init.sh"
run_prog_skip_if_failed date +%T > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
t0="$(date +%T)"
run_strace -t -eexecve $args
t1="$(date +%T)"
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
-($t0|$t1) execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+cat > "$EXP" << __EOF__
+($t0|$t1) execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
__EOF__
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
diff --git a/tests/strace-tt.test b/tests/strace-tt.test
index 3f80001..3285655 100755
--- a/tests/strace-tt.test
+++ b/tests/strace-tt.test
@@ -6,7 +6,7 @@
run_prog_skip_if_failed date +%s > "$LOG"
run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
s0="$(date +%s)"
run_strace -tt -eexecve $args
@@ -21,8 +21,7 @@
done
cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
__EOF__
match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/strace-ttt.test b/tests/strace-ttt.test
index 4439715..7d4435b 100755
--- a/tests/strace-ttt.test
+++ b/tests/strace-ttt.test
@@ -5,7 +5,7 @@
. "${srcdir=.}/init.sh"
run_prog_skip_if_failed date +%s > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
s0="$(date +%s)"
run_strace -ttt -eexecve $args
@@ -19,8 +19,7 @@
done
cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
__EOF__
match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/struct_flock.c b/tests/struct_flock.c
index 34cf58e..428c038 100644
--- a/tests/struct_flock.c
+++ b/tests/struct_flock.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,7 +33,6 @@
#include "flock.h"
#define FILE_LEN 4096
-#define EINVAL_STR "-1 EINVAL (Invalid argument)"
#define TEST_FLOCK_EINVAL(cmd) test_flock_einval(cmd, #cmd)
@@ -45,9 +45,10 @@
static long
invoke_test_syscall(const unsigned int cmd, void *const p)
{
- const unsigned long op = (unsigned long) 0xffffffff00000000ULL | cmd;
+ const kernel_ulong_t fd = F8ILL_KULONG_MASK;
+ const kernel_ulong_t op = F8ILL_KULONG_MASK | cmd;
- return syscall(TEST_SYSCALL_NR, 0, op, (unsigned long) p);
+ return syscall(TEST_SYSCALL_NR, fd, op, (unsigned long) p);
}
static void
@@ -58,10 +59,10 @@
.l_start = (TYPEOF_FLOCK_OFF_T) 0xdefaced1facefeedULL,
.l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL
};
- invoke_test_syscall(cmd, &fl);
+ long rc = invoke_test_syscall(cmd, &fl);
printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
- (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+ (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
}
static void
@@ -77,7 +78,7 @@
long rc = invoke_test_syscall(F_SETLK, &fl);
printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
", l_start=0, l_len=%d}) = %s\n",
- TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+ TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
if (rc)
return;
diff --git a/tests/sun_path.test b/tests/sun_path.test
index 728328a..f0b7a02 100755
--- a/tests/sun_path.test
+++ b/tests/sun_path.test
@@ -4,7 +4,7 @@
. "${srcdir=.}/init.sh"
-run_prog ./net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
+run_prog ../net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
run_strace_merge -ebind,connect,getsockname $args
match_grep
diff --git a/tests/swap.gen.test b/tests/swap.gen.test
new file mode 100755
index 0000000..4ca7891
--- /dev/null
+++ b/tests/swap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (swap -a23 -e trace=swapon,swapoff); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests/swap.test b/tests/swap.test
deleted file mode 100755
index a30e1fd..0000000
--- a/tests/swap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check swapon and swapoff syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests/sxetmask.c b/tests/sxetmask.c
new file mode 100644
index 0000000..0ede9ad
--- /dev/null
+++ b/tests/sxetmask.c
@@ -0,0 +1,124 @@
+/*
+ * Check decoding of sgetmask and ssetmask syscalls.
+ *
+ * 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 <asm/unistd.h>
+
+#if defined __NR_sgetmask && defined __NR_ssetmask
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+static long
+k_sgetmask(void)
+{
+ return syscall(__NR_sgetmask);
+}
+
+static long
+k_ssetmask(const kernel_ulong_t arg)
+{
+ return syscall(__NR_ssetmask, arg);
+}
+
+int
+main(void)
+{
+ union {
+ sigset_t libc_mask;
+ unsigned long old_mask;
+ } uset, uget;
+ long rc;
+
+ /*
+ * Block, reset, and raise SIGUSR1.
+ * If a subsequent ssetmask call fails to set the proper mask,
+ * the process will be terminated by SIGUSR1.
+ */
+ sigemptyset(&uset.libc_mask);
+ sigaddset(&uset.libc_mask, SIGUSR1);
+ if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+ if (signal(SIGUSR1, SIG_DFL) == SIG_ERR)
+ perror_msg_and_fail("signal");
+ raise(SIGUSR1);
+
+ sigaddset(&uset.libc_mask, SIGUSR2);
+ rc = k_ssetmask((kernel_ulong_t) 0xfacefeed00000000ULL | uset.old_mask);
+ if (rc == -1L) {
+ printf("ssetmask([USR1 USR2]) = %s\n", sprintrc(rc));
+ } else {
+ printf("ssetmask([USR1 USR2]) = %#lx (old mask [USR1])\n", rc);
+ /*
+ * Use a regular sigprocmask call to check the value
+ * returned by the ssetmask call being tested.
+ */
+ if (sigprocmask(SIG_SETMASK, NULL, &uget.libc_mask))
+ perror_msg_and_fail("sigprocmask");
+ if (uset.old_mask != uget.old_mask)
+ error_msg_and_fail("sigprocmask returned %#lx"
+ " instead of %#lx",
+ uget.old_mask, uset.old_mask);
+ }
+
+ rc = k_sgetmask();
+ if (rc == -1L) {
+ printf("sgetmask() = %s\n", sprintrc(rc));
+ } else {
+ printf("sgetmask() = %#lx (mask [USR1 USR2])\n", rc);
+ if (uget.old_mask != (unsigned long) rc)
+ error_msg_and_fail("sigprocmask returned %#lx",
+ uget.old_mask);
+
+ if (sizeof(long) > 4) {
+ sigaddset(&uset.libc_mask, 32 + 27);
+ if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+ rc = k_sgetmask();
+ printf("sgetmask() = %#lx"
+ " (mask [USR1 USR2 RT_27])\n", rc);
+ if (uset.old_mask != (unsigned long) rc)
+ error_msg_and_fail("sigprocmask set %#lx",
+ uset.old_mask);
+ }
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sgetmask && __NR_ssetmask")
+
+#endif
diff --git a/tests/sxetmask.gen.test b/tests/sxetmask.gen.test
new file mode 100755
index 0000000..fea9e4a
--- /dev/null
+++ b/tests/sxetmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sxetmask -a11 -e trace=sgetmask,ssetmask); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=sgetmask,ssetmask
diff --git a/tests/symlink.c b/tests/symlink.c
index 72cb490..3e01cf2 100644
--- a/tests/symlink.c
+++ b/tests/symlink.c
@@ -7,14 +7,12 @@
# include <unistd.h>
int
-main(void)
+main(int ac, char **av)
{
- static const char sample_1[] = "symlink_new";
- static const char sample_2[] = "symlink";
+ static const char sample[] = "symlink.sample";
- long rc = syscall(__NR_symlink, sample_1, sample_2);
- printf("symlink(\"%s\", \"%s\") = %ld %s (%m)\n",
- sample_1, sample_2, rc, errno2name());
+ long rc = syscall(__NR_symlink, sample, av[0]);
+ printf("symlink(\"%s\", \"%s\") = %s\n", sample, av[0], sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/symlink.gen.test b/tests/symlink.gen.test
new file mode 100755
index 0000000..f41668c
--- /dev/null
+++ b/tests/symlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34
diff --git a/tests/symlink.test b/tests/symlink.test
deleted file mode 100755
index 79b93ba..0000000
--- a/tests/symlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
diff --git a/tests/symlinkat.gen.test b/tests/symlinkat.gen.test
new file mode 100755
index 0000000..39e624a
--- /dev/null
+++ b/tests/symlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/symlinkat.test b/tests/symlinkat.test
deleted file mode 100755
index d8501ff..0000000
--- a/tests/symlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sync.gen.test b/tests/sync.gen.test
new file mode 100755
index 0000000..4aaf8c7
--- /dev/null
+++ b/tests/sync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7
diff --git a/tests/sync.test b/tests/sync.test
deleted file mode 100755
index f6bf6c8..0000000
--- a/tests/sync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
diff --git a/tests/sync_file_range.gen.test b/tests/sync_file_range.gen.test
new file mode 100755
index 0000000..0693c12
--- /dev/null
+++ b/tests/sync_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/sync_file_range.test b/tests/sync_file_range.test
deleted file mode 100755
index 6aa86d6..0000000
--- a/tests/sync_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sync_file_range2.gen.test b/tests/sync_file_range2.gen.test
new file mode 100755
index 0000000..23046b6
--- /dev/null
+++ b/tests/sync_file_range2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/sync_file_range2.test b/tests/sync_file_range2.test
deleted file mode 100755
index 0d9945e..0000000
--- a/tests/sync_file_range2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sysinfo.c b/tests/sysinfo.c
index 377bdc9..b4b348c 100644
--- a/tests/sysinfo.c
+++ b/tests/sysinfo.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2015 Elvira Khabirova <[email protected]>
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,7 +39,7 @@
sysinfo(NULL);
printf("sysinfo(NULL) = -1 EFAULT (%m)\n");
- struct sysinfo * const si = tail_alloc(sizeof(*si));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct sysinfo, si);
if (sysinfo(si))
perror_msg_and_skip("sysinfo");
diff --git a/tests/sysinfo.gen.test b/tests/sysinfo.gen.test
new file mode 100755
index 0000000..e6469d5
--- /dev/null
+++ b/tests/sysinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/sysinfo.test b/tests/sysinfo.test
deleted file mode 100755
index 806d8b6..0000000
--- a/tests/sysinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sysinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/syslog.gen.test b/tests/syslog.gen.test
new file mode 100755
index 0000000..5423d5b
--- /dev/null
+++ b/tests/syslog.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/syslog.test b/tests/syslog.test
deleted file mode 100755
index 1c2158e..0000000
--- a/tests/syslog.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check syslog syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/tee.gen.test b/tests/tee.gen.test
new file mode 100755
index 0000000..2a87fae
--- /dev/null
+++ b/tests/tee.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/tee.test b/tests/tee.test
deleted file mode 100755
index 76b6000..0000000
--- a/tests/tee.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check tee syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/tests.h b/tests/tests.h
index d4294de..dcc1057 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,6 +45,9 @@
/* Cached sysconf(_SC_PAGESIZE). */
size_t get_page_size(void);
+/* The size of kernel's sigset_t. */
+unsigned int get_sigset_size(void);
+
/* Print message and strerror(errno) to stderr, then exit(1). */
void perror_msg_and_fail(const char *, ...)
ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
@@ -57,6 +61,9 @@
void perror_msg_and_skip(const char *, ...)
ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
+/* Stat the specified file and skip the test if the stat call failed. */
+void skip_if_unavailable(const char *);
+
/*
* Allocate memory that ends on the page boundary.
* Pages allocated by this call are preceeded by an unmapped page
@@ -69,6 +76,22 @@
ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((2));
/*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified constant pointer.
+ */
+#define TAIL_ALLOC_OBJECT_CONST_PTR(type_name, type_ptr) \
+ type_name *const type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified variable pointer.
+ */
+#define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr) \
+ type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
* Fill memory (pointed by ptr, having size bytes) with different bytes (with
* values starting with start and resetting every period) in order to catch
* sign, byte order and/or alignment errors.
@@ -100,6 +123,12 @@
/* Print memory in a quoted form. */
void print_quoted_memory(const char *, size_t);
+/* Print time_t and nanoseconds in symbolic format. */
+void print_time_t_nsec(time_t, unsigned long long, int);
+
+/* Print time_t and microseconds in symbolic format. */
+void print_time_t_usec(time_t, unsigned long long, int);
+
/* Read an int from the file. */
int read_int_from_file(const char *, int *);
diff --git a/tests/threads-execve.c b/tests/threads-execve.c
index 853645f..4eb334f 100644
--- a/tests/threads-execve.c
+++ b/tests/threads-execve.c
@@ -2,6 +2,7 @@
* Check decoding of threads when a non-leader thread invokes execve.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -136,25 +137,25 @@
switch (action % NUMBER_OF_ACTIONS) {
case ACTION_exit:
printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
- ", [/* %u vars */] <pid changed to %u ...>\n",
+ ", %p /* %u vars */ <pid changed to %u ...>\n",
tid, argv[0], argv[0], argv[1], argv[2],
- arglen(environ), leader);
+ environ, arglen(environ), leader);
break;
case ACTION_rt_sigsuspend:
printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
- ", [/* %u vars */] <unfinished ...>\n"
+ ", %p /* %u vars */ <unfinished ...>\n"
"%-5d <... rt_sigsuspend resumed>) = ?\n",
tid, argv[0], argv[0], argv[1], argv[2],
- arglen(environ),
+ environ, arglen(environ),
leader);
break;
case ACTION_nanosleep:
printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
- ", [/* %u vars */] <unfinished ...>\n"
+ ", %p /* %u vars */ <unfinished ...>\n"
"%-5d <... nanosleep resumed> <unfinished ...>)"
" = ?\n",
tid, argv[0], argv[0], argv[1], argv[2],
- arglen(environ),
+ environ, arglen(environ),
leader);
break;
}
@@ -180,18 +181,15 @@
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",
+ ", %p /* %u vars */) = 0\n",
leader, argv[0], argv[0], argv[1], argv[2],
- arglen(environ));
+ environ, arglen(environ));
execve(argv[0], argv, environ);
perror_msg_and_fail("execve");
}
diff --git a/tests/threads-execve.test b/tests/threads-execve.test
index 4a77146..02c8924 100755
--- a/tests/threads-execve.test
+++ b/tests/threads-execve.test
@@ -3,6 +3,7 @@
# Check decoding of threads when a non-leader thread invokes execve.
#
# Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+# Copyright (c) 2016-2017 The strace developers.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -40,10 +41,11 @@
# Due to probabilistic nature of the test, try it several times.
i=0
-while [ $i -le 9 ]; do
+while [ $i -le 19 ]; do
+ i="$(($i+1))"
run_strace "$@" > "$EXP"
- diff -- "$EXP" "$LOG" || continue
- rm -f "$EXP"
+ sed 1d < "$LOG" > "$OUT"
+ diff -- "$EXP" "$OUT" || continue
exit 0
done
diff --git a/tests/time.c b/tests/time.c
index 4a5cde9..c329a79 100644
--- a/tests/time.c
+++ b/tests/time.c
@@ -2,6 +2,7 @@
* This file is part of time strace test.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,15 +41,24 @@
int
main(void)
{
- time_t *p = tail_alloc(sizeof(time_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(time_t, p);
time_t t = syscall(__NR_time, NULL);
if ((time_t) -1 == t)
perror_msg_and_skip("time");
- printf("time(NULL) = %jd\n", (intmax_t) t);
+ printf("time(NULL) = %lld (", (long long) t);
+ print_time_t_nsec(t, 0, 0);
+ puts(")");
+
+ t = syscall(__NR_time, p + 1);
+ printf("time(%p) = %s\n", p + 1, sprintrc(t));
t = syscall(__NR_time, p);
- printf("time([%jd]) = %jd\n", (intmax_t) *p, (intmax_t) t);
+ printf("time([%lld", (long long) *p);
+ print_time_t_nsec((time_t) *p, 0, 1),
+ printf("]) = %lld (", (long long) t);
+ print_time_t_nsec(t, 0, 0);
+ puts(")");
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/time.gen.test b/tests/time.gen.test
new file mode 100755
index 0000000..ed7ec69
--- /dev/null
+++ b/tests/time.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/time.test b/tests/time.test
deleted file mode 100755
index 6ab193a..0000000
--- a/tests/time.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check time syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/timer_create.gen.test b/tests/timer_create.gen.test
new file mode 100755
index 0000000..6b4c543
--- /dev/null
+++ b/tests/timer_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/timer_create.test b/tests/timer_create.test
deleted file mode 100755
index 870a179..0000000
--- a/tests/timer_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/timer_xettime.c b/tests/timer_xettime.c
index 9eabbf0..aacd770 100644
--- a/tests/timer_xettime.c
+++ b/tests/timer_xettime.c
@@ -2,6 +2,7 @@
* This file is part of timer_xettime strace test.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,6 +48,7 @@
printf("timer_settime(%d, TIMER_ABSTIME, NULL, NULL)"
" = -1 EINVAL (%m)\n", 0xdefaced);
+ long rc;
int tid;
struct sigevent sev = { .sigev_notify = SIGEV_NONE };
@@ -55,51 +57,61 @@
printf("timer_create(CLOCK_MONOTONIC, {sigev_signo=0"
", sigev_notify=SIGEV_NONE}, [%d]) = 0\n", tid);
- struct {
- struct itimerspec its;
- uint32_t pad[4];
- } old = {
- .its = {
- .it_interval = { 0xdeface5, 0xdeface6 },
- .it_value = { 0xdeface7, 0xdeface8 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- }, new = {
- .its = {
- .it_interval = { 0xdeface1, 0xdeface2 },
- .it_value = { 0xdeface3, 0xdeface4 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- };
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
- if (syscall(__NR_timer_settime, tid, 0, &new.its, &old.its))
+ its_new->it_interval.tv_sec = 0xdeadbeefU;
+ its_new->it_interval.tv_nsec = 0xfacefeedU;
+ its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+ rc = syscall(__NR_timer_settime, tid, 0, its_new, its_old);
+ printf("timer_settime(%d, 0"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+ tid, (long long) its_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+ (long long) its_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+ its_old, sprintrc(rc));
+
+ its_new->it_interval.tv_sec = 0xdeface1;
+ its_new->it_interval.tv_nsec = 0xdeface2;
+ its_new->it_value.tv_sec = 0xdeface3;
+ its_new->it_value.tv_nsec = 0xdeface4;
+ its_old->it_interval.tv_sec = 0xdeface5;
+ its_old->it_interval.tv_nsec = 0xdeface6;
+ its_old->it_value.tv_sec = 0xdeface7;
+ its_old->it_value.tv_nsec = 0xdeface8;
+
+ if (syscall(__NR_timer_settime, tid, 0, its_new, its_old))
perror_msg_and_skip("timer_settime");
printf("timer_settime(%d, 0"
- ", {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}}"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
") = 0\n",
tid,
- (intmax_t) new.its.it_interval.tv_sec,
- (intmax_t) new.its.it_interval.tv_nsec,
- (intmax_t) new.its.it_value.tv_sec,
- (intmax_t) new.its.it_value.tv_nsec,
- (intmax_t) old.its.it_interval.tv_sec,
- (intmax_t) old.its.it_interval.tv_nsec,
- (intmax_t) old.its.it_value.tv_sec,
- (intmax_t) old.its.it_value.tv_nsec);
+ (long long) its_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+ (long long) its_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+ (long long) its_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+ (long long) its_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
- if (syscall(__NR_timer_gettime, tid, &old.its))
+ if (syscall(__NR_timer_gettime, tid, its_old))
perror_msg_and_skip("timer_gettime");
printf("timer_gettime(%d"
- ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
- ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
tid,
- (intmax_t) old.its.it_interval.tv_sec,
- (intmax_t) old.its.it_interval.tv_nsec,
- (intmax_t) old.its.it_value.tv_sec,
- (intmax_t) old.its.it_value.tv_nsec);
+ (long long) its_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+ (long long) its_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/timer_xettime.gen.test b/tests/timer_xettime.gen.test
new file mode 100755
index 0000000..6e2dffa
--- /dev/null
+++ b/tests/timer_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_xettime -e trace=timer_create,timer_settime,timer_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests/timer_xettime.test b/tests/timer_xettime.test
deleted file mode 100755
index 08bcdd6..0000000
--- a/tests/timer_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create, timer_settime, and timer_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests/timerfd_xettime.c b/tests/timerfd_xettime.c
index ca7124e..1e8a23a 100644
--- a/tests/timerfd_xettime.c
+++ b/tests/timerfd_xettime.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,49 +48,59 @@
perror_msg_and_skip("timerfd_create");
puts("timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC|TFD_NONBLOCK) = 0");
- struct {
- struct itimerspec its;
- uint32_t pad[4];
- } old = {
- .its = {
- .it_interval = { 0xdeface5, 0xdeface6 },
- .it_value = { 0xdeface7, 0xdeface8 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- }, new = {
- .its = {
- .it_interval = { 0xdeface1, 0xdeface2 },
- .it_value = { 0xdeface3, 0xdeface4 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- };
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
- if (syscall(__NR_timerfd_settime, 0, 0, &new.its, &old.its))
+ its_new->it_interval.tv_sec = 0xdeadbeefU;
+ its_new->it_interval.tv_nsec = 0xfacefeedU;
+ its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+ long rc = syscall(__NR_timerfd_settime, 0, 0, its_new, its_old);
+ printf("timerfd_settime(0, 0"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+ (long long) its_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+ (long long) its_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+ its_old, sprintrc(rc));
+
+ its_new->it_interval.tv_sec = 0xdeface1;
+ its_new->it_interval.tv_nsec = 0xdeface2;
+ its_new->it_value.tv_sec = 0xdeface3;
+ its_new->it_value.tv_nsec = 0xdeface4;
+ its_old->it_interval.tv_sec = 0xdeface5;
+ its_old->it_interval.tv_nsec = 0xdeface6;
+ its_old->it_value.tv_sec = 0xdeface7;
+ its_old->it_value.tv_nsec = 0xdeface8;
+
+ if (syscall(__NR_timerfd_settime, 0, 0, its_new, its_old))
perror_msg_and_skip("timerfd_settime");
printf("timerfd_settime(0, 0"
- ", {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}}"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
") = 0\n",
- (intmax_t) new.its.it_interval.tv_sec,
- (intmax_t) new.its.it_interval.tv_nsec,
- (intmax_t) new.its.it_value.tv_sec,
- (intmax_t) new.its.it_value.tv_nsec,
- (intmax_t) old.its.it_interval.tv_sec,
- (intmax_t) old.its.it_interval.tv_nsec,
- (intmax_t) old.its.it_value.tv_sec,
- (intmax_t) old.its.it_value.tv_nsec);
+ (long long) its_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+ (long long) its_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+ (long long) its_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+ (long long) its_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
- if (syscall(__NR_timerfd_gettime, 0, &old.its))
+ if (syscall(__NR_timerfd_gettime, 0, its_old))
perror_msg_and_skip("timerfd_gettime");
printf("timerfd_gettime(0"
- ", {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,
- (intmax_t) old.its.it_value.tv_nsec);
+ ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+ ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
+ (long long) its_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+ (long long) its_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/timerfd_xettime.gen.test b/tests/timerfd_xettime.gen.test
new file mode 100755
index 0000000..97e560b
--- /dev/null
+++ b/tests/timerfd_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests/timerfd_xettime.test b/tests/timerfd_xettime.test
deleted file mode 100755
index 75aa21c..0000000
--- a/tests/timerfd_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timerfd_create, timerfd_settime, and timerfd_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests/times-fail.gen.test b/tests/times-fail.gen.test
new file mode 100755
index 0000000..9934d19
--- /dev/null
+++ b/tests/times-fail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times-fail -a12 -e trace=times); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -e trace=times
diff --git a/tests/times-fail.test b/tests/times-fail.test
deleted file mode 100755
index ee28a06..0000000
--- a/tests/times-fail.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of failing times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -e trace=times
diff --git a/tests/times.gen.test b/tests/times.gen.test
new file mode 100755
index 0000000..ca4ebbe
--- /dev/null
+++ b/tests/times.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal=none
diff --git a/tests/times.test b/tests/times.test
deleted file mode 100755
index b97e0d3..0000000
--- a/tests/times.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/trace_fstat.gen.test b/tests/trace_fstat.gen.test
new file mode 100755
index 0000000..c3aede1
--- /dev/null
+++ b/tests/trace_fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_fstat.in b/tests/trace_fstat.in
new file mode 100644
index 0000000..34cfa7e
--- /dev/null
+++ b/tests/trace_fstat.in
@@ -0,0 +1,5 @@
+fstat -a15
+fstat64 -a17
+fstatat64 -a32
+newfstatat -a32
+oldfstat -a21
diff --git a/tests/trace_fstatfs.gen.test b/tests/trace_fstatfs.gen.test
new file mode 100755
index 0000000..063f624
--- /dev/null
+++ b/tests/trace_fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstatfs test_trace_expr '' -e%fstatfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstatfs
diff --git a/tests/trace_fstatfs.in b/tests/trace_fstatfs.in
new file mode 100644
index 0000000..6441a07
--- /dev/null
+++ b/tests/trace_fstatfs.in
@@ -0,0 +1,2 @@
+fstatfs -a18
+fstatfs64 -a24
diff --git a/tests/trace_lstat.gen.test b/tests/trace_lstat.gen.test
new file mode 100755
index 0000000..a05b7a1
--- /dev/null
+++ b/tests/trace_lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_lstat test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_lstat.in b/tests/trace_lstat.in
new file mode 100644
index 0000000..abbabc4
--- /dev/null
+++ b/tests/trace_lstat.in
@@ -0,0 +1,3 @@
+lstat -a32
+lstat64 -a32
+oldlstat -a32
diff --git a/tests/trace_question.gen.test b/tests/trace_question.gen.test
new file mode 100755
index 0000000..76b3578
--- /dev/null
+++ b/tests/trace_question.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_question test_trace_expr '' -e?osf_utimes,?/^pkey_.*); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e?osf_utimes,?/^pkey_.*
diff --git a/tests/trace_question.in b/tests/trace_question.in
new file mode 100644
index 0000000..74d662c
--- /dev/null
+++ b/tests/trace_question.in
@@ -0,0 +1,4 @@
+osf_utimes -a21
+pkey_alloc -a17
+pkey_free -a13
+pkey_mprotect -a37
diff --git a/tests/trace_stat.gen.test b/tests/trace_stat.gen.test
new file mode 100755
index 0000000..ae95ab8
--- /dev/null
+++ b/tests/trace_stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_stat.in b/tests/trace_stat.in
new file mode 100644
index 0000000..f105d78
--- /dev/null
+++ b/tests/trace_stat.in
@@ -0,0 +1,3 @@
+oldstat -a32
+stat -a32
+stat64 -a32
diff --git a/tests/trace_stat_like.gen.test b/tests/trace_stat_like.gen.test
new file mode 100755
index 0000000..5681a8a
--- /dev/null
+++ b/tests/trace_stat_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_stat_like.in b/tests/trace_stat_like.in
new file mode 100644
index 0000000..22bd7f2
--- /dev/null
+++ b/tests/trace_stat_like.in
@@ -0,0 +1,12 @@
+fstat -a15
+fstat64 -a17
+fstatat64 -a32
+lstat -a32
+lstat64 -a32
+newfstatat -a32
+oldfstat -a21
+oldlstat -a32
+oldstat -a32
+stat -a32
+stat64 -a32
+statx -a32
diff --git a/tests/trace_statfs.gen.test b/tests/trace_statfs.gen.test
new file mode 100755
index 0000000..957412b
--- /dev/null
+++ b/tests/trace_statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs test_trace_expr '' -e%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%statfs
diff --git a/tests/trace_statfs.in b/tests/trace_statfs.in
new file mode 100644
index 0000000..7c4adfe
--- /dev/null
+++ b/tests/trace_statfs.in
@@ -0,0 +1,2 @@
+statfs -a17
+statfs64 -a23
diff --git a/tests/trace_statfs_like.gen.test b/tests/trace_statfs_like.gen.test
new file mode 100755
index 0000000..be1a9c0
--- /dev/null
+++ b/tests/trace_statfs_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs_like test_trace_expr '' -e%%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%statfs
diff --git a/tests/trace_statfs_like.in b/tests/trace_statfs_like.in
new file mode 100644
index 0000000..285aec6
--- /dev/null
+++ b/tests/trace_statfs_like.in
@@ -0,0 +1,5 @@
+statfs -a17
+statfs64 -a23
+fstatfs -a18
+fstatfs64 -a24
+ustat -a33
diff --git a/tests/truncate.gen.test b/tests/truncate.gen.test
new file mode 100755
index 0000000..0410e73
--- /dev/null
+++ b/tests/truncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/truncate.test b/tests/truncate.test
deleted file mode 100755
index 6bf1e70..0000000
--- a/tests/truncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/truncate64.gen.test b/tests/truncate64.gen.test
new file mode 100755
index 0000000..dae0fe6
--- /dev/null
+++ b/tests/truncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff
diff --git a/tests/truncate64.test b/tests/truncate64.test
deleted file mode 100755
index c466806..0000000
--- a/tests/truncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/ugetrlimit.gen.test b/tests/ugetrlimit.gen.test
new file mode 100755
index 0000000..ff27134
--- /dev/null
+++ b/tests/ugetrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/ugetrlimit.test b/tests/ugetrlimit.test
deleted file mode 100755
index f4648ff..0000000
--- a/tests/ugetrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ugetrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/uio.test b/tests/uio.test
index 020b97e..0184685 100755
--- a/tests/uio.test
+++ b/tests/uio.test
@@ -5,7 +5,7 @@
. "${srcdir=.}/init.sh"
run_prog
-run_strace -edesc $args
+run_strace -e%desc $args
match_grep
exit 0
diff --git a/tests/umask.gen.test b/tests/umask.gen.test
new file mode 100755
index 0000000..60af5e9
--- /dev/null
+++ b/tests/umask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/umask.test b/tests/umask.test
deleted file mode 100755
index 1351721..0000000
--- a/tests/umask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check umask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests/umode_t.c b/tests/umode_t.c
index 5041638..dcd1514 100644
--- a/tests/umode_t.c
+++ b/tests/umode_t.c
@@ -2,6 +2,7 @@
* Check decoding of umode_t type syscall arguments.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,7 +39,7 @@
# define TEST_SYSCALL_PREFIX_STR ""
#endif
-static const char sample[] = TEST_SYSCALL_STR;
+static const char *sample;
static void
test_syscall(unsigned short mode)
@@ -49,17 +50,18 @@
if (mode <= 07)
printf("%s(%s\"%s\", 00%d) = %ld %s (%m)\n",
- sample, TEST_SYSCALL_PREFIX_STR,
+ TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
sample, (int) mode, rc, errno2name());
else
printf("%s(%s\"%s\", %#03ho) = %ld %s (%m)\n",
- sample, TEST_SYSCALL_PREFIX_STR,
+ TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
sample, mode, rc, errno2name());
}
int
-main(void)
+main(int ac, char **av)
{
+ sample = av[0];
test_syscall(0);
test_syscall(0xffff);
test_syscall(06);
diff --git a/tests/umoven-illptr.gen.test b/tests/umoven-illptr.gen.test
new file mode 100755
index 0000000..eea7b1c
--- /dev/null
+++ b/tests/umoven-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umoven-illptr -a36 -e trace=nanosleep); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests/umoven-illptr.test b/tests/umoven-illptr.test
deleted file mode 100755
index 7b8cb31..0000000
--- a/tests/umoven-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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.gen.test b/tests/umovestr-illptr.gen.test
new file mode 100755
index 0000000..7685d44
--- /dev/null
+++ b/tests/umovestr-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr-illptr -a11 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests/umovestr-illptr.test b/tests/umovestr-illptr.test
deleted file mode 100755
index 6f1cc86..0000000
--- a/tests/umovestr-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umovestr.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests/umovestr2.test b/tests/umovestr2.test
index 5c5d561..3decbe2 100755
--- a/tests/umovestr2.test
+++ b/tests/umovestr2.test
@@ -9,7 +9,3 @@
check_prog sed
sed 1d < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/umovestr3.gen.test b/tests/umovestr3.gen.test
new file mode 100755
index 0000000..b16e1ed
--- /dev/null
+++ b/tests/umovestr3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr3 -a14 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests/umovestr3.test b/tests/umovestr3.test
deleted file mode 100755
index d5be283..0000000
--- a/tests/umovestr3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# yet another umovestr short read test
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests/uname.c b/tests/uname.c
index cd6f51c..96db753 100644
--- a/tests/uname.c
+++ b/tests/uname.c
@@ -10,7 +10,7 @@
int main(int ac, char **av)
{
int abbrev = ac > 1;
- struct utsname *const uname = tail_alloc(sizeof(struct utsname));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct utsname, uname);
int rc = syscall(__NR_uname, uname);
printf("uname({sysname=\"");
print_quoted_string(uname->sysname);
diff --git a/tests/uname.test b/tests/uname.test
index 03fe30c..7ca1b5b 100755
--- a/tests/uname.test
+++ b/tests/uname.test
@@ -10,9 +10,8 @@
run_strace -v -euname $args > "$EXP"
uniq < "$LOG" > "$OUT"
-run_prog "./$NAME" abbrev > /dev/null
+run_prog "../$NAME" abbrev > /dev/null
run_strace -euname $args >> "$EXP"
uniq < "$LOG" >> "$OUT"
match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests/unix-pair-send-recv.test b/tests/unix-pair-send-recv.test
index 4defdeb..10ab7cc 100755
--- a/tests/unix-pair-send-recv.test
+++ b/tests/unix-pair-send-recv.test
@@ -4,7 +4,7 @@
. "${srcdir=.}/init.sh"
-run_prog ./unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
run_strace -a32 -esignal=none -esend,recv -eread=0 -ewrite=0 $args
match_diff
diff --git a/tests/unix-pair-sendto-recvfrom.test b/tests/unix-pair-sendto-recvfrom.test
index 21afe23..0bd9a04 100755
--- a/tests/unix-pair-sendto-recvfrom.test
+++ b/tests/unix-pair-sendto-recvfrom.test
@@ -4,7 +4,7 @@
. "${srcdir=.}/init.sh"
-run_prog ./unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
run_strace -esignal=none -esendto,recvfrom -eread=0 -ewrite=0 $args
match_diff
diff --git a/tests/unlink.gen.test b/tests/unlink.gen.test
new file mode 100755
index 0000000..7b8522b
--- /dev/null
+++ b/tests/unlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/unlink.test b/tests/unlink.test
deleted file mode 100755
index 09bf79a..0000000
--- a/tests/unlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/unlinkat.gen.test b/tests/unlinkat.gen.test
new file mode 100755
index 0000000..5a77c6a
--- /dev/null
+++ b/tests/unlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/unlinkat.test b/tests/unlinkat.test
deleted file mode 100755
index 864261f..0000000
--- a/tests/unlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/unshare.gen.test b/tests/unshare.gen.test
new file mode 100755
index 0000000..077a458
--- /dev/null
+++ b/tests/unshare.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/unshare.test b/tests/unshare.test
deleted file mode 100755
index ccb9575..0000000
--- a/tests/unshare.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests/userfaultfd.gen.test b/tests/userfaultfd.gen.test
new file mode 100755
index 0000000..4735146
--- /dev/null
+++ b/tests/userfaultfd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a38
diff --git a/tests/userfaultfd.test b/tests/userfaultfd.test
deleted file mode 100755
index af8b6fb..0000000
--- a/tests/userfaultfd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests/ustat.c b/tests/ustat.c
index 57bb29c..3341c70 100644
--- a/tests/ustat.c
+++ b/tests/ustat.c
@@ -47,7 +47,7 @@
long rc;
# ifdef HAVE_USTAT_H
- struct ustat *const ust = tail_alloc(sizeof(*ust));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct ustat, ust);
struct stat st;
if (stat(".", &st))
perror_msg_and_fail("stat");
diff --git a/tests/ustat.gen.test b/tests/ustat.gen.test
new file mode 100755
index 0000000..f64b28d
--- /dev/null
+++ b/tests/ustat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/ustat.test b/tests/ustat.test
deleted file mode 100755
index 60a88e0..0000000
--- a/tests/ustat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/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 8fd594f..03e3958 100644
--- a/tests/utime.c
+++ b/tests/utime.c
@@ -2,6 +2,7 @@
* Check decoding of utime syscall.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,17 +39,6 @@
# include <stdio.h>
# include <unistd.h>
-
-static void
-print_tm(const struct tm * const p)
-{
- 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)
{
@@ -60,8 +50,7 @@
{
static const char *const dummy_str = "dummy filename";
- const time_t t = time(NULL);
- const struct tm * const p = localtime(&t);
+ const time_t t = 1492350678;
const struct utimbuf u = { .actime = t, .modtime = t };
const struct utimbuf *const tail_u = tail_memdup(&u, sizeof(u));
const char *const dummy_filename =
@@ -80,10 +69,10 @@
rc = k_utime("utime\nfilename", tail_u);
const char *errstr = sprintrc(rc);
- printf("utime(\"utime\\nfilename\", {actime=");
- print_tm(p);
- printf(", modtime=");
- print_tm(p);
+ printf("utime(\"utime\\nfilename\", {actime=%lld", (long long) t);
+ print_time_t_nsec(t, 0, 1);
+ printf(", modtime=%lld", (long long) t);
+ print_time_t_nsec(t, 0, 1);
printf("}) = %s\n", errstr);
puts("+++ exited with 0 +++");
diff --git a/tests/utime.gen.test b/tests/utime.gen.test
new file mode 100755
index 0000000..7270556
--- /dev/null
+++ b/tests/utime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests/utime.test b/tests/utime.test
deleted file mode 100755
index bd64c53..0000000
--- a/tests/utime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utime syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a 16 -e trace=utime
diff --git a/tests/utimensat.c b/tests/utimensat.c
index 6d9faac..ddfd360 100644
--- a/tests/utimensat.c
+++ b/tests/utimensat.c
@@ -1,7 +1,7 @@
/*
- * This file is part of utimensat strace test.
+ * Check decoding of utimensat syscall.
*
- * 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
@@ -28,66 +28,173 @@
*/
#include "tests.h"
-#include <assert.h>
-#include <errno.h>
#include <fcntl.h>
#include <stdint.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
-#if defined HAVE_UTIMENSAT \
- && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW \
- && defined UTIME_NOW && defined UTIME_OMIT
+#if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
static void
print_ts(const struct timespec *ts)
{
- printf("{tv_sec=%ju, tv_nsec=%ju}", (uintmax_t) ts->tv_sec,
- (uintmax_t) ts->tv_nsec);
+ printf("{tv_sec=%lld, tv_nsec=%llu}", (long long) ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec));
+ print_time_t_nsec(ts->tv_sec,
+ zero_extend_signed_to_ull(ts->tv_nsec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimensat(const kernel_ulong_t dirfd,
+ const kernel_ulong_t pathname,
+ const kernel_ulong_t times,
+ const kernel_ulong_t flags)
+{
+ long rc = syscall(__NR_utimensat, dirfd, pathname, times, flags);
+ errstr = sprintrc(rc);
+ return rc;
}
int
main(void)
{
- static const char fname[] = "utimensat\nfilename";
+ static const kernel_ulong_t bogus_fd =
+ (kernel_ulong_t) 0xbadc0deddeadbeef;
+ static const kernel_ulong_t kfdcwd =
+ (kernel_ulong_t) 0xdefaced00000000 | -100U;
+ static const char proto_fname[] = "utimensat\nfilename";
+ static const char qname[] = "\"utimensat\\nfilename\"";
- assert(utimensat(AT_FDCWD, fname, NULL, 0) == -1);
- if (ENOENT != errno)
- error_msg_and_skip("utimensat");
+ char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+ const kernel_ulong_t kfname = (uintptr_t) fname;
+ struct timespec *const ts = tail_alloc(sizeof(*ts) * 2);
- #define PREFIX "utimensat(AT_FDCWD, \"utimensat\\nfilename\", "
- printf(PREFIX "NULL, 0) = -1 ENOENT (%m)\n");
+ (void) close(0);
- struct timeval tv;
- struct timespec ts[2];
+ /* dirfd */
+ k_utimensat(0, kfname, 0, 0);
+ printf("utimensat(0, %s, NULL, 0) = %s\n", qname, errstr);
- if (gettimeofday(&tv, NULL))
- perror_msg_and_skip("gettimeofday");
+ k_utimensat(bogus_fd, kfname, 0, 0);
+ printf("utimensat(%d, %s, NULL, 0) = %s\n",
+ (int) bogus_fd, qname, errstr);
- ts[0].tv_sec = tv.tv_sec;
- ts[0].tv_nsec = tv.tv_usec;
- ts[1].tv_sec = tv.tv_sec - 1;
- ts[1].tv_nsec = tv.tv_usec + 1;
+ k_utimensat(-100U, kfname, 0, 0);
+ printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
- printf(PREFIX "[");
+ k_utimensat(kfdcwd, kfname, 0, 0);
+ printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
+
+ /* pathname */
+ k_utimensat(kfdcwd, 0, 0, 0);
+ printf("utimensat(AT_FDCWD, NULL, NULL, 0) = %s\n", errstr);
+
+ k_utimensat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0, 0);
+ printf("utimensat(AT_FDCWD, \"\", NULL, 0) = %s\n", errstr);
+
+ fname[sizeof(proto_fname) - 1] = '+';
+ k_utimensat(kfdcwd, kfname, 0, 0);
+ fname[sizeof(proto_fname) - 1] = '\0';
+ printf("utimensat(AT_FDCWD, %p, NULL, 0) = %s\n", fname, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_utimensat(kfdcwd, f8ill_ptr_to_kulong(fname), 0, 0);
+ printf("utimensat(AT_FDCWD, %#jx, NULL, 0) = %s\n",
+ (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+ }
+
+ /* times */
+ k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 1), 0);
+ printf("utimensat(AT_FDCWD, %s, %p, 0) = %s\n",
+ qname, ts + 1, errstr);
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 2), 0);
+ printf("utimensat(AT_FDCWD, %s, %p, 0)"
+ " = %s\n", qname, ts + 2, errstr);
+
+ ts[0].tv_sec = 1492358706;
+ ts[0].tv_nsec = 123456789;
+ ts[1].tv_sec = 1492357068;
+ ts[1].tv_nsec = 234567890;
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+ printf("utimensat(AT_FDCWD, %s, [", qname);
print_ts(&ts[0]);
printf(", ");
print_ts(&ts[1]);
- printf("], AT_SYMLINK_NOFOLLOW) = -1 ENOENT ");
+ printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
- assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
- if (ENOENT != errno)
- error_msg_and_skip("utimensat");
- printf("(%m)\n");
+ ts[0].tv_sec = -1;
+ ts[0].tv_nsec = 2000000000;
+ ts[1].tv_sec = (time_t) -0x100000001LL;
+ ts[1].tv_nsec = 2345678900U;
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+ printf("utimensat(AT_FDCWD, %s, [", qname);
+ print_ts(&ts[0]);
+ printf(", ");
+ print_ts(&ts[1]);
+ printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+ ts[0].tv_sec = 0;
+ ts[0].tv_nsec = 0;
+ ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ ts[1].tv_nsec = 0;
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+ printf("utimensat(AT_FDCWD, %s, [", qname);
+ print_ts(&ts[0]);
+ printf(", ");
+ print_ts(&ts[1]);
+ printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+ ts[0].tv_sec = 0xdeadbeefU;
+ ts[0].tv_nsec = 0xfacefeedU;
+ ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ ts[1].tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+ printf("utimensat(AT_FDCWD, %s, [", qname);
+ print_ts(&ts[0]);
+ printf(", ");
+ print_ts(&ts[1]);
+ printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
ts[0].tv_nsec = UTIME_NOW;
ts[1].tv_nsec = UTIME_OMIT;
- assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
- if (ENOENT != errno)
- error_msg_and_skip("utimensat");
- printf(PREFIX "[UTIME_NOW, UTIME_OMIT], AT_SYMLINK_NOFOLLOW)"
- " = -1 ENOENT (%m)\n");
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+ printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+ ", AT_SYMLINK_NOFOLLOW) = %s\n", qname, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_utimensat(kfdcwd, kfname, f8ill_ptr_to_kulong(ts), 0);
+ printf("utimensat(AT_FDCWD, %s, %#jx, 0) = %s\n",
+ qname, (uintmax_t) f8ill_ptr_to_kulong(ts), errstr);
+ }
+
+ /* flags */
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+ (kernel_ulong_t) 0xdefaced00000200);
+ printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+ ", AT_REMOVEDIR) = %s\n",
+ qname, errstr);
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+ (kernel_ulong_t) 0xdefaced00000600);
+ printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+ ", AT_REMOVEDIR|AT_SYMLINK_FOLLOW) = %s\n",
+ qname, errstr);
+
+ k_utimensat(kfdcwd, kfname, (uintptr_t) ts, (kernel_ulong_t) -1ULL);
+ printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+ ", AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+ "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff) = %s\n",
+ qname, errstr);
puts("+++ exited with 0 +++");
return 0;
@@ -95,7 +202,6 @@
#else
-SKIP_MAIN_UNDEFINED("HAVE_UTIMENSAT && AT_FDCWD && AT_SYMLINK_NOFOLLOW"
- " && UTIME_NOW && UTIME_OMIT")
+SKIP_MAIN_UNDEFINED("__NR_utimensat && UTIME_NOW && UTIME_OMIT")
#endif
diff --git a/tests/utimensat.gen.test b/tests/utimensat.gen.test
new file mode 100755
index 0000000..a4d6656
--- /dev/null
+++ b/tests/utimensat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/utimensat.test b/tests/utimensat.test
deleted file mode 100755
index 52e3f31..0000000
--- a/tests/utimensat.test
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utimensat syscall.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e utimensat $args > "$OUT"
-
-check_prog grep
-LC_ALL=C grep -x "utimensat(.*" "$LOG" > /dev/null || {
- rm -f "$OUT"
- skip_ 'test executable does not use utimensat syscall'
-}
-
-match_diff "$LOG" "$OUT"
-
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/utimes.c b/tests/utimes.c
index bbfa031..4bef1a6 100644
--- a/tests/utimes.c
+++ b/tests/utimes.c
@@ -1,7 +1,7 @@
/*
* Check decoding of utimes syscall.
*
- * 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
@@ -32,50 +32,10 @@
#ifdef __NR_utimes
-# include <stdint.h>
-# include <stdio.h>
-# include <sys/time.h>
-# include <unistd.h>
-
-int
-main(void)
-{
- struct timeval tv;
- if (gettimeofday(&tv, NULL))
- perror_msg_and_fail("gettimeofday");
-
- static const char sample[] = "utimes_sample";
-
- long rc = syscall(__NR_utimes, sample, 0);
- printf("utimes(\"%s\", NULL) = %ld %s (%m)\n",
- sample, rc, errno2name());
-
- struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-
- 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(\"\", [{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 +++");
- return 0;
-}
+# define TEST_SYSCALL_NR __NR_utimes
+# define TEST_SYSCALL_STR "utimes"
+# define TEST_STRUCT struct timeval
+# include "xutimes.c"
#else
diff --git a/tests/utimes.gen.test b/tests/utimes.gen.test
new file mode 100755
index 0000000..37ed29c
--- /dev/null
+++ b/tests/utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/utimes.test b/tests/utimes.test
deleted file mode 100755
index 99143a0..0000000
--- a/tests/utimes.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check utimes syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/vfork-f.gen.test b/tests/vfork-f.gen.test
new file mode 100755
index 0000000..b3c1c6b
--- /dev/null
+++ b/tests/vfork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vfork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests/vfork-f.test b/tests/vfork-f.test
deleted file mode 100755
index ff4422b..0000000
--- a/tests/vfork-f.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows vfork syscall.
-
-. "${srcdir=.}/fork-f.test"
diff --git a/tests/vhangup.gen.test b/tests/vhangup.gen.test
new file mode 100755
index 0000000..7ac84e5
--- /dev/null
+++ b/tests/vhangup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/vhangup.test b/tests/vhangup.test
deleted file mode 100755
index 8fe1cac..0000000
--- a/tests/vhangup.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check vhangup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a10
diff --git a/tests/vmsplice.gen.test b/tests/vmsplice.gen.test
new file mode 100755
index 0000000..fe6a07d
--- /dev/null
+++ b/tests/vmsplice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vmsplice -ewrite=1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -ewrite=1
diff --git a/tests/vmsplice.test b/tests/vmsplice.test
deleted file mode 100755
index 8a80650..0000000
--- a/tests/vmsplice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of vmsplice syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
diff --git a/tests/wait4-v.gen.test b/tests/wait4-v.gen.test
new file mode 100755
index 0000000..5b23f42
--- /dev/null
+++ b/tests/wait4-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4-v -v -e signal=none -e trace=wait4); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests/wait4-v.test b/tests/wait4-v.test
deleted file mode 100755
index 58e55f2..0000000
--- a/tests/wait4-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests/wait4.c b/tests/wait4.c
index ccb3ebb..ab0c7a4 100644
--- a/tests/wait4.c
+++ b/tests/wait4.c
@@ -2,6 +2,7 @@
* Check decoding of wait4 syscall.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,8 +41,8 @@
{
static char buf[1024];
snprintf(buf, sizeof(buf),
- "{ru_utime={tv_sec=%lu, tv_usec=%lu}"
- ", ru_stime={tv_sec=%lu, tv_usec=%lu}"
+ "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+ ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
#if VERBOSE
", ru_maxrss=%lu"
", ru_ixrss=%lu"
@@ -60,10 +61,10 @@
#else
", ...}"
#endif
- , (long) ru->ru_utime.tv_sec
- , (long) ru->ru_utime.tv_usec
- , (long) ru->ru_stime.tv_sec
- , (long) ru->ru_stime.tv_usec
+ , (long long) ru->ru_utime.tv_sec
+ , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
+ , (long long) ru->ru_stime.tv_sec
+ , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
#if VERBOSE
, (long) ru->ru_maxrss
, (long) ru->ru_ixrss
@@ -119,12 +120,12 @@
(void) close(0);
- int *const s = tail_alloc(sizeof(*s));
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
if (wait4(pid, s, WNOHANG|__WALL, NULL))
perror_msg_and_fail("wait4 #1");
tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
- struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
if (wait4(pid, s, WNOHANG|__WALL, rusage))
perror_msg_and_fail("wait4 #2");
tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
diff --git a/tests/wait4.gen.test b/tests/wait4.gen.test
new file mode 100755
index 0000000..ae04915
--- /dev/null
+++ b/tests/wait4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal=none
diff --git a/tests/wait4.test b/tests/wait4.test
deleted file mode 100755
index 6338d1f..0000000
--- a/tests/wait4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/waitid-v.gen.test b/tests/waitid-v.gen.test
new file mode 100755
index 0000000..45744cd
--- /dev/null
+++ b/tests/waitid-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid-v -v -e signal=none -e trace=waitid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests/waitid-v.test b/tests/waitid-v.test
deleted file mode 100755
index eb498cb..0000000
--- a/tests/waitid-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests/waitid.c b/tests/waitid.c
index 6a10299..b56feea 100644
--- a/tests/waitid.c
+++ b/tests/waitid.c
@@ -2,6 +2,7 @@
* Check decoding of waitid syscall.
*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -42,8 +43,8 @@
{
static char buf[1024];
snprintf(buf, sizeof(buf),
- "{ru_utime={tv_sec=%lld, tv_usec=%lld}"
- ", ru_stime={tv_sec=%lld, tv_usec=%lld}"
+ "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+ ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
#if VERBOSE
", ru_maxrss=%llu"
", ru_ixrss=%llu"
@@ -63,9 +64,9 @@
", ...}"
#endif
, (long long) ru->ru_utime.tv_sec
- , (long long) ru->ru_utime.tv_usec
+ , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
, (long long) ru->ru_stime.tv_sec
- , (long long) ru->ru_stime.tv_usec
+ , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
#if VERBOSE
, zero_extend_signed_to_ull(ru->ru_maxrss)
, zero_extend_signed_to_ull(ru->ru_ixrss)
@@ -185,9 +186,9 @@
perror_msg_and_fail("waitid #1");
tprintf("waitid(P_PID, %d, NULL, WNOHANG|WEXITED, NULL) = 0\n", pid);
- siginfo_t *const sinfo = tail_alloc(sizeof(*sinfo));
+ TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
memset(sinfo, 0, sizeof(*sinfo));
- struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
perror_msg_and_fail("waitid #2");
tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
diff --git a/tests/waitid.gen.test b/tests/waitid.gen.test
new file mode 100755
index 0000000..59f4022
--- /dev/null
+++ b/tests/waitid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -esignal=none
diff --git a/tests/waitid.test b/tests/waitid.test
deleted file mode 100755
index 3bcba3a..0000000
--- a/tests/waitid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/waitpid.gen.test b/tests/waitpid.gen.test
new file mode 100755
index 0000000..d91e298
--- /dev/null
+++ b/tests/waitpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/waitpid.test b/tests/waitpid.test
deleted file mode 100755
index 93807d1..0000000
--- a/tests/waitpid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitpid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/xattr-strings.gen.test b/tests/xattr-strings.gen.test
new file mode 100755
index 0000000..3317892
--- /dev/null
+++ b/tests/xattr-strings.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr-strings -a22 -s 4 -e trace=fsetxattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests/xattr-strings.test b/tests/xattr-strings.test
deleted file mode 100755
index 25ef360..0000000
--- a/tests/xattr-strings.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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.gen.test b/tests/xattr.gen.test
new file mode 100755
index 0000000..030f2ce
--- /dev/null
+++ b/tests/xattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
diff --git a/tests/xattr.test b/tests/xattr.test
deleted file mode 100755
index 8c7a87b..0000000
--- a/tests/xattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=
-for n in getxattr setxattr listxattr removexattr; do
- syscalls="$syscalls,${n},f${n},l${n}"
-done
-
-run_strace_match_diff -a22 -e trace=$syscalls
diff --git a/tests/xet_robust_list.c b/tests/xet_robust_list.c
index 211dec4..a612b92 100644
--- a/tests/xet_robust_list.c
+++ b/tests/xet_robust_list.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -51,8 +52,8 @@
{
const pid_t pid = getpid();
const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
- void **p_head = tail_alloc(sizeof(void *));
- size_t *p_len = tail_alloc(sizeof(size_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
+ TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
perror_msg_and_skip("get_robust_list");
diff --git a/tests/xet_robust_list.gen.test b/tests/xet_robust_list.gen.test
new file mode 100755
index 0000000..798cdff
--- /dev/null
+++ b/tests/xet_robust_list.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests/xet_robust_list.test b/tests/xet_robust_list.test
deleted file mode 100755
index 8a3a382..0000000
--- a/tests/xet_robust_list.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_robust_list and set_robust_list syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests/xetitimer.c b/tests/xetitimer.c
index 4b17edd..3a81880 100644
--- a/tests/xetitimer.c
+++ b/tests/xetitimer.c
@@ -1,5 +1,7 @@
/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Check decoding of setitimer and getitimer syscalls.
+ *
+ * Copyright (c) 2015-2017 Dmitry V. Levin <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,48 +31,153 @@
#include <stdio.h>
#include <stdint.h>
#include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
int
main(void)
{
- struct {
- struct itimerval itv;
- uint32_t pad[4];
- } old = {
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
- }, new = {
- .itv = {
- .it_interval = { 0xc0de1, 0xc0de2 },
- .it_value = { 0xc0de3, 0xc0de4 }
- },
- .pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
+ static const struct itimerval new = {
+ .it_interval = { 0xc0de1, 0xc0de2 },
+ .it_value = { 0xc0de3, 0xc0de4 }
};
+ static const kernel_ulong_t long_timer =
+ F8ILL_KULONG_MASK | ITIMER_REAL;
+ static const kernel_ulong_t bogus_timer =
+ (kernel_ulong_t) 0xfacefeeddeadbeefULL;
- if (setitimer(ITIMER_REAL, &new.itv, &old.itv))
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
+ struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+ void *const efault = tail_alloc(sizeof(new) - 8);
+ long rc;
+
+ if (setitimer(ITIMER_REAL, p_new, NULL))
perror_msg_and_skip("setitimer");
printf("setitimer(ITIMER_REAL"
- ", {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,
- (intmax_t) new.itv.it_value.tv_usec,
- (intmax_t) old.itv.it_interval.tv_sec,
- (intmax_t) old.itv.it_interval.tv_usec,
- (intmax_t) old.itv.it_value.tv_sec,
- (intmax_t) old.itv.it_value.tv_usec);
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+ ", NULL) = 0\n",
+ (long long) new.it_interval.tv_sec,
+ zero_extend_signed_to_ull(new.it_interval.tv_usec),
+ (long long) new.it_value.tv_sec,
+ zero_extend_signed_to_ull(new.it_value.tv_usec));
- if (getitimer(ITIMER_REAL, &old.itv))
+ fill_memory(p_old, sizeof(*p_old));
+ if (getitimer(ITIMER_REAL, p_old))
perror_msg_and_skip("getitimer");
printf("getitimer(ITIMER_REAL"
- ", {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,
- (intmax_t) old.itv.it_value.tv_usec);
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+ (long long) p_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+ (long long) p_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+ fill_memory(p_old, sizeof(*p_old));
+ setitimer(ITIMER_REAL, p_new, p_old);
+ printf("setitimer(ITIMER_REAL"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+ (long long) new.it_interval.tv_sec,
+ zero_extend_signed_to_ull(new.it_interval.tv_usec),
+ (long long) new.it_value.tv_sec,
+ zero_extend_signed_to_ull(new.it_value.tv_usec),
+ (long long) p_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+ (long long) p_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+ rc = getitimer(ITIMER_REAL, efault);
+ printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
+
+ rc = setitimer(ITIMER_REAL, p_new, efault);
+ printf("setitimer(ITIMER_REAL"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+ (long long) new.it_interval.tv_sec,
+ zero_extend_signed_to_ull(new.it_interval.tv_usec),
+ (long long) new.it_value.tv_sec,
+ zero_extend_signed_to_ull(new.it_value.tv_usec),
+ efault, sprintrc(rc));
+
+ rc = setitimer(ITIMER_REAL, efault, p_old);
+ printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
+ efault, p_old, sprintrc(rc));
+
+ fill_memory(p_old, sizeof(*p_old));
+ rc = syscall(__NR_setitimer, long_timer, p_new, p_old);
+ printf("setitimer(ITIMER_REAL"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+ (long long) new.it_interval.tv_sec,
+ zero_extend_signed_to_ull(new.it_interval.tv_usec),
+ (long long) new.it_value.tv_sec,
+ zero_extend_signed_to_ull(new.it_value.tv_usec),
+ (long long) p_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+ (long long) p_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+ sprintrc(rc));
+
+ fill_memory(p_old, sizeof(*p_old));
+ rc = syscall(__NR_getitimer, long_timer, p_old);
+ printf("getitimer(ITIMER_REAL"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+ (long long) p_old->it_interval.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+ (long long) p_old->it_value.tv_sec,
+ zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+ sprintrc(rc));
+
+ rc = syscall(__NR_setitimer, bogus_timer, p_new, p_old);
+ printf("setitimer(%#x /* ITIMER_??? */"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+ (int) bogus_timer,
+ (long long) new.it_interval.tv_sec,
+ zero_extend_signed_to_ull(new.it_interval.tv_usec),
+ (long long) new.it_value.tv_sec,
+ zero_extend_signed_to_ull(new.it_value.tv_usec),
+ p_old, sprintrc(rc));
+
+ rc = syscall(__NR_getitimer, bogus_timer, p_old);
+ printf("getitimer(%#x /* ITIMER_??? */, %p) = %s\n",
+ (int) bogus_timer, p_old, sprintrc(rc));
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ const kernel_ulong_t ill_new = f8ill_ptr_to_kulong(p_new);
+ const kernel_ulong_t ill_old = f8ill_ptr_to_kulong(p_old);
+
+ rc = syscall(__NR_setitimer, long_timer, ill_new, ill_old);
+ printf("setitimer(ITIMER_REAL, %#llx, %#llx) = %s\n",
+ (unsigned long long) ill_new,
+ (unsigned long long) ill_old,
+ sprintrc(rc));
+
+ rc = syscall(__NR_getitimer, long_timer, ill_old);
+ printf("getitimer(ITIMER_REAL, %#llx) = %s\n",
+ (unsigned long long) ill_old, sprintrc(rc));
+ }
+
+ p_new->it_interval.tv_sec = 0xdeadbeefU;
+ p_new->it_interval.tv_usec = 0xfacefeedU;
+ p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ p_new->it_value.tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+ rc = setitimer(ITIMER_REAL, p_new, p_old);
+ printf("setitimer(ITIMER_REAL"
+ ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+ ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+ (long long) p_new->it_interval.tv_sec,
+ zero_extend_signed_to_ull(p_new->it_interval.tv_usec),
+ (long long) p_new->it_value.tv_sec,
+ zero_extend_signed_to_ull(p_new->it_value.tv_usec),
+ p_old, sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/xetitimer.gen.test b/tests/xetitimer.gen.test
new file mode 100755
index 0000000..0cdb926
--- /dev/null
+++ b/tests/xetitimer.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetitimer -a29 -e trace=setitimer,getitimer); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=setitimer,getitimer
diff --git a/tests/xetitimer.test b/tests/xetitimer.test
deleted file mode 100755
index 4aa00cc..0000000
--- a/tests/xetitimer.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setitimer and getitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setitimer,getitimer
diff --git a/tests/xetpgid.c b/tests/xetpgid.c
index 24e0d7f..0efffcb 100644
--- a/tests/xetpgid.c
+++ b/tests/xetpgid.c
@@ -2,6 +2,7 @@
* This file is part of xetpgid strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -39,13 +40,10 @@
main(void)
{
const int pid = getpid();
- long rc = syscall(__NR_getpgid,
- (unsigned long) 0xffffffff00000000ULL | pid);
+ long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
printf("getpgid(%d) = %ld\n", pid, rc);
- rc = syscall(__NR_setpgid,
- (unsigned long) 0xffffffff00000000ULL,
- (unsigned long) 0xffffffff00000000ULL | pid);
+ rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
printf("setpgid(0, %d) = %ld\n", pid, rc);
puts("+++ exited with 0 +++");
diff --git a/tests/xetpgid.gen.test b/tests/xetpgid.gen.test
new file mode 100755
index 0000000..fc57fc4
--- /dev/null
+++ b/tests/xetpgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests/xetpgid.test b/tests/xetpgid.test
deleted file mode 100755
index 07f4f9e..0000000
--- a/tests/xetpgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgid and setpgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests/xetpriority.c b/tests/xetpriority.c
index ed55259..30c59c8 100644
--- a/tests/xetpriority.c
+++ b/tests/xetpriority.c
@@ -12,12 +12,11 @@
{
const int pid = getpid();
long rc = syscall(__NR_getpriority, PRIO_PROCESS,
- (unsigned long) 0xffffffff00000000ULL | pid);
+ F8ILL_KULONG_MASK | pid);
printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
rc = syscall(__NR_setpriority, PRIO_PROCESS,
- (unsigned long) 0xffffffff00000000ULL | pid,
- (unsigned long) 0xffffffff00000000ULL);
+ F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
puts("+++ exited with 0 +++");
diff --git a/tests/xetpriority.gen.test b/tests/xetpriority.gen.test
new file mode 100755
index 0000000..4b95524
--- /dev/null
+++ b/tests/xetpriority.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests/xetpriority.test b/tests/xetpriority.test
deleted file mode 100755
index 2c84ba4..0000000
--- a/tests/xetpriority.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpriority and setpriority syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests/xettimeofday.c b/tests/xettimeofday.c
index d36c57b..ec422cf 100644
--- a/tests/xettimeofday.c
+++ b/tests/xettimeofday.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -36,36 +37,49 @@
int
main(void)
{
- struct {
- struct timeval tv;
- uint32_t pad0[2];
- struct timezone tz;
- uint32_t pad1[2];
- } t = {
- .pad0 = { 0xdeadbeef, 0xbadc0ded },
- .pad1 = { 0xdeadbeef, 0xbadc0ded }
- };
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timezone, tz);
- if (syscall(__NR_gettimeofday, &t.tv, NULL))
+ if (syscall(__NR_gettimeofday, tv, NULL))
perror_msg_and_skip("gettimeofday");
- printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}, NULL) = 0\n",
- (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec);
+ printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}, NULL) = 0\n",
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec));
- if (syscall(__NR_gettimeofday, &t.tv, &t.tz))
+ if (syscall(__NR_gettimeofday, tv, tz))
perror_msg_and_skip("gettimeofday");
- printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}"
+ printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}"
", {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);
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec),
+ tz->tz_minuteswest, tz->tz_dsttime);
- t.tv.tv_sec = -1;
- t.tv.tv_usec = 1000000000;
- assert(syscall(__NR_settimeofday, &t.tv, &t.tz) == -1);
- 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,
- t.tz.tz_minuteswest, t.tz.tz_dsttime);
+ tv->tv_sec = -1;
+ tv->tv_usec = 1000000;
+ assert(syscall(__NR_settimeofday, tv, tz) == -1);
+ printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+ ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec),
+ tz->tz_minuteswest, tz->tz_dsttime);
+
+ tv->tv_sec = 0xdeadbeefU;
+ tv->tv_usec = 0xfacefeedU;
+ assert(syscall(__NR_settimeofday, tv, tz) == -1);
+ printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+ ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec),
+ tz->tz_minuteswest, tz->tz_dsttime);
+
+ tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+ assert(syscall(__NR_settimeofday, tv, tz) == -1);
+ printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+ ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec),
+ tz->tz_minuteswest, tz->tz_dsttime);
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/xettimeofday.gen.test b/tests/xettimeofday.gen.test
new file mode 100755
index 0000000..1a021e4
--- /dev/null
+++ b/tests/xettimeofday.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xettimeofday -a20 -e trace=gettimeofday,settimeofday); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests/xettimeofday.test b/tests/xettimeofday.test
deleted file mode 100755
index 68764e4..0000000
--- a/tests/xettimeofday.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check gettimeofday and settimeofday syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests/xselect.c b/tests/xselect.c
index 39e87ac..e1638c8 100644
--- a/tests/xselect.c
+++ b/tests/xselect.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,6 +32,7 @@
#include <assert.h>
#include <stdio.h>
+#include <string.h>
#include <unistd.h>
#include <sys/select.h>
@@ -38,14 +40,10 @@
int main(void)
{
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+ struct timeval tv_in;
int fds[2];
- struct {
- struct timeval tv;
- int pad[2];
- } tm_in = {
- .tv = { .tv_sec = 0xc0de1, .tv_usec = 0xc0de2 },
- .pad = { 0xdeadbeef, 0xbadc0ded }
- }, tm = tm_in;
+ long rc;
if (pipe(fds))
perror_msg_and_fail("pipe");
@@ -56,7 +54,7 @@
FD_ZERO(set);
FD_SET(fds[0], set);
FD_SET(fds[1], set);
- int rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
+ rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
if (rc < 0)
perror_msg_and_skip(TEST_SYSCALL_STR);
assert(rc == 1);
@@ -65,19 +63,73 @@
fds[0], fds[1], fds[0], fds[1]);
/*
+ * Odd timeout.
+ */
+ FD_SET(fds[0], set);
+ FD_SET(fds[1], set);
+ tv->tv_sec = 0xdeadbeefU;
+ tv->tv_usec = 0xfacefeedU;
+ memcpy(&tv_in, tv, sizeof(tv_in));
+ rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+ if (rc < 0) {
+ printf("%s(%d, [%d %d], [%d %d], [%d %d]"
+ ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
+ TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
+ fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+ } else {
+ printf("%s(%d, [%d %d], [%d %d], [%d %d]"
+ ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
+ " (left {tv_sec=%lld, tv_usec=%llu})\n",
+ TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
+ fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+ zero_extend_signed_to_ull(tv_in.tv_usec),
+ rc, (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec));
+ }
+
+ FD_SET(fds[0], set);
+ FD_SET(fds[1], set);
+ tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+ memcpy(&tv_in, tv, sizeof(tv_in));
+ rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+ if (rc < 0) {
+ printf("%s(%d, [%d %d], [%d %d], [%d %d]"
+ ", {tv_sec=%lld, tv_usec=%llu}) = %s\n",
+ TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
+ fds[0], fds[1], fds[0], fds[1], (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec), sprintrc(rc));
+ } else {
+ printf("%s(%d, [%d %d], [%d %d], [%d %d]"
+ ", {tv_sec=%lld, tv_usec=%llu}) = %ld"
+ " (left {tv_sec=%lld, tv_usec=%llu})\n",
+ TEST_SYSCALL_STR, fds[1] + 1, fds[0], fds[1],
+ fds[0], fds[1], fds[0], fds[1], (long long) tv_in.tv_sec,
+ zero_extend_signed_to_ull(tv_in.tv_usec),
+ rc, (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec));
+ }
+
+ /*
* Another simple one, with a timeout.
*/
FD_SET(1, set);
FD_SET(2, set);
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, {tv_sec=%lld, tv_usec=%lld})"
- " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%lld})\n",
+ tv->tv_sec = 0xc0de1;
+ tv->tv_usec = 0xc0de2;
+ memcpy(&tv_in, tv, sizeof(tv_in));
+ assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, tv) == 3);
+ printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%llu})"
+ " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%llu})\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,
+ (long long) tv_in.tv_sec,
+ zero_extend_signed_to_ull(tv_in.tv_usec),
fds[1],
- (long long) tm.tv.tv_sec, (long long) tm.tv.tv_usec);
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec));
/*
* Now the crash case that trinity found, negative nfds
@@ -94,9 +146,9 @@
*/
FD_ZERO(set);
FD_SET(fds[0],set);
- 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);
+ tv->tv_sec = 0;
+ tv->tv_usec = 123;
+ assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, tv) == 0);
printf("%s(%d, [%d], [], NULL, {tv_sec=0, tv_usec=123}) = 0 (Timeout)\n",
TEST_SYSCALL_STR, FD_SETSIZE + 1, fds[0]);
diff --git a/tests/xstatfsx.c b/tests/xstatfsx.c
index d8288f1..cb524ff 100644
--- a/tests/xstatfsx.c
+++ b/tests/xstatfsx.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,9 +63,9 @@
{
int fd = open(sample, O_RDONLY);
if (fd < 0)
- perror_msg_and_fail("open: %s", sample);
+ perror_msg_and_skip("open: %s", sample);
- STRUCT_STATFS *const b = tail_alloc(sizeof(*b));
+ TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STATFS, b);
long rc = SYSCALL_INVOKE(sample, fd, b, sizeof(*b));
if (rc)
perror_msg_and_skip(SYSCALL_NAME);
diff --git a/tests/xstatx.c b/tests/xstatx.c
index 0d5fca8..8758ef8 100644
--- a/tests/xstatx.c
+++ b/tests/xstatx.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015-2016 Dmitry V. Levin <[email protected]>
+ * Copyright (c) 2015-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,26 +48,7 @@
# include <unistd.h>
# include <sys/sysmacros.h>
-static void
-print_time(const time_t t)
-{
- if (!t) {
- printf("0");
- return;
- }
-
- struct tm *p = localtime(&t);
-
- 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));
- }
-}
+# include "statx.h"
# ifndef STRUCT_STAT
# define STRUCT_STAT struct stat
@@ -130,6 +112,10 @@
# define OLD_STAT 0
# endif
+# ifndef IS_STATX
+# define IS_STATX 0
+# endif
+
static void
print_ftype(const unsigned int mode)
{
@@ -151,6 +137,8 @@
printf("%#o", mode & ~S_IFMT);
}
+# if !IS_STATX
+
static void
print_stat(const STRUCT_STAT *st)
{
@@ -165,12 +153,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
+# if OLD_STAT
printf(", st_blksize=0, st_blocks=0");
-# else /* !OLD_STAT */
+# 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 */
+# endif /* OLD_STAT */
switch (st->st_mode & S_IFMT) {
case S_IFCHR: case S_IFBLK:
@@ -182,27 +170,87 @@
printf(", st_size=%llu", zero_extend_signed_to_ull(st->st_size));
}
- printf(", st_atime=");
- print_time(sign_extend_unsigned_to_ll(st->st_atime));
-# 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));
-# 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));
-# 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
+# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
+# define TIME_NSEC(val) zero_extend_signed_to_ull(val)
+# define HAVE_NSEC 1
+# else
+# define TIME_NSEC(val) 0ULL
+# define HAVE_NSEC 0
+# endif
+
+#define PRINT_ST_TIME(field) \
+ printf(", st_" #field "=%lld", \
+ sign_extend_unsigned_to_ll(st->st_ ## field)); \
+ print_time_t_nsec(sign_extend_unsigned_to_ll(st->st_ ## field), \
+ TIME_NSEC(st->st_ ## field ## _nsec), 1); \
+ if (HAVE_NSEC) \
+ printf(", st_" #field "_nsec=%llu", \
+ TIME_NSEC(st->st_ ## field ## _nsec))
+
+ PRINT_ST_TIME(atime);
+ PRINT_ST_TIME(mtime);
+ PRINT_ST_TIME(ctime);
printf("}");
}
+# else /* !IS_STATX */
+
+static void
+print_stat(const STRUCT_STAT *st)
+{
+# define PRINT_FIELD_U(field) \
+ printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+# define PRINT_FIELD_U32_UID(field) \
+ if (st->field == (uint32_t) -1) \
+ printf(", %s=-1", #field); \
+ else \
+ printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+# define PRINT_FIELD_TIME(field) \
+ printf(", %s={tv_sec=%lld, tv_nsec=%u}", \
+ #field, (long long) st->field.tv_sec, \
+ (unsigned) st->field.tv_nsec); \
+ print_time_t_nsec(st->field.tv_sec, \
+ zero_extend_signed_to_ull(st->field.tv_nsec), 1);
+
+ printf("{stx_mask=");
+ printflags(statx_masks, st->stx_mask, "STATX_???");
+
+ PRINT_FIELD_U(stx_blksize);
+
+ printf(", stx_attributes=");
+ printflags(statx_attrs, st->stx_attributes, "STATX_ATTR_???");
+
+ PRINT_FIELD_U(stx_nlink);
+ PRINT_FIELD_U32_UID(stx_uid);
+ PRINT_FIELD_U32_UID(stx_gid);
+
+ printf(", stx_mode=");
+ print_ftype(st->stx_mode);
+ printf("|");
+ print_perms(st->stx_mode);
+
+ PRINT_FIELD_U(stx_ino);
+ PRINT_FIELD_U(stx_size);
+ PRINT_FIELD_U(stx_blocks);
+
+ printf(", stx_attributes_mask=");
+ printflags(statx_attrs, st->stx_attributes_mask, "STATX_ATTR_???");
+
+ PRINT_FIELD_TIME(stx_atime);
+ PRINT_FIELD_TIME(stx_btime);
+ PRINT_FIELD_TIME(stx_ctime);
+ PRINT_FIELD_TIME(stx_mtime);
+ PRINT_FIELD_U(stx_rdev_major);
+ PRINT_FIELD_U(stx_rdev_minor);
+ PRINT_FIELD_U(stx_dev_major);
+ PRINT_FIELD_U(stx_dev_minor);
+ printf("}");
+}
+
+# endif /* !IS_STATX */
+
static int
create_sample(const char *fname, const libc_off_t size)
{
@@ -229,19 +277,19 @@
int
main(void)
{
-# if !IS_FSTAT
+# if IS_FSTAT
+ skip_if_unavailable("/proc/self/fd/");
+# else
static const char full[] = "/dev/full";
# endif
- static const char sample[] = TEST_SYSCALL_STR ".sample";
- STRUCT_STAT st[2];
+ static const char sample[] = "stat.sample";
+ TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STAT, st);
int rc;
rc = create_sample(sample, SAMPLE_SIZE);
- if (rc) {
- (void) unlink(sample);
+ if (rc)
return rc;
- }
# if TEST_BOGUS_STRUCT_STAT
STRUCT_STAT *st_cut = tail_alloc(sizeof(long) * 4);
@@ -262,46 +310,71 @@
# endif
if ((rc = TEST_SYSCALL_INVOKE(sample, st))) {
-# if OLD_STAT
- if (errno != EOVERFLOW)
-# endif
- {
+ if (errno != EOVERFLOW) {
+ rc = (errno == ENOSYS) ? 77 : 1;
perror(TEST_SYSCALL_STR);
- (void) unlink(sample);
- return 77;
+ return rc;
}
}
- (void) unlink(sample);
+
+# if IS_STATX
+# define ST_SIZE_FIELD stx_size
+# else
+# define ST_SIZE_FIELD st_size
+# endif
if (!rc && zero_extend_signed_to_ull(SAMPLE_SIZE) !=
- zero_extend_signed_to_ull(st[0].st_size)) {
+ zero_extend_signed_to_ull(st->ST_SIZE_FIELD)) {
fprintf(stderr, "Size mismatch: "
"requested size(%llu) != st_size(%llu)\n",
zero_extend_signed_to_ull(SAMPLE_SIZE),
- zero_extend_signed_to_ull(st[0].st_size));
+ zero_extend_signed_to_ull(st->ST_SIZE_FIELD));
fprintf(stderr, "The most likely reason for this is incorrect"
" definition of %s.\n"
"Here is some diagnostics that might help:\n",
STRUCT_STAT_STR);
-#define LOG_STAT_OFFSETOF_SIZEOF(object, member) \
+# 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 */
+# if IS_STATX
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mask);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blksize);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_nlink);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_uid);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_gid);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mode);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ino);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_size);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blocks);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes_mask);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_atime);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_btime);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ctime);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mtime);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_major);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_minor);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_major);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_minor);
+# else
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_dev);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_ino);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_mode);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_nlink);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_uid);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_gid);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_rdev);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_size);
+# if !OLD_STAT
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_blksize);
+ LOG_STAT_OFFSETOF_SIZEOF(*st, st_blocks);
+# endif /* !OLD_STAT */
+
+# endif /* IS_STATX */
return 1;
}
@@ -313,6 +386,63 @@
print_stat(st);
PRINT_SYSCALL_FOOTER(rc);
+# if IS_STATX
+
+# define INVOKE() \
+ rc = TEST_SYSCALL_INVOKE(sample, st); \
+ PRINT_SYSCALL_HEADER(sample); \
+ if (rc) \
+ printf("%p", st); \
+ else \
+ print_stat(st); \
+ PRINT_SYSCALL_FOOTER(rc)
+
+# define SET_FLAGS_INVOKE(flags, flags_str) \
+ TEST_SYSCALL_STATX_FLAGS = flags; \
+ TEST_SYSCALL_STATX_FLAGS_STR = flags_str; \
+ INVOKE()
+
+# define SET_MASK_INVOKE(mask, mask_str) \
+ TEST_SYSCALL_STATX_MASK = mask; \
+ TEST_SYSCALL_STATX_MASK_STR = mask_str; \
+ INVOKE()
+
+ unsigned old_flags = TEST_SYSCALL_STATX_FLAGS;
+ const char *old_flags_str = TEST_SYSCALL_STATX_FLAGS_STR;
+ unsigned old_mask = TEST_SYSCALL_STATX_MASK;
+ const char *old_mask_str = TEST_SYSCALL_STATX_MASK_STR;
+
+ SET_FLAGS_INVOKE(AT_SYMLINK_FOLLOW | 0xffff0000U,
+ "AT_STATX_SYNC_AS_STAT|AT_SYMLINK_FOLLOW|0xffff0000");
+
+ SET_FLAGS_INVOKE(AT_STATX_SYNC_TYPE,
+ "AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC");
+
+ SET_FLAGS_INVOKE(0xffffff,
+ "AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
+ "AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
+ "0xff80ff");
+
+ /* We're done playing with flags. */
+ TEST_SYSCALL_STATX_FLAGS = old_flags;
+ TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
+
+ SET_MASK_INVOKE(0, "0");
+ SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+
+ SET_MASK_INVOKE(0xfffffffbU,
+ "STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
+ "STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
+ "STATX_BTIME|0xfffff000");
+
+ SET_MASK_INVOKE(STATX_UID, "STATX_UID");
+
+ /* ...and with mask. */
+ TEST_SYSCALL_STATX_MASK = old_mask;
+ TEST_SYSCALL_STATX_MASK_STR = old_mask_str;
+
+# endif /* IS_STATX */
+
puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/xutimes.c b/tests/xutimes.c
new file mode 100644
index 0000000..5fd7161
--- /dev/null
+++ b/tests/xutimes.c
@@ -0,0 +1,149 @@
+/*
+ * Check decoding of utimes/osf_utimes 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.
+ */
+
+#ifndef TEST_SYSCALL_NR
+# error TEST_SYSCALL_NR must be defined
+#endif
+
+#ifndef TEST_SYSCALL_STR
+# error TEST_SYSCALL_STR must be defined
+#endif
+
+#ifndef TEST_STRUCT
+# error TEST_STRUCT must be defined
+#endif
+
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+static void
+print_tv(const TEST_STRUCT *const tv)
+{
+ printf("{tv_sec=%lld, tv_usec=%llu}",
+ (long long) tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec));
+ print_time_t_usec(tv->tv_sec,
+ zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimes(const kernel_ulong_t pathname, const kernel_ulong_t times)
+{
+ long rc = syscall(TEST_SYSCALL_NR, pathname, times);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ static const char proto_fname[] = TEST_SYSCALL_STR "_sample";
+ static const char qname[] = "\"" TEST_SYSCALL_STR "_sample\"";
+
+ char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+ const kernel_ulong_t kfname = (uintptr_t) fname;
+ TEST_STRUCT *const tv = tail_alloc(sizeof(*tv) * 2);
+
+ /* pathname */
+ k_utimes(0, 0);
+ printf("%s(NULL, NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+ k_utimes(kfname + sizeof(proto_fname) - 1, 0);
+ printf("%s(\"\", NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+ k_utimes(kfname, 0);
+ printf("%s(%s, NULL) = %s\n", TEST_SYSCALL_STR, qname, errstr);
+
+ fname[sizeof(proto_fname) - 1] = '+';
+ k_utimes(kfname, 0);
+ fname[sizeof(proto_fname) - 1] = '\0';
+ printf("%s(%p, NULL) = %s\n", TEST_SYSCALL_STR, fname, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_utimes(f8ill_ptr_to_kulong(fname), 0);
+ printf("%s(%#jx, NULL) = %s\n", TEST_SYSCALL_STR,
+ (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+ }
+
+ /* times */
+ k_utimes(kfname, (uintptr_t) (tv + 1));
+ printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+ qname, tv + 1, errstr);
+
+ k_utimes(kfname, (uintptr_t) (tv + 2));
+ printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+ qname, tv + 2, errstr);
+
+ tv[0].tv_sec = 0xdeadbeefU;
+ tv[0].tv_usec = 0xfacefeedU;
+ tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+ k_utimes(kfname, (uintptr_t) tv);
+ printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+ print_tv(&tv[0]);
+ printf(", ");
+ print_tv(&tv[1]);
+ printf("]) = %s\n", errstr);
+
+ tv[0].tv_sec = 1492358607;
+ tv[0].tv_usec = 1000000;
+ tv[1].tv_sec = 1492356078;
+ tv[1].tv_usec = 1000001;
+
+ k_utimes(kfname, (uintptr_t) tv);
+ printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+ print_tv(&tv[0]);
+ printf(", ");
+ print_tv(&tv[1]);
+ printf("]) = %s\n", errstr);
+
+ tv[0].tv_usec = 345678;
+ tv[1].tv_usec = 456789;
+
+ k_utimes(kfname, (uintptr_t) tv);
+ printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+ print_tv(&tv[0]);
+ printf(", ");
+ print_tv(&tv[1]);
+ printf("]) = %s\n", errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_utimes(kfname, f8ill_ptr_to_kulong(tv));
+ printf("%s(%s, %#jx) = %s\n", TEST_SYSCALL_STR,
+ qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+ }
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}