Re: about alignment of structure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2010/5/19 Ian Lance Taylor <iant@xxxxxxxxxx>:
> YC Wang <wangyc0307@xxxxxxxxx> writes:
>
>> When gcc processes a strucure declaration, what rules it will use? As
>> far as I know, gcc is supposed to conform to the platform ABI. For
>> example, below is extracted from the SysV i386 ABI:
>>
>>  - An entire structure or union object is aligned on the same boundary as
>>  its most strictly aligned member.
>>
>>  - Each member is assigned to the lowest available offset with the
>>  appropriate alignment. This may require internal padding, depending on the
>>  previous member.
>>
>>  - A structure's size is increased, if necessary, to make it a multiple
>>  of the alignment. This may require tail padding, depending on the last
>>  member.
>>
>> So, should gcc (whatever versions)  always comform to these rules
>> (assume we don't  specify special attributes or options)?
>
> All versions of gcc that use the 386 ELF ABI will follow those rules.
>
>> I ask this
>> question because I just read the paper "stable_api_nonsense" by Greg
>> KH from Linux kernel Documentation, and begin with line 54 the paper
>> says "Depending on the version of the C compiler you use, different
>> kernel data structures will contain different alignment of
>> structures".
>
> You will different alignment on different processors, but I'm not
> aware of any case where you will different alignment for the same
> processor from different versions of gcc.  Of course there can be
> bugs, but bugs in this area are rare.
>
> Ian
>

Thanks for the reply. So may I make the conclusion that on a givin
processor, any version of gcc, if no bugs, is supposed to generate the
same alignment?

YC Wang


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux