[Interest] [Mingw-w64-public] Compiling Qt (4 or 5) with "-std=c++11"

K. Frank kfrank29.c at gmail.com
Fri Mar 22 13:40:08 CET 2013


Hello Ruben!

On Fri, Mar 22, 2013 at 6:22 AM, Ruben Van Boxem
<vanboxem.ruben at gmail.com> wrote:
> 2013/3/22 JonY <jon_y at users.sourceforge.net>
>>
>> On 3/22/2013 11:26, K. Frank wrote:
>> >
>> >> If you're interested in a binary compatibility topic that might affect
>> >> you --
>> >> and since you so kindly brought the mingw community in -- be careful
>> >> about the
>> >> C++ exception model from your mingw compiler. They are
>> >> ...
>> >> The MinGW community needs to
>> >> choose
>> >> one model, once and for all, deprecate all others, period. Just choose
>> >> one,
>> >> any one, provided it's not SJLJ. If your compiler uses SJLJ, run from
>> >> it and
>> >> avoid it like the plague. If that's the only option available, choose
>> >> another
>> >> compiler.
>> >
>> > Yes, another compatibility issue.  I've been using the dwarf2 version.
>> >
>> Yes, DW2 is quite frankly broken on Windows, since you'll never be able
>> to recompile system libraries to be able to throw through it (or 3rd
>> party code built with MSVC). It is even more broken on win64.

This is a very real and significant issue, and I would say the word
"broken" is fully correct.

On the other hand in my use cases I don't normally throw exceptions
through system libraries, and knowing that I can't is a reasonable, if
unsatisfying defense.

> I agree with you, but DW2 isn't broken: the use case of using MSVC-built
> code with MinGW-w64 GCC is not common (it usually is the other way around),
> but it is an (the only?) advantage of SJLJ for x86 Windows. On the other
> hand, the performance penalty is real (I've been notified of this by several
> users) and can be "solved" by using the dw2 implementation.

Now I'm confused.  Kai said that there's no dw2 for 64-bit mingw-w64.
Your comment sort of implies that there is.

Let me correct myself.  I believe that I am using sjlj.  After all, I have
libgcc_s_sjlj-1.dll in my mingw-w64 bin directory.

Do your comments about using dw2 then only apply to using 32-bit
mingw-w64?

With (pre-4.8) 64-bit mingw-w64, is there a choice other than sjlj that
I can use so I don't have to incur Thiago's wrath?

> For Win64, GCC 4.8 brings the long-needed seh. I doubt anyone will be using
> sjlj on win64 after that.

I will start a new thread, but I do want to ask about 4.8 and what
mingw-w64 build I should upgrade to.

> Ruben

Thanks for everyone's explanations.


K. Frank



More information about the Interest mailing list