summaryrefslogtreecommitdiff
path: root/liboil
diff options
context:
space:
mode:
authorDavid Schleef <ds@ginger.bigkitten.com>2008-03-13 15:48:22 -0700
committerDavid Schleef <ds@ginger.bigkitten.com>2008-03-13 15:48:22 -0700
commit7210cdc46b335c6812f04272d074f8359fab77d5 (patch)
treeb5562862b6fb9626fb2d9c90ceb41121c429204c /liboil
parent3a7f182e9eeee911dc8a6256d69a4d8fdd0431f5 (diff)
Unmask SIGILL if we catch it. Change back to setjmp/longjmp instead of sigsetjmp/siglongjmp, since it doesn't do what we want.
Diffstat (limited to 'liboil')
-rw-r--r--liboil/liboilfault.c17
1 files changed, 1 insertions, 16 deletions
diff --git a/liboil/liboilfault.c b/liboil/liboilfault.c
index 8876a90..de0b66a 100644
--- a/liboil/liboilfault.c
+++ b/liboil/liboilfault.c
@@ -28,15 +28,13 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
+
#include <liboil/liboilfunction.h>
#include <liboil/liboildebug.h>
#include <liboil/liboilfault.h>
-//#include <unistd.h>
-//#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
-//#include <stdio.h>
#include <setjmp.h>
#include <signal.h>
@@ -55,20 +53,11 @@ static void
illegal_instruction_handler (int num)
{
if (in_try_block) {
-#ifdef HAVE_SIGSETJMP
-#if 0
- /* alternate method of siglongjmp() */
sigset_t set;
sigemptyset (&set);
sigaddset (&set, SIGILL);
sigprocmask (SIG_UNBLOCK, &set, NULL);
longjmp (jump_env, 1);
-#else
- siglongjmp (jump_env, 1);
-#endif
-#else
- longjmp (jump_env, 1);
-#endif
} else {
abort ();
}
@@ -122,11 +111,7 @@ oil_fault_check_try (void (*func) (void *), void *priv)
int ret;
in_try_block = 1;
-#ifdef HAVE_SIGSETJMP
- ret = sigsetjmp (jump_env, 1);
-#else
ret = setjmp (jump_env);
-#endif
if (!ret) {
func (priv);
}