------- Comment #7 from joseph at codesourcery dot com 2008-12-12 00:01 ------- Subject: Re: New: Gcc misaligns arrays when stack is forced follow the x8632 ABI
On Thu, 11 Dec 2008, whaley at cs dot utsa dot edu wrote: > I notice that gcc does not follow the 32-bit ABI for the x86, in that it > forces > the stack alignment to 16 bytes rather than the ABI-required 4 bytes. This is > a problem when interacting with compilers that are ABI-compliant. I suppose that by "32-bit ABI for the x86" you mean a document with 1990-1996 SCO copyrights. This document should be considered of only marginal relevant to current systems; it may have described an ABI for some particular system that is now obsolete, but is not an accurate description of (for example) the ABI used on IA32 GNU/Linux, which is a de facto ABI with no written document corresponding precisely. <http://groups.google.com/group/ia32-abi/browse_thread/thread/4f9b3e5069943bf1> (and the messages linked from it) is a description of this area of the de facto ABI. In principle GCC's documentation should for all target systems give a description of the ABI it is intended to implement for those systems with links to relevant documents and descriptions of how the ABI deviates from those documents. In practice, it does not, but it is still the case that just because there exists a document claiming to be a psABI for a particular processor does not mean that GCC follows it or that it would be correct for GCC to follow it. The older the document, the less likely it is relevant; some ABIs such as x86-64 are actively maintained (meaning that defects in the ABI document may be fixed - a disagreement between implementations and documents may be concluded to be a defect on either or both sides) while others are not. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38496