2004-08-08 Andrew Cagney * gdbtypes.c (builtin_type_arm_ext, builtin_type_ieee_single) (builtin_type_ieee_double, builtin_type_ia64_quad) (builtin_type_ia64_spill, _initialize_gdbtypes): Add tables of BE/LE floating-point types. * gdbtypes.h (builtin_type_arm_ext, builtin_type_ieee_single) (builtin_type_ieee_double, builtin_type_ia64_quad) (builtin_type_ia64_spill): Declare. * doublest.c (_initialize_doublest, floatformat_ieee_single) (floatformat_ieee_double, floatformat_arm_ext) (floatformat_ia64_spill, floatformat_ia64_quad): Add tables of LE/BE floatformats. * doublest.h: (struct floatformat, floatformat_ieee_single) (floatformat_ieee_double, floatformat_arm_ext) (floatformat_ia64_spill, floatformat_ia64_quad): Declare. Index: doublest.c =================================================================== RCS file: /cvs/src/src/gdb/doublest.c,v retrieving revision 1.20 diff -p -u -r1.20 doublest.c --- doublest.c 7 Aug 2004 20:06:28 -0000 1.20 +++ doublest.c 8 Aug 2004 17:16:53 -0000 @@ -811,3 +811,26 @@ convert_typed_floating (const void *from floatformat_from_doublest (to_fmt, &d, to); } } + +const struct floatformat *floatformat_ieee_single[BFD_ENDIAN_UNKNOWN]; +const struct floatformat *floatformat_ieee_double[BFD_ENDIAN_UNKNOWN]; +const struct floatformat *floatformat_arm_ext[BFD_ENDIAN_UNKNOWN]; +const struct floatformat *floatformat_ia64_spill[BFD_ENDIAN_UNKNOWN]; +const struct floatformat *floatformat_ia64_quad[BFD_ENDIAN_UNKNOWN]; + +extern void _initialize_doublest (void); + +extern void +_initialize_doublest (void) +{ + floatformat_ieee_single[BFD_ENDIAN_LITTLE] = &floatformat_ieee_single_little; + floatformat_ieee_single[BFD_ENDIAN_BIG] = &floatformat_ieee_single_big; + floatformat_ieee_double[BFD_ENDIAN_LITTLE] = &floatformat_ieee_double_little; + floatformat_ieee_double[BFD_ENDIAN_BIG] = &floatformat_ieee_double_big; + floatformat_arm_ext[BFD_ENDIAN_LITTLE] = &floatformat_arm_ext_littlebyte_bigword; + floatformat_arm_ext[BFD_ENDIAN_BIG] = &floatformat_arm_ext_big; + floatformat_ia64_spill[BFD_ENDIAN_LITTLE] = &floatformat_ia64_spill_little; + floatformat_ia64_spill[BFD_ENDIAN_BIG] = &floatformat_ia64_spill_big; + floatformat_ia64_quad[BFD_ENDIAN_LITTLE] = &floatformat_ia64_quad_little; + floatformat_ia64_quad[BFD_ENDIAN_BIG] = &floatformat_ia64_quad_big; +} Index: doublest.h =================================================================== RCS file: /cvs/src/src/gdb/doublest.h,v retrieving revision 1.11 diff -p -u -r1.11 doublest.h --- doublest.h 12 Apr 2003 17:41:25 -0000 1.11 +++ doublest.h 8 Aug 2004 17:16:53 -0000 @@ -25,6 +25,7 @@ #define DOUBLEST_H struct type; +struct floatformat; /* Setup definitions for host and target floating point formats. We need to consider the format for `float', `double', and `long double' for both target @@ -87,4 +88,11 @@ extern void convert_typed_floating (cons const struct type *from_type, void *to, const struct type *to_type); +/* Table of convenient float-formats. */ +extern const struct floatformat *floatformat_ieee_single[BFD_ENDIAN_UNKNOWN]; +extern const struct floatformat *floatformat_ieee_double[BFD_ENDIAN_UNKNOWN]; +extern const struct floatformat *floatformat_arm_ext[BFD_ENDIAN_UNKNOWN]; +extern const struct floatformat *floatformat_ia64_spill[BFD_ENDIAN_UNKNOWN]; +extern const struct floatformat *floatformat_ia64_quad[BFD_ENDIAN_UNKNOWN]; + #endif Index: gdbtypes.c =================================================================== RCS file: /cvs/src/src/gdb/gdbtypes.c,v retrieving revision 1.91 diff -p -u -r1.91 gdbtypes.c --- gdbtypes.c 7 Aug 2004 21:03:33 -0000 1.91 +++ gdbtypes.c 8 Aug 2004 17:17:00 -0000 @@ -97,8 +97,10 @@ struct type *builtin_type_vec64; struct type *builtin_type_vec64i; struct type *builtin_type_vec128; struct type *builtin_type_vec128i; +struct type *builtin_type_ieee_single[BFD_ENDIAN_UNKNOWN]; struct type *builtin_type_ieee_single_big; struct type *builtin_type_ieee_single_little; +struct type *builtin_type_ieee_double[BFD_ENDIAN_UNKNOWN]; struct type *builtin_type_ieee_double_big; struct type *builtin_type_ieee_double_little; struct type *builtin_type_ieee_double_littlebyte_bigword; @@ -107,10 +109,13 @@ struct type *builtin_type_m68881_ext; struct type *builtin_type_i960_ext; struct type *builtin_type_m88110_ext; struct type *builtin_type_m88110_harris_ext; +struct type *builtin_type_arm_ext[BFD_ENDIAN_UNKNOWN]; struct type *builtin_type_arm_ext_big; struct type *builtin_type_arm_ext_littlebyte_bigword; +struct type *builtin_type_ia64_spill[BFD_ENDIAN_UNKNOWN]; struct type *builtin_type_ia64_spill_big; struct type *builtin_type_ia64_spill_little; +struct type *builtin_type_ia64_quad[BFD_ENDIAN_UNKNOWN]; struct type *builtin_type_ia64_quad_big; struct type *builtin_type_ia64_quad_little; struct type *builtin_type_void_data_ptr; @@ -3577,6 +3582,14 @@ _initialize_gdbtypes (void) 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_single[BFD_ENDIAN_BIG] + = build_flt (floatformat_ieee_single_big.totalsize, + "builtin_type_ieee_single_big", + &floatformat_ieee_single_big); + builtin_type_ieee_single[BFD_ENDIAN_LITTLE] + = build_flt (floatformat_ieee_single_little.totalsize, + "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); @@ -3585,6 +3598,14 @@ _initialize_gdbtypes (void) 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[BFD_ENDIAN_BIG] + = build_flt (floatformat_ieee_double_big.totalsize, + "builtin_type_ieee_double_big", + &floatformat_ieee_double_big); + builtin_type_ieee_double[BFD_ENDIAN_LITTLE] + = build_flt (floatformat_ieee_double_little.totalsize, + "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); @@ -3617,6 +3638,14 @@ _initialize_gdbtypes (void) 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_arm_ext[BFD_ENDIAN_BIG] + = build_flt (floatformat_arm_ext_big.totalsize, + "builtin_type_arm_ext_big", + &floatformat_arm_ext_big); + builtin_type_arm_ext[BFD_ENDIAN_LITTLE] + = build_flt (floatformat_arm_ext_littlebyte_bigword.totalsize, + "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); @@ -3625,6 +3654,14 @@ _initialize_gdbtypes (void) 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_spill[BFD_ENDIAN_BIG] + = build_flt (floatformat_ia64_spill_big.totalsize, + "builtin_type_ia64_spill_big", + &floatformat_ia64_spill_big); + builtin_type_ia64_spill[BFD_ENDIAN_LITTLE] + = build_flt (floatformat_ia64_spill_little.totalsize, + "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); @@ -3633,6 +3670,14 @@ _initialize_gdbtypes (void) 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; + builtin_type_ia64_quad[BFD_ENDIAN_BIG] + = build_flt (floatformat_ia64_quad_big.totalsize, + "builtin_type_ia64_quad_big", + &floatformat_ia64_quad_big); + builtin_type_ia64_quad[BFD_ENDIAN_LITTLE] + = build_flt (floatformat_ia64_quad_little.totalsize, + "builtin_type_ia64_quad_little", + &floatformat_ia64_quad_little); deprecated_add_show_from_set (add_set_cmd ("overload", no_class, var_zinteger, (char *) &overload_debug, Index: gdbtypes.h =================================================================== RCS file: /cvs/src/src/gdb/gdbtypes.h,v retrieving revision 1.57 diff -p -u -r1.57 gdbtypes.h --- gdbtypes.h 7 Aug 2004 19:25:58 -0000 1.57 +++ gdbtypes.h 8 Aug 2004 17:17:04 -0000 @@ -1050,8 +1050,10 @@ extern struct type *builtin_type_vec128; extern struct type *builtin_type_vec128i; /* Explicit floating-point formats. See "floatformat.h". */ +extern struct type *builtin_type_ieee_single[BFD_ENDIAN_UNKNOWN]; extern struct type *builtin_type_ieee_single_big; extern struct type *builtin_type_ieee_single_little; +extern struct type *builtin_type_ieee_double[BFD_ENDIAN_UNKNOWN]; extern struct type *builtin_type_ieee_double_big; extern struct type *builtin_type_ieee_double_little; extern struct type *builtin_type_ieee_double_littlebyte_bigword; @@ -1060,10 +1062,13 @@ extern struct type *builtin_type_m68881_ extern struct type *builtin_type_i960_ext; extern struct type *builtin_type_m88110_ext; extern struct type *builtin_type_m88110_harris_ext; +extern struct type *builtin_type_arm_ext[BFD_ENDIAN_UNKNOWN]; extern struct type *builtin_type_arm_ext_big; extern struct type *builtin_type_arm_ext_littlebyte_bigword; +extern struct type *builtin_type_ia64_spill[BFD_ENDIAN_UNKNOWN]; extern struct type *builtin_type_ia64_spill_big; extern struct type *builtin_type_ia64_spill_little; +extern struct type *builtin_type_ia64_quad[BFD_ENDIAN_UNKNOWN]; extern struct type *builtin_type_ia64_quad_big; extern struct type *builtin_type_ia64_quad_little;