This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug ada/41912] FAIL: gnat.dg/null_pointer_deref1.adb execution test



------- 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  <ebotcazou@adacore.com>
            Laurent GUERBY  <laurent@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]