libjava status on Tru64 UNIX V5.1
Bryce McKinlay
bryce@waitaki.otago.ac.nz
Mon Mar 25 17:41:00 GMT 2002
Loren James Rittle wrote:
>>Ideally we'd focus our efforts on making Dwarf-2 exceptions work well
>>for us everywhere. Then we can reserve -fcheck-references for
>>MMU-less platforms, and we don't need to use sjlj exceptions. I think
>>using the latter is problematic because it puts us at odds with the
>>desired C++ default; system integrators will most likely always pick
>>Dwarf-2 over sjlj.
>>>>[Regarding the last point of C++ default/libjava mismatch: How true.]
>>If I have an ELF/DWARF2 platform which detects the exception model as
>`call frame' and has java-signal.h pointing to default-signal.h
>instead of dwarf2-signal.h should my highest priority related to
>libjava be changing this? Not a trick question. Assuming this was a
>major bug in my port's configuration, I started looking at it early
>last week.
>
Yes, you should change it if it can unwind a signal handler. Currently,
afaik, only ia64/alpha/x86/ppc linux can do that - see the
MD_FALLBACK_FRAME_STATE_FOR in the gcc/config/... files.
What we need to do is either
1) make C++ able to use different EH models depending on whether it is
throwing a Java exception or not, so that Java stuff can use SJLJ. In
the short term this would most likely be the best fix.
or
2) fix platforms where the unwinder currently can't unwind a signal
handler. This is harder but is the better solution. I'm hoping that
eventually libunwind can be used by the dwarf2 unwinder to unwind frames
that it doesn't know about, so you'd only have to implement libunwind
support for your platform to get this to work. No need to implement
MD_FALLBACK_FRAME_STATE_FOR for every gcc target.
>Why does Linux/i386 (which uses DWARF2, no?) require a special
>i386-signal.h instead of using the generic dwarf2-signal.h?
>
x86 linux is a special case because it handles division by zero in the
SIGFPE handler (but not all SIGFPEs are ArithmeticExceptions), thus the
handler is more complicated. Most other platforms don't even trap
integer division by zero, so we just emit code to check divides.
regards
Bryce.
More information about the Java
mailing list