From: Daniel Jacobowitz <drow@mvista.com>
To: gdb-patches@sources.redhat.com
Subject: Re: PATCH for Re: Problems with floatformat on Alpha
Date: Tue, 03 Dec 2002 21:40:00 -0000 [thread overview]
Message-ID: <20021204054128.GB4288@nevyn.them.org> (raw)
In-Reply-To: <20021124225605.GA2639@nevyn.them.org>
On Sun, Nov 24, 2002 at 05:56:05PM -0500, Daniel Jacobowitz wrote:
> On Sun, Nov 24, 2002 at 04:44:47PM -0500, Daniel Jacobowitz wrote:
> > I spent some time today tracking problems in Alpha/Linux testsuite results.
> > One of the biggies was SIGFPE in convert_floatformat_to_doublest. The first
> > problem was pretty easy:
> >
> > else if (exponent == 0)
> > exponent = 1 - fmt->exp_bias;
> >
> > 1 is an int, exp_bias is an unsigned int, exponent is a long int. The math
> > is done unsigned and exponent is ridiculously large.
> >
> > I'm not sending a patch yet because I can't test it; something goes wrong
> > later, in the call to ldexp and elsewhere, that looks suspiciously like GDB
> > is miscompiled.
>
> Blech. Doublest is assuming an IEEE-ish host. More particularly, it
> appears that the mechanism doublest.c uses to construct doubles is not
> usable on Alpha in non-IEE mode. The instruction "addt $f10,$f11,$f10"
> can trap if $f10 is a denormal - even if $f11 is 0.0. I have test code
> which demonstrates this to my satisfaction. So when we accumulate in
> dto, we take a SIGFPE.
>
> Here's the patch I'm using. The doublest part is obvious and no one's
> caring for alpha-linux right now; so I'll check this in in a few days
> unless someone sees a problem. It assumes that the compiler for an
> alpha-linux host recognizes -mieee, which I'm comfortable with.
Here's the updated version, with comments. Also filed a PR about the
doublest.c problems. Checked in on the trunk; Andrew, OK for the
branch?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2002-12-04 Daniel Jacobowitz <drow@mvista.com>
* doublest.c (convert_floatformat_to_doublest): Cast exp_bias to int.
* config/alpha/alpha-linux.mh (MH_CFLAGS): Add -mieee.
Index: doublest.c
===================================================================
RCS file: /cvs/src/src/gdb/doublest.c,v
retrieving revision 1.10
diff -u -p -r1.10 doublest.c
--- doublest.c 9 Aug 2002 00:45:10 -0000 1.10
+++ doublest.c 4 Dec 2002 05:38:25 -0000
@@ -172,12 +172,14 @@ convert_floatformat_to_doublest (const s
special_exponent = exponent == 0 || exponent == fmt->exp_nan;
-/* Don't bias NaNs. Use minimum exponent for denorms. For simplicity,
- we don't check for zero as the exponent doesn't matter. */
+ /* Don't bias NaNs. Use minimum exponent for denorms. For simplicity,
+ we don't check for zero as the exponent doesn't matter. Note the cast
+ to int; exp_bias is unsigned, so it's important to make sure the
+ operation is done in signed arithmetic. */
if (!special_exponent)
exponent -= fmt->exp_bias;
else if (exponent == 0)
- exponent = 1 - fmt->exp_bias;
+ exponent = 1 - (int) fmt->exp_bias;
/* Build the result algebraically. Might go infinite, underflow, etc;
who cares. */
Index: config/alpha/alpha-linux.mh
===================================================================
RCS file: /cvs/src/src/gdb/config/alpha/alpha-linux.mh,v
retrieving revision 1.9
diff -u -p -r1.9 alpha-linux.mh
--- config/alpha/alpha-linux.mh 18 Jan 2002 04:50:57 -0000 1.9
+++ config/alpha/alpha-linux.mh 4 Dec 2002 05:38:25 -0000
@@ -8,3 +8,7 @@ LOADLIBES = -ldl -rdynamic
MMALLOC =
MMALLOC_CFLAGS = -DNO_MMALLOC
+
+# doublest.c currently assumes some properties of FP arithmetic
+# on the host which require this.
+MH_CFLAGS = -mieee
next prev parent reply other threads:[~2002-12-04 5:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20021124214447.GA1222@nevyn.them.org>
2002-11-24 14:55 ` Daniel Jacobowitz
2002-11-25 13:10 ` Andrew Cagney
2002-12-03 21:40 ` Daniel Jacobowitz [this message]
2002-12-04 8:31 ` Andrew Cagney
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=20021204054128.GB4288@nevyn.them.org \
--to=drow@mvista.com \
--cc=gdb-patches@sources.redhat.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