From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7013 invoked by alias); 1 May 2004 17:20:23 -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 7001 invoked from network); 1 May 2004 17:20:23 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 1 May 2004 17:20:23 -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 i41HKMKI030892; Sat, 1 May 2004 13:20:23 -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 i41HK1v18593; Sat, 1 May 2004 13:20:11 -0400 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id D06BD2B9D; Sat, 1 May 2004 13:19:50 -0400 (EDT) Message-ID: <4093DC36.9040304@gnu.org> Date: Sat, 01 May 2004 17:20:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-GB; rv:1.4.1) Gecko/20040217 MIME-Version: 1.0 To: binutils@sources.redhat.com, gdb-patches@sources.redhat.com Cc: dj@redhat.com Subject: Re: [patch/rfc] Add host's floatformat References: <40939DD4.3000706@gnu.org> In-Reply-To: <40939DD4.3000706@gnu.org> Content-Type: multipart/mixed; boundary="------------050205080308030407060500" X-SW-Source: 2004-05/txt/msg00036.txt.bz2 This is a multi-part message in MIME format. --------------050205080308030407060500 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 134 Here's a revised patch: - uses functions instead of variables - adds m68k - adds _host_ to the function names more comments? Andrew --------------050205080308030407060500 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 6305 Index: include/ChangeLog 2004-04-30 Andrew Cagney * floatformat.h (floatformat_host_float, floatformat_host_double) (floatformat_host_long_double): Declare. Index: libiberty/ChangeLog 2004-04-30 Andrew Cagney * configure.ac: Define HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT, and HOST_LONG_DOUBLE_FORMAT. * configure, config.in: Re-generate. * floatformat.c (floatformat_host_float, floatformat_host_double) (floatformat_host_long_double): New functions. Index: include/floatformat.h =================================================================== RCS file: /cvs/src/src/include/floatformat.h,v retrieving revision 1.9 diff -p -u -r1.9 floatformat.h --- include/floatformat.h 22 Sep 2003 17:41:02 -0000 1.9 +++ include/floatformat.h 1 May 2004 17:17:36 -0000 @@ -1,5 +1,7 @@ /* IEEE floating point support declarations, for GDB, the GNU Debugger. - Copyright 1991, 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc. + + Copyright 1991, 1994, 1995, 1997, 2000, 2003, 2004 Free Software + Foundation, Inc. This file is part of GDB. @@ -129,5 +131,11 @@ floatformat_from_double PARAMS ((const s extern int floatformat_is_valid PARAMS ((const struct floatformat *fmt, const char *from)); + +/* If non-NULL, the host's floatformat corresponding to the compilers + "float", "double" and "long double" types. */ +extern const struct floatformat *floatformat_host_float PARAMS ((void)); +extern const struct floatformat *floatformat_host_double PARAMS ((void)); +extern const struct floatformat *floatformat_host_long_double PARAMS ((void)); #endif /* defined (FLOATFORMAT_H) */ Index: libiberty/config.in =================================================================== RCS file: /cvs/src/src/libiberty/config.in,v retrieving revision 1.26 diff -p -u -r1.26 config.in --- libiberty/config.in 22 Apr 2004 18:39:02 -0000 1.26 +++ libiberty/config.in 1 May 2004 17:17:43 -0000 @@ -313,6 +313,15 @@ /* Define if you have the _system_configuration variable. */ #undef HAVE__SYSTEM_CONFIGURATION +/* Host double floatformat */ +#undef HOST_DOUBLE_FORMAT + +/* Host float floatformat */ +#undef HOST_FLOAT_FORMAT + +/* Host long double floatformat */ +#undef HOST_LONG_DOUBLE_FORMAT + /* Define if the host machine stores words of multi-word integers in big-endian order. */ #undef HOST_WORDS_BIG_ENDIAN Index: libiberty/configure =================================================================== RCS file: /cvs/src/src/libiberty/configure,v retrieving revision 1.58 diff -p -u -r1.58 configure --- libiberty/configure 26 Apr 2004 18:23:59 -0000 1.58 +++ libiberty/configure 1 May 2004 17:17:47 -0000 @@ -6293,6 +6293,45 @@ case "${host}" in esac +# Figure out which floatformat to use. +case "${host}" in +i3456786-*-*) + host_float_format="&floatformat_ieee_single_little" + host_double_format="&floatformat_ieee_double_little" + host_long_double_format="&floatformat_i387_ext" + ;; +hppa*-*-linux*) + host_float_format="&floatformat_ieee_single_big" + host_double_format="&floatformat_ieee_double_big" + host_long_double_format="&floatformat_ieee_double_big" + ;; +m68*-*-*) + host_float_format="&floatformat_ieee_single_big" + host_double_format="&floatformat_ieee_double_big" + host_long_double_format="&floatformat_m68881_ext" + ;; +*) + host_float_format=0 + host_double_format=0 + host_long_double_format=0 + ;; +esac + +cat >>confdefs.h <<_ACEOF +#define HOST_FLOAT_FORMAT $host_float_format +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HOST_DOUBLE_FORMAT $host_double_format +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HOST_LONG_DOUBLE_FORMAT $host_long_double_format +_ACEOF + + if test x$gcc_no_link = xyes; then if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then ac_cv_func_mmap_fixed_mapped=no Index: libiberty/configure.ac =================================================================== RCS file: /cvs/src/src/libiberty/configure.ac,v retrieving revision 1.6 diff -p -u -r1.6 configure.ac --- libiberty/configure.ac 26 Apr 2004 18:23:59 -0000 1.6 +++ libiberty/configure.ac 1 May 2004 17:17:47 -0000 @@ -520,6 +520,33 @@ case "${host}" in esac AC_SUBST(pexecute) +# Figure out which floatformat to use. +case "${host}" in +i[34567]86-*-*) + host_float_format="&floatformat_ieee_single_little" + host_double_format="&floatformat_ieee_double_little" + host_long_double_format="&floatformat_i387_ext" + ;; +hppa*-*-linux*) + host_float_format="&floatformat_ieee_single_big" + host_double_format="&floatformat_ieee_double_big" + host_long_double_format="&floatformat_ieee_double_big" + ;; +m68*-*-*) + host_float_format="&floatformat_ieee_single_big" + host_double_format="&floatformat_ieee_double_big" + host_long_double_format="&floatformat_m68881_ext" + ;; +*) + host_float_format=0 + host_double_format=0 + host_long_double_format=0 + ;; +esac +AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT,$host_float_format,[Host float floatformat]) +AC_DEFINE_UNQUOTED(HOST_DOUBLE_FORMAT,$host_double_format,[Host double floatformat]) +AC_DEFINE_UNQUOTED(HOST_LONG_DOUBLE_FORMAT,$host_long_double_format,[Host long double floatformat]) + libiberty_AC_FUNC_STRNCMP # Install a library built with a cross compiler in $(tooldir) rather Index: libiberty/floatformat.c =================================================================== RCS file: /cvs/src/src/libiberty/floatformat.c,v retrieving revision 1.12 diff -p -u -r1.12 floatformat.c --- libiberty/floatformat.c 3 Dec 2003 19:03:29 -0000 1.12 +++ libiberty/floatformat.c 1 May 2004 17:17:47 -0000 @@ -1,5 +1,7 @@ /* IEEE floating point support routines, for GDB, the GNU Debugger. - Copyright (C) 1991, 1994, 1999, 2000, 2003 Free Software Foundation, Inc. + + Copyright 1991, 1994, 1999, 2000, 2003, 2004 Free Software + Foundation, Inc. This file is part of GDB. @@ -548,6 +550,24 @@ floatformat_is_valid (fmt, from) return fmt->is_valid (fmt, from); } +/* If non-NULL, the host's floatformat. */ +const struct floatformat * +floatformat_host_float () +{ + return HOST_FLOAT_FORMAT; +} + +const struct floatformat * +floatformat_host_double () +{ + return HOST_DOUBLE_FORMAT; +} + +const struct floatformat * +floatformat_host_long_double () +{ + return HOST_LONG_DOUBLE_FORMAT; +} #ifdef IEEE_DEBUG --------------050205080308030407060500--