Author: sebor
Date: Tue Oct 16 07:41:42 2007
New Revision: 585157
URL: http://svn.apache.org/viewvc?rev=585157&view=rev
Log:
2007-10-16 Martin Sebor <[EMAIL PROTECTED]>
Merged a (mostly) binary compatible fix for STDCXX-509 from
branches/4.2.0:
* inlcude/limits [_RWSTD_NO_OBJECT_MANGLING] (__rw_flt_denorm_min,
__rw_flt_infinity, __rw_flt_qNaN, __rw_flt_sNaN, __rw_dbl_denorm_min,
__rw_dbl_infinity, __rw_dbl_qNaN, __rw_dbl_sNaN, __rw_ldbl_denorm_min,
__rw_ldbl_infinity, __rw_ldbl_qNaN, __rw_ldbl_sNaN): Declared with C++
linkage when the config macro is #defined for binary compatibility with
prior 4.x releases.
* src/limits_bits.cpp: Same as above for definitions of constants.
* src/num_get.cpp [_RWSTD_NO_OBJECT_MANGLING] (__rw_flt_infinity,
__rw_dbl_infinity, __rw_ldbl_infinity): Same.
Modified:
incubator/stdcxx/trunk/include/limits
incubator/stdcxx/trunk/src/limits_bits.cpp
incubator/stdcxx/trunk/src/num_get.cpp
Modified: incubator/stdcxx/trunk/include/limits
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/include/limits?rev=585157&r1=585156&r2=585157&view=diff
==============================================================================
--- incubator/stdcxx/trunk/include/limits (original)
+++ incubator/stdcxx/trunk/include/limits Tue Oct 16 07:41:42 2007
@@ -88,8 +88,17 @@
_RWSTD_NAMESPACE (__rw) {
+#ifndef _RWSTD_NO_OBJECT_MANGLING
+
extern "C" {
+#else // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+#endif // _RWSTD_NO_OBJECT_MANGLING
+
+
_RWSTD_EXPORT extern const float __rw_flt_infinity;
_RWSTD_EXPORT extern const double __rw_dbl_infinity;
@@ -111,7 +120,8 @@
#endif // _RWSTD_NO_LONG_DOUBLE
-} // extern "C"
+
+} // extern "C"/"C++"
} // namespace __rw
Modified: incubator/stdcxx/trunk/src/limits_bits.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/src/limits_bits.cpp?rev=585157&r1=585156&r2=585157&view=diff
==============================================================================
--- incubator/stdcxx/trunk/src/limits_bits.cpp (original)
+++ incubator/stdcxx/trunk/src/limits_bits.cpp Tue Oct 16 07:41:42 2007
@@ -69,11 +69,19 @@
# endif // _RWSTD_NO_LONG_DOUBLE
+# ifndef _RWSTD_NO_OBJECT_MANGLING
+
extern "C" {
+# else // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+# endif // _RWSTD_NO_OBJECT_MANGLING
+
// The constants below are declared in <limits> but with a different
-// type. C linkage is used to defeat MSVC and other "clever" compilers
-// that mangle the type of objects into their names.
+// type. C linkage is (conditionally) used to defeat MSVC and other
+// "clever" compilers that mangle the type of objects into their names.
// infinity computed at config time
_RWSTD_EXPORT extern const _DblBits
@@ -146,12 +154,23 @@
# endif // _RWSTD_NO_LONG_DOUBLE
-} // extern "C"
+} // extern "C"/"C++"
+
#else // if defined (_RWSTD_NO_INFINITY)
+
+# ifndef _RWSTD_NO_OBJECT_MANGLING
+
extern "C" {
+# else // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+# endif // _RWSTD_NO_OBJECT_MANGLING
+
+
// as the last resort compute values at dynamic initialization time
_RWSTD_EXPORT extern const float __rw_flt_infinity =
@@ -224,8 +243,7 @@
# endif // _RWSTD_NO_LONG_DOUBLE
-} // extern "C"
-
+} // extern "C"/"C++"
#endif // _RWSTD_NO_INFINITY
Modified: incubator/stdcxx/trunk/src/num_get.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/src/num_get.cpp?rev=585157&r1=585156&r2=585157&view=diff
==============================================================================
--- incubator/stdcxx/trunk/src/num_get.cpp (original)
+++ incubator/stdcxx/trunk/src/num_get.cpp Tue Oct 16 07:41:42 2007
@@ -84,8 +84,17 @@
typedef unsigned char UChar;
+#ifndef _RWSTD_NO_OBJECT_MANGLING
+
extern "C" {
+#else // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+#endif // _RWSTD_NO_OBJECT_MANGLING
+
+
extern const float __rw_flt_infinity;
extern const double __rw_dbl_infinity;
@@ -95,7 +104,7 @@
#endif // _RWSTD_NO_LONG_DOUBLE
-} // extern "C"
+} // extern "C"/"C++"
const char*