This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch] Initialize TYPE_FLOATFORMAT for h/w types
- From: Andrew Cagney <ac131313 at cygnus dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Tue, 22 Jan 2002 14:15:25 -0500
- Subject: [patch] Initialize TYPE_FLOATFORMAT for h/w types
Per, Richard E's posting,
The attatched initializes the TYPE_FLOATFORMAT field for all the
hardware floating point types. It also adds a few assertions so that
GDB won't simply dump core if things get messed up.
Andrew
2002-01-22 Andrew Cagney <ac131313@redhat.com>
* doublest.c (floatformat_is_negative): Assert FMT is non NULL.
(floatformat_is_nan, floatformat_mantissa): Ditto.
* gdbtypes.c (_initialize_gdbtypes): Initialize TYPE_FLOATFORMAT
for builtin_type_ieee_single_little, builtin_type_ieee_double_big,
builtin_type_ieee_double_little,
builtin_type_ieee_double_littlebyte_bigword,
builtin_type_m68881_ext, builtin_type_i960_ext,
builtin_type_m88110_ext, builtin_type_m88110_harris_ext,
builtin_type_arm_ext_big, builtin_type_arm_ext_littlebyte_bigword,
builtin_type_ia64_spill_big, builtin_type_ia64_spill_little and
builtin_type_ia64_quad_big, builtin_type_ia64_quad_little.
Index: doublest.c
===================================================================
RCS file: /cvs/src/src/gdb/doublest.c,v
retrieving revision 1.7
diff -p -r1.7 doublest.c
*** doublest.c 2002/01/20 18:05:51 1.7
--- doublest.c 2002/01/22 19:11:18
*************** int
*** 439,445 ****
floatformat_is_negative (const struct floatformat *fmt, char *val)
{
unsigned char *uval = (unsigned char *) val;
!
return get_field (uval, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1);
}
--- 439,445 ----
floatformat_is_negative (const struct floatformat *fmt, char *val)
{
unsigned char *uval = (unsigned char *) val;
! gdb_assert (fmt != NULL);
return get_field (uval, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1);
}
*************** floatformat_is_nan (const struct floatfo
*** 454,459 ****
--- 454,461 ----
unsigned int mant_bits, mant_off;
int mant_bits_left;
+ gdb_assert (fmt != NULL);
+
if (! fmt->exp_nan)
return 0;
*************** floatformat_mantissa (const struct float
*** 503,508 ****
--- 505,511 ----
char buf[9];
/* Make sure we have enough room to store the mantissa. */
+ gdb_assert (fmt != NULL);
gdb_assert (sizeof res > ((fmt->man_len + 7) / 8) * 2);
mant_off = fmt->man_start;
Index: gdbtypes.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtypes.c,v
retrieving revision 1.37
diff -p -r1.37 gdbtypes.c
*** gdbtypes.c 2002/01/20 19:42:04 1.37
--- gdbtypes.c 2002/01/22 19:11:24
*************** _initialize_gdbtypes (void)
*** 3328,3342 ****
--- 3328,3346 ----
builtin_type_ieee_single_little =
init_type (TYPE_CODE_FLT, floatformat_ieee_single_little.totalsize / 8,
0, "builtin_type_ieee_single_little", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ieee_single_little) = &floatformat_ieee_single_little;
builtin_type_ieee_double_big =
init_type (TYPE_CODE_FLT, floatformat_ieee_double_big.totalsize / 8,
0, "builtin_type_ieee_double_big", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ieee_double_big) = &floatformat_ieee_double_big;
builtin_type_ieee_double_little =
init_type (TYPE_CODE_FLT, floatformat_ieee_double_little.totalsize / 8,
0, "builtin_type_ieee_double_little", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ieee_double_little) = &floatformat_ieee_double_little;
builtin_type_ieee_double_littlebyte_bigword =
init_type (TYPE_CODE_FLT, floatformat_ieee_double_littlebyte_bigword.totalsize / 8,
0, "builtin_type_ieee_double_littlebyte_bigword", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ieee_double_littlebyte_bigword) = &floatformat_ieee_double_littlebyte_bigword;
builtin_type_i387_ext =
init_type (TYPE_CODE_FLT, floatformat_i387_ext.totalsize / 8,
0, "builtin_type_i387_ext", NULL);
*************** _initialize_gdbtypes (void)
*** 3344,3376 ****
--- 3348,3390 ----
builtin_type_m68881_ext =
init_type (TYPE_CODE_FLT, floatformat_m68881_ext.totalsize / 8,
0, "builtin_type_m68881_ext", NULL);
+ TYPE_FLOATFORMAT (builtin_type_m68881_ext) = &floatformat_m68881_ext;
builtin_type_i960_ext =
init_type (TYPE_CODE_FLT, floatformat_i960_ext.totalsize / 8,
0, "builtin_type_i960_ext", NULL);
+ TYPE_FLOATFORMAT (builtin_type_i960_ext) = &floatformat_i960_ext;
builtin_type_m88110_ext =
init_type (TYPE_CODE_FLT, floatformat_m88110_ext.totalsize / 8,
0, "builtin_type_m88110_ext", NULL);
+ TYPE_FLOATFORMAT (builtin_type_m88110_ext) = &floatformat_m88110_ext;
builtin_type_m88110_harris_ext =
init_type (TYPE_CODE_FLT, floatformat_m88110_harris_ext.totalsize / 8,
0, "builtin_type_m88110_harris_ext", NULL);
+ TYPE_FLOATFORMAT (builtin_type_m88110_harris_ext) = &floatformat_m88110_harris_ext;
builtin_type_arm_ext_big =
init_type (TYPE_CODE_FLT, floatformat_arm_ext_big.totalsize / 8,
0, "builtin_type_arm_ext_big", NULL);
+ TYPE_FLOATFORMAT (builtin_type_arm_ext_big) = &floatformat_arm_ext_big;
builtin_type_arm_ext_littlebyte_bigword =
init_type (TYPE_CODE_FLT, floatformat_arm_ext_littlebyte_bigword.totalsize / 8,
0, "builtin_type_arm_ext_littlebyte_bigword", NULL);
+ TYPE_FLOATFORMAT (builtin_type_arm_ext_littlebyte_bigword) = &floatformat_arm_ext_littlebyte_bigword;
builtin_type_ia64_spill_big =
init_type (TYPE_CODE_FLT, floatformat_ia64_spill_big.totalsize / 8,
0, "builtin_type_ia64_spill_big", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ia64_spill_big) = &floatformat_ia64_spill_big;
builtin_type_ia64_spill_little =
init_type (TYPE_CODE_FLT, floatformat_ia64_spill_little.totalsize / 8,
0, "builtin_type_ia64_spill_little", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ia64_spill_little) = &floatformat_ia64_spill_little;
builtin_type_ia64_quad_big =
init_type (TYPE_CODE_FLT, floatformat_ia64_quad_big.totalsize / 8,
0, "builtin_type_ia64_quad_big", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ia64_quad_big) = &floatformat_ia64_quad_big;
builtin_type_ia64_quad_little =
init_type (TYPE_CODE_FLT, floatformat_ia64_quad_little.totalsize / 8,
0, "builtin_type_ia64_quad_little", NULL);
+ TYPE_FLOATFORMAT (builtin_type_ia64_quad_little) = &floatformat_ia64_quad_little;
add_show_from_set (
add_set_cmd ("overload", no_class, var_zinteger, (char *) &overload_debug,