I was unable to make any change to alloc.c that would fix the GC_MARK_STACK problem without later crashes in the build while compiling the lisp files. However, I suspect the attached change to src/s/gnu-linux.h is approprate. This produces a working emacs (for me) on a amd64 gnu-linux system (SuSE 9.1), although it sidesteps the problem in alloc.c.