Browse Source

Fixes for floatformat_from_doublest().

gdb-premipsmulti-2000-06-06-branch
Kevin Buettner 27 years ago
parent
commit
ba8966d6c3
  1. 8
      gdb/ChangeLog
  2. 6
      gdb/utils.c

8
gdb/ChangeLog

@ -1,3 +1,11 @@
2000-03-20 Kevin Buettner <kevinb@redhat.com>
* utils.c (floatformat_from_doublest): Don't assume that a long
will be exactly 32 bits in length. Also... make sure space
that we're writing the float to is completely initialized to
zeroes, even when the number of bits in the float is not
evenly divisible by FLOATFORMAT_CHAR_BIT.
2000-03-20 Jim Blandy <jimb@redhat.com>
* i386-linux-nat.c: No need to #include "frame.h" any more.

6
gdb/utils.c

@ -2722,7 +2722,8 @@ floatformat_from_doublest (fmt, from, to)
unsigned char *uto = (unsigned char *) to;
memcpy (&dfrom, from, sizeof (dfrom));
memset (uto, 0, fmt->totalsize / FLOATFORMAT_CHAR_BIT);
memset (uto, 0, (fmt->totalsize + FLOATFORMAT_CHAR_BIT - 1)
/ FLOATFORMAT_CHAR_BIT);
if (dfrom == 0)
return; /* Result is zero */
if (dfrom != dfrom) /* Result is NaN */
@ -2771,7 +2772,7 @@ floatformat_from_doublest (fmt, from, to)
mant_bits = mant_bits_left < 32 ? mant_bits_left : 32;
mant *= 4294967296.0;
mant_long = (unsigned long) mant;
mant_long = ((unsigned long) mant) & 0xffffffffL;
mant -= mant_long;
/* If the integer bit is implicit, then we need to discard it.
@ -2782,6 +2783,7 @@ floatformat_from_doublest (fmt, from, to)
&& fmt->intbit == floatformat_intbit_no)
{
mant_long <<= 1;
mant_long &= 0xffffffffL;
mant_bits -= 1;
}

Loading…
Cancel
Save