re PR target/50737 (FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?)

gcc/ChangeLog:

2011-10-18  Uros Bizjak  <ubizjak@gmail.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR target/50737
	* config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set
	fs->signal_frame to 1.

libjava/ChangeLog:

2011-10-18  Uros Bizjak  <ubizjak@gmail.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR target/50737
	* include/dwarf2-signal.h [__alpha__]: Remove MAKE_THROW_FRAME
	definition.


Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>

From-SVN: r180158
This commit is contained in:
Uros Bizjak 2011-10-18 19:30:12 +02:00 committed by Uros Bizjak
parent 24ed5cbe65
commit 65260b8bad
4 changed files with 17 additions and 14 deletions

View File

@ -1,3 +1,10 @@
2011-10-18 Uros Bizjak <ubizjak@gmail.com>
Eric Botcazou <ebotcazou@adacore.com>
PR target/50737
* config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set
fs->signal_frame to 1.
2011-08-06 Uros Bizjak <ubizjak@gmail.com>
PR target/50001

View File

@ -74,5 +74,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
fs->regs.reg[64].how = REG_SAVED_OFFSET;
fs->regs.reg[64].loc.offset = (long)&sc->sc_pc - new_cfa;
fs->retaddr_column = 64;
fs->signal_frame = 1;
return _URC_NO_REASON;
}

View File

@ -1,3 +1,10 @@
2011-10-18 Uros Bizjak <ubizjak@gmail.com>
Eric Botcazou <ebotcazou@adacore.com>
PR target/50737
* include/dwarf2-signal.h [__alpha__]: Remove MAKE_THROW_FRAME
definition.
2011-04-16 Release Manager
* GCC 4.4.6 released.

View File

@ -29,20 +29,7 @@ class java::lang::Throwable;
// then throw an exception. With the dwarf2 unwinder we don't usually
// need to do anything, with some minor exceptions.
#ifdef __alpha__
#define MAKE_THROW_FRAME(_exception) \
do \
{ \
/* Alpha 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. */ \
struct sigcontext *_sc = (struct sigcontext *)_p; \
_sc->sc_pc += 4; \
} \
while (0)
#elif defined(__ia64__)
#ifdef __ia64__
#define MAKE_THROW_FRAME(_exception) \
do \