X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fdoublest.h;h=668efa71cf3a55513e62e171d620eda64cbe86f8;hb=b9cd6d0b0dc85f23a41f4bb9ce42bbfb5b31cc2d;hp=d3955b37955b2f4aa83facfc716e693bcee91eb1;hpb=96d2f608dcfdd177211dbb65b607d3bc03d1b320;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/doublest.h b/gdb/doublest.h index d3955b3795..668efa71cf 100644 --- a/gdb/doublest.h +++ b/gdb/doublest.h @@ -1,7 +1,8 @@ /* Floating point definitions for GDB. - Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + + Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, + 1996, 1997, 1998, 1999, 2000, 2001, 2003 Free Software Foundation, + Inc. This file is part of GDB. @@ -23,6 +24,8 @@ #ifndef DOUBLEST_H #define DOUBLEST_H +struct type; + /* Setup definitions for host and target floating point formats. We need to consider the format for `float', `double', and `long double' for both target and host. We need to do this so that we know what kind of conversions need @@ -35,8 +38,6 @@ #include "floatformat.h" /* For struct floatformat */ -extern const struct floatformat floatformat_unknown; - /* Use `long double' if the host compiler supports it. (Note that this is not necessarily any longer than `double'. On SunOS/gcc, it's the same as double.) This is necessary because GDB internally converts all floating @@ -61,13 +62,29 @@ extern int floatformat_is_negative (const struct floatformat *, char *); extern int floatformat_is_nan (const struct floatformat *, char *); extern char *floatformat_mantissa (const struct floatformat *, char *); -/* Use extract_typed_float() and store_typed_float(). */ -extern DOUBLEST extract_floating (const void *in, int); /* DEPRECATED */ -extern void store_floating (void *, int, DOUBLEST); /* DEPRECATED */ +/* These functions have been replaced by extract_typed_floating and + store_typed_floating. + + Most calls are passing in TYPE_LENGTH (TYPE) so can be changed to + just pass the TYPE. The remainder pass in the length of a + register, those calls should instead pass in the floating point + type that corresponds to that length. */ + +extern DOUBLEST deprecated_extract_floating (const void *addr, int len); +extern void deprecated_store_floating (void *addr, int len, DOUBLEST val); + +/* Given TYPE, return its floatformat. TYPE_FLOATFORMAT() may return + NULL. type_floatformat() detects that and returns a floatformat + based on the type size when FLOATFORMAT is NULL. */ + +const struct floatformat *floatformat_from_type (const struct type *type); extern DOUBLEST extract_typed_floating (const void *addr, const struct type *type); extern void store_typed_floating (void *addr, const struct type *type, DOUBLEST val); +extern void convert_typed_floating (const void *from, + const struct type *from_type, + void *to, const struct type *to_type); #endif