This is the mail archive of the
mailing list for the GCC project.
Re: [www-patch] bugs.html rewrite, part 6a: clarify ABI section
- From: Volker Reichelt <reichelt at igpm dot rwth-aachen dot de>
- To: Richard dot Earnshaw at arm dot com
- Cc: janis187 at us dot ibm dot com, gcc-patches at gcc dot gnu dot org, gerald at pfeifer dot com
- Date: Wed, 14 Jan 2004 15:53:29 +0100 (CET)
- Subject: Re: [www-patch] bugs.html rewrite, part 6a: clarify ABI section
- Reply-to: Volker Reichelt <reichelt at igpm dot rwth-aachen dot de>
On 14 Jan, Richard Earnshaw wrote:
>> Like so?
>> Ok to commit?
> What you are saying is about right. I'm not too keen on all the
> parenthetical statements, it makes understanding what's written
> complicated. I've pulled these out into separate paragraphs. The one on
> versioning could even be pulled out into a separate section with a
> hyperlink, but I can't find anywhere more appropriate in this file to put
> the information, so I've left it where it is for the moment.
> If nobody has any objections to the following I'll install it tomorrow.
Breaking out the version stuff into an own paragraph is a good idea.
I'd like to add "Note:" in front of the explanation.
However, I don't like the idea of breaking out the sentence about the
Java stuff. It refers directly to "... recompile all libraries that
contain C++ code ..." and the following sentence which tells you about
the trouble you can get in. I therefore prefer to put the sentence right
How about this?
RCS file: /cvs/gcc/wwwdocs/htdocs/bugs.html,v
retrieving revision 1.82
diff -c -p -r1.82 bugs.html
*** bugs.html 13 Jan 2004 17:36:40 -0000 1.82
--- bugs.html 14 Jan 2004 14:42:26 -0000
*************** and the scope operator.</p></dd>
*** 691,704 ****
! <p>The application binary interface (ABI) defines how the elements of
! classes are laid out, how functions are called, how function names are
! mangled etc. It usually changes with each major release (i.e. when the
! first or second part of the version number changes). You <em>must</em>
! recompile all C++ libraries, or you risk linker errors or malfunctioning
! programs. However, the ABI is not changed with bug-fix releases (i.e.
! when the third part of the version number changes). The code should be
! binary compatible among these versions.</p>
--- 691,717 ----
! <p>The C++ application binary interface (ABI) consists of two
! components: the first defines how the elements of classes are laid
! out, how functions are called, how function names are mangled, etc;
! the second part deals with the internals of the objects in libstdc++.
! Although we strive for a non-changing ABI, so far we have had to
! modify it with each major release. If you change your compiler to a
! different major release <em>you must recompile all libraries that
! contain C++ code</em>. If you fail to do so you risk getting linker
! errors or malfunctioning programs. Some of our Java support libraries
! also contain C++ code, so you might want to recompile all libraries to
! be safe. It should not be necessary to recompile if you have changed
! to a bug-fix release of the same version of the compiler; bug-fix
! releases are careful to avoid ABI changes. See also the
! <a href="onlinedocs/gcc/Compatibility.html">compatibility section</a>
! of the GCC manual.</p>
! <p>Note: A major release is designated by a change to the first or second
! component of the three-part version number. A minor (bug-fix) release
! is designated by a change to the third component only. Thus GCC 3.2.0
! and 3.3.0 are major releases, while 3.3.1 and 3.3.2 are bug-fix
! releases for GCC 3.3.0.</p>