diff --git a/Makefile b/Makefile index 2442210..999428c 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,14 @@ .POSIX: .PHONY: all debug run clean -DEPS=src/main.o src/util.o -LIBS=-lgc -lgmp +DEPS=src/main.o src/util.o src/gmp_setup.o +LIBS=-static -l:libgmp.a -l:libgc.a -l:libpthread.a DBGFLAGS=-Og -g DBGBIN=secd_debug all: secd secd: $(DEPS) - $(CC) $(LIBS) $(CFLAGS) $(DEPS) -o secd + $(CC) $(CFLAGS) $(DEPS) $(LIBS) -o secd $(DBGBIN): $(DEPS) $(CC) $(LIBS) $(DBGFLAGS) -DENABLE_DBG_H -o secd_debug @@ -23,4 +23,4 @@ clean: .SUFFIXES: .c .o .c.o: - $(CC) -c $(CFLAGS) $< -o $@ + $(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@ diff --git a/src/gmp_setup.c b/src/gmp_setup.c new file mode 100644 index 0000000..248f3cd --- /dev/null +++ b/src/gmp_setup.c @@ -0,0 +1,17 @@ +#include +#include + +#include +#include + +void gmp_free(void* p, size_t s) { + GC_FREE(p); // TODO: see if this performs better than a NOP +} + +void* gmp_realloc(void* p, size_t o, size_t n) { + return GC_REALLOC(p, n); +} + +void gmp_init(void) { + mp_set_memory_functions(GC_malloc, gmp_realloc, gmp_free); +} diff --git a/src/gmp_setup.h b/src/gmp_setup.h new file mode 100644 index 0000000..70f0a48 --- /dev/null +++ b/src/gmp_setup.h @@ -0,0 +1,6 @@ +#ifndef _GMP_SETUP_H +#define _GMP_SETUP_H + +void gmp_init(void); + +#endif diff --git a/src/main.c b/src/main.c index 0f1d4c7..b190192 100644 --- a/src/main.c +++ b/src/main.c @@ -1,15 +1,19 @@ +#include +#include + #include #include #include -#include - #include "dbg.h" #include "util.h" +#include "gmp_setup.h" int main(int argc, char** argv) { GC_INIT(); + gmp_init(); + if (argc < 2) { die("Not enough args"); } @@ -20,4 +24,5 @@ int main(int argc, char** argv) { buf = readFile(argv[1], &size); fwrite(buf, 1, size, stdout); + }