about alignment of structure

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

 



Hi,all

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)? 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".

Thanks
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