fix broken Makefile for valgrind + fix day02 memory leak.

This commit is contained in:
2022-09-19 20:01:11 +02:00
parent 42d1f7bf48
commit bc8dac927a
3 changed files with 45 additions and 15 deletions

View File

@@ -40,20 +40,25 @@ CFLAGS += -Wno-unused-result
CFLAGS += -DDEBUG_DEBUG # activate general debug (debug.c) CFLAGS += -DDEBUG_DEBUG # activate general debug (debug.c)
CFLAGS += -DDEBUG_POOL # memory pools management CFLAGS += -DDEBUG_POOL # memory pools management
VALGRIND := valgrind
VALGRINDFLAGS := -q -s --leak-check=full --show-leak-kinds=all --track-origins=yes
TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n" TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n"
export PATH := .:$(PATH) export PATH := .:$(PATH)
.PHONY: clean all compile assembly memcheck memcheck1 memcheck2 ex1 ex2 .PHONY: clean all compile assembly memcheck memcheck1 memcheck2 ex1 ex2
all: ex1 ex2 all: README.org ex1 ex2
memcheck: memcheck1 memcheck: memcheck1
memcheck1: memcheck1: aoc-c
@valgrind -q -s --track-origins=yes aoc-c -p 1 < $(INPUT) @$(VALGRIND) $(VALGRINDFLAGS) aoc-c -p 1 < $(INPUT)
memcheck2: memcheck2: aoc-c
@valgrind -q -s --track-origins=yes aoc-c -p 2 < $(INPUT) @$(VALGRIND) $(VALGRINDFLAGS) aoc-c -p 2 < $(INPUT)
@#@valgrind -s --track-origins=yes aoc-c -p 2 < $(INPUT)
compile: aoc-c compile: aoc-c
@@ -66,12 +71,22 @@ ex2: aoc-c
@$(TIME) aoc-c -p 2 < $(INPUT) @$(TIME) aoc-c -p 2 < $(INPUT)
clean: clean:
@rm -f aoc-c core* vgcore* gmon.out aoc-c.s @rm -f aoc-c core* vgcore* gmon.out aoc-c.s aoc-c.i README.html
.c: .c:
@echo compiling $< @echo compiling $<
@$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCDIR) $< $(LDLIB) -o $@ @$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCDIR) $< $(LDLIB) -o $@
.c.s: # generate pre-processed file (.i) and assembler (.s)
%.i: %.c
@echo generating $@
@$(CC) -E $(CFLAGS) -I $(INCDIR) $< -o $@
%.s: %.c
@echo generating $@ @echo generating $@
@$(CC) -S -fverbose-asm $(CFLAGS) -I $(INCDIR) $< -o $@ @$(CC) -S -fverbose-asm $(CFLAGS) -I $(INCDIR) $< -o $@
# generate README.org from README.html (must cleanup !)
%.org: %.html
@echo generating $@. Cleanup before commit !
@pandoc $< -o $@

View File

@@ -40,20 +40,25 @@ CFLAGS += -Wno-unused-result
CFLAGS += -DDEBUG_DEBUG # activate general debug (debug.c) CFLAGS += -DDEBUG_DEBUG # activate general debug (debug.c)
CFLAGS += -DDEBUG_POOL # memory pools management CFLAGS += -DDEBUG_POOL # memory pools management
VALGRIND := valgrind
VALGRINDFLAGS := -q -s --leak-check=full --show-leak-kinds=all --track-origins=yes
TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n" TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n"
export PATH := .:$(PATH) export PATH := .:$(PATH)
.PHONY: clean all compile assembly memcheck memcheck1 memcheck2 ex1 ex2 .PHONY: clean all compile assembly memcheck memcheck1 memcheck2 ex1 ex2
all: ex1 ex2 all: README.org ex1 ex2
memcheck: memcheck1 memcheck: memcheck1
memcheck1: memcheck1: aoc-c
@valgrind -q -s --track-origins=yes aoc-c -p 1 < $(INPUT) @$(VALGRIND) $(VALGRINDFLAGS) aoc-c -p 1 < $(INPUT)
memcheck2: memcheck2: aoc-c
@valgrind -q -s --track-origins=yes aoc-c -p 2 < $(INPUT) @$(VALGRIND) $(VALGRINDFLAGS) aoc-c -p 2 < $(INPUT)
@#@valgrind -s --track-origins=yes aoc-c -p 2 < $(INPUT)
compile: aoc-c compile: aoc-c
@@ -66,12 +71,22 @@ ex2: aoc-c
@$(TIME) aoc-c -p 2 < $(INPUT) @$(TIME) aoc-c -p 2 < $(INPUT)
clean: clean:
@rm -f aoc-c core* vgcore* gmon.out aoc-c.s @rm -f aoc-c core* vgcore* gmon.out aoc-c.s aoc-c.i README.html
.c: .c:
@echo compiling $< @echo compiling $<
@$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCDIR) $< $(LDLIB) -o $@ @$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCDIR) $< $(LDLIB) -o $@
.c.s: # generate pre-processed file (.i) and assembler (.s)
%.i: %.c
@echo generating $@
@$(CC) -E $(CFLAGS) -I $(INCDIR) $< -o $@
%.s: %.c
@echo generating $@ @echo generating $@
@$(CC) -S -fverbose-asm $(CFLAGS) -I $(INCDIR) $< -o $@ @$(CC) -S -fverbose-asm $(CFLAGS) -I $(INCDIR) $< -o $@
# generate README.org from README.html (must cleanup !)
%.org: %.html
@echo generating $@. Cleanup before commit !
@pandoc $< -o $@

View File

@@ -145,6 +145,6 @@ int main(int ac, char **av)
return usage(*av); return usage(*av);
p = parse(); p = parse();
printf("%s : res=%d\n", *av, part == 1? part1(p): part2(p)); printf("%s : res=%d\n", *av, part == 1? part1(p): part2(p));
free(p);
exit (0); exit (0);
} }