stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farid Zaripov" <Farid_Zari...@epam.com>
Subject Re: binary compatibility question
Date Thu, 18 Oct 2007 23:27:42 GMT
>  The patch is attached.
 
  Since the patch was stripped, I"m sending it inplace.

  ChangeLog:
  STDCXX-509
  * limits_bits.cpp [_RWSTD_VER_MAJOR < 5 && _MSC_VER && _DLL]:
  The _xxxBits constants defined with C++ linkage and exported as the floating
  constants with the mangled names for the binary compatibility with the stdcxx 4.1.x
 
 
-------------------------
Index: limits_bits.cpp
===================================================================
--- limits_bits.cpp (revision 586084)
+++ limits_bits.cpp (working copy)
@@ -157,6 +157,74 @@
 }   // extern "C"/"C++"
 
 
+#  if _RWSTD_VER_MAJOR < 5 && defined (_MSC_VER) && defined (_DLL)
+
+// The constants below are defined with C++ linkage
+// to be exported as floating constants with mangled
+// names for the binary compatibility with the stdcxx 4.1.x
+
+extern const _FltBits
+__rw_flt_infinity_vc = { _RWSTD_FLT_INF_BITS };
+
+extern const _FltBits
+__rw_flt_qNaN_vc = { _RWSTD_FLT_QNAN_BITS };
+
+extern const _FltBits
+__rw_flt_sNaN_vc = { _RWSTD_FLT_SNAN_BITS };
+
+extern const _FltBits
+__rw_flt_denorm_min_vc = { _RWSTD_FLT_DENORM_MIN_BITS };
+
+
+extern const _DblBits
+__rw_dbl_infinity_vc = { _RWSTD_DBL_INF_BITS };
+
+extern const _DblBits
+__rw_dbl_qNaN_vc = { _RWSTD_DBL_QNAN_BITS };
+
+extern const _DblBits
+__rw_dbl_sNaN_vc = { _RWSTD_DBL_SNAN_BITS };
+
+extern const _DblBits
+__rw_dbl_denorm_min_vc = { _RWSTD_DBL_DENORM_MIN_BITS };
+
+
+#    ifndef _RWSTD_NO_LONG_DOUBLE
+
+extern const _LDblBits
+__rw_ldbl_infinity_vc = { _RWSTD_LDBL_INF_BITS };
+
+extern const _LDblBits
+__rw_ldbl_qNaN_vc = { _RWSTD_LDBL_QNAN_BITS };
+
+extern const _LDblBits
+__rw_ldbl_sNaN_vc = { _RWSTD_LDBL_SNAN_BITS };
+
+extern const _LDblBits
+__rw_ldbl_denorm_min_vc = { _RWSTD_LDBL_DENORM_MIN_BITS };
+
+#    endif   // _RWSTD_NO_LONG_DOUBLE
+
+
+#    pragma comment (linker, "/EXPORT:?__rw_flt_infinity@__rw@@3MB=?__rw_flt_infinity_vc@__rw@@3T_FltBits@1@B,DATA")
+#    pragma comment (linker, "/EXPORT:?__rw_flt_qNaN@__rw@@3MB=?__rw_flt_qNaN_vc@__rw@@3T_FltBits@1@B,DATA")
+#    pragma comment (linker, "/EXPORT:?__rw_flt_sNaN@__rw@@3MB=?__rw_flt_sNaN_vc@__rw@@3T_FltBits@1@B,DATA")
+#    pragma comment (linker, "/EXPORT:?__rw_flt_denorm_min@__rw@@3MB=?__rw_flt_denorm_min_vc@__rw@@3T_FltBits@1@B,DATA")
+
+#    pragma comment (linker, "/EXPORT:?__rw_dbl_infinity@__rw@@3NB=?__rw_dbl_infinity_vc@__rw@@3T_DblBits@1@B,DATA")
+#    pragma comment (linker, "/EXPORT:?__rw_dbl_qNaN@__rw@@3NB=?__rw_dbl_qNaN_vc@__rw@@3T_DblBits@1@B,DATA")
+#    pragma comment (linker, "/EXPORT:?__rw_dbl_sNaN@__rw@@3NB=?__rw_dbl_sNaN_vc@__rw@@3T_DblBits@1@B,DATA")
+#    pragma comment (linker, "/EXPORT:?__rw_dbl_denorm_min@__rw@@3NB=?__rw_dbl_denorm_min_vc@__rw@@3T_DblBits@1@B,DATA")
+
+#    ifndef _RWSTD_NO_LONG_DOUBLE
+#      pragma comment (linker, "/EXPORT:?__rw_ldbl_infinity@__rw@@3OB=?__rw_ldbl_infinity_vc@__rw@@3T_LDblBits@1@B,DATA")
+#      pragma comment (linker, "/EXPORT:?__rw_ldbl_qNaN@__rw@@3OB=?__rw_ldbl_qNaN_vc@__rw@@3T_LDblBits@1@B,DATA")
+#      pragma comment (linker, "/EXPORT:?__rw_ldbl_sNaN@__rw@@3OB=?__rw_ldbl_sNaN_vc@__rw@@3T_LDblBits@1@B,DATA")
+#      pragma comment (linker, "/EXPORT:?__rw_ldbl_denorm_min@__rw@@3OB=?__rw_ldbl_denorm_min_vc@__rw@@3T_LDblBits@1@B,DATA")
+#    endif   // _RWSTD_NO_LONG_DOUBLE
+
+#endif   // _RWSTD_VER_MAJOR < 5 && _MSC_VER && _DLL
+
 #else   // if defined (_RWSTD_NO_INFINITY)
 
 
-------------------------

Farid.


Mime
  • Unnamed multipart/mixed (inline, None, 0 bytes)
View raw message