This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[RFA] Add some VAX floating point formats to floatformat.[ch]
- From: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- To: gdb-patches at sourceware dot org, binutils at sourceware dot org, gcc-patches at gcc dot org
- Date: Sun, 21 Aug 2005 23:53:19 +0200 (CEST)
- Subject: [RFA] Add some VAX floating point formats to floatformat.[ch]
This patch adds support for the two VAX floating-point formats used by
GCC for 'float' and 'double'. The real guts are in gdb/doublest.c
(which I wil post later to the gdb list); this only adds the
description.
ok?
Mark
Index: include/ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* floatformat.h (enum floatformat_byteorders): Add
floatformat_vax.
(floatformat_vax_aingle, floatformat_vax_double): Declare.
Index: include/floatformat.h
===================================================================
RCS file: /cvs/src/src/include/floatformat.h,v
retrieving revision 1.12
diff -u -p -r1.12 floatformat.h
--- include/floatformat.h 17 Aug 2005 18:03:25 -0000 1.12
+++ include/floatformat.h 21 Aug 2005 21:48:26 -0000
@@ -29,25 +29,23 @@ Foundation, Inc., 51 Franklin Street - F
(i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field
contains with the *_start and *_len fields. */
-/* What is the order of the bytes. */
+/* What is the order of the bytes? */
enum floatformat_byteorders {
-
/* Standard little endian byte order.
EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */
-
floatformat_little,
/* Standard big endian byte order.
EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */
-
floatformat_big,
/* Little endian byte order but big endian word order.
EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */
+ floatformat_littlebyte_bigword,
- floatformat_littlebyte_bigword
-
+ /* VAX byte order. */
+ floatformat_vax
};
enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no };
@@ -97,6 +95,11 @@ extern const struct floatformat floatfor
extern const struct floatformat floatformat_ieee_double_littlebyte_bigword;
+/* floatformats for VAX. */
+
+extern const struct floatformat floatformat_vax_single;
+extern const struct floatformat floatformat_vax_double;
+
/* floatformats for various extendeds. */
extern const struct floatformat floatformat_i387_ext;
Index: libiberty/ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* floatformat.c (floatformat_vax_aingle, floatformat_vax_double):
New variables.
Index: libiberty/floatformat.c
===================================================================
RCS file: /cvs/src/src/libiberty/floatformat.c,v
retrieving revision 1.16
diff -u -p -r1.16 floatformat.c
--- libiberty/floatformat.c 17 Aug 2005 18:03:42 -0000 1.16
+++ libiberty/floatformat.c 21 Aug 2005 21:48:31 -0000
@@ -108,6 +108,23 @@ const struct floatformat floatformat_iee
floatformat_always_valid
};
+/* floatformat for VAX. Not quite IEEE, but close enough. */
+
+const struct floatformat floatformat_vax_single =
+{
+ floatformat_vax, 32, 0, 1, 8, 129, 0, 9, 23,
+ floatformat_intbit_no,
+ "floatformat_vax_single",
+ floatformat_always_valid
+};
+const struct floatformat floatformat_vax_double =
+{
+ floatformat_vax, 64, 0, 1, 8, 129, 0, 9, 55,
+ floatformat_intbit_no,
+ "floatformat_vax_single",
+ floatformat_always_valid
+};
+
static int floatformat_i387_ext_is_valid (const struct floatformat *fmt,
const void *from);