Avoid sigaltstack with an RWX mmap.

Index: engine/signals.c
--- engine/signals.c.orig
+++ engine/signals.c
@@ -403,13 +403,18 @@ void install_signal_handlers(void)
 #ifdef SIGSTKSZ 
   stack_t sigstack;
   int sas_retval=-1;
+  extern char *progname;
 
   sigstack.ss_size=SIGSTKSZ;
   /* Actually the stack should only be ss_size large, and according to
      SUSv2 ss_sp should point to the start of the stack, but
      unfortunately Irix 6.5 (at least) expects ss_sp to point to the
      end, so we work around this issue by accomodating everyone. */
-  if ((sigstack.ss_sp = gforth_alloc(sigstack.ss_size*2)) != NULL) {
+  if ((sigstack.ss_sp = calloc(sigstack.ss_size, 2)) == NULL) {
+    perror(progname);
+    exit(1);
+  }
+  if (sigstack.ss_sp != NULL) {
     sigstack.ss_sp += sigstack.ss_size;
     sigstack.ss_flags=0;
     sas_retval=sigaltstack(&sigstack,(stack_t *)0);
