Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: "Jay Carlson" <nop@nop.com>
To: "Ralf Baechle" <ralf@oss.sgi.com>, "Jay Carlson" <nop@place.org>
Cc: "Mike Klar" <mfklar@ponymail.com>, "Jay Carlson" <nop@place.org>,
	<linux-mips@fnet.fr>, <linux-mips@oss.sgi.com>
Subject: RE: stable binutils, gcc, glibc ...
Date: Tue, 17 Oct 2000 21:59:49 -0400	[thread overview]
Message-ID: <KEEOIBGCMINLAHMMNDJNAECECAAA.nop@nop.com> (raw)
In-Reply-To: <20001016140005.C17878@bacchus.dhis.org>

Ralf Baechle [mailto:ralf@oss.sgi.com] writes:

> > Does anyone know if gcc 2.97 can build glibc 2.0.x?
>
> As I already wrote in my other email this seems to work.  However there is
> a little minefiled hidden there which I should warn you about.  Sometimes
> gcc emits references to __register_frame_info which is a libgcc defined
> symbol.  This function happened to be defined coincidntally in libtermcap
> and a few others such that these references so far usually were satisfied.
> Now built with gcc 2.97 libtermcap no longer defines this symbol and so a
> few programs like for example mutt2 or bash2 will die therefore.

Ah yes, this has bit me a few times even with my hacked 2.95.2.  I think
this is what the libc-hacker people were talking about in terms of glibc
mistakenly reexporting the exception handing stuff.  I don't remember them
being very happy about it.

> > For the record, the glibc patch does two things:
> >
> > 1) longjmp/setjmp will only save FPU registers if __HAVE_FPU__
> is defined.
> > In unmodified egcs 1.0.3a, "%{!msoft-float: -D__HAVE_FPU__ }".
> >
> > 2) conditionalizes _FPU_GETCW and _FPU_SETCW in fpu_control.h.
> If I recall
> > correctly, _FPU_SETCW() is called early in program startup, even for
> > programs that will never touch the FPU.  This of course causes
> instant death
> > unless the kernel can emulate "ctc1 foo,$31"....
>
> I would prefer to see that this patch using some mechanism which detects
> the precense / absence of hardware fp at runtime and behaves accordingly.

I don't think this is necessary for any correctly built and linked
executable.

On platforms with no hardware FPU and no kernel emulation, any main program
or library trying to touch a floating point variable will immediately bomb,
so there is no chance of undiagnosed incorrect behavior.

On machines with FPUs, setjmp/longjmp between modules that disagree on
__HAVE_FPU__ will result in the callee-saved FPU registers not being
saved/restored properly, and that will be a silent failure.  On the other
hand, any intercall between modules where a float as an argument or return
value will silently fail too.

The most plausible failure case I can think of is on a machine with
hardware/kernel FPU.  A softfloat main program calls some kind of hardfloat
plugin .so, solely using integer arguments/return values.  However, the
plugin was built hardfp, and gets upset when the FP control word isn't
initialized...

I dunno.  I just don't see softfp binaries ever showing up on hardfp
platforms, aside from the proposed Linux VR transition to hardfp.

Jay

WARNING: multiple messages have this Message-ID (diff)
From: "Jay Carlson" <nop@nop.com>
To: Ralf Baechle <ralf@oss.sgi.com>, Jay Carlson <nop@place.org>
Cc: Mike Klar <mfklar@ponymail.com>,
	linux-mips@fnet.fr, linux-mips@oss.sgi.com
Subject: RE: stable binutils, gcc, glibc ...
Date: Tue, 17 Oct 2000 21:59:49 -0400	[thread overview]
Message-ID: <KEEOIBGCMINLAHMMNDJNAECECAAA.nop@nop.com> (raw)
Message-ID: <20001018015949._vp2zpcq6fDTCCiY39BaBTqX0PsqjDWEv-BV09bt5mA@z> (raw)
In-Reply-To: <20001016140005.C17878@bacchus.dhis.org>

Ralf Baechle [mailto:ralf@oss.sgi.com] writes:

> > Does anyone know if gcc 2.97 can build glibc 2.0.x?
>
> As I already wrote in my other email this seems to work.  However there is
> a little minefiled hidden there which I should warn you about.  Sometimes
> gcc emits references to __register_frame_info which is a libgcc defined
> symbol.  This function happened to be defined coincidntally in libtermcap
> and a few others such that these references so far usually were satisfied.
> Now built with gcc 2.97 libtermcap no longer defines this symbol and so a
> few programs like for example mutt2 or bash2 will die therefore.

Ah yes, this has bit me a few times even with my hacked 2.95.2.  I think
this is what the libc-hacker people were talking about in terms of glibc
mistakenly reexporting the exception handing stuff.  I don't remember them
being very happy about it.

