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
next prev parent 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