This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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,

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]