# Automake input for strace tests.
#
# Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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 \
	get_page_size.c \
	hexdump_strdup.c \
	hexquote_strndup.c \
	inode_of_sockfd.c \
	overflowuid.c \
	print_quoted_string.c \
	printflags.c \
	printxval.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 \
	access \
	acct \
	adjtimex \
	aio \
	alarm \
	attach-f-p \
	attach-p-cmd-cmd \
	attach-p-cmd-p \
	bpf \
	brk \
	btrfs \
	caps \
	chmod \
	chown \
	chown32 \
	chroot \
	clock_adjtime \
	clock_nanosleep \
	clock_xettime \
	copy_file_range \
	count-f \
	creat \
	dup \
	dup2 \
	dup3 \
	epoll_create \
	epoll_create1 \
	epoll_ctl \
	epoll_pwait \
	epoll_wait \
	eventfd \
	execve \
	execve-v \
	execveat \
	execveat-v \
	faccessat \
	fanotify_mark \
	fchdir \
	fchmod \
	fchmodat \
	fchown \
	fchown32 \
	fchownat \
	fcntl \
	fcntl64 \
	fdatasync \
	file_handle \
	file_ioctl \
	filter-unavailable \
	flock \
	fork-f \
	fstat \
	fstat64 \
	fstatat64 \
	fstatfs \
	fstatfs64 \
	fsync \
	ftruncate \
	ftruncate64 \
	futimesat \
	get_mempolicy \
	getcwd \
	getdents \
	getdents64 \
	getegid \
	getegid32 \
	geteuid \
	geteuid32 \
	getgid \
	getgid32 \
	getgroups \
	getgroups32 \
	getpgrp \
	getrandom \
	getresgid \
	getresgid32 \
	getresuid \
	getresuid32 \
	getrusage \
	getsid \
	getuid \
	getuid32 \
	getxxid \
	inet-cmsg \
	ioctl \
	ioctl_block \
	ioctl_evdev \
	ioctl_evdev-v \
	ioctl_rtc \
	ioctl_rtc-v \
	ioctl_uffdio \
	ioctl_v4l2 \
	ioperm \
	iopl \
	ip_mreq \
	ipc_msg \
	ipc_msgbuf \
	ipc_sem \
	ipc_shm \
	kill \
	ksysent \
	lchown \
	lchown32 \
	link \
	linkat \
	llseek \
	lseek \
	lstat \
	lstat64 \
	mbind \
	membarrier \
	memfd_create \
	migrate_pages \
	mincore \
	mkdir \
	mkdirat \
	mknod \
	mknodat \
	mlock \
	mlock2 \
	mlockall \
	mmap \
	mmap64 \
	mmsg \
	mount \
	move_pages \
	mq \
	munlockall \
	nanosleep \
	net-accept-connect \
	net-icmp_filter \
	net-y-unix \
	net-yy-inet \
	net-yy-netlink \
	net-yy-unix \
	netlink_inet_diag \
	netlink_netlink_diag \
	netlink_unix_diag \
	newfstatat \
	nsyscalls \
	old_mmap \
	oldselect \
	open \
	openat \
	pause \
	pc \
	personality \
	pipe \
	poll \
	ppoll \
	prctl-seccomp-filter-v \
	prctl-seccomp-strict \
	pread64-pwrite64 \
	preadv \
	preadv-pwritev \
	preadv2-pwritev2 \
	pselect6 \
	ptrace \
	pwritev \
	read-write \
	readdir \
	readlink \
	readlinkat \
	readv \
	reboot \
	recvmsg \
	remap_file_pages \
	rename \
	renameat \
	renameat2 \
	restart_syscall \
	rmdir \
	rt_sigpending \
	rt_sigprocmask \
	rt_sigqueueinfo \
	rt_sigsuspend \
	rt_sigtimedwait \
	rt_tgsigqueueinfo \
	sched_get_priority_mxx \
	sched_rr_get_interval \
	sched_xetaffinity \
	sched_xetattr \
	sched_xetparam \
	sched_xetscheduler \
	sched_yield \
	scm_rights \
	seccomp-filter \
	seccomp-filter-v \
	seccomp-strict \
	select \
	semop \
	sendfile \
	sendfile64 \
	set_mempolicy \
	set_ptracer_any \
	setdomainname \
	setfsgid \
	setfsgid32 \
	setfsuid \
	setfsuid32 \
	setgid \
	setgid32 \
	setgroups \
	setgroups32 \
	sethostname \
	setregid \
	setregid32 \
	setresgid \
	setresgid32 \
	setresuid \
	setresuid32 \
	setreuid \
	setreuid32 \
	setuid \
	setuid32 \
	shmxt \
	sigaction \
	sigaltstack \
	signalfd \
	sigreturn \
	sleep \
	splice \
	stack-fcall \
	stat \
	stat64 \
	statfs \
	statfs64 \
	swap \
	symlink \
	symlinkat \
	sync \
	sync_file_range \
	sync_file_range2 \
	sysinfo \
	syslog \
	tee \
	time \
	timer_create \
	timer_xettime \
	timerfd_xettime \
	times \
	times-fail \
	truncate \
	truncate64 \
	uio \
	umask \
	umount \
	umount2 \
	umovestr \
	umovestr2 \
	umovestr3 \
	uname \
	unix-pair-send-recv \
	unlink \
	unlinkat \
	userfaultfd \
	utime \
	utimensat \
	utimes \
	vfork-f \
	vhangup \
	vmsplice \
	wait \
	xattr \
	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)
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
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 \
	access.test \
	acct.test \
	adjtimex.test \
	aio.test \
	alarm.test \
	bpf.test \
	brk.test \
	btrfs.test \
	btrfs-v.test \
	btrfs-w.test \
	btrfs-vw.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 \
	dup.test \
	dup2.test \
	dup3.test \
	epoll_create.test \
	epoll_create1.test \
	epoll_ctl.test \
	epoll_pwait.test \
	epoll_wait.test \
	eventfd.test \
	execve-v.test \
	execve.test \
	execveat-v.test \
	execveat.test \
	faccessat.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 \
	flock.test \
	fstat.test \
	fstat64.test \
	fstatat64.test \
	fstatfs.test \
	fstatfs64.test \
	fsync.test \
	ftruncate.test \
	ftruncate64.test \
	futimesat.test \
	get_mempolicy.test \
	getcwd.test \
	getdents.test \
	getdents64.test \
	getegid.test \
	getegid32.test \
	geteuid.test \
	geteuid32.test \
	getgid.test \
	getgid32.test \
	getgroups.test \
	getgroups32.test \
	getpgrp.test \
	getrandom.test \
	getresgid.test \
	getresgid32.test \
	getresuid.test \
	getresuid32.test \
	getrusage.test \
	getsid.test \
	getuid.test \
	getuid32.test \
	getxxid.test \
	inet-cmsg.test \
	ioctl.test \
	ioctl_block.test \
	ioctl_evdev.test \
	ioctl_evdev-v.test \
	ioctl_rtc.test \
	ioctl_rtc-v.test \
	ioctl_uffdio.test \
	ioctl_v4l2.test \
	ioperm.test \
	iopl.test \
	ip_mreq.test \
	ipc_msg.test \
	ipc_msgbuf.test \
	ipc_sem.test \
	ipc_shm.test \
	kill.test \
	lchown.test \
	lchown32.test \
	link.test \
	linkat.test \
	llseek.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.test \
	mount.test \
	move_pages.test \
	mq.test \
	munlockall.test \
	nanosleep.test \
	net-icmp_filter.test \
	net-y-unix.test \
	net-yy-inet.test \
	net-yy-netlink.test \
	net-yy-unix.test \
	net.test \
	newfstatat.test \
	nsyscalls.test \
	old_mmap.test \
	oldselect.test \
	open.test \
	openat.test \
	pause.test \
	personality.test \
	pipe.test \
	poll.test \
	ppoll.test \
	prctl-seccomp-filter-v.test \
	prctl-seccomp-strict.test \
	pread64-pwrite64.test \
	preadv-pwritev.test \
	preadv2-pwritev2.test \
	preadv.test \
	pselect6.test \
	ptrace.test \
	pwritev.test \
	read-write.test \
	readdir.test \
	readlink.test \
	readlinkat.test \
	readv.test \
	reboot.test \
	recvmsg.test \
	remap_file_pages.test \
	rename.test \
	renameat.test \
	renameat2.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 \
	setregid.test \
	setregid32.test \
	setresgid.test \
	setresgid32.test \
	setresuid.test \
	setresuid32.test \
	setreuid.test \
	setreuid32.test \
	setuid.test \
	setuid32.test \
	shmxt.test \
	sigaction.test \
	sigaltstack.test \
	signalfd.test \
	sigreturn.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 \
	uio.test \
	umask.test \
	umount.test \
	umount2.test \
	umovestr.test \
	umovestr2.test \
	umovestr3.test \
	uname.test \
	unlink.test \
	unlinkat.test \
	userfaultfd.test \
	utime.test \
	utimensat.test \
	utimes.test \
	vhangup.test \
	vmsplice.test \
	wait.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 \
	dumpio.test \
	filter-unavailable.test \
	fork-f.test \
	ksysent.test \
	opipe.test \
	pc.test \
	qual_syscall.test \
	redirect.test \
	restart_syscall.test \
	strace-S.test \
	strace-T.test \
	strace-V.test \
	strace-f.test \
	strace-ff.test \
	strace-r.test \
	strace-t.test \
	strace-tt.test \
	strace-ttt.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) $(srcdir)/run.sh

