From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 901 invoked by alias); 8 Aug 2004 17:23:27 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 893 invoked from network); 8 Aug 2004 17:23:27 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sourceware.org with SMTP; 8 Aug 2004 17:23:27 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.10/8.12.10) with ESMTP id i78HNMe3006833 for ; Sun, 8 Aug 2004 13:23:27 -0400 Received: from localhost.redhat.com (porkchop.devel.redhat.com [172.16.58.2]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i78HNEa07054; Sun, 8 Aug 2004 13:23:14 -0400 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 22FE52B9D; Sun, 8 Aug 2004 13:23:07 -0400 (EDT) Message-ID: <4116617A.8010601@gnu.org> Date: Sun, 08 Aug 2004 17:23:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-GB; rv:1.4.1) Gecko/20040801 MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [commit] Add BE/LE floating-point type & format tables Content-Type: multipart/mixed; boundary="------------040904030201000706070409" X-SW-Source: 2004-08/txt/msg00263.txt.bz2 This is a multi-part message in MIME format. --------------040904030201000706070409 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 547 Hello, This adds tables, indexed by the byte-order, for various be/le floatformat's and floating-point types. With this, instead of: if (info.byte_order != BFD_ENDIAN_BIG) set_gdbarch_float_format (gdbarch, floatformat_ieee_single_big); else set_gdbarch_float_format (gdbarch, floatformat_ieee_single_little); [sic], the shorter: set_gdbarch_float_format (gdbarch, floatformat_ieee_single[info.byte_order]); can be used. Similarly for the corresponding types. I'll follow up with a couple uses. committed, Andrew --------------040904030201000706070409 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 10437 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; --------------040904030201000706070409--