1# $OpenBSD: Makefile,v 1.11 2023/01/09 11:50:01 anton 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 25SRCS_syscallwx= syscallwx.c gadget.S 26LDADD_syscallwx= -Wl,-z,wxneeded 27CLEANFILES= regress-* 28 29REGRESS_SETUP = ${PROGS} 30 31REGRESS_SETUP_ONCE = setup-rotate 32# Rotate accouting files and keep statistics, from /etc/daily. 33setup-rotate: 34 ${SUDO} touch /var/account/acct 35 -${SUDO} mv -f /var/account/acct.2 /var/account/acct.3 36 -${SUDO} mv -f /var/account/acct.1 /var/account/acct.2 37 -${SUDO} mv -f /var/account/acct.0 /var/account/acct.1 38 ${SUDO} cp -f /var/account/acct /var/account/acct.0 39 ${SUDO} sa -sq 40 ${SUDO} accton /var/account/acct 41 42REGRESS_TARGETS += run-fork 43run-fork: 44 # Create shell program, fork a sub shell, and check the -F flag. 45 cp -f /bin/sh regress-fork 46 ./regress-fork -c '( : ) &' 47 lastcomm regress-fork | grep -q ' -F ' 48 49REGRESS_TARGETS += run-trapstack 50run-trapstack: trapstack 51 # Use invalid stack pointer, trap, SIGSEGV handler, check -M flag. 52 cp -f trapstack regress-trapstack 53 ./regress-trapstack 54 lastcomm regress-trapstack | grep -q ' -MT ' 55 56REGRESS_TARGETS += run-callstack 57run-callstack: callstack 58 # Use invalid stack pointer, syscall, SIGSEGV handler, check -M flag. 59 cp -f callstack regress-callstack 60 ./regress-callstack 61 lastcomm regress-callstack | grep -q ' -MT ' 62 63REGRESS_TARGETS += run-syscallwx 64run-syscallwx: syscallwx 65 # Use writable syscall code, run SIGSEGV handler, check -M flag. 66 cp -f syscallwx regress-syscallwx 67 ./regress-syscallwx 68 lastcomm regress-syscallwx | grep -q ' -MT ' 69 70REGRESS_TARGETS += run-core 71run-core: 72 # Create shell program, abort sub shell, and check the -DX flag. 73 cp -f /bin/sh regress-core 74 rm -f regress-core.core 75 ulimit -c 100000; ./regress-core -c '( : ) & kill -SEGV $$!; wait' 76 lastcomm regress-core | grep -q ' -FDX ' 77 78REGRESS_TARGETS += run-xsig 79run-xsig: 80 # Create shell program, kill sub shell, and check the -X flag. 81 cp -f /bin/sh regress-xsig 82 ./regress-xsig -c '( : ) & kill -KILL $$!; wait' 83 lastcomm regress-xsig | grep -q ' -FX ' 84 85REGRESS_TARGETS += run-pledge 86run-pledge: 87 # Create perl program, violate pledge, and check the -P flag. 88 cp -f /usr/bin/perl regress-pledge 89 ulimit -c 0; ! ./regress-pledge -MOpenBSD::Pledge -e\ 90 'pledge("stdio") or die $$!; chdir("/")' 91 lastcomm regress-pledge | grep -q ' -XP ' 92 93REGRESS_TARGETS += run-unveil 94run-unveil: unveil 95 # Attempt to open veiled file, check -U flag. 96 cp -f unveil regress-unveil 97 ./regress-unveil 98 lastcomm regress-unveil | grep -q ' -U ' 99 100REGRESS_TARGETS += run-trap 101run-trap: crash 102 # Build crashing program, run SIGSEGV handler, and check the -T flag. 103 cp -f crash regress-trap 104 ./regress-trap 105 lastcomm regress-trap | grep -q ' -T ' 106 107.include <bsd.regress.mk> 108