This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: Patch: Fix signal handlers under indirect-dispatch on MIPS
David Daney writes:
> Andrew Haley wrote:
> > David Daney writes:
> > > For some (as yet unknown) reason on MIPS with -findirect-dispatch, the
> > > SIGSEGV and SIGFPE signal handlers were not being installed properly.
> > > This caused the failure of any test case that triggered an
> > > ArithmeticException or NullPointerException via the signal handling
> > > mechanism.
> >
> > Perhaps the shape of your struct kernel_sigaction was wrong.
> >
>
> I don't think so. It has been working well without -findirect-dispatch
> for several years on both 2.4 and 2.6 kernels. The structures in the
> kernel source match what in in include/mips-signal.h
Truly weird, then. Unless someone else after you is grabbing the signal...
> > > The fix is to call libc's sigaction function instead of trying to trick
> > > libc by doing a direct system call to the kernel. Since the MIPS port
> > > does not need to patch-up and restart any faulting divide instructions,
> > > the syscall trick is not needed. This has the added benefit of slightly
> > > simplifying the code.
> > >
> > > I guess it is not nice to trick glibc...
> >
> > The other reason I did this with a direct syscall rather than a libc
> > call was that libc didn't used to be compiled with unwind information,
> > so it wasn't possible to unwind through its handlers.
> >
>
> Due to bugs in glibc-2.2.x the current libgcj will not reliably run
> unless you are using glibc-2.3 and later. Since it has the unwind
> information this patch should be safe.
>
> I am still looking for that official OK.
Your patch is officially OK.
Andrew.