summaryrefslogtreecommitdiff
path: root/include/floatformat.h
diff options
context:
space:
mode:
authorJoseph Myers <jsm@polyomino.org.uk>2007-11-08 00:08:48 +0000
committerJoseph Myers <jsm@polyomino.org.uk>2007-11-08 00:08:48 +0000
commita14ee758af464230ab40c1a0d9adb4c7db34a9fc (patch)
treef480556ae46ae6c24cda20413fb033b19f9d5ca2 /include/floatformat.h
parenta86b9a85032212369aedd44ee68c9ae3680e936b (diff)
downloadgdb-a14ee758af464230ab40c1a0d9adb4c7db34a9fc.tar.gz
include:
2007-11-07 Joseph Myers <joseph@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com> * floatformat.h (struct floatformat): Add split_half field. (floatformat_ibm_long_double): New. libiberty: 2007-11-07 Joseph Myers <joseph@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com> * floatformat.c (mant_bits_set): New. (floatformat_to_double): Use it. Note no special handling of split formats. (floatformat_from_double): Note no special handing of split formats. (floatformat_ibm_long_double_is_valid, floatformat_ibm_long_double): New. (floatformat_ieee_single_big, floatformat_ieee_single_little, floatformat_ieee_double_big, floatformat_ieee_double_little, floatformat_ieee_double_littlebyte_bigword, floatformat_vax_f, floatformat_vax_d, floatformat_vax_g, floatformat_i387_ext, floatformat_m68881_ext, floatformat_i960_ext, floatformat_m88110_ext, floatformat_m88110_harris_ext, floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword, floatformat_ia64_spill_big, floatformat_ia64_spill_little, floatformat_ia64_quad_big, floatformat_ia64_quad_little): Update for addition of split_half field. gdb: 2007-11-07 Joseph Myers <joseph@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com> * gdbtypes.c (floatformats_ibm_long_double): New. * gdbtypes.h (floatformats_ibm_long_double): Declare. * ia64-tdep.c (floatformat_ia64_ext): Update for addition of split_half field. * mips-tdep.c (n32n64_floatformat_always_valid, floatformat_n32n64_long_double_big, floatformats_n32n64_long): Remove. (mips_gdbarch_init): Use floatformats_ibm_long_double instead of floatformats_n32n64_long. * ppc-linux-tdep.c (ppc_linux_init_abi): Use 128-bit IBM long double. * doublest.c (convert_floatformat_to_doublest, convert_doublest_to_floatformat): Handle split floating-point formats. * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Handle IBM long double arguments. (ppc64_sysv_abi_push_dummy_call): Likewise. (do_ppc_sysv_return_value): Handle IBM long double return.
Diffstat (limited to 'include/floatformat.h')
-rw-r--r--include/floatformat.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/floatformat.h b/include/floatformat.h
index f1bd7f601f5..c5f60a3cd93 100644
--- a/include/floatformat.h
+++ b/include/floatformat.h
@@ -85,6 +85,13 @@ struct floatformat
/* Validator method. */
int (*is_valid) (const struct floatformat *fmt, const void *from);
+
+ /* Is the format actually the sum of two smaller floating point
+ formats (IBM long double, as described in
+ gcc/config/rs6000/darwin-ldouble-format)? If so, this is the
+ smaller format in question, and the fields sign_start through
+ intbit describe the first half. If not, this is NULL. */
+ const struct floatformat *split_half;
};
/* floatformats for IEEE single and double, big and little endian. */
@@ -118,6 +125,8 @@ extern const struct floatformat floatformat_ia64_spill_big;
extern const struct floatformat floatformat_ia64_spill_little;
extern const struct floatformat floatformat_ia64_quad_big;
extern const struct floatformat floatformat_ia64_quad_little;
+/* IBM long double (double+double). */
+extern const struct floatformat floatformat_ibm_long_double;
/* Convert from FMT to a double.
FROM is the address of the extended float.