|
|
@@ -170,6 +170,8 @@ static void write_debug()
|
|
|
}
|
|
|
#endif /* DEBUG_CONTEXT */
|
|
|
|
|
|
+static void got_bus(int) __attribute__ ((noreturn));
|
|
|
+
|
|
|
static void got_bus(int z)
|
|
|
{
|
|
|
signal(SIGBUS, SIG_DFL);
|
|
|
@@ -237,6 +239,8 @@ stackdump(int idx)
|
|
|
};
|
|
|
#endif /* !CYGWIN_HACKS */
|
|
|
|
|
|
+static void got_segv(int) __attribute__ ((noreturn));
|
|
|
+
|
|
|
static void got_segv(int z)
|
|
|
{
|
|
|
alarm(0); /* dont let anything jump out of this signal! */
|
|
|
@@ -247,28 +251,36 @@ static void got_segv(int z)
|
|
|
#endif
|
|
|
fatal("SEGMENT VIOLATION -- CRASHING!", 1);
|
|
|
#ifdef DEBUG_MEM
|
|
|
- kill(getpid(), SIGSEGV);
|
|
|
+ raise(SIGSEGV);
|
|
|
#else
|
|
|
exit(1);
|
|
|
#endif /* DEBUG_MEM */
|
|
|
}
|
|
|
|
|
|
+static void got_fpe(int) __attribute__ ((noreturn));
|
|
|
+
|
|
|
static void got_fpe(int z)
|
|
|
{
|
|
|
#ifdef DEBUG_CONTEXT
|
|
|
write_debug();
|
|
|
#endif
|
|
|
fatal("FLOATING POINT ERROR -- CRASHING!", 0);
|
|
|
+ exit(1); /* for GCC noreturn */
|
|
|
}
|
|
|
|
|
|
+static void got_term(int) __attribute__ ((noreturn));
|
|
|
+
|
|
|
static void got_term(int z)
|
|
|
{
|
|
|
#ifdef HUB
|
|
|
write_userfile(-1);
|
|
|
#endif
|
|
|
fatal("Received SIGTERM", 0);
|
|
|
+ exit(1); /* for GCC noreturn */
|
|
|
}
|
|
|
|
|
|
+static void got_abort(int) __attribute__ ((noreturn));
|
|
|
+
|
|
|
static void got_abort(int z)
|
|
|
{
|
|
|
signal(SIGABRT, SIG_DFL);
|
|
|
@@ -277,7 +289,7 @@ static void got_abort(int z)
|
|
|
#endif
|
|
|
fatal("GOT SIGABRT -- CRASHING!", 1);
|
|
|
#ifdef DEBUG_MEM
|
|
|
- kill(getpid(), SIGSEGV);
|
|
|
+ raise(SIGSEGV);
|
|
|
#else
|
|
|
exit(1);
|
|
|
#endif /* DEBUG_MEM */
|