diff options
Diffstat (limited to 'libjava/include')
-rw-r--r-- | libjava/include/i386-signal.h | 24 | ||||
-rw-r--r-- | libjava/include/powerpc-signal.h | 18 | ||||
-rw-r--r-- | libjava/include/x86_64-signal.h | 13 |
3 files changed, 10 insertions, 45 deletions
diff --git a/libjava/include/i386-signal.h b/libjava/include/i386-signal.h index a5c8ae4..a30ceeb 100644 --- a/libjava/include/i386-signal.h +++ b/libjava/include/i386-signal.h @@ -1,7 +1,7 @@ // i386-signal.h - Catch runtime signals and turn them into exceptions // on an i386 based Linux system. -/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation +/* Copyright (C) 1998, 1999, 2001, 2002, 2006 Free Software Foundation This file is part of libgcj. @@ -22,19 +22,7 @@ details. */ #define SIGNAL_HANDLER(_name) \ static void _name (int _dummy __attribute__ ((__unused__))) -#define MAKE_THROW_FRAME(_exception) \ -do \ -{ \ - void **_p = (void **)&_dummy; \ - volatile struct sigcontext_struct *_regs = (struct sigcontext_struct *)++_p; \ - \ - /* Advance the program counter so that it is after the start of the \ - instruction: the x86 exception handler expects \ - the PC to point to the instruction after a call. */ \ - _regs->eip += 2; \ - \ -} \ -while (0) +#define MAKE_THROW_FRAME(_exception) #define HANDLE_DIVIDE_OVERFLOW \ do \ @@ -91,14 +79,6 @@ do \ _regs->eip = (unsigned long)_eip; \ return; \ } \ - else \ - { \ - /* Advance the program counter so that it is after the start \ - of the instruction: this is because the x86 exception \ - handler expects the PC to point to the instruction after a \ - call. */ \ - _regs->eip += 2; \ - } \ } \ } \ while (0) diff --git a/libjava/include/powerpc-signal.h b/libjava/include/powerpc-signal.h index 0d5a662..66133e9 100644 --- a/libjava/include/powerpc-signal.h +++ b/libjava/include/powerpc-signal.h @@ -1,7 +1,7 @@ // powerpc-signal.h - Catch runtime signals and turn them into exceptions // on a powerpc based Linux system. -/* Copyright (C) 2003 Free Software Foundation +/* Copyright (C) 2003, 2006 Free Software Foundation This file is part of libgcj. @@ -22,18 +22,12 @@ details. */ #define SIGNAL_HANDLER(_name) \ static void _name (int /* _signal */, struct sigcontext *_sc) -/* PPC either leaves PC pointing at a faulting instruction or the - following instruction, depending on the signal. SEGV always does - the former, so we adjust the saved PC to point to the following - instruction. This is what the handler in libgcc expects. */ +/* MD_FALBACK_FRAME_STATE_FOR takes care of special casing PC + before the faulting instruction, so we don't need to do anything + here. */ + +#define MAKE_THROW_FRAME(_exception) -#define MAKE_THROW_FRAME(_exception) \ -do \ - { \ - _sc->regs->nip += 4; \ - } \ -while (0) - /* For an explanation why we cannot simply use sigaction to install the handlers, see i386-signal.h. */ diff --git a/libjava/include/x86_64-signal.h b/libjava/include/x86_64-signal.h index f6df7d7..b4b4c2b 100644 --- a/libjava/include/x86_64-signal.h +++ b/libjava/include/x86_64-signal.h @@ -1,7 +1,7 @@ // x86_64-signal.h - Catch runtime signals and turn them into exceptions // on an x86_64 based GNU/Linux system. -/* Copyright (C) 2003 Free Software Foundation +/* Copyright (C) 2003, 2006 Free Software Foundation This file is part of libgcj. @@ -34,16 +34,7 @@ extern "C" }; } -#define MAKE_THROW_FRAME(_exception) \ -do \ -{ \ - /* Advance the program counter so that it is after the start of the \ - instruction: the x86_64 exception handler expects \ - the PC to point to the instruction after a call. */ \ - struct ucontext *_uc = (struct ucontext *)_p; \ - _uc->uc_mcontext.gregs[REG_RIP] += 2; \ -} \ -while (0) +#define MAKE_THROW_FRAME(_exception) #define RESTORE(name, syscall) RESTORE2 (name, syscall) #define RESTORE2(name, syscall) \ |