2004-07-29 Andrew Cagney <cagney@gnu.org>

* config/pa/xm-linux.h: Do not include "floatformat.h".
	(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_LONG_DOUBLE_FORMAT): Delete macros.
	* config/i386/xm-i386.h: Do not include "floatformat.h".
	(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_LONG_DOUBLE_FORMAT): Delete macros.
	* doublest.c (HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
	(HOST_LONG_DOUBLE_FORMAT): Delete macros.  Use
	GDB_HOST_FLOAT_FORMAT, GDB_HOST_DOUBLE_FORMAT and
	GDB_HOST_LONG_DOUBLE_FORMAT instead.
	* configure.in (GDB_HOST_FLOAT_FORMAT, GDB_HOST_DOUBLE_FORMAT)
	(GDB_HOST_LONG_DOUBLE_FORMAT): Define.
	* configure, config.in: Regenerate.
	* configure.host (gdb_host_float_format, gdb_host_double_format)
	(gdb_host_long_double_format): Set according to the host.
This commit is contained in:
Andrew Cagney 2004-07-29 19:33:22 +00:00
parent 624a44a3c4
commit c35f4ffcad
8 changed files with 106 additions and 49 deletions

View File

@ -1,3 +1,21 @@
2004-07-29 Andrew Cagney <cagney@gnu.org>
* config/pa/xm-linux.h: Do not include "floatformat.h".
(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
(HOST_LONG_DOUBLE_FORMAT): Delete macros.
* config/i386/xm-i386.h: Do not include "floatformat.h".
(HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
(HOST_LONG_DOUBLE_FORMAT): Delete macros.
* doublest.c (HOST_FLOAT_FORMAT, HOST_DOUBLE_FORMAT)
(HOST_LONG_DOUBLE_FORMAT): Delete macros. Use
GDB_HOST_FLOAT_FORMAT, GDB_HOST_DOUBLE_FORMAT and
GDB_HOST_LONG_DOUBLE_FORMAT instead.
* configure.in (GDB_HOST_FLOAT_FORMAT, GDB_HOST_DOUBLE_FORMAT)
(GDB_HOST_LONG_DOUBLE_FORMAT): Define.
* configure, config.in: Regenerate.
* configure.host (gdb_host_float_format, gdb_host_double_format)
(gdb_host_long_double_format): Set according to the host.
2004-07-29 Andrew Cagney <cagney@gnu.org>
* Makefile.in (CONFIG_CLEAN): Delete duplicate definition.

View File

@ -540,6 +540,15 @@
/* Define if we can use the tkill syscall. */
#undef HAVE_TKILL_SYSCALL
/* Host float floatformat */
#undef GDB_HOST_FLOAT_FORMAT
/* Host double floatformat */
#undef GDB_HOST_DOUBLE_FORMAT
/* Host long double floatformat */
#undef GDB_HOST_LONG_DOUBLE_FORMAT
/* Define to the default OS ABI for this configuration. */
#undef GDB_OSABI_DEFAULT

View File

@ -22,10 +22,4 @@
#ifndef XM_I386_H
#define XM_I386_H
#include "floatformat.h"
#define HOST_FLOAT_FORMAT &floatformat_ieee_single_little
#define HOST_DOUBLE_FORMAT &floatformat_ieee_double_little
#define HOST_LONG_DOUBLE_FORMAT &floatformat_i387_ext
#endif /* xm-i386.h */

View File

@ -22,10 +22,4 @@
#ifndef XM_HPPA_LINUX_H
#define XM_HPPA_LINUX_H
#include "floatformat.h"
#define HOST_FLOAT_FORMAT &floatformat_ieee_single_big
#define HOST_DOUBLE_FORMAT &floatformat_ieee_double_big
#define HOST_LONG_DOUBLE_FORMAT &floatformat_ieee_double_big
#endif /* xm-linux.h */

50
gdb/configure vendored
View File

@ -10563,6 +10563,20 @@ fi
# List of host floatformats.
cat >> confdefs.h <<EOF
#define GDB_HOST_FLOAT_FORMAT $gdb_host_float_format
EOF
cat >> confdefs.h <<EOF
#define GDB_HOST_DOUBLE_FORMAT $gdb_host_double_format
EOF
cat >> confdefs.h <<EOF
#define GDB_HOST_LONG_DOUBLE_FORMAT $gdb_host_long_double_format
EOF
# target_subdir is used by the testsuite to find the target libraries.
target_subdir=
if test "${host}" != "${target}"; then
@ -10636,7 +10650,7 @@ fi
# We only build gdbserver automatically if host and target are the same.
if test "x$target" = "x$host"; then
echo $ac_n "checking whether gdbserver is supported on this host""... $ac_c" 1>&6
echo "configure:10640: checking whether gdbserver is supported on this host" >&5
echo "configure:10654: checking whether gdbserver is supported on this host" >&5
if test "x$build_gdbserver" = xyes; then
configdirs="$configdirs gdbserver"
echo "$ac_t""yes" 1>&6
@ -10700,12 +10714,12 @@ fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
echo "configure:10704: checking for Cygwin environment" >&5
echo "configure:10718: checking for Cygwin environment" >&5
if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 10709 "configure"
#line 10723 "configure"
#include "confdefs.h"
int main() {
@ -10716,7 +10730,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
if { (eval echo configure:10720: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:10734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@ -10733,19 +10747,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
echo "configure:10737: checking for mingw32 environment" >&5
echo "configure:10751: checking for mingw32 environment" >&5
if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 10742 "configure"
#line 10756 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
if { (eval echo configure:10749: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:10763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@ -10764,7 +10778,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
echo "configure:10768: checking for executable suffix" >&5
echo "configure:10782: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -10774,10 +10788,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
if { (eval echo configure:10778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
if { (eval echo configure:10792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.C | *.o | *.obj | *.ilk | *.pdb) ;;
*.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@ -10816,7 +10830,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
echo "configure:10820: checking for iconv" >&5
echo "configure:10834: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -10824,7 +10838,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
#line 10828 "configure"
#line 10842 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@ -10834,7 +10848,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
if { (eval echo configure:10838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:10852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@ -10846,7 +10860,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS -liconv"
cat > conftest.$ac_ext <<EOF
#line 10850 "configure"
#line 10864 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@ -10856,7 +10870,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
if { (eval echo configure:10860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:10874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@ -10877,13 +10891,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
echo "configure:10881: checking for iconv declaration" >&5
echo "configure:10895: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 10887 "configure"
#line 10901 "configure"
#include "confdefs.h"
#include <stdlib.h>
@ -10902,7 +10916,7 @@ int main() {
; return 0; }
EOF
if { (eval echo configure:10906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:10920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else

View File

@ -4,6 +4,9 @@
# This file sets the following shell variables:
# gdb_host_cpu generic name of host's CPU
# gdb_host name of GDB host definition to use
# gdb_host_float_format host's float floatformat, or 0
# gdb_host_double_format host's double floatformat, or 0
# gdb_host_long_double_format host's long double floatformat, or 0
# Map host cpu into the config cpu subdirectory name.
# The default is $host_cpu.
@ -145,3 +148,26 @@ x86_64-*-openbsd*) gdb_host=obsd64 ;;
m32r*-*-linux*) gdb_host=linux ;;
esac
# Map the host/cpu onto the floatformat correspondong to C's "float",
# "double" and "long double" types.
case "${host}" in
i[34567]86-*-*)
gdb_host_float_format="&floatformat_ieee_single_little"
gdb_host_double_format="&floatformat_ieee_double_little"
gdb_host_long_double_format="&floatformat_i387_ext"
;;
hppa*-*-linux*)
gdb_host_float_format="&floatformat_ieee_single_big"
gdb_host_double_format="&floatformat_ieee_double_big"
gdb_host_long_double_format="&floatformat_ieee_double_big"
;;
*)
gdb_host_float_format=0
gdb_host_double_format=0
gdb_host_long_double_format=0
;;
esac

View File

@ -1300,6 +1300,11 @@ AC_SUBST(CONFIG_CLEAN)
AC_SUBST(CONFIG_INSTALL)
AC_SUBST(CONFIG_UNINSTALL)
# List of host floatformats.
AC_DEFINE_UNQUOTED(GDB_HOST_FLOAT_FORMAT,$gdb_host_float_format,[Host float floatformat])
AC_DEFINE_UNQUOTED(GDB_HOST_DOUBLE_FORMAT,$gdb_host_double_format,[Host double floatformat])
AC_DEFINE_UNQUOTED(GDB_HOST_LONG_DOUBLE_FORMAT,$gdb_host_long_double_format,[Host long double floatformat])
# target_subdir is used by the testsuite to find the target libraries.
target_subdir=
if test "${host}" != "${target}"; then

View File

@ -91,10 +91,17 @@ get_field (unsigned char *data, enum floatformat_byteorders order,
{
result |= (unsigned long)*(data + cur_byte) << cur_bitshift;
cur_bitshift += FLOATFORMAT_CHAR_BIT;
if (order == floatformat_little || order == floatformat_littlebyte_bigword)
switch (order)
{
case floatformat_little:
++cur_byte;
else
break;
case floatformat_big:
--cur_byte;
break;
case floatformat_littlebyte_bigword:
break;
}
}
if (len < sizeof(result) * FLOATFORMAT_CHAR_BIT)
/* Mask out bits which are not part of the field */
@ -554,19 +561,9 @@ floatformat_mantissa (const struct floatformat *fmt, char *val)
increase precision as necessary. Otherwise, we call the conversion
routine and let it do the dirty work. */
#ifndef HOST_FLOAT_FORMAT
#define HOST_FLOAT_FORMAT 0
#endif
#ifndef HOST_DOUBLE_FORMAT
#define HOST_DOUBLE_FORMAT 0
#endif
#ifndef HOST_LONG_DOUBLE_FORMAT
#define HOST_LONG_DOUBLE_FORMAT 0
#endif
static const struct floatformat *host_float_format = HOST_FLOAT_FORMAT;
static const struct floatformat *host_double_format = HOST_DOUBLE_FORMAT;
static const struct floatformat *host_long_double_format = HOST_LONG_DOUBLE_FORMAT;
static const struct floatformat *host_float_format = GDB_HOST_FLOAT_FORMAT;
static const struct floatformat *host_double_format = GDB_HOST_DOUBLE_FORMAT;
static const struct floatformat *host_long_double_format = GDB_HOST_LONG_DOUBLE_FORMAT;
void
floatformat_to_doublest (const struct floatformat *fmt,