m68k stack checking implemented, not tested yet on uClinux
[gnokii.git] / Makefile.global.in
index 92fea11..8c106b1 100644 (file)
@@ -47,6 +47,7 @@ CPPFLAGS       = @CPPFLAGS@
 LIBS           = @LIBS@
 LEX            = @LEX@
 AR             = @AR@
+AS             = @AS@
 
 GTK_CFLAGS     = @GTK_CFLAGS@
 GTK_LIBS       = @GTK_LIBS@
@@ -76,3 +77,18 @@ endif
 CFLAGS += -I$(GNOKII_INCLUDE) -DGNOKII_MAIN=1
 LDFLAGS = $(LIBS) -Wl,--rpath -Wl,$(libdir)
 
+%.o: %.c
+ifneq "" "$(findstring -DSTACKCHECK,$(CPPFLAGS))"
+       @echo "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -S -o - $< | sed '#hidden' | $(AS) $(ASFLAGS) $(TARGET_MACH) -o $@"
+       @$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -S -o - $< | sed \
+               's!^    link\.w %a6,#\(-\?[0-9]\+\)$$!\
+moveml %d0-%d7/%a0-%a6,%sp@-; \
+lea stackcheck-.-8,%a0; \
+movel #\1,%d0; \
+jsr 0(%pc,%a0); \
+moveml %sp@+,%d0-%d7/%a0-%a6; \
+&!' | \
+               $(AS) $(ASFLAGS) $(TARGET_MACH) -o $@
+else
+       $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $<
+endif