xref: /openbsd/regress/usr.bin/lastcomm/Makefile (revision 771fbea0)
1# $OpenBSD: Makefile,v 1.9 2020/12/16 23:10:48 bluhm Exp $
2
3# Start with a clean /var/account/acct accounting file and turn on
4# process accounting with accton(8).  Each test executes a command
5# with a unique name and checks the flags in the lastcomm(1) output.
6# Run tests with fork, map, core, xsig, pledge, unveil, trap accounting.
7
8.if ! (make(clean) || make(cleandir) || make(obj))
9
10MOUNT_OBJ !!= mount | grep ^$$(df -P . | tail -1 | awk '{ print $$1 }')
11
12.if "${MOUNT_OBJ:M*wxallowed*}" == ""
13REGRESS_SKIP_TARGETS +=	run-syscallwx
14.endif
15
16.endif
17
18.if ${MACHINE} == amd64
19# calling trapsignal() from syscall path does not work on amd64
20REGRESS_EXPECTED_FAILURES +=	run-callstack run-syscallwx
21.endif
22
23PROGS=			crash trapstack callstack syscallwx unveil
24WARNINGS=		Yes
25LDADD_syscallwx=	-z wxneeded
26CLEANFILES=		regress-*
27
28REGRESS_SETUP =		${PROGS}
29
30REGRESS_SETUP_ONCE =	setup-rotate
31# Rotate accouting files and keep statistics, from /etc/daily.
32setup-rotate:
33	${SUDO} touch /var/account/acct
34	-${SUDO} mv -f /var/account/acct.2 /var/account/acct.3
35	-${SUDO} mv -f /var/account/acct.1 /var/account/acct.2
36	-${SUDO} mv -f /var/account/acct.0 /var/account/acct.1
37	${SUDO} cp -f /var/account/acct /var/account/acct.0
38	${SUDO} sa -sq
39	${SUDO} accton /var/account/acct
40
41REGRESS_TARGETS +=	run-fork
42run-fork:
43	# Create shell program, fork a sub shell, and check the -F flag.
44	cp -f /bin/sh regress-fork
45	./regress-fork -c '( : ) &'
46	lastcomm regress-fork | grep -q ' -F '
47
48REGRESS_TARGETS +=	run-trapstack
49run-trapstack: trapstack
50	# Use invalid stack pointer, trap, SIGSEGV handler, check -M flag.
51	cp -f trapstack regress-trapstack
52	./regress-trapstack
53	lastcomm regress-trapstack | grep -q ' -MT '
54
55REGRESS_TARGETS +=	run-callstack
56run-callstack: callstack
57	# Use invalid stack pointer, syscall, SIGSEGV handler, check -M flag.
58	cp -f callstack regress-callstack
59	./regress-callstack
60	lastcomm regress-callstack | grep -q ' -MT '
61
62REGRESS_TARGETS +=	run-syscallwx
63run-syscallwx: syscallwx
64	# Use writable syscall code, run SIGSEGV handler, check -M flag.
65	cp -f syscallwx regress-syscallwx
66	./regress-syscallwx
67	lastcomm regress-syscallwx | grep -q ' -MT '
68
69REGRESS_TARGETS +=	run-core
70run-core:
71	# Create shell program, abort sub shell, and check the -DX flag.
72	cp -f /bin/sh regress-core
73	rm -f regress-core.core
74	ulimit -c 100000; ./regress-core -c '( : ) & kill -SEGV $$!; wait'
75	lastcomm regress-core | grep -q ' -FDX '
76
77REGRESS_TARGETS +=	run-xsig
78run-xsig:
79	# Create shell program, kill sub shell, and check the -X flag.
80	cp -f /bin/sh regress-xsig
81	./regress-xsig -c '( : ) & kill -KILL $$!; wait'
82	lastcomm regress-xsig | grep -q ' -FX '
83
84REGRESS_TARGETS +=	run-pledge
85run-pledge:
86	# Create perl program, violate pledge, and check the -P flag.
87	cp -f /usr/bin/perl regress-pledge
88	ulimit -c 0; ! ./regress-pledge -MOpenBSD::Pledge -e\
89	    'pledge("stdio") or die $$!; chdir("/")'
90	lastcomm regress-pledge | grep -q ' -XP '
91
92REGRESS_TARGETS +=	run-unveil
93run-unveil: unveil
94	# Attempt to open veiled file, check -U flag.
95	cp -f unveil regress-unveil
96	./regress-unveil
97	lastcomm regress-unveil | grep -q ' -U '
98
99REGRESS_TARGETS +=	run-trap
100run-trap: crash
101	# Build crashing program, run SIGSEGV handler, and check the -T flag.
102	cp -f crash regress-trap
103	./regress-trap
104	lastcomm regress-trap | grep -q ' -T '
105
106.include <bsd.regress.mk>
107