Selaa lähdekoodia

* Some noreturn additions

svn: 1270
Bryan Drewery 22 vuotta sitten
vanhempi
commit
9f9863045c
1 muutettua tiedostoa jossa 14 lisäystä ja 2 poistoa
  1. 14 2
      src/debug.c

+ 14 - 2
src/debug.c

@@ -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 */