From 1e06b07d0ca5df7ab7aaf90552d8cfe093e96ef9 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 17 Oct 2011 17:36:28 +0200 Subject: [PATCH] re PR target/50737 (FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?) libgcc/ChangeLog: 2011-10-16 Uros Bizjak Eric Botcazou PR target/50737 * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set fs->signal_frame to 1. libjava/ChangeLog: 2011-10-16 Uros Bizjak Eric Botcazou PR target/50737 * include/dwarf2-signal.h [__alpha__]: Remove MAKE_THROW_FRAME definition. Co-Authored-By: Eric Botcazou From-SVN: r180098 --- libgcc/ChangeLog | 7 +++++++ libgcc/config/alpha/linux-unwind.h | 2 ++ libjava/ChangeLog | 7 +++++++ libjava/include/dwarf2-signal.h | 15 +-------------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 87ba1ca83b7..54287b40b19 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,10 @@ +2011-10-16 Uros Bizjak + Eric Botcazou + + PR target/50737 + * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set + fs->signal_frame to 1. + 2011-10-07 Ian Lance Taylor * generic-morestack-thread.c: #include . diff --git a/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h index e43aacfd00b..629d557c46c 100644 --- a/libgcc/config/alpha/linux-unwind.h +++ b/libgcc/config/alpha/linux-unwind.h @@ -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; } diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 53adfd45285..efbf85573ff 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2011-10-16 Uros Bizjak + Eric Botcazou + + PR target/50737 + * include/dwarf2-signal.h [__alpha__]: Remove MAKE_THROW_FRAME + definition. + 2011-08-10 Rainer Orth * exception.cc (std::abort): Remove static. diff --git a/libjava/include/dwarf2-signal.h b/libjava/include/dwarf2-signal.h index 949bcc0ae39..812968217ee 100644 --- a/libjava/include/dwarf2-signal.h +++ b/libjava/include/dwarf2-signal.h @@ -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 \