Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: gdb-patches@sources.redhat.com
Subject: PATCH for Re: Problems with floatformat on Alpha
Date: Sun, 24 Nov 2002 14:55:00 -0000	[thread overview]
Message-ID: <20021124225605.GA2639@nevyn.them.org> (raw)
In-Reply-To: <20021124214447.GA1222@nevyn.them.org>

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.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

2002-11-24  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.

--- gdb-5.2.debian90.cvs20021120/gdb/doublest.c.orig	2002-11-24 17:48:16.000000000 -0500
+++ gdb-5.2.debian90.cvs20021120/gdb/doublest.c	2002-11-24 17:48:25.000000000 -0500
@@ -177,7 +177,7 @@
   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. */
--- gdb-5.2.debian90.cvs20021120/gdb/config/alpha/alpha-linux.mh.orig	2002-11-24 17:50:30.000000000 -0500
+++ gdb-5.2.debian90.cvs20021120/gdb/config/alpha/alpha-linux.mh	2002-11-24 17:50:41.000000000 -0500
@@ -8,3 +8,5 @@
 
 MMALLOC = 
 MMALLOC_CFLAGS = -DNO_MMALLOC 
+
+MH_CFLAGS = -mieee


       reply	other threads:[~2002-11-24 22:55 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 [this message]
2002-11-25 13:10   ` Andrew Cagney
2002-12-03 21:40   ` Daniel Jacobowitz
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=20021124225605.GA2639@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