------- Comment #4 from ebotcazou at gcc dot gnu dot org  2009-11-13 17:37 
-------
> This is an interesting suggestion.  However, the results in doing
> this are mixed.  It fixes the current testcase on hpux but not linux.

Yes, you additionally need this for Linux:

2009-11-12  Eric Botcazou  <ebotca...@adacore.com>
            Laurent GUERBY  <laur...@guerby.net>

        * init.c (GNU/Linux Section): Enable for all architectures.

> It fixes three libjava fails on linux.  However, it introduces four
> fails on both hpux and linux.  

Interesting.  gnat.dg/null_pointer_deref1.adb is the ultimate test for this
null pointer thing because the EH region contains exactly 1 instruction:

.LEHB1:
        stw %r19,0(%r28)
.LEHE1:

so the unwinder must be extremely accurate when comparing return addresses.
Setting fs->signal_frame = 1 will instruct it not to subtract 1 anymore to
determine whether the RA belongs to an active EH region.  See the very similar
code in libjava/exception.cc and ada/raise-gcc.c around _Unwind_GetIPInfo.

Not clear what is happening though.  Could you attach the assembly code for one
Java test that used to fail and now passes and for another Java test with the
opposite behavior?


-- 


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

Reply via email to