summaryrefslogtreecommitdiff
path: root/libjava/include
diff options
context:
space:
mode:
authordaney <daney@138bc75d-0d04-0410-961f-82ee72b054a4>2006-07-20 17:30:42 +0000
committerdaney <daney@138bc75d-0d04-0410-961f-82ee72b054a4>2006-07-20 17:30:42 +0000
commitee6691f73d847f7de04f25f0b6cf38677b05a1e4 (patch)
tree4901ff76bce95e05ac80b1f098837516e5335bab /libjava/include
parent6a47600ccb509de8d9fc9f603e91990ae71479c1 (diff)
downloadgcc-ee6691f73d847f7de04f25f0b6cf38677b05a1e4.tar.gz
* include/mips-signal.h: Update copyright.
(struct kernel_sigaction): Removed. (SIGNAL_HANDLER): Changed prototype. (MAKE_THROW_FRAME): Added cast. (INIT_SEGV): Use sigaction instead of syscall. (INIT_FPE): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/include')
-rw-r--r--libjava/include/mips-signal.h64
1 files changed, 22 insertions, 42 deletions
diff --git a/libjava/include/mips-signal.h b/libjava/include/mips-signal.h
index 732ba0b1f67..63218ea84a7 100644
--- a/libjava/include/mips-signal.h
+++ b/libjava/include/mips-signal.h
@@ -1,7 +1,8 @@
// mips-signal.h - Catch runtime signals and turn them into exceptions
// on an mips based Linux system.
-/* Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2006
+ Free Software Foundation
This file is part of libgcj.
@@ -35,28 +36,10 @@ typedef struct _sig_ucontext {
sigset_t uc_sigmask;
} sig_ucontext_t;
-/* We use kernel_sigaction here because we're calling the kernel
- directly rather than via glibc. The sigaction structure that the
- syscall uses is a different shape from the one in userland and not
- visible to us in a header file so we define it here.
- Additionally we want a proper prototype for the handler function
- with the struct sigcontext pointer passed by the kernel as the 2nd
- argument, which isn't there in userland headers. */
-
-struct kernel_sigaction {
- unsigned int k_sa_flags;
- void (*k_sa_handler) (int, siginfo_t *, sig_ucontext_t *);
- sigset_t k_sa_mask;
- void (*k_sa_restorer)(void);
- int k_sa_resv[1]; /* reserved */
-};
-
-
-
#define SIGNAL_HANDLER(_name) \
static void _name (int _dummy __attribute__ ((__unused__)), \
siginfo_t *_info __attribute__ ((__unused__)), \
- sig_ucontext_t *_arg __attribute__ ((__unused__)))
+ void *_arg __attribute__ ((__unused__)))
/*
* MIPS leaves pc pointing at the faulting instruction, but the
@@ -66,35 +49,32 @@ static void _name (int _dummy __attribute__ ((__unused__)), \
#define MAKE_THROW_FRAME(_exception) \
do \
{ \
- _arg->uc_mcontext.sc_pc += 4; \
+ ((sig_ucontext_t *)_arg)->uc_mcontext.sc_pc += 4; \
(void)_dummy; \
(void)_info; \
} \
while (0)
-/* For an explanation why we cannot simply use sigaction to
- install the handlers, see i386-signal.h. */
-
-#define INIT_SEGV \
-do \
- { \
- struct kernel_sigaction kact; \
- kact.k_sa_handler = catch_segv; \
- kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \
- sigemptyset (&kact.k_sa_mask); \
- syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \
- } \
+#define INIT_SEGV \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = catch_segv; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigemptyset (&act.sa_mask); \
+ sigaction(SIGSEGV, &act, NULL); \
+ } \
while (0)
-#define INIT_FPE \
-do \
- { \
- struct kernel_sigaction kact; \
- kact.k_sa_handler = catch_fpe; \
- kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \
- sigemptyset (&kact.k_sa_mask); \
- syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
- } \
+#define INIT_FPE \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = catch_fpe; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigemptyset (&act.sa_mask); \
+ sigaction(SIGFPE, &act, NULL); \
+ } \
while (0)
#undef HANDLE_DIVIDE_OVERFLOW