From: Andrew Tridgell Date: Tue, 22 Jul 2008 07:57:20 +0000 (+1000) Subject: allow for 32/64 bit builds X-Git-Url: http://git.samba.org/samba.git/?a=commitdiff_plain;h=25e942d491af73c7b56d33404cf5c701e00fb42d;p=tridge%2Fjunkcode.git allow for 32/64 bit builds --- diff --git a/segv_handler/Makefile b/segv_handler/Makefile index 4a0461f..0da3f01 100644 --- a/segv_handler/Makefile +++ b/segv_handler/Makefile @@ -3,10 +3,16 @@ CFLAGS=-Wall -fPIC -O2 all: segv_handler.so testprog segv_handler.so: segv_handler.o - ld -shared -o $@ $^ $(LIBS) + gcc $(CFLAGS) -shared -o $@ $^ $(LIBS) + +segv_handler64.so: segv_handler.c + gcc $(CFLAGS) -m64 -shared -o $@ $^ $(LIBS) + +segv_handler32.so: segv_handler.c + gcc $(CFLAGS) -m32 -shared -o $@ $^ $(LIBS) testprog: testprog.c - $(CC) -g -o testprog{,.c} + $(CC) -g -o testprog testprog.c test: all -LD_PRELOAD=./segv_handler.so ./testprog diff --git a/segv_handler/segv_handler.c b/segv_handler/segv_handler.c index eadc61d..995e70c 100644 --- a/segv_handler/segv_handler.c +++ b/segv_handler/segv_handler.c @@ -1,3 +1,4 @@ +#define _GNU_SOURCE #include #include #include @@ -25,8 +26,9 @@ static int segv_handler(int sig) return 0; } -void _init(void) +static void segv_init() __attribute__((constructor)); +void segv_init(void) { - signal(SIGSEGV, segv_handler); - signal(SIGBUS, segv_handler); + signal(SIGSEGV, (sighandler_t) segv_handler); + signal(SIGBUS, (sighandler_t) segv_handler); }