Andreas Jaeger wrote:
>
> Jun Sun <jsun@mvista.com> writes:
>
> > Andreas Jaeger wrote:
> > >
> > > Jun Sun <jsun@mvista.com> writes:
> > >
> > > > Andreas Jaeger wrote:
> > > > >
> > > >
> > > > > > saves/restores the FP registers in setjmp/longjmp, the
> > > > >
> > > > > Any ideas how this can be done?
> > > > >
> > > > > > model of "simply sending SIGILL/SIGFPE" will result
> > > > > > in *all* processes being terminated with extreme prejudice,
> > > > > > starting with init!
> > > > >
> > > >
> > > > There is a patch for glibc2.0.7, which I think was done by Jay Carlson.
> > > > It
> > > > basically works for glibc2.0.6 as well. See the one for glibc2.0.6
> > > > attached
> > > > below.
> > > >
> > > > I think the patch is not "clean", in the sense that you only want to
> > > > apply it
> > > > if you want to configure with "--without-fp". Otherwise the patch will
> > > > break
> > > > other configurations.
> > > >
> > > > Jun--- glibc-2.0.6/sysdeps/mips/__longjmp.c.orig-rpm Sat Sep 11
> > > > 00:01:44 1999
> > > > +++ glibc-2.0.6/sysdeps/mips/__longjmp.c Sat Sep 11 00:02:36 1999
> > > > @@ -35,6 +35,7 @@
> > > > along the way. */
> > > > register int val asm ("a1");
> > > >
> > > > +#ifdef __HAVE_FPU__
> > >
> > > I looked through the whole of glibc and GCC and __HAVE_FPU__ is nowhere
> > > defined for MIPS. __HAVE_FPU__ is defined for m68k in GCC but that's
> > > the only platform.
> > >
> >
> > You are right - it is not defined in glibc. Instead it is defined in egcs.
> > For this particular build, I need to apply the mips patch for egcs 1.0.3a,
> > which supplies __HAVE_FPU__. You can find it somewhere on oss.sgi site.
> > There is an additional patch for softfloat which makes __HAVE_FPU__
> > conditional. See the attachement.
> >
> > > Therefore I don't think the patch makes any sense at all,
> >
> > Therefore, it does make sense. :-)
>
> As long as that old patch hasn't found it's way into the official
> sources, the patch doesn't make sense ;-). I'm willing to discuss
> these issues again after those or similar patches have been added to
> the CVS archive of GCC - but without this, there's no way to get the
> patches into glibc.
>
Well, like I said earlier. This is not a clean patch - it cannot be checked
in because it will break other configurations, AFAIK. (OK, I probably should
have called it *hack* from the beginning :-0)
It would be nice to have some clean solutions...
Jun
|