From stdcxx-dev-return-5642-apmail-incubator-stdcxx-dev-archive=incubator.apache.org@incubator.apache.org Thu Oct 18 16:00:22 2007 Return-Path: Delivered-To: apmail-incubator-stdcxx-dev-archive@www.apache.org Received: (qmail 62905 invoked from network); 18 Oct 2007 16:00:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Oct 2007 16:00:22 -0000 Received: (qmail 36503 invoked by uid 500); 18 Oct 2007 16:00:10 -0000 Delivered-To: apmail-incubator-stdcxx-dev-archive@incubator.apache.org Received: (qmail 36496 invoked by uid 500); 18 Oct 2007 16:00:10 -0000 Mailing-List: contact stdcxx-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: stdcxx-dev@incubator.apache.org Delivered-To: mailing list stdcxx-dev@incubator.apache.org Received: (qmail 36485 invoked by uid 99); 18 Oct 2007 16:00:10 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Oct 2007 09:00:10 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [208.30.140.160] (HELO moroha.quovadx.com) (208.30.140.160) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Oct 2007 16:00:14 +0000 Received: from qxvcexch01.ad.quovadx.com ([192.168.170.59]) by moroha.quovadx.com (8.13.6/8.13.6) with ESMTP id l9IFxl8e024203 for ; Thu, 18 Oct 2007 15:59:47 GMT Received: from [10.70.3.143] ([10.70.3.143]) by qxvcexch01.ad.quovadx.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 18 Oct 2007 09:59:44 -0600 Message-ID: <471782F9.2000807@roguewave.com> Date: Thu, 18 Oct 2007 09:59:53 -0600 From: Martin Sebor User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 MIME-Version: 1.0 To: stdcxx-dev@incubator.apache.org Subject: Re: [PATCH] __rw_facet ctor/dtor ABI change with MSVC References: <47168CF2.7090002@roguewave.com> <471772C9.6050207@roguewave.com> In-Reply-To: <471772C9.6050207@roguewave.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 18 Oct 2007 15:59:44.0181 (UTC) FILETIME=[E6543650:01C8119F] X-Virus-Checked: Checked by ClamAV on apache.org This is in, both on 4.2.0 and trunk: http://svn.apache.org/viewvc?rev=586016&view=rev http://svn.apache.org/viewvc?rev=586017&view=rev Martin Sebor wrote: > Martin Sebor wrote: >> This patch attempts to fix the binary incompatibility of __rw_facet >> ctor and dtor when compiled with MSVC on Windows, introduced while >> fixing STDCXX-469 (MSVC mangles the access specifier into the names >> of class members): >> >> https://issues.apache.org/jira/browse/STDCXX-469 >> >> I considered limiting the patch to MSVC 7.1 and prior since MSVC 8 >> wasn't supported in 4.1.3 but doing so wouldn't take into account >> the possibility of linking programs compiled with MSVC 7.x with >> 4.2.0 built with MSVC 8.0. > > Here's a better patch that automatically enables the fix even > for MSVC once we get to stdcxx 5.0 (inspired by the same code > in _config.h that we just discussed Re: [PATCH] Re: stdcxx > 4.2.0/4.1.3 binary incompatibility on Linux). > > Martin > > Index: include/loc/_facet.h > =================================================================== > --- include/loc/_facet.h (revision 585584) > +++ include/loc/_facet.h (working copy) > @@ -25,7 +25,7 @@ > * implied. See the License for the specific language governing > * permissions and limitations under the License. > * > - * Copyright 1994-2006 Rogue Wave Software. > + * Copyright 1994-2007 Rogue Wave Software, Inc. > * > > **************************************************************************/ > > @@ -56,8 +56,14 @@ > // of standard types by the library > typedef __rw_facet* (_C_ctor_t)(_RWSTD_SIZE_T, const char*); > > +#if !defined (_MSC_VER) || 5 <= _RWSTD_VER_MAJOR > + > + // disabled for binary compatibility with stdcxx 4.1.x for MSVC > + // (the compiler mangles access specifiers into class members) > protected: > > +#endif // !MSVC || 5 <= stdcxx version > + > _EXPLICIT __rw_facet (_RWSTD_SIZE_T = 0); > > virtual ~__rw_facet (); >