From fb10537e39d4cdf8e69a289ef96872c916ba663c Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Mon, 31 Oct 2005 18:01:19 +0000 Subject: [PATCH] merge from gcc --- include/ChangeLog | 6 ++++++ include/floatformat.h | 19 +++++++++++++------ libiberty/ChangeLog | 5 +++++ libiberty/floatformat.c | 24 ++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index cb2ca5850c..e2c90f819a 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,9 @@ +2005-10-31 Mark Kettenis + + * floatformat.h (enum floatformat_byteorders): Add + floatformat_vax. + (floatformat_vax_aingle, floatformat_vax_double): Declare. + 2005-10-28 Dave Brolley Contribute the following changes: diff --git a/include/floatformat.h b/include/floatformat.h index a244874305..f1bd7f601f 100644 --- a/include/floatformat.h +++ b/include/floatformat.h @@ -29,25 +29,26 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. (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. Little endian byte order with 16-bit words. The + following example is an illustration of the byte order only; VAX + doesn't have a fully IEEE compliant floating-point format. + EX: 1.2345678e10 => 80 c5 00 00 06 42 e0 fe */ + floatformat_vax }; enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no }; @@ -97,6 +98,12 @@ extern const struct floatformat floatformat_ieee_double_little; extern const struct floatformat floatformat_ieee_double_littlebyte_bigword; +/* floatformats for VAX. */ + +extern const struct floatformat floatformat_vax_f; +extern const struct floatformat floatformat_vax_d; +extern const struct floatformat floatformat_vax_g; + /* floatformats for various extendeds. */ extern const struct floatformat floatformat_i387_ext; diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index d2bda7022e..eeae1e3435 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2005-10-31 Mark Kettenis + + * floatformat.c (floatformat_vax_aingle, floatformat_vax_double): + New variables. + 2005-10-07 Mark Mitchell * at-file.texi: Fix typo. diff --git a/libiberty/floatformat.c b/libiberty/floatformat.c index 8f0d789464..28c9fbf662 100644 --- a/libiberty/floatformat.c +++ b/libiberty/floatformat.c @@ -108,6 +108,30 @@ const struct floatformat floatformat_ieee_double_littlebyte_bigword = floatformat_always_valid }; +/* floatformat for VAX. Not quite IEEE, but close enough. */ + +const struct floatformat floatformat_vax_f = +{ + floatformat_vax, 32, 0, 1, 8, 129, 0, 9, 23, + floatformat_intbit_no, + "floatformat_vax_f", + floatformat_always_valid +}; +const struct floatformat floatformat_vax_d = +{ + floatformat_vax, 64, 0, 1, 8, 129, 0, 9, 55, + floatformat_intbit_no, + "floatformat_vax_d", + floatformat_always_valid +}; +const struct floatformat floatformat_vax_g = +{ + floatformat_vax, 64, 0, 1, 11, 1025, 0, 12, 52, + floatformat_intbit_no, + "floatformat_vax_g", + floatformat_always_valid +}; + static int floatformat_i387_ext_is_valid (const struct floatformat *fmt, const void *from);