summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarchie <archie@FreeBSD.org>2002-10-31 23:05:20 +0000
committerarchie <archie@FreeBSD.org>2002-10-31 23:05:20 +0000
commitd93f84495b026a1b7c262a0bfe1b9c0b3175105b (patch)
tree8d7fa3106ac92267f105d9e4b9d8fad61d60e197
parentc8c942c58702c5da3dfad5e12db60c6f57cbba51 (diff)
downloadFreeBSD-src-d93f84495b026a1b7c262a0bfe1b9c0b3175105b.zip
FreeBSD-src-d93f84495b026a1b7c262a0bfe1b9c0b3175105b.tar.gz
Re-apply the previously backed-out commit that fixes the problem where
HUGE_VAL is not properly aligned on some architectures. The previous fix now works because the two versions of 'math.h' (include/math.h and lib/msun/src/math.h) have since been merged into one. PR: bin/43544
-rw-r--r--lib/libc/alpha/gen/infinity.c2
-rw-r--r--lib/libc/amd64/gen/infinity.c2
-rw-r--r--lib/libc/i386/gen/infinity.c2
-rw-r--r--lib/libc/ia64/gen/infinity.c2
-rw-r--r--lib/libc/sparc64/gen/infinity.c2
-rw-r--r--lib/msun/src/math.h7
6 files changed, 10 insertions, 7 deletions
diff --git a/lib/libc/alpha/gen/infinity.c b/lib/libc/alpha/gen/infinity.c
index 7cb5b80..15b1293 100644
--- a/lib/libc/alpha/gen/infinity.c
+++ b/lib/libc/alpha/gen/infinity.c
@@ -33,4 +33,4 @@ __FBSDID("$FreeBSD$");
#include <math.h>
/* bytes for +Infinity on an Alpha (IEEE double format) */
-char __infinity[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+const union __infinity_un __infinity = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
diff --git a/lib/libc/amd64/gen/infinity.c b/lib/libc/amd64/gen/infinity.c
index 966a06e..547927b 100644
--- a/lib/libc/amd64/gen/infinity.c
+++ b/lib/libc/amd64/gen/infinity.c
@@ -8,4 +8,4 @@ __FBSDID("$FreeBSD$");
#include <math.h>
/* bytes for +Infinity on a 387 */
-char __infinity[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+const union __infinity_un __infinity = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
diff --git a/lib/libc/i386/gen/infinity.c b/lib/libc/i386/gen/infinity.c
index 966a06e..547927b 100644
--- a/lib/libc/i386/gen/infinity.c
+++ b/lib/libc/i386/gen/infinity.c
@@ -8,4 +8,4 @@ __FBSDID("$FreeBSD$");
#include <math.h>
/* bytes for +Infinity on a 387 */
-char __infinity[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+const union __infinity_un __infinity = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
diff --git a/lib/libc/ia64/gen/infinity.c b/lib/libc/ia64/gen/infinity.c
index a24cea8..681d811 100644
--- a/lib/libc/ia64/gen/infinity.c
+++ b/lib/libc/ia64/gen/infinity.c
@@ -33,4 +33,4 @@ __FBSDID("$FreeBSD$");
#include <math.h>
/* bytes for +Infinity on an ia64 (IEEE double format) */
-char __infinity[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+const union __infinity_un __infinity = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
diff --git a/lib/libc/sparc64/gen/infinity.c b/lib/libc/sparc64/gen/infinity.c
index 3a5cd47..4a04c1c 100644
--- a/lib/libc/sparc64/gen/infinity.c
+++ b/lib/libc/sparc64/gen/infinity.c
@@ -11,4 +11,4 @@ __FBSDID("$FreeBSD$");
#include <math.h>
/* bytes for +Infinity on a sparc */
-char __infinity[] = { 0x7f, (char)0xf0, 0, 0, 0, 0, 0, 0 };
+const union __infinity_un __infinity = { { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } };
diff --git a/lib/msun/src/math.h b/lib/msun/src/math.h
index e9f5aaf..655b182 100644
--- a/lib/msun/src/math.h
+++ b/lib/msun/src/math.h
@@ -20,8 +20,11 @@
/*
* ANSI/POSIX
*/
-extern char __infinity[];
-#define HUGE_VAL (*(double *) __infinity)
+extern const union __infinity_un {
+ unsigned char __uc[8];
+ double __ud;
+} __infinity;
+#define HUGE_VAL (__infinity.__ud)
/*
* XOPEN/SVID
OpenPOWER on IntegriCloud