This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [www] 3.2 ABI Compatibility issues
- From: Andreas Jaeger <aj at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 08 Aug 2002 08:33:38 +0200
- Subject: Re: [www] 3.2 ABI Compatibility issues
- References: <hoofcezycv.fsf@gee.suse.de>
Here's the version that I committed. Since I did not receive any
feedback from the BSD folks, I removed most references to BSD. If
there's anything that other folks like to get added to this page,
please speak up,
Andreas
============================================================
Index: htdocs/gcc-3.2/changes.html
--- htdocs/gcc-3.2/changes.html 24 Jul 2002 07:21:02 -0000 1.25
+++ htdocs/gcc-3.2/changes.html 8 Aug 2002 06:32:18 -0000
@@ -31,7 +31,9 @@
<h3>C++</h3>
<ul>
- <li>The C++ ABI now conforms to the V3 multi-vendor standard.</li>
+ <li>The C++ ABI now conforms to the V3 multi-vendor standard. For
+ details on how to build an ABI compliant compiler for GNU/Linux
+ systems, check the <a href="c++-abi.html">common C++ ABI page</a>.</li>
</ul>
============================================================
Index: htdocs/gcc-3.2/c++-abi.html
--- htdocs/gcc-3.2/c++-abi.html created
+++ htdocs/gcc-3.2/c++-abi.html Thu Aug 8 08:30:49 2002 1.1
@@ -0,0 +1,74 @@
+<html>
+ <head>
+ <title>A Common C++ ABI for GNU/Linux</title>
+ </head>
+
+ <body>
+ <h1>A Common C++ ABI for GNU/Linux</h1>
+
+ <p>
+ The main point of the GCC 3.2 release is to have a relatively
+ stable and common C++ ABI for GNU/Linux and BSD usage.
+ Unfortunately this means that GCC 3.2 is incompatible with GCC 3.0
+ and GCC 3.1 releases.</p>
+
+ <p>
+ But for real interoperability of C++ shared libraries and C++
+ programs, not only does a GCC 3.2 based compiler have to be used,
+ but it also has to be built in a certain environment and with some
+ specific options.</p>
+
+ <p> We strongly advise all developers and distributors to follow
+ the guidelines given here for GNU/Linux systems.</p>
+
+ <h2>Configuring GCC</h2>
+
+ <p>Configure GCC with these options:</p>
+ <pre>
+ --enable-threads=posix -enable-shared --enable-__cxa_atexit
+ </pre>
+
+ <p>If you do not use these options, your files generated by GCC
+ will not be fully ABI compatible.</p>
+
+ <h2>Glibc</h2>
+
+ <p> On GNU/Linux systems use the GNU C Library version 2.2.5 or
+ newer.
+ </p>
+
+ <h2>Binutils</h2>
+
+ <p>
+ Use binutils 2.12.1 or any newer release.
+ </p>
+
+ <h2>Order of Builds</h2>
+
+ <p>Since GCC and glibc test for some features of binutils and
+ glibc, you have to build and install new versions (if needed) in
+ this order:</p>
+ <ol>
+ <li>New binutils version</li>
+ <li>New glibc version</li>
+ <li>GCC 3.2</li>
+ </ol>
+ <p>Especially, if you update binutils, you should rebuild glibc so
+ that glibc can take advantage of some new options of binutils.</p>
+
+ <h2>Caveat</h2>
+
+ <p>Since GCC now implements a written ABI that is also implemented
+ by other compiler vendors, it might be that we encounter different
+ interpretations of the ABI by the vendors, bugs in the ABI or bugs
+ in the implementation of the ABI in different compilers.</p>
+
+ <p>
+ We have tried hard to have a stable ABI that is compatible with
+ future GCC releases. At this point no promise can be made
+ that this release will be ABI compatible with all future GCC 3.x
+ versions but we will strive hard to keep GCC 3.3 compatible with
+ GCC 3.2.</p>
+
+ </body>
+</html>
--
Andreas Jaeger
SuSE Labs aj@suse.de
private aj@arthur.inka.de
http://www.suse.de/~aj