Added a CLEANUP mechanism to the exception handling library. Fixed a bug in the way setjmp() return codes were being handled that lead to infinite loops in some cases, exceptions getting missed in others. Made FINALLY {} a required element (unfortunately).

This commit is contained in:
2024-12-22 08:55:51 -05:00
parent d20fbbebe6
commit 53e7e6a094
14 changed files with 195 additions and 82 deletions

View File

@@ -2,18 +2,19 @@ CC=gcc
LD=gcc
EXECOBJ=
LIBOBJECTS=src/exclib.o
DEMOS=demo/single.exe demo/twolevel.exe demo/trypair.exe demo/catchgroup.exe demo/finally.exe demo/default.exe demo/helpers.exe demo/deepuncaught.exe
DEMOS=demo/single.exe demo/twolevel.exe demo/trypair.exe demo/catchgroup.exe demo/finally.exe demo/default.exe demo/helpers.exe demo/deepuncaught.exe demo/cleanup.exe demo/skeleton.exe
LIBTARGET=lib/libexc.a
LIBS=
CFLAGS=
#CFLAGS=-Wall -Wextra -std=c89 -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition
CFLAGS=-std=c89
all: lib demo
demo/%.exe: demo/%.o lib
$(LD) -o $@ $(CFLAGS) -L./lib $< -lexc -ggdb -gstabs
$(LD) -o $@ $(CFLAGS) -L./lib $< -lexc -ggdb
%.o: %.c
$(CC) -c -o $@ $(CFLAGS) -ggdb -gstabs -I./include $<
$(CC) -c -o $@ $(CFLAGS) -ggdb -I./include $<
.PHONY: demo
demo: $(DEMOS)