> > For the record, the glibc patch does two things:
> >
> > 1) longjmp/setjmp will only save FPU registers if __HAVE_FPU__
> is defined.
> > In unmodified egcs 1.0.3a, "%{!msoft-float: -D__HAVE_FPU__ }".
> >
> > 2) conditionalizes _FPU_GETCW and _FPU_SETCW in fpu_control.h.
> If I recall
> > correctly, _FPU_SETCW() is called early in program startup, even for
> > programs that will never touch the FPU.  This of course causes
> instant death
> > unless the kernel can emulate "ctc1 foo,$31"....
>
> I would prefer to see that this patch using some mechanism which detects
> the precense / absence of hardware fp at runtime and behaves accordingly.

I don't think this is necessary for any correctly built and linked
executable.

On platforms with no hardware FPU and no kernel emulation, any main program
or library trying to touch a floating point variable will immediately bomb,
so there is no chance of undiagnosed incorrect behavior.

On machines with FPUs, setjmp/longjmp between modules that disagree on
__HAVE_FPU__ will result in the callee-saved FPU registers not being
saved/restored properly, and that will be a silent failure.  On the other
hand, any intercall between modules where a float as an argument or return
value will silently fail too.

The most plausible failure case I can think of is on a machine with
hardware/kernel FPU.  A softfloat main program calls some kind of hardfloat
plugin .so, solely using integer arguments/return values.  However, the
plugin was built hardfp, and gets upset when the FP control word isn't
initialized...

I dunno.  I just don't see softfp binaries ever showing up on hardfp
platforms, aside from the proposed Linux VR transition to hardfp.

Jay

  reply	other threads:[~2000-10-18  1:58 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-10-14  5:13 stable binutils, gcc, glibc Jun Sun
2000-10-14  3:55 ` Ralf Baechle
2000-10-14  4:21   ` Ralf Baechle
2000-10-14 10:57   ` Florian Lohoff
2000-10-14 14:51   ` Jay Carlson
2000-10-14 14:51     ` Jay Carlson
2000-10-14 15:09     ` Ralf Baechle
2000-10-14 16:11       ` Jay Carlson
2000-10-14 16:11         ` Jay Carlson
2000-10-14 16:29         ` Bradley D. LaRonde
2000-10-14 16:29           ` Bradley D. LaRonde
2000-10-16  0:35           ` Ralf Baechle
2000-10-16  1:33             ` Mike Klar
2000-10-16  1:33               ` Mike Klar
2000-10-16 11:26               ` Jay Carlson
2000-10-16 11:26                 ` Jay Carlson
2000-10-16 11:30                 ` Ralf Baechle
2000-10-16 12:00                 ` Ralf Baechle
2000-10-18  1:59                   ` Jay Carlson [this message]
2000-10-18  1:59                     ` Jay Carlson
2000-10-18 20:31                     ` Ralf Baechle
2000-10-14 16:11       ` Jay Carlson
2000-10-14 16:11         ` Jay Carlson
2000-10-14 16:12         ` Ralf Baechle
2000-10-14 16:22           ` Bradley D. LaRonde
2000-10-14 16:22             ` Bradley D. LaRonde
2000-10-14 23:47           ` Keith Owens
2000-10-16  1:07             ` Ralf Baechle
2000-10-16  7:00               ` Alan Cox
2000-10-16  7:00                 ` Alan Cox
2000-10-14 10:55 ` Florian Lohoff
2000-10-14 12:41   ` Ralf Baechle
     [not found]   ` <Pine.LNX.4.21.0010140730280.17430-100000@spawn.hockeyfiend.com>
2000-10-14 14:25     ` Ralf Baechle
2000-10-14 17:54       ` Florian Lohoff
2000-10-16 15:41 ` Maciej W. Rozycki
2000-10-18  4:04 ` The initial results (Re: " Jun Sun
2000-10-18  1:33   ` Florian Lohoff
2000-10-18  9:20     ` Jun Sun
2000-10-18  2:25       ` nick
2000-10-18  9:18       ` Florian Lohoff
2000-10-18 12:27         ` Ralf Baechle
2000-10-18  1:57   ` Ralf Baechle
2000-10-18 12:30     ` Florian Lohoff
2000-10-18 22:37       ` Ralf Baechle
2000-10-18 11:42   ` Geert Uytterhoeven
2000-10-18 17:15     ` Jun Sun
2000-10-20 14:55       ` Geert Uytterhoeven
2000-11-06 11:43   ` Jay Carlson
2000-11-06 11:43     ` Jay Carlson
2000-10-20 11:09 ` Andreas Jaeger
2000-10-20 12:03   ` Jay Carlson
2000-10-20 12:03     ` Jay Carlson
2000-10-21  1:24     ` Ralf Baechle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=KEEOIBGCMINLAHMMNDJNAECECAAA.nop@nop.com \
    --to=nop@nop.com \
    --cc=linux-mips@fnet.fr \
    --cc=linux-mips@oss.sgi.com \
    --cc=mfklar@ponymail.com \
    --cc=nop@place.org \
    --cc=ralf@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox