<div dir="ltr">On Wed, Mar 27, 2013 at 2:28 PM, Anton Korobeynikov <span dir="ltr"><<a href="mailto:asl@math.spbu.ru" target="_blank" class="cremed">asl@math.spbu.ru</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Eric,<br>
<div class="im"><br>
> From my perspective Win32 is the windows ABI and mingw and cygwin are their own ABIs<br>
</div>No. They are using Windows Platform ABI for almost everything (e.g.<br>
calling API, C runtime, etc.). At least mingw does. The differences<br>
are exactly in unspecified area (e.g. passing / returning structs by<br>
value).<br>
<br>
The only difference is C++, where mingw / cygwin follows Itanium ABI<br>
and MSVC - its own.<br>
<div class="im"><br>
> especially as we're not targeting the MSVC abi, it's just the windows<br>
> abi?<br>
</div>It seems the proposal patch exactly tries to follow MSVC ABI to keep<br>
to compatibility :)<br>
<br>
So, just to summarize. Windows ABI / calling conventions are more or<br>
less documented and both mingw / cygwin and msvc follow it.<br>
<br>
The differences are in the undocumented area. Both for C and for C++.<br></blockquote><div><br></div><div style>I don't think anyone disagrees here, but we don't differentiate between C ABI and C++ ABI in this context really (we don't have two ABI strings in the triple).</div>
<div style><br></div><div style>The ABI designator must specifi *both* the C and C++ ABI. As such, mingw and cygwin have their own holistic ABI -- it is a conjunction of two pieces of other ABIs.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

And here there is no "Windows ABI" here at all. Because every compiler<br>
(MSVC, gcc / clang, Borland) does its own stuff. This is why I said<br>
that the proposal naming is confusing.<br></blockquote><div><br></div><div style>I don't know anything about Borland, and I don't think that matters. But I think that the Windows ABI is, and really must be, the ABI followed by the system compiler: MSVC. That's the standard for the platform, and I think it is actively confusing to say that the "Windows ABI" could mean anything other than what MSVC as the standard system compiler does. It certainly should have nothing to do with mingw or cygwin.</div>
<div><br></div><div style>This is why I suggest that the Windows ABI is whatever MSVC happens to do. The mingw ABI happens to consist of a conjunction of what MSVC does for C and what GCC on Linux does for C++. That is a unique and different ABI, and I don't think you can reasonably call it *just* "windows" at any point.</div>
<div style><br></div><div style>-Chandler</div></div></div></div>