OSDN Git Service

* configure.in, configure: enable dwarf2-exception-style
[pf3gnuchains/gcc-fork.git] / libjava / include / sparc-signal.h
index 03b5cdc..03538ec 100644 (file)
@@ -1,6 +1,6 @@
 // sparc-signal.h - Catch runtime signals and turn them into exceptions.
 
-/* Copyright (C) 1998, 1999  Cygnus Solutions
+/* Copyright (C) 1998, 1999, 2000  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -18,14 +18,15 @@ details.  */
 #define HANDLE_FPE 1
 
 #define SIGNAL_HANDLER(_name)                                          \
-static void _name (int _dummy, siginfo_t *_info, ucontext_t *_context)
+static void _name (int _dummy, siginfo_t *_info, void *arg)
 
 #define FLUSH_REGISTER_WINDOWS                                 \
   asm volatile ("ta 3");
 
-#define MAKE_THROW_FRAME                                       \
+#define MAKE_THROW_FRAME(_exception)                           \
 do                                                             \
 {                                                              \
+  ucontext_t *_context = (ucontext_t *) arg;                    \
   (void)_dummy;                                                        \
   (void)_info;                                                 \
   register int sp = _context->uc_mcontext.gregs[REG_SP];       \
@@ -42,7 +43,7 @@ do                                                            \
     nullp = new java::lang::NullPointerException ();           \
     struct sigaction act;                                      \
     act.sa_sigaction = catch_segv;                             \
-    act.sa_flags = SA_SIGINFO;                                 \
+    act.sa_flags = SA_SIGINFO | SA_NODEFER;                    \
     sigemptyset (&act.sa_mask);                                        \
     sigaction (SIGSEGV, &act, NULL);                           \
   }                                                            \
@@ -54,7 +55,7 @@ do                                                            \
     arithexception = new java::lang::ArithmeticException       \
       (JvNewStringLatin1 ("/ by zero"));                       \
     struct sigaction act;                                      \
-    act.sa_flags = SA_SIGINFO;                                 \
+    act.sa_flags = SA_SIGINFO | SA_NODEFER;                    \
     act.sa_sigaction = catch_fpe;                              \
     sigemptyset (&act.sa_mask);                                        \
     sigaction (SIGFPE, &act, NULL);                            \