[Patch] Remove _GLIBCXX_HAVE_BROKEN_VSWPRINTF from (was Re: GCC 4.8.0 Status Report (2012-10-29), Stage 1 to end soon)

JonY jon_y@users.sourceforge.net
Wed Oct 31 13:03:00 GMT 2012


On 10/31/2012 20:01, Jonathan Wakely wrote:
> On 31 October 2012 11:23, JonY wrote:
>> On 10/31/2012 19:12, Jonathan Wakely wrote:
>>>
>>> It looks like the workaround is in mingw not in GCC, so is it a
>>> problem that it won't be possible to use GCC 4.8 with existing mingw
>>> versions, or are users required to use a brand new mingw to use a new
>>> GCC?  Should that be documented in
>>> http://gcc.gnu.org/gcc-4.8/changes.html ?
>>>
>>
>> They are required to use the latest mingw-w64, the problem was that the
>> vfswprintf that libstdc++ expects isn't the same as the one MS provides,
>> so I've wrote a redirector to use the vsnwprintf, more precisely, the
>> mingw C99 compliant __mingw_vsnwprintf.
>>
>> std::to_wstring and std::to_string work according to some simple tests.
> 
> Excellent, the testsuite should automatically start running the
> relevant tests and we should be able to close
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52015
> 

Yes, the correct way would be to check if the prototype given matches
the ISO version. MS version has 1 less argument. The workaround is only
active when C++11 is used though to maintain compatibility to older code.

The actual guard in the mingw-w64:

#if defined(__cplusplus) && (__cplusplus >= 201103L) &&
!defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)
...Redirect to ISO C99 compliant adapter with 4 args...
#else
...Use MS Version with 3 args...
#endif

So the tests and checks would just need to use -std=c++11 or gnu++11.

>> I guess the current comment about require mingw-w64 trunk at least r5437
>> is OK for the changes page. It should probably note that this change is
>> mingw-w64 specific, with w64 as the vendor key.
> 
> i.e. *-w64-mingw* ?  Or is *-w64-mingw32 more accurate?  (I don't
> really know how the mingw target triplets work, sorry!)
> 

In practice, *-w64-mingw32 is used more commonly when specifying
triplet, though for flexibility, checking should use *-w64-mingw*.

> I'll put something in the changes page later.
> 
> Thanks for fixing this.
> 

Thanks to Paolo for pushing it in too.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: OpenPGP digital signature
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20121031/6126d507/attachment.sig>


More information about the Libstdc++ mailing list