Re: about alignment of structure

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

 



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

[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