mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 07:08:01 +08:00
* floatformat.c (floatformat_is_valid): New function.
(get_field, put_field): Correct comments.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2003-09-15 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
|
* floatformat.c (floatformat_is_valid): New function.
|
||||||
|
(get_field, put_field): Correct comments.
|
||||||
|
|
||||||
2003-09-06 Josef Zlomek <zlomekj@suse.cz>
|
2003-09-06 Josef Zlomek <zlomekj@suse.cz>
|
||||||
|
|
||||||
* fibheap.c (fibheap_replace_key_data): Change type of OKEY to
|
* fibheap.c (fibheap_replace_key_data): Change type of OKEY to
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* IEEE floating point support routines, for GDB, the GNU Debugger.
|
/* IEEE floating point support routines, for GDB, the GNU Debugger.
|
||||||
Copyright (C) 1991, 1994, 1999, 2000 Free Software Foundation, Inc.
|
Copyright (C) 1991, 1994, 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ static unsigned long get_field PARAMS ((unsigned char *,
|
|||||||
unsigned int,
|
unsigned int,
|
||||||
unsigned int));
|
unsigned int));
|
||||||
|
|
||||||
/* Extract a field which starts at START and is LEN bytes long. DATA and
|
/* Extract a field which starts at START and is LEN bits long. DATA and
|
||||||
TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
|
TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
|
||||||
static unsigned long
|
static unsigned long
|
||||||
get_field (data, order, total_len, start, len)
|
get_field (data, order, total_len, start, len)
|
||||||
@ -273,7 +273,7 @@ static void put_field PARAMS ((unsigned char *, enum floatformat_byteorders,
|
|||||||
unsigned int,
|
unsigned int,
|
||||||
unsigned long));
|
unsigned long));
|
||||||
|
|
||||||
/* Set a field which starts at START and is LEN bytes long. DATA and
|
/* Set a field which starts at START and is LEN bits long. DATA and
|
||||||
TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
|
TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
|
||||||
static void
|
static void
|
||||||
put_field (data, order, total_len, start, len, stuff_to_put)
|
put_field (data, order, total_len, start, len, stuff_to_put)
|
||||||
@ -404,6 +404,39 @@ floatformat_from_double (fmt, from, to)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return non-zero iff the data at FROM is a valid number in format FMT. */
|
||||||
|
|
||||||
|
int
|
||||||
|
floatformat_is_valid (fmt, from)
|
||||||
|
const struct floatformat *fmt;
|
||||||
|
char *from;
|
||||||
|
{
|
||||||
|
if (fmt == &floatformat_i387_ext)
|
||||||
|
{
|
||||||
|
/* In the i387 double-extended format, if the exponent is all
|
||||||
|
ones, then the integer bit must be set. If the exponent
|
||||||
|
is neither 0 nor ~0, the intbit must also be set. Only
|
||||||
|
if the exponent is zero can it be zero, and then it must
|
||||||
|
be zero. */
|
||||||
|
unsigned long exponent, int_bit;
|
||||||
|
unsigned char *ufrom = (unsigned char *) from;
|
||||||
|
|
||||||
|
exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize,
|
||||||
|
fmt->exp_start, fmt->exp_len);
|
||||||
|
int_bit = get_field (ufrom, fmt->byteorder, fmt->totalsize,
|
||||||
|
fmt->man_start, 1);
|
||||||
|
|
||||||
|
if ((exponent == 0) != (int_bit == 0))
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Other formats with invalid representations should be added
|
||||||
|
here. */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef IEEE_DEBUG
|
#ifdef IEEE_DEBUG
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user