]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2003-08-19 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Aug 2003 14:32:16 +0000 (14:32 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Aug 2003 14:32:16 +0000 (14:32 +0000)
* prims.cc (unblock_signal): New function.
(SIGNAL_HANDLER): Use it.
(SIGNAL_HANDLER): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70598 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/prims.cc

index 7fc2069a6ff6fb8c2748cb2ef8b95fe454a16e76..57f68fe44b1c373f0aba6aa11dca3a218f950ee9 100644 (file)
@@ -1,3 +1,9 @@
+2003-08-19  Andrew Haley  <aph@redhat.com>
+
+       * prims.cc (unblock_signal): New function.
+       (SIGNAL_HANDLER): Use it.
+       (SIGNAL_HANDLER): Likewise.
+
 2003-08-19  Danny Smith  <dannysmith@users.sourceforge.net>
 
        PR libgcj/11575
index 9f8477334da769187fdeed4423f3789f3e26ed6c..8208995460e125f70ecbf11645fbd2b9fdf182c4 100644 (file)
@@ -122,11 +122,26 @@ void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event);
 #endif
 \f
 
+/* Unblock a signal.  Unless we do this, the signal may only be sent
+   once.  */
+static void 
+unblock_signal (int signum)
+{
+#ifdef _POSIX_VERSION
+  sigset_t sigs;
+
+  sigemptyset (&sigs);
+  sigaddset (&sigs, signum);
+  sigprocmask (SIG_UNBLOCK, &sigs, NULL);
+#endif
+}
+
 #ifdef HANDLE_SEGV
 SIGNAL_HANDLER (catch_segv)
 {
   java::lang::NullPointerException *nullp 
     = new java::lang::NullPointerException;
+  unblock_signal (SIGSEGV);
   MAKE_THROW_FRAME (nullp);
   throw nullp;
 }
@@ -137,6 +152,7 @@ SIGNAL_HANDLER (catch_fpe)
 {
   java::lang::ArithmeticException *arithexception 
     = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));
+  unblock_signal (SIGFPE);
 #ifdef HANDLE_DIVIDE_OVERFLOW
   HANDLE_DIVIDE_OVERFLOW;
 #else