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: janis187 at us dot ibm dot com
- Cc: Richard dot Earnshaw at arm dot com, gcc-patches at gcc dot gnu dot org, gerald at pfeifer dot com
- Date: Wed, 14 Jan 2004 10:26:00 +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 12 Jan, Janis Johnson wrote:
> On Mon, Jan 12, 2004 at 10:18:58PM +0100, Volker Reichelt wrote:
>> The following patch clarifies the "ABI changes" section in bugs.html.
>> It was discussed in November, see e.g.
>> but somehow the thread petered out without a patch being applied.
>> Gerald was OK with the patch, but wanted to leave the final decision to you,
>> Checked as valid XHTML 1.0.
>> Ok to commit?
> There are also descriptions of the C++ and libstdc++ ABIs in the binary
> compatibility section of the GCC manual, so you might want to reference
> that as well.
Ok to commit?
RCS file: /cvs/gcc/wwwdocs/htdocs/bugs.html,v
retrieving revision 1.82
diff -u -p -r1.82 bugs.html
--- bugs.html 13 Jan 2004 17:36:40 -0000 1.82
+++ bugs.html 14 Jan 2004 09:23:16 -0000
@@ -691,14 +691,22 @@ and the scope operator.</p></dd>
-<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>
+<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, we had to modify it with each major release (i.e. when
+the first or second part of the version number changes). If you upgrade
+your compiler to a new major release version, <em>you must therefore
+recompile all libraries that contain C++ code, or you risk linker errors
+or malfunctioning programs</em>. (Some of our Java support libraries also
+contain C++ code, so you might want to recompile all libraries to be save.)
+However, it should not be necessary to recompile, if you have changed to
+a bug-fix release of the same version of the compiler (i.e. when only the
+third part of the version number changes); bug-fix releases are careful to
+avoid ABI changes. See also the
+<a href="onlinedocs/gcc/Compatibility.html">compatibility section</a> of the