--- gforth/engine/signals.c 2002/10/25 15:57:03 1.15 +++ gforth/engine/signals.c 2002/10/27 09:57:11 1.17 @@ -52,6 +52,10 @@ UCell rows=DEFAULTROWS; /* systems that don't have SA_NODEFER hopefully don't block anyway */ #endif +#ifndef SA_ONSTACK +#define SA_ONSTACK 0 +#endif + #ifdef SA_SIGINFO void install_signal_handler(int sig, void (*handler)(int, siginfo_t *, void *)) /* installs three-argument signal handler for sig */ @@ -114,14 +118,20 @@ static void fpe_handler(int sig, siginfo int code; switch(info->si_code) { +#ifdef FPE_INTDIV case FPE_INTDIV: code=-10; break; /* integer divide by zero */ +#endif +#ifdef FPE_INTOVF case FPE_INTOVF: code=-11; break; /* integer overflow */ +#endif case FPE_FLTDIV: code=-42; break; /* floating point divide by zero */ case FPE_FLTOVF: code=-43; break; /* floating point overflow */ case FPE_FLTUND: code=-54; break; /* floating point underflow */ case FPE_FLTRES: code=-41; break; /* floating point inexact result */ +#if 0 /* defined by Unix95, but unnecessary */ case FPE_FLTINV: /* invalid floating point operation */ case FPE_FLTSUB: /* subscript out of range */ +#endif default: code=-55; break; } longjmp(throw_jmp_buf,code); @@ -356,6 +366,7 @@ void install_signal_handlers(void) }; int i; void (*throw_handler)() = die_on_signal ? graceful_exit : signal_throw; +#ifdef SIGSTKSZ stack_t sigstack; int sas_retval=-1; @@ -366,6 +377,7 @@ void install_signal_handlers(void) } if (debug) fprintf(stderr,"sigaltstack: %s\n",strerror(sas_retval)); +#endif #define DIM(X) (sizeof (X) / sizeof *(X)) /*