mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-24 09:25:01 +00:00
143 lines
3.5 KiB
Plaintext
143 lines
3.5 KiB
Plaintext
Index: src/libsablevm/error.c
|
|
===================================================================
|
|
--- src/libsablevm/error.c (.../tags/sablevm-1.1.6) (revision 2849)
|
|
+++ src/libsablevm/error.c (.../branches/staging) (revision 2849)
|
|
@@ -8,6 +8,7 @@
|
|
|
|
/* We remember previously established signal handlers, so that we can
|
|
delegate back to them when we don't handle a signal. */
|
|
+static sigset_t _svmv_old_sigset;
|
|
|
|
static struct sigaction _svmv_old_sigquit;
|
|
static struct sigaction _svmv_old_siginterrupt;
|
|
@@ -320,8 +321,16 @@
|
|
static jint
|
|
_svmf_error_init (void)
|
|
{
|
|
+ sigset_t svmv_sigset;
|
|
struct sigaction sa;
|
|
|
|
+ /* save old sigmask before doing any modifications */
|
|
+
|
|
+ if (sigprocmask(0, NULL, &_svmv_old_sigset) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
_svmm_zero_memory (sa);
|
|
|
|
/* mask all signals handled by the signal handler */
|
|
@@ -392,6 +401,8 @@
|
|
#endif /* _SABLEVM_INLINABILITY_TESTING */
|
|
|
|
#if defined(_SABLEVM_HAS_SIGINFO)
|
|
+
|
|
+ /* TODO: add signal support for systems w/o SA_SIGINFO */
|
|
|
|
/* use extended info version */
|
|
sa.sa_flags = SA_SIGINFO;
|
|
@@ -457,9 +468,77 @@
|
|
|
|
#endif /* _SABLEVM_HAS_SIGINFO */
|
|
|
|
+ /* ignore SIGPIPE */
|
|
+
|
|
+ if (sigemptyset (&svmv_sigset) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+ if (sigaddset (&svmv_sigset, SIGPIPE) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+ if (sigprocmask(SIG_BLOCK, &svmv_sigset, NULL) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
return JNI_OK;
|
|
|
|
error:
|
|
|
|
return JNI_ERR;
|
|
}
|
|
+
|
|
+/*
|
|
+----------------------------------------------------------------------
|
|
+_svmf_error_init
|
|
+----------------------------------------------------------------------
|
|
+*/
|
|
+
|
|
+/* TODO: call this function from the right place. It's unused currently. */
|
|
+
|
|
+static jint
|
|
+_svmf_error_restore (void)
|
|
+{
|
|
+#if defined(_SABLEVM_HAS_SIGINFO)
|
|
+
|
|
+ if (sigaction (SIGQUIT, &_svmv_old_sigquit, NULL) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+ if (sigaction (SVM_INTERRUPT_SIGNAL, &_svmv_old_siginterrupt, NULL) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+#if defined(_SABLEVM_SIGNALS_FOR_EXCEPTIONS) || defined(_SABLEVM_INLINABILITY_TESTING)
|
|
+
|
|
+ if (sigaction (SIGSEGV, &_svmv_old_sigsegv, NULL) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+ if (sigaction (SIGFPE, &_svmv_old_sigfpe, NULL) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+#endif /* _SABLEVM_SIGNALS_FOR_EXCEPTIONS || _SABLEVM_INLINABILITY_TESTING */
|
|
+
|
|
+#endif /* _SABLEVM_HAS_SIGINFO */
|
|
+
|
|
+ if (sigprocmask(SIG_SETMASK, &_svmv_old_sigset, NULL) != 0)
|
|
+ {
|
|
+ goto error;
|
|
+ }
|
|
+
|
|
+ return JNI_OK;
|
|
+
|
|
+error:
|
|
+
|
|
+ return JNI_ERR;
|
|
+}
|
|
Index: configure.ac
|
|
===================================================================
|
|
--- configure.ac (.../tags/sablevm-1.1.6) (revision 2849)
|
|
+++ configure.ac (.../branches/staging) (revision 2849)
|
|
@@ -408,12 +404,12 @@
|
|
AC_OUTPUT
|
|
|
|
dnl check whether 'make' is GNU make
|
|
-make_bin=`which make`
|
|
-if test "X$make_bin" != "X"; then
|
|
- make_test=`$make_bin --version 2>&1 |grep GNU`
|
|
- if test "X$make_test" = "X"; then
|
|
- AC_MSG_WARN("*** Your 'make' command does NOT seem to be GNU Make. ***")
|
|
- AC_MSG_WARN("The build system of SableVM requires GNU Make. On many systems GNU Make")
|
|
- AC_MSG_WARN("is installed as 'gmake'.")
|
|
- fi
|
|
-fi
|
|
+dnl make_bin=`which make`
|
|
+dnl if test "X$make_bin" != "X"; then
|
|
+dnl make_test=`$make_bin --version 2>&1 |grep GNU`
|
|
+dnl if test "X$make_test" = "X"; then
|
|
+dnl AC_MSG_WARN("*** Your 'make' command does NOT seem to be GNU Make. ***")
|
|
+dnl AC_MSG_WARN("The build system of SableVM requires GNU Make. On many systems GNU Make")
|
|
+dnl AC_MSG_WARN("is installed as 'gmake'.")
|
|
+dnl fi
|
|
+dnl fi
|