--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/stdcxx/patches/033-INFINITY.cpp.patch Thu Jul 14 11:26:11 2011 -0700
@@ -0,0 +1,381 @@
+--- stdcxx-4.2.1/etc/config/src/INFINITY.cpp 2008-04-24 20:25:44.000000000 -0400
++++ stdcxx-4.2.1/etc/config/src/INFINITY.cpp 2011-01-14 11:17:58.611690181 -0500
+@@ -24,6 +24,7 @@
+
+ #include <stdio.h> // for printf()
+ #include <string.h> // for memset()
++#include <sys/types.h> // for size_t
+
+ #include "config.h"
+ #include "float_defs.h" // for FLT_MIN, DBL_MIN, LDBL_MIN
+@@ -83,17 +84,17 @@
+ /**************************************************************************/
+
+ // print out `size' bytes starting at data prefixed by `text'
+-static void print (const char *text, const void *data, unsigned size)
++static void print (const char *text, const void *data, size_t size)
+ {
+ printf ("%s { ", text);
+
+ const unsigned char *p = (const unsigned char*)data;
+
+- for (unsigned i = 0; i != size; ++i) {
++ for (size_t i = 0; i != size; ++i) {
+ if (p[i])
+ printf ("'\\x%x'", p[i]);
+ else
+- printf ("%d", p[i]);
++ printf ("'\\%d'", p[i]);
+ if (i < size - 1)
+ printf (", ");
+ }
+@@ -105,10 +106,10 @@
+
+ union flt_bits
+ {
+- char bits [sizeof (float)];
+ float val;
++ unsigned char bits [sizeof (float)];
+
+- flt_bits () { memset (bits, 0, sizeof (bits)); }
++ flt_bits () { memset (bits, '\0', sizeof (bits)); }
+ };
+
+ static float flt_zero ()
+@@ -287,10 +288,10 @@
+
+ union dbl_bits
+ {
+- char bits [sizeof (double)];
+ double val;
++ unsigned char bits [sizeof (double)];
+
+- dbl_bits () { memset (bits, 0, sizeof (bits)); }
++ dbl_bits () { memset (bits, '\0', sizeof (bits)); }
+ };
+
+ static float dbl_zero ()
+@@ -503,10 +504,10 @@
+
+ union ldbl_bits
+ {
+- char bits [sizeof (long double)];
+ long double val;
++ unsigned char bits [sizeof (long double)];
+
+- ldbl_bits () { memset (bits, 0, sizeof (bits)); }
++ ldbl_bits () { memset (bits, '\0', sizeof (bits)); }
+ };
+
+ static long double ldbl_zero ()
+@@ -554,6 +555,43 @@
+ val.bits [15] = '\0';
+ }
+ else {
++#if defined(__SUNPRO_CC)
++#if defined(i386) || defined(__i386) || defined(__i386__) && !defined(__amd64) && !defined(__x86_64__)
++ val.bits [ 0] = '\0';
++ val.bits [ 1] = '\0';
++ val.bits [ 2] = '\0';
++ val.bits [ 3] = '\0';
++ val.bits [ 4] = '\0';
++ val.bits [ 5] = '\0';
++ val.bits [ 6] = '\0';
++ val.bits [ 7] = '\x80';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\xfa';
++ val.bits [11] = '\xfe'; // long double is 12 bytes on 32-bit Intel
++ val.bits [12] = '\0'; // last 4 bytes will be ignored
++ val.bits [13] = '\0';
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#elif defined(__amd64) || defined(__x86__64__)
++ val.bits [ 0] = '\0';
++ val.bits [ 1] = '\0';
++ val.bits [ 2] = '\0';
++ val.bits [ 3] = '\0';
++ val.bits [ 4] = '\0';
++ val.bits [ 5] = '\0';
++ val.bits [ 6] = '\0';
++ val.bits [ 7] = '\x80';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\0';
++ val.bits [11] = '\0';
++ val.bits [12] = '\0';
++ val.bits [13] = '\0';
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#endif
++#else // not __SUNPRO_CC
+ val.bits [ 0] = '\0';
+ val.bits [ 1] = '\0';
+ val.bits [ 2] = '\0';
+@@ -570,6 +608,7 @@
+ val.bits [13] = '\0';
+ val.bits [14] = '\xff';
+ val.bits [15] = '\x7f';
++#endif
+ }
+
+ #endif // _RWSTD_NO_DBL_TRAPS
+@@ -594,6 +633,24 @@
+ // assume IEEE 754 floating point format
+
+ if (e == big_endian) {
++#if defined(__SUNPRO_CC) && defined(sun) || defined(__sun) || defined(__sun__)
++ val.bits [ 0] = '\x7f';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\xff';
++ val.bits [10] = '\xff';
++ val.bits [11] = '\xff';
++ val.bits [12] = '\xff';
++ val.bits [13] = '\xff';
++ val.bits [14] = '\xff';
++ val.bits [15] = '\xff';
++#else // not __SUNPRO_CC
+ val.bits [ 0] = '\xff';
+ val.bits [ 1] = '\xff';
+ val.bits [ 2] = '\x80';
+@@ -610,8 +667,84 @@
+ val.bits [13] = '\0';
+ val.bits [14] = '\0';
+ val.bits [15] = '\0';
++#endif // __SUNPRO_CC
+ }
+ else {
++#if defined(__SUNPRO_CC)
++#if defined(i386) || defined(__i386) || defined(__i386) && (!defined(__amd64) && !defined(__x86_64__))
++#if defined(sun) || defined(__sun) || defined(__sun__)
++ val.bits [ 0] = '\xff';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\x4';
++ val.bits [11] = '\x8';
++ val.bits [12] = '\0'; // long double is 12 bytes on 32-bit Intel
++ val.bits [13] = '\0'; // last 4 bytes will be ignored
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#elif defined(linux) || defined(__linux) || defined(__linux__)
++ val.bits [ 0] = '\x7f';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\xfa';
++ val.bits [11] = '\xfe';
++ val.bits [12] = '\0'; // long double is 12 bytes on 32-bit Intel
++ val.bits [13] = '\0'; // last 4 bytes will be ignored
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#endif // __sun || __linux__
++#elif defined(__amd64) || defined(__x86_64__)
++#if defined(sun) || defined(__sun) || defined(__sun__)
++ val.bits [ 0] = '\xff';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\0';
++ val.bits [11] = '\0';
++ val.bits [12] = '\0';
++ val.bits [13] = '\0';
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#elif defined(linux) || defined(__linux) || defined(__linux__)
++ val.bits [ 0] = '\x7f';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\0';
++ val.bits [11] = '\0';
++ val.bits [12] = '\0';
++ val.bits [13] = '\0';
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#endif // __sun || __linux__
++#endif
++#else // not __SUNPRO_CC
+ val.bits [ 0] = '\0';
+ val.bits [ 1] = '\0';
+ val.bits [ 2] = '\0';
+@@ -628,6 +761,7 @@
+ val.bits [13] = '\x80';
+ val.bits [14] = '\xff';
+ val.bits [15] = '\xff';
++#endif // __SUNPRO_CC
+ }
+
+ #endif // _RWSTD_NO_DBL_TRAPS
+@@ -694,6 +828,81 @@
+ val.bits [15] = '\x01';
+ }
+ else {
++#if defined(__SUNPRO_CC)
++#if defined(i386) || defined(__i386) || defined(__i386__) && (!defined(__amd64) && !defined(__x86_64__))
++#if defined(sun) || defined(__sun) || defined(__sun__)
++ val.bits [ 0] = '\x1';
++ val.bits [ 1] = '\0';
++ val.bits [ 2] = '\0';
++ val.bits [ 3] = '\0';
++ val.bits [ 4] = '\0';
++ val.bits [ 5] = '\0';
++ val.bits [ 6] = '\0';
++ val.bits [ 7] = '\x80';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\xfa';
++ val.bits [11] = '\xfe';
++ val.bits [12] = '\0'; // long double is 12 bytes on 32-bit Intel
++ val.bits [13] = '\0'; // last 4 bytes will be ignored
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#elif defined(linux) || defined(__linux) || defined(__linux__)
++ val.bits [ 0] = '\xff';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\xfa';
++ val.bits [11] = '\xfe';
++ val.bits [12] = '\0'; // long double is 12 bytes on 32-bit Intel
++ val.bits [13] = '\0'; // last 4 bytes will be ignored
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#endif
++#elif defined(__amd64) || defined(__x86_64__)
++#if defined(sun) || defined(__sun) || defined(__sun__)
++ val.bits [ 0] = '\x1';
++ val.bits [ 1] = '\0';
++ val.bits [ 2] = '\0';
++ val.bits [ 3] = '\0';
++ val.bits [ 4] = '\0';
++ val.bits [ 5] = '\0';
++ val.bits [ 6] = '\0';
++ val.bits [ 7] = '\x80';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\0';
++ val.bits [11] = '\0';
++ val.bits [12] = '\0';
++ val.bits [13] = '\0';
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#elif defined(linux) || defined(__linux) || defined(__linux__)
++ val.bits [ 0] = '\xff';
++ val.bits [ 1] = '\xff';
++ val.bits [ 2] = '\xff';
++ val.bits [ 3] = '\xff';
++ val.bits [ 4] = '\xff';
++ val.bits [ 5] = '\xff';
++ val.bits [ 6] = '\xff';
++ val.bits [ 7] = '\xff';
++ val.bits [ 8] = '\xff';
++ val.bits [ 9] = '\x7f';
++ val.bits [10] = '\0';
++ val.bits [11] = '\0';
++ val.bits [12] = '\0';
++ val.bits [13] = '\0';
++ val.bits [14] = '\0';
++ val.bits [15] = '\0';
++#endif
++#endif
++#else // not __SUNPRO_CC
+ val.bits [ 0] = '\x01';
+ val.bits [ 1] = '\0';
+ val.bits [ 2] = '\0';
+@@ -710,6 +919,7 @@
+ val.bits [13] = '\0';
+ val.bits [14] = '\xff';
+ val.bits [15] = '\x7f';
++#endif // __SUNPRO_CC
+ }
+
+ #endif // _RWSTD_NO_DBL_TRAPS
+@@ -822,32 +1032,38 @@
+ "// (values not computed due to floating exception trapping)\n",
+ e == big_endian ? "big" : "little");
+
++#if defined(__SUNPRO_CC)
++ const int flt_has_denorm = 1;
++ const int dbl_has_denorm = 1;
++ const int ldbl_has_denorm = 1;
++#else
+ const int flt_has_denorm = 1;
+ const int dbl_has_denorm = 1;
+ const int ldbl_has_denorm = 1;
++#endif
+
+ #endif // _RWSTD_NO_DBL_TRAPS
+
+- print ("#define _RWSTD_FLT_INF_BITS ", &f_inf, sizeof f_inf);
+- print ("#define _RWSTD_FLT_QNAN_BITS ", &f_qnan, sizeof f_qnan);
+- print ("#define _RWSTD_FLT_SNAN_BITS ", &f_snan, sizeof f_snan);
+- print ("#define _RWSTD_FLT_DENORM_MIN_BITS ", &f_den, sizeof f_den);
++ print ("#define _RWSTD_FLT_INF_BITS ", &f_inf, sizeof(float));
++ print ("#define _RWSTD_FLT_QNAN_BITS ", &f_qnan, sizeof(float));
++ print ("#define _RWSTD_FLT_SNAN_BITS ", &f_snan, sizeof(float));
++ print ("#define _RWSTD_FLT_DENORM_MIN_BITS ", &f_den, sizeof(float));
+
+ printf ("#define _RWSTD_FLT_HAS_DENORM %d\n", flt_has_denorm);
+
+- print ("#define _RWSTD_DBL_INF_BITS ", &d_inf, sizeof d_inf);
+- print ("#define _RWSTD_DBL_QNAN_BITS ", &d_qnan, sizeof d_qnan);
+- print ("#define _RWSTD_DBL_SNAN_BITS ", &d_snan, sizeof d_snan);
+- print ("#define _RWSTD_DBL_DENORM_MIN_BITS ", &d_den, sizeof d_den);
++ print ("#define _RWSTD_DBL_INF_BITS ", &d_inf, sizeof(double));
++ print ("#define _RWSTD_DBL_QNAN_BITS ", &d_qnan, sizeof(double));
++ print ("#define _RWSTD_DBL_SNAN_BITS ", &d_snan, sizeof(double));
++ print ("#define _RWSTD_DBL_DENORM_MIN_BITS ", &d_den, sizeof(double));
+
+ printf ("#define _RWSTD_DBL_HAS_DENORM %d\n", dbl_has_denorm);
+
+ #ifndef _RWSTD_NO_LONG_DOUBLE
+
+- print ("#define _RWSTD_LDBL_INF_BITS ", &l_inf, sizeof l_inf);
+- print ("#define _RWSTD_LDBL_QNAN_BITS ", &l_qnan, sizeof l_qnan);
+- print ("#define _RWSTD_LDBL_SNAN_BITS ", &l_snan, sizeof l_snan);
+- print ("#define _RWSTD_LDBL_DENORM_MIN_BITS ", &l_den, sizeof l_den);
++ print ("#define _RWSTD_LDBL_INF_BITS ", &l_inf, sizeof(long double));
++ print ("#define _RWSTD_LDBL_QNAN_BITS ", &l_qnan, sizeof(long double));
++ print ("#define _RWSTD_LDBL_SNAN_BITS ", &l_snan, sizeof(long double));
++ print ("#define _RWSTD_LDBL_DENORM_MIN_BITS ", &l_den, sizeof(long double));
+
+ printf ("#define _RWSTD_LDBL_HAS_DENORM %d\n", ldbl_has_denorm);
+