# PR port-vax/44155: SP and frame header in a catch handler (fix v2 crash).
# Works with NetBSD make and GNU make.

CXX?=		c++
OPT?=		-O2
WARN=		-Wall -Wextra
FLAGS=		${OPT} -g ${WARN}

PROGS=		spcheck spcheck_static

all: ${PROGS}

spcheck: spcheck.cc
	${CXX} ${FLAGS} -o $@ spcheck.cc

spcheck_static: spcheck.cc
	${CXX} ${FLAGS} -static -o $@ spcheck.cc

run: all
	-for p in ${PROGS}; do for d in -1 0 3; do \
		echo "== $$p $$d"; ./$$p $$d; echo "exit status $$?"; \
	done; echo "== $$p -1 ret"; ./$$p -1 ret; echo "exit status $$?"; done

disasm: spcheck
	objdump -d spcheck | sed -n '/<_ZL7catcheri>:/,/^$$/p'
	objdump -d /usr/lib/libgcc_s.so.1 | \
	    sed -n '/<_Unwind_RaiseException>:/,/^$$/p'

clean:
	rm -f ${PROGS} *.core core

.PHONY: all run disasm clean
