Commit 3062335c by Kaz Kojima

linux-unwind.h (shmedia_fallback_frame_state): Set fs->signal_frame.

	* config/sh/linux-unwind.h (shmedia_fallback_frame_state): Set
	fs->signal_frame.
	(sh_fallback_frame_state): Likewise.

	* include/sh-signal.h (MAKE_THROW_FRAME): Change into empty
	macro.

From-SVN: r112122
parent 747b9f55
2006-03-16 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/linux-unwind.h (shmedia_fallback_frame_state): Set
fs->signal_frame.
(sh_fallback_frame_state): Likewise.
2006-03-15 Geoffrey Keating <geoffk@apple.com> 2006-03-15 Geoffrey Keating <geoffk@apple.com>
* config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports. * config.gcc (*-*-darwin*): Don't build crt2.o for all Darwin ports.
......
/* DWARF2 EH unwinding support for SH Linux. /* DWARF2 EH unwinding support for SH Linux.
Copyright (C) 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -137,6 +137,7 @@ shmedia_fallback_frame_state (struct _Unwind_Context *context, ...@@ -137,6 +137,7 @@ shmedia_fallback_frame_state (struct _Unwind_Context *context,
fs->regs.reg[63].loc.offset fs->regs.reg[63].loc.offset
= (long)&(sc->sc_pc) - new_cfa; = (long)&(sc->sc_pc) - new_cfa;
fs->retaddr_column = 63; fs->retaddr_column = 63;
fs->signal_frame = 1;
return _URC_NO_REASON; return _URC_NO_REASON;
} }
...@@ -246,6 +247,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, ...@@ -246,6 +247,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context,
fs->regs.reg[SH_DWARF_FRAME_PC].loc.offset fs->regs.reg[SH_DWARF_FRAME_PC].loc.offset
= (long)&(sc->sc_pc) - new_cfa; = (long)&(sc->sc_pc) - new_cfa;
fs->retaddr_column = SH_DWARF_FRAME_PC; fs->retaddr_column = SH_DWARF_FRAME_PC;
fs->signal_frame = 1;
return _URC_NO_REASON; return _URC_NO_REASON;
} }
#endif /* defined (__SH5__) */ #endif /* defined (__SH5__) */
2006-03-16 Kaz Kojima <kkojima@gcc.gnu.org>
* include/sh-signal.h (MAKE_THROW_FRAME): Change into empty
macro.
2006-03-15 Tom Tromey <tromey@redhat.com> 2006-03-15 Tom Tromey <tromey@redhat.com>
* testsuite/libjava.jacks/jacks.xfail: Removed * testsuite/libjava.jacks/jacks.xfail: Removed
......
// sh-signal.h - Catch runtime signals and turn them into exceptions // sh-signal.h - Catch runtime signals and turn them into exceptions
// on a SuperH based Linux system. // on a SuperH based Linux system.
/* Copyright (C) 2004 Free Software Foundation /* Copyright (C) 2004, 2006 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -33,28 +33,7 @@ typedef struct _sig_ucontext { ...@@ -33,28 +33,7 @@ typedef struct _sig_ucontext {
#define SIGNAL_HANDLER(_name) \ #define SIGNAL_HANDLER(_name) \
static void _name (int , siginfo_t *, sig_ucontext_t *_uc) static void _name (int , siginfo_t *, sig_ucontext_t *_uc)
/* SH either leaves PC pointing at a faulting instruction or the #define MAKE_THROW_FRAME(_exception)
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. */
#ifdef __SH5__
#define MAKE_THROW_FRAME(_exception) \
do \
{ \
volatile struct sigcontext *_sc = &_uc->uc_mcontext; \
_sc->sc_pc += 4; \
} \
while (0)
#else
#define MAKE_THROW_FRAME(_exception) \
do \
{ \
volatile struct sigcontext *_sc = &_uc->uc_mcontext; \
_sc->sc_pc += 2; \
} \
while (0)
#endif
/* For an explanation why we cannot simply use sigaction to /* For an explanation why we cannot simply use sigaction to
install the handlers, see i386-signal.h. */ install the handlers, see i386-signal.h. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment