diff options
| author | daney <daney@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-22 16:35:17 +0000 |
|---|---|---|
| committer | daney <daney@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-22 16:35:17 +0000 |
| commit | 5f63cb3eb8f54827a80424dd346620fbf279ef6f (patch) | |
| tree | d171c045404a295d18ee746a18e6fc270c642ae0 /libjava/include | |
| parent | 31838f66e13ef4480e69104284ee846406320281 (diff) | |
| download | ppe42-gcc-5f63cb3eb8f54827a80424dd346620fbf279ef6f.tar.gz ppe42-gcc-5f63cb3eb8f54827a80424dd346620fbf279ef6f.zip | |
2003-10-22 David Daney <ddaney@avtrex.com)
* include/mips-signal.h: New file.
* sysdep/dwarf2-backtrace.cc: New file.
* sysdep/mips: New directory.
* sysdep/mips/locks.h: New file.
* Makefile.am(extra_cc_files): New, to allow extra c++ files to be
added to libgcj.
(extra_cc_source_files): Ditto.
* configure.host(disable_dladdr): New shell variable passed to
configure.
(mips*-*-linux*): sysdeps_dir=mips,
can_unwind_signal=yes, disable_dladdr=yes, use -mxgot.
(mipsel*-linux* | mipsisa32el*-linux*): Enable hash synchronization.
* configure.in:(mips*-*-linux*): Use sysdep/dwarf2-backtrace.cc to
generate backtrace, and include/mips-signal.h as SIGNAL_HANDLER
(HAVE_DLADDR): Make it depend on setting of disable_dladdr.
(EXTRA_CC_FILES): New, to support conditional addition of
sysdep/dwarf2-backtrace.cc.
* configure: Regenerated.
* Makefile.in: Regenerated.
* gcj/Makefile.in: Regenerated.
* include/config.h.in: Regenerated.
* include/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72808 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/include')
| -rw-r--r-- | libjava/include/Makefile.in | 1 | ||||
| -rw-r--r-- | libjava/include/config.h.in | 6 | ||||
| -rw-r--r-- | libjava/include/mips-signal.h | 89 |
3 files changed, 96 insertions, 0 deletions
diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index 70902622733..1934e6ac35b 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -76,6 +76,7 @@ DIVIDESPEC = @DIVIDESPEC@ DLLTOOL = @DLLTOOL@ EXCEPTIONSPEC = @EXCEPTIONSPEC@ EXEEXT = @EXEEXT@ +EXTRA_CC_FILES = @EXTRA_CC_FILES@ GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ GCDEPS = @GCDEPS@ GCINCS = @GCINCS@ diff --git a/libjava/include/config.h.in b/libjava/include/config.h.in index 148fcad95ca..d05af6b6cdc 100644 --- a/libjava/include/config.h.in +++ b/libjava/include/config.h.in @@ -353,6 +353,9 @@ /* Define if you have the 'localtime_r' function. */ #undef HAVE_LOCALTIME_R +/* Define if usleep is declared in <unistd.h>. */ +#undef HAVE_USLEEP_DECL + /* Define if using POSIX threads that have the mutexattr functions. */ #undef HAVE_PTHREAD_MUTEXATTR_INIT @@ -365,6 +368,9 @@ /* Define if your platform has a working backtrace() function. */ #undef HAVE_BACKTRACE +/* Define if your platform has a working backtrace() function. */ +#undef HAVE_BACKTRACE + /* Define if you have dladdr() */ #undef HAVE_DLADDR diff --git a/libjava/include/mips-signal.h b/libjava/include/mips-signal.h new file mode 100644 index 00000000000..6728197081a --- /dev/null +++ b/libjava/include/mips-signal.h @@ -0,0 +1,89 @@ +// mips-signal.h - Catch runtime signals and turn them into exceptions +// on an mips based Linux system. + +/* Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +/* Adapted from sparc-signal.h and powerpc-signal.h + by David Daney <ddaney@avtrex.com> */ + +#ifndef JAVA_SIGNAL_H +#define JAVA_SIGNAL_H 1 + +#include <signal.h> +#include <unistd.h> +#include <sys/syscall.h> +/* #include <asm/ucontext.h> structures we use are here but clash with + sys/ucontext.h included by java-signal.h from prims.cc */ + +#define HANDLE_SEGV 1 +#undef HANDLE_FPE + +/* The third parameter to the signal handler points to something with + * this structure defined in asm/ucontext.h, but the name clashes with + * struct ucontext from sys/ucontext.h so this private copy is used. */ +typedef struct _sig_ucontext { + unsigned long uc_flags; + struct _sig_ucontext *uc_link; + stack_t uc_stack; + struct sigcontext uc_mcontext; + 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, siginfo_t *_info, sig_ucontext_t *_arg) + +/* + * MIPS leaves pc pointing at the faulting instruction, but the + * unwinder expects it to point to the following instruction + */ + +#define MAKE_THROW_FRAME(_exception) \ +do \ +{ \ + _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); \ + } \ +while (0) + + +#endif /* JAVA_SIGNAL_H */ + |

