Patch: MIPS support for libjava.

David Daney ddaney@avtrex.com
Tue Sep 9 16:41:00 GMT 2003


Andrew Haley wrote:

>David Daney writes:
>
> > Here is a patch against 3.3.1 that adds SIGSEGV handling of
> > NullPointerExceptions for a MIPS host.  It also contains a custom
> > backtrace function as the version we have in our libc is broken.
>
>Greetings.
>
>Do we have copyright assignment papers from you?
>
I finally mailed them in last week.  If you don't already have them, you 
should have them soon.

>
>
>I think you can just call your version backtrace() -- link precedence
>will sort out the ordering, so you don't need any heavy configury
>changes.
>
I will try that.

>
>
>From what I can see, you jump to the magic code that restores some
>registers form the signal frame and then that code jumps to
>_Jv_MipselThrowNPE.
>
>The unwinder sees that the return address points to the middle of
>__sig2exdummy and unwinds from there.  The return address of
>__sig2exdummy points just after the faulting insn.
>
That was the general idea.

>
>What I can't quite see is how scratch registers that are destroyed by
>the signal handler will be restored.  As far as I can see there's
>nothing to restore them.  $16..$23 are restored, but not $12..$15 or
>$31, and the compiler won't expect these to be trashed by a faulting
>memory access.
>
For some reason I thought that -fnon-call-exceptions might take care of 
those.

>
>The official way to do this is to define MD_FALLBACK_FRAME_STATE_FOR
>in arch/linux.h.  See gcc/config/rs6000/linux.h for an example.
>  
>
I knew there must be a better way, but did not want to start hacking in 
the "core" of gcc.  Perhaps it is time to revisit that decision.

David.



More information about the Java-patches mailing list