[cfe-dev] Microsoft ABI Support vs. ms_struct & Removing -mms-bitfields

Warren Hunt whunt at google.com
Tue Sep 3 11:19:45 PDT 2013


If people are using ms_struct and non-standard layouts without thinking
about it then perhaps it is reasonable to force them to think about it?
 The ms_struct pragma is an ABI change, which has somewhat wide-reaching
consequences.  I suspect that the most common use case is to read
serialized data directly into memory.  I'm assuming that the data was
serialized by code generated by the cl.exe (which is why they're using
ms-struct in the first place) and so they're likely to get ms layout for
non-standard layout types in the serialized data and might have bugs.

-Warren


On Sun, Sep 1, 2013 at 5:11 PM, Eli Friedman <eli.friedman at gmail.com> wrote:

> On Fri, Aug 30, 2013 at 1:36 PM, Warren Hunt <whunt at google.com> wrote:
>
>> Now that I'm putting finishing touches on the Microsoft Record Layout
>> patch (http://llvm-reviews.chandlerc.com/D1026) there are some subtle
>> issues that are cropping up with respect to compatibility with the
>> ms_struct pragma/mms-bitfields flag.
>>
>> The issues is that behavior of ms_struct/mms-bitfields is to use the
>> Itanium layout rules for everything except alignment of long long,
>> bitfields and bitfield padding.  This results in something that is Win32
>> ABI compatible for standard layout C++ structures but not otherwise.
>>
>> It would be a maintenance win if we could remove all Microsoft related
>> layout code from the Itanium builder and simply use the Microsoft builder
>> when ms_struct or mms-bitfields is set.
>>
>> Does anyone object to making mms-bitfields/ms_struct mean "use Microsoft
>> record layout" so we can deprecate the hybrid code?
>>
>
> These are equivalent for standard-layout classes, right?
>
>
>> When using mms-bitfields/ms_struct should we throw an error if the record
>> is not standard layout?
>>
>
> Please be cautious here; even if we just consider clang on the Mac,
> ms_struct is widely used, and some people probably use it on
> non-standard-layout classes, either by accident or just without thinking
> about it.  And I'm sure a few people who haven't really considered the
> consequences use -mms-bitfields as well.
>
> -Eli
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130903/29166c39/attachment.html>


More information about the cfe-dev mailing list