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