http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #12 from Uros Bizjak <ubizjak at gmail dot com> 2011-10-16 20:34:51 
UTC ---
(In reply to comment #11)

> > Running target unix
> > FAIL: Array_3 execution - source compiled test
> > FAIL: Array_3 -findirect-dispatch execution - source compiled test
> > FAIL: Array_3 -O3 execution - source compiled test
> > FAIL: Array_3 -O3 -findirect-dispatch execution - source compiled test
> 
> Probably because of a double PC adjustment for signals.  The old code should 
> be
> removed, it is located in libjava/include/dwarf2-signal.h for alpha.

Indeed!

Following additional patch fixes all libjava tests:

Index: libjava/include/dwarf2-signal.h
===================================================================
--- libjava/include/dwarf2-signal.h    (revision 180054)
+++ libjava/include/dwarf2-signal.h    (working copy)
@@ -29,21 +29,8 @@
 // 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)
+#ifdef __ia64__

-#elif defined(__ia64__)
-
 #define MAKE_THROW_FRAME(_exception)                    \
 do                                    \
 {                                    \

I'm re-running libjava tests and will post complete patch to gcc-patches@ ML.

Reply via email to