Sent from my iPhone
On Dec 15, 2008, at 1:33 PM, "whaley at cs dot utsa dot edu" <gcc-bugzi...@gcc.gnu.org
> wrote:
------- Comment #15 from whaley at cs dot utsa dot edu 2008-12-15
21:32 -------
GCC chose to change the *unwritten* standard for the ABI in use for
IA32 GNU/Linux.
This is not true. Prior to this change, gcc followed the *written*
standard
provided by the LSB.
LSB was written years after we had already did this back in gcc 3.0.
Please check the history before saying gcc followed a written standard
when none existed when this change was done.
You chose to violate the standard, or to put as you seem
to prefer, you chose to declare that you followed no standard, as
the written
standard previously used by pretty much all OSes on the x86 was
suddenly
unusable.
The SCO document may have been useful before SSE, but processor
architecture and language developments have made it problematic for
many years.
This is not even trivially true. SSE requires no change in the ABI
to support:
it is purely convenience to start with a known 16-byte alignment: an
andb and a
register save/restore fixes the problem completely, without
abandoning the
standard. I believe gcc still abides by this "problematic for many
years"
standard in all respects except stack alignment, which is a trivial
problem to
solve and still abide by the standard. So, you abandoned standard
compliance
to solve a minor irritant, that you yourself have fixed in the new
4.4 series.
From 4.4 on, you broke the standard for no gain at all, since you
have now
added the minor complexity of manually aligning the stack anyway.
Of course the standard seems outdated to us: it is supporting an
architecture
that is decades old, and that is the strength of it. If you want
the shiny new
stuff, you go to x86-64.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38496