Hello,

>
>Index: eval.c
>===================================================================
>RCS file: /src/ruby/eval.c,v
>retrieving revision 1.616.2.101
>diff -u -r1.616.2.101 eval.c
>--- eval.c 12 Jun 2005 16:58:41 -0000    1.616.2.101
>+++ eval.c 19 Jun 2005 08:03:33 -0000
>@@ -133,9 +133,17 @@
>* It is not required that setjmp is called at run time, since the problem
is
>* register usage.
>*/
>+#if defined (__GNUC__) && (defined(sparc) || defined(__sparc__))
>+#define DUMMY_SETJMP \
>+ ({ __asm__ volatile ("" : : :  \
>+    "%o0", "%o1", "%o2", "%o3", "%o4", "%o5", "%o7", \
>+    "%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7", \
>+    "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i7"); })
>+#else
>static jmp_buf dummy_setjmp_jmp_buf;
>int dummy_setjmp_false = 0;
>#define DUMMY_SETJMP (dummy_setjmp_false ? setjmp(dummy_setjmp_jmp_buf) :
0)
>+#endif
>#define ruby_longjmp(env, val) rb_jump_context(env, val)
>#define ruby_setjmp(j) ((j)->status = 0, DUMMY_SETJMP,
>getcontext(&(j)->context), (j)->status)
>#else

 This patch works correctly. It passes the ruby tests correctly. Could you
put this to CVS. Thanks for very intersting
 gdb session and analysis. Maybe there is bug in somewhere in solaris
setjmp function family? In linux this works just fine.


 - Ville