version 1.25, 2003/02/17 22:42:09
|
version 1.28, 2003/08/20 09:23:46
|
Line 1
|
Line 1
|
/* signal handling |
/* signal handling |
|
|
Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. |
Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc. |
|
|
This file is part of Gforth. |
This file is part of Gforth. |
|
|
Line 112 signal_throw(int sig)
|
Line 112 signal_throw(int sig)
|
#endif |
#endif |
default: code=-256-sig; break; |
default: code=-256-sig; break; |
} |
} |
|
#ifdef __CYGWIN__ |
|
/* the SA_NODEFER apparently does not work on Cygwin 1.3.18(0.69/3/2) */ |
|
{ |
|
sigset_t emptyset; |
|
sigemptyset(&emptyset); |
|
sigprocmask(SIG_SETMASK, &emptyset, NULL); |
|
} |
|
#endif |
longjmp(throw_jmp_buf,code); /* !! or use siglongjmp ? */ |
longjmp(throw_jmp_buf,code); /* !! or use siglongjmp ? */ |
} |
} |
|
|
Line 134 static void fpe_handler(int sig, siginfo
|
Line 142 static void fpe_handler(int sig, siginfo
|
#ifdef FPE_INTOVF |
#ifdef FPE_INTOVF |
case FPE_INTOVF: code=-11; break; /* integer overflow */ |
case FPE_INTOVF: code=-11; break; /* integer overflow */ |
#endif |
#endif |
|
#ifdef FPE_FLTDIV |
case FPE_FLTDIV: code=-42; break; /* floating point divide by zero */ |
case FPE_FLTDIV: code=-42; break; /* floating point divide by zero */ |
|
#endif |
|
#ifdef FPE_FLTOVF |
case FPE_FLTOVF: code=-43; break; /* floating point overflow */ |
case FPE_FLTOVF: code=-43; break; /* floating point overflow */ |
|
#endif |
|
#ifdef FPE_FLTUND |
case FPE_FLTUND: code=-54; break; /* floating point underflow */ |
case FPE_FLTUND: code=-54; break; /* floating point underflow */ |
|
#endif |
|
#ifdef FPE_FLTRES |
case FPE_FLTRES: code=-41; break; /* floating point inexact result */ |
case FPE_FLTRES: code=-41; break; /* floating point inexact result */ |
|
#endif |
#if 0 /* defined by Unix95, but unnecessary */ |
#if 0 /* defined by Unix95, but unnecessary */ |
case FPE_FLTINV: /* invalid floating point operation */ |
case FPE_FLTINV: /* invalid floating point operation */ |
case FPE_FLTSUB: /* subscript out of range */ |
case FPE_FLTSUB: /* subscript out of range */ |