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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.