summaryrefslogtreecommitdiff
path: root/uconfig.h
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2015-12-08 08:48:40 -0500
committerJarkko Hietaniemi <jhi@iki.fi>2015-12-14 06:38:34 -0500
commit3118d7d684b56cbeb702af874f4326683c45f045 (patch)
tree937a3fec05ec874b35552c3d82fe01a6c9fb83a6 /uconfig.h
parentb5897239a0c3c2f5ec699690086b30e7db4305d4 (diff)
downloadperl-3118d7d684b56cbeb702af874f4326683c45f045.tar.gz
Configure: mixed-endian double-doubles
The ppc64el is the first seen little-endian double-double (and also the first little-endian ppc), but it turns out its little-endianness is mixed: the doubles are still in big-endian order. Configure was expecting wrongly a fully byte-reversed double-double. Therefore extend the long double format detection to cover all the (double-double) permutations, though the formats of five and eight are rather unlikely (based on current platforms using double-double).
Diffstat (limited to 'uconfig.h')
-rw-r--r--uconfig.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/uconfig.h b/uconfig.h
index a020e59013..af65ca76ca 100644
--- a/uconfig.h
+++ b/uconfig.h
@@ -1932,8 +1932,10 @@
* LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
* LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
* LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
+ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
* LONG_DOUBLE_IS_UNKNOWN_FORMAT
* It is only defined if the system supports long doubles.
*/
@@ -1947,9 +1949,14 @@
#define LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 2
#define LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN 3
#define LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN 4
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN 5
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN 6
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE 5
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE 6
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE 7
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE 8
#define LONG_DOUBLE_IS_UNKNOWN_FORMAT -1
+/* Backward compat. */
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
+#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
#endif
/* HAS_LONG_LONG:
@@ -5168,6 +5175,6 @@
#endif
/* Generated from:
- * 71bc7991dfb75b5d8a1082c2dd90d90d8f912ecfca90533df598d84f2c3d2382 config_h.SH
+ * 1fbdd1f584710d990cbc1b624770986e12ad6e3eac21c9f3851e6a0ad5a7fbce config_h.SH
* 0ce9d24f6ed83c533882929bc7c0138fe345656c4b7070aad99bb103dbf3790a uconfig.sh
* ex: set ro: */