incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Liviu Nicoara <nikko...@hates.ms>
Subject Re: STDCXX-1066 [was: Re: STDCXX forks]
Date Sat, 15 Sep 2012 20:57:53 GMT
On 9/15/12 2:57 PM, Stefan Teleman wrote:
> On Sat, Sep 15, 2012 at 1:02 PM, Liviu Nicoara <nikkoara@hates.ms> wrote:
>
>> I have read through the patches attached to the incident, then I briefly
>> read about the SunPro pragma align and pack. Two questions:
>>
>> 1. AFAICT, the use of the packing pragma may interfere with a user's setting
>> of the same value. I.e., a user sets the packing in their sources and then,
>> directly or not, includes an STDCXX header. It seems to me that in such a
>> situation, our setting of the packing value would interfere with the rest of
>> the user's translation unit, since there is no way to `restore' the previous
>> packing value.
>>
>> Something along the lines of:
>>
>> // user source file
>>
>> #pragma pack (X) // X != 8
>>
>> #include <iostream>
>>
>> struct UserDef
>> {
>>      // different alignment than X ?
>>      // ...
>> };
>>
>> Is my understanding correct?
>
> Yes, you are indeed correct, Sir. :-)
>
> However, for every #pragma pack(8) there should be a corresponding
> subsequent #pragma pack(0). If there isn't, that's a patch bug.
> #pragma pack(0) restores the default alignment. So, there should be
> (there *must* be) no silent packing side-effects in user programs.

Yes, but it restores the default packing, not an arbitrary one, potentially set 
by the user prior to including our headers. Say, the user sets 2, the default is 
4 and we set 8. When we set it to default it goes back to 4, instead of the 
expected 2. Did I get this right?

>
>> 2. The patches are against 4.2.1, but the change would be binary
>> incompatible with the already released 4.2.1 branch. Do you plan to have
>> this fix in 4.3.x?
>
> Yes, definitely for 4.2.x and 4.3.x. I sent them for 4.2.1 just
> because that's what I have handy.

I see now. I tried to apply them to 4.2.x and some chunks failed, and I thought 
I was not applying them where they were intended to go.

Thanks!

Liviu

Mime
View raw message