This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Configure: cannot trust the bytes after the 80-bit fp
authorJarkko Hietaniemi <jhi@iki.fi>
Tue, 8 Dec 2015 13:40:38 +0000 (08:40 -0500)
committerJarkko Hietaniemi <jhi@iki.fi>
Mon, 14 Dec 2015 11:38:34 +0000 (06:38 -0500)
They can be zero, they can be garbage.

Configure

index 54a7782..1bd49b4 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -6956,16 +6956,17 @@ int main() {
   }
 #endif
 /* For alignment 32-bit platforms have the 80 bits in 12 bytes,
- * while 64-bits platforms have it in 16 bytes. */
+ * while 64-bits platforms have it in 16 bytes.  The trailing bytes
+ * cannot be trusted. */
 #if LDBL_MANT_DIG == 64 && (LONGDBLSIZE == 16 || LONGDBLSIZE == 12)
-  if (b[0] == 0xCD && b[9] == 0xBF && b[10] == 0x00) {
+  if (b[0] == 0xCD && b[9] == 0xBF) {
     /* x86 80-bit little-endian, sizeof 12 (ILP32, Solaris x86)
      * or 16 (LP64, Linux and OS X), 4 or 6 bytes of padding.
      * Also known as "extended precision". */
     printf("3\n");
     exit(0);
   }
-  if (b[0] == 0xBF && b[9] == 0xCD && b[10] == 0x00) {
+  if (b[0] == 0xBF && b[9] == 0xCD) {
     /* is there ever big-endian 80-bit, really? */
     printf("4\n");
     exit(0);