summaryrefslogtreecommitdiff
path: root/win32
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 /win32
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 'win32')
-rw-r--r--win32/config_H.gc12
-rw-r--r--win32/config_H.vc12
2 files changed, 16 insertions, 8 deletions
diff --git a/win32/config_H.gc b/win32/config_H.gc
index 8480c77bde..2254974a27 100644
--- a/win32/config_H.gc
+++ b/win32/config_H.gc
@@ -1918,8 +1918,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.
*/
@@ -1933,8 +1935,10 @@
#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
#endif
diff --git a/win32/config_H.vc b/win32/config_H.vc
index f1e851794f..3d17f639ea 100644
--- a/win32/config_H.vc
+++ b/win32/config_H.vc
@@ -1912,8 +1912,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.
*/
@@ -1927,8 +1929,10 @@
#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
#endif