EXTRA_DIST = init.sh run.sh match.awk \
	     caps.awk \
	     count-f.expected \
	     dumpio.expected \
	     eventfd.expected \
	     fanotify_mark.expected \
	     filter-unavailable.expected \
	     fstatat.c \
	     fstatx.c \
	     getresugid.c \
	     ip_mreq.expected \
	     ipc.sh \
	     ipc_msgbuf.expected \
	     ksysent.sed \
	     lstatx.c \
	     memfd_create.expected \
	     mq.expected \
	     net.expected \
	     oldselect.expected \
	     pipe.expected \
	     ppoll.expected \
	     ppoll-v.expected \
	     setfsugid.c \
	     setreugid.c \
	     setresugid.c \
	     setugid.c \
	     sigaction.awk \
	     sigaltstack.expected \
	     signalfd.expected \
	     statfs.expected \
	     statx.sh \
	     strace-T.expected \
	     strace-ff.expected \
	     strace-r.expected \
	     struct_flock.c \
	     sun_path.expected \
	     uio.expected \
	     umovestr.expected \
	     wait.expected \
	     xchownx.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 - > $@.t1
	LC_COLLATE=C sed -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
	mv -f $@.t2 $@
	rm -f $@.t1

BUILT_SOURCES = ksysent.h
CLEANFILES = ksysent.h $(TESTS:=.tmp)
