summaryrefslogtreecommitdiff
path: root/libstdc++-v3/doc/xml/manual/abi.xml
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-22 22:58:15 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-22 22:58:15 +0000
commitd0cdcef958677d8b8fac1a498e7201df608a44da (patch)
tree6024f45f632aeb57af1c77d3edd1b693bac56197 /libstdc++-v3/doc/xml/manual/abi.xml
parentd57f66a06c15f9534703c0d99ca91e6a6bdb42c7 (diff)
downloadgcc-d0cdcef958677d8b8fac1a498e7201df608a44da.tar.gz
2010-07-22 Benjamin Kosnik <bkoz@redhat.com>
DocBook 4.5 to 5.0 transition. * doc/xml/authors.xml: Update markup to DocBook 5.0. * doc/xml/faq.xml: Same. * doc/xml/api.xml: Same. * doc/xml/class.txml * doc/xml/gnu/gpl-3.0.xml: Same. * doc/xml/gnu/fdl-1.2.xml: Same. * doc/xml/gnu/fdl-1.3.xml: Same. * doc/xml/gnu/gpl-2.0.xml: Same. * doc/xml/chapter.txml: Same. * doc/xml/manual/mt_allocator.xml: Same. * doc/xml/manual/allocator.xml: Same. * doc/xml/manual/ctype.xml: Same. * doc/xml/manual/numerics.xml: Same. * doc/xml/manual/codecvt.xml: Same. * doc/xml/manual/backwards_compatibility.xml: Same. * doc/xml/manual/concurrency.xml: Same. * doc/xml/manual/intro.xml: Same. * doc/xml/manual/abi.xml: Same. * doc/xml/manual/shared_ptr.xml: Same. * doc/xml/manual/status_cxxtr1.xml: Same. * doc/xml/manual/auto_ptr.xml: Same. * doc/xml/manual/internals.xml: Same. * doc/xml/manual/atomics.xml: Same. * doc/xml/manual/parallel_mode.xml: Same. * doc/xml/manual/status_cxx1998.xml: Same. * doc/xml/manual/profile_mode.xml: Same. * doc/xml/manual/containers.xml: Same. * doc/xml/manual/io.xml: Same. * doc/xml/manual/concurrency_extensions.xml: Same. * doc/xml/manual/appendix_porting.xml: Same. * doc/xml/manual/utilities.xml: Same. * doc/xml/manual/support.xml: Same. * doc/xml/manual/bitmap_allocator.xml: Same. * doc/xml/manual/configure.xml: Same. * doc/xml/manual/build_hacking.xml: Same. * doc/xml/manual/evolution.xml: Same. * doc/xml/manual/using.xml: Same. * doc/xml/manual/using_exceptions.xml: Same. * doc/xml/manual/debug.xml: Same. * doc/xml/manual/localization.xml: Same. * doc/xml/manual/strings.xml: Same. * doc/xml/manual/debug_mode.xml: Same. * doc/xml/manual/locale.xml: Same. * doc/xml/manual/extensions.xml: Same. * doc/xml/manual/appendix_contributing.xml: Same. * doc/xml/manual/prerequisites.xml: Same. * doc/xml/manual/messages.xml: Same. * doc/xml/manual/diagnostics.xml: Same. * doc/xml/manual/algorithms.xml: Same. * doc/xml/manual/appendix_free.xml: Same. * doc/xml/manual/iterators.xml: Same. * doc/xml/manual/spine.xml: Same. * doc/xml/manual/status_cxxtr24733.xml: Same. * doc/xml/manual/status_cxx200x.xml: Same. * doc/xml/manual/test.xml: Same. * doc/xml/book.txml: Same. * doc/xml/spine.xml: Same. * doc/Makefile.am: Same. * doc/Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162433 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/doc/xml/manual/abi.xml')
-rw-r--r--libstdc++-v3/doc/xml/manual/abi.xml263
1 files changed, 116 insertions, 147 deletions
diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml
index 400d2a4b931..268f0a69199 100644
--- a/libstdc++-v3/doc/xml/manual/abi.xml
+++ b/libstdc++-v3/doc/xml/manual/abi.xml
@@ -1,7 +1,8 @@
-<sect1 id="appendix.porting.abi" xreflabel="abi">
+<section xmlns="http://docbook.org/ns/docbook" version="5.0"
+ xml:id="appendix.porting.abi" xreflabel="abi">
<?dbhtml filename="abi.html"?>
-<sect1info>
+<info><title>ABI Policy and Guidelines</title>
<keywordset>
<keyword>
C++
@@ -22,15 +23,15 @@
compatibility
</keyword>
</keywordset>
-</sect1info>
+</info>
+
-<title>ABI Policy and Guidelines</title>
<para>
</para>
-<sect2 id="abi.cxx_interface">
-<title>The C++ Interface</title>
+<section xml:id="abi.cxx_interface"><info><title>The C++ Interface</title></info>
+
<para>
C++ applications often depend on specific language support
@@ -53,9 +54,8 @@
virtual functions, etc. These details are defined as the compiler
Application Binary Interface, or ABI. The GNU C++ compiler uses an
industry-standard C++ ABI starting with version 3. Details can be
- found in the <ulink
- url="http://www.codesourcery.com/cxx-abi/abi.html"> ABI
- specification</ulink>.
+ found in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html"> ABI
+ specification</link>.
</para>
<para>
@@ -65,8 +65,8 @@
g++ command line options may change the ABI as a side-effect of
use. Such flags include <code>-fpack-struct</code> and
<code>-fno-exceptions</code>, but include others: see the complete
- list in the GCC manual under the heading <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options
- for Code Generation Conventions</ulink>.
+ list in the GCC manual under the heading <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options
+ for Code Generation Conventions</link>.
</para>
<para>
@@ -105,18 +105,18 @@ given compiler ABI. In a nutshell:
implements the C++ ABI in question.
</para>
-</sect2>
+</section>
+
+<section xml:id="abi.versioning"><info><title>Versioning</title></info>
-<sect2 id="abi.versioning">
-<title>Versioning</title>
<para> The C++ interface has evolved throughout the history of the GNU
C++ toolchain. With each release, various details have been changed so
as to give distinct versions to the C++ interface.
</para>
- <sect3 id="abi.versioning.goals">
- <title>Goals</title>
+ <section xml:id="abi.versioning.goals"><info><title>Goals</title></info>
+
<para>Extending existing, stable ABIs. Versioning gives subsequent
releases of library binaries the ability to add new symbols and add
@@ -136,10 +136,10 @@ compatible.
<para>Allows multiple, incompatible ABIs to coexist at the same time.
</para>
- </sect3>
+ </section>
- <sect3 id="abi.versioning.history">
- <title>History</title>
+ <section xml:id="abi.versioning.history"><info><title>History</title></info>
+
<para>
How can this complexity be managed? What does C++ versioning mean?
@@ -298,8 +298,7 @@ compatible.
</para>
<para>
Note 3: This release (but not previous or subsequent) has one
- known incompatibility, see <ulink
- url="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</ulink>
+ known incompatibility, see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</link>
in the GCC bug database.
</para>
</listitem>
@@ -379,7 +378,7 @@ compatible.
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 1000 + n (when n&gt;1) </para></listitem>
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 999999 (when n=0)</para></listitem>
</itemizedlist>
- <para></para>
+ <para/>
</listitem>
<listitem>
@@ -396,7 +395,7 @@ compatible.
<listitem><para>gcc-3.3.x: <code>-fabi-version=1</code></para></listitem>
<listitem><para>gcc-3.4.x, gcc-4.[0-5].x: <code>-fabi-version=2</code> <emphasis>(Incompatible with previous)</emphasis></para></listitem>
</itemizedlist>
- <para></para>
+ <para/>
</listitem>
<listitem>
@@ -460,7 +459,7 @@ compatible.
<listitem><para>gcc-4.4.1: 20090722</para></listitem>
<listitem><para>gcc-4.4.2: 20091015</para></listitem>
</itemizedlist>
- <para></para>
+ <para/>
</listitem>
<listitem>
@@ -501,7 +500,7 @@ compatible.
<listitem><para>gcc-3.4.x: "version-unused"</para></listitem>
<listitem><para>gcc-4.[0-5].x: "version-unused"</para></listitem>
</itemizedlist>
- <para></para>
+ <para/>
</listitem>
<listitem>
@@ -564,7 +563,7 @@ compatible.
<listitem><para>gcc-4.4.2: include/c++/4.4.2</para></listitem>
<listitem><para>gcc-4.5.0: include/c++/4.5.0</para></listitem>
</itemizedlist>
- <para></para>
+ <para/>
</listitem>
</orderedlist>
@@ -577,10 +576,10 @@ compatible.
</para>
- </sect3>
+ </section>
- <sect3 id="abi.versioning.prereq">
- <title>Prerequisites</title>
+ <section xml:id="abi.versioning.prereq"><info><title>Prerequisites</title></info>
+
<para>
Minimum environment that supports a versioned ABI: A supported
dynamic linker, a GNU linker of sufficient vintage to understand
@@ -601,10 +600,10 @@ compatible.
gcc-3.1.x tools and more recent vintages, will meet the
requirements above, as does Solaris 2.5 and up.
</para>
- </sect3>
+ </section>
- <sect3 id="abi.versioning.config">
- <title>Configuring</title>
+ <section xml:id="abi.versioning.config"><info><title>Configuring</title></info>
+
<para>
It turns out that most of the configure options that change
@@ -631,10 +630,10 @@ compatible.
versioning are in place. For more information, please consult
acinclude.m4.
</para>
- </sect3>
+ </section>
- <sect3 id="abi.versioning.active">
- <title>Checking Active</title>
+ <section xml:id="abi.versioning.active"><info><title>Checking Active</title></info>
+
<para>
When the GNU C++ library is being built with symbol versioning
@@ -704,11 +703,11 @@ On Solaris 2, you can use <code>pvs -r</code> instead:
<code>ldd -v</code> works too, but is very verbose.
</para>
- </sect3>
-</sect2>
+ </section>
+</section>
+
+<section xml:id="abi.changes_allowed"><info><title>Allowed Changes</title></info>
-<sect2 id="abi.changes_allowed">
-<title>Allowed Changes</title>
<para>
The following will cause the library minor version number to
@@ -723,10 +722,10 @@ increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5".
Other allowed changes are possible.
</para>
-</sect2>
+</section>
+
+<section xml:id="abi.changes_no"><info><title>Prohibited Changes</title></info>
-<sect2 id="abi.changes_no">
-<title>Prohibited Changes</title>
<para>
The following non-exhaustive list will cause the library major version
@@ -755,18 +754,18 @@ number to increase, say from "libstdc++.so.3.0.4" to
class that would otherwise have implicit versions. This will change
the way the compiler deals with this class in by-value return
statements or parameters: instead of passing instances of this
-class in registers, the compiler will be forced to use memory. See <ulink url="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</ulink>
+class in registers, the compiler will be forced to use memory. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</link>
of the C++ ABI documentation for further details.
</para></listitem>
</orderedlist>
-</sect2>
+</section>
+
+<section xml:id="abi.impl"><info><title>Implementation</title></info>
-<sect2 id="abi.impl">
-<title>Implementation</title>
<orderedlist>
<listitem>
@@ -880,13 +879,13 @@ standard includes.</para>
</listitem>
</orderedlist>
-</sect2>
+</section>
-<sect2 id="abi.testing">
-<title>Testing</title>
+<section xml:id="abi.testing"><info><title>Testing</title></info>
- <sect3 id="abi.testing.single">
- <title>Single ABI Testing</title>
+
+ <section xml:id="abi.testing.single"><info><title>Single ABI Testing</title></info>
+
<para>
Testing for GNU C++ ABI changes is composed of two distinct
@@ -982,9 +981,9 @@ Perhaps there are other C++ ABI checkers. If so, please notify
us. We'd like to know about them!
</para>
- </sect3>
- <sect3 id="abi.testing.multi">
- <title>Multiple ABI Testing</title>
+ </section>
+ <section xml:id="abi.testing.multi"><info><title>Multiple ABI Testing</title></info>
+
<para>
A "C" application, dynamically linked to two shared libraries, liba,
libb. The dependent library liba is a C++ shared library compiled with
@@ -1069,11 +1068,11 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
code from both liba, and the dependent libstdc++.so.6, and libb,
with the dependent libstdc++.so.5.
</para>
- </sect3>
-</sect2>
+ </section>
+</section>
+
+<section xml:id="abi.issues"><info><title>Outstanding Issues</title></info>
-<sect2 id="abi.issues">
-<title>Outstanding Issues</title>
<para>
Some features in the C++ language make versioning especially
@@ -1089,149 +1088,119 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
</para>
<para>
-<ulink url="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</ulink>
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</link>
</para>
<para>
-<ulink url="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</ulink>
+<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</link>
</para>
-</sect2>
+</section>
+
+<bibliography xml:id="abi.biblio"><info><title>Bibliography</title></info>
-<bibliography id="abi.biblio">
-<title>Bibliography</title>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://abicheck.sourceforge.net/">
- <citetitle>
- ABIcheck, a vague idea of checking ABI compatibility
- </citetitle>
- </ulink>
- </biblioid>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://abicheck.sourceforge.net/" class="uri">
+ </biblioid>
+ <citetitle>
+ ABIcheck, a vague idea of checking ABI compatibility
+ </citetitle>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://www.codesourcery.com/public/cxx-abi/">
- <citetitle>
- C++ ABI Reference
- </citetitle>
- </ulink>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/public/cxx-abi/" class="uri">
</biblioid>
+ <citetitle>
+ C++ ABI Reference
+ </citetitle>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm">
- <citetitle>
- Intel Compilers for Linux Compatibility with the GNU Compilers
- </citetitle>
- </ulink>
- </biblioid>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" class="uri">
+ </biblioid>
+ <citetitle>
+ Intel Compilers for Linux Compatibility with the GNU Compilers
+ </citetitle>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://docs.sun.com/app/docs/doc/819-0690">
- <citetitle>
- Linker and Libraries Guide (document 819-0690)
- </citetitle>
- </ulink>
- </biblioid>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-0690" class="uri">
+ </biblioid>
+ <citetitle>
+ Linker and Libraries Guide (document 819-0690)
+ </citetitle>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://docs.sun.com/app/docs/doc/819-3689">
- <citetitle>
- Sun Studio 11: C++ Migration Guide (document 819-3689)
- </citetitle>
- </ulink>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-3689" class="uri">
</biblioid>
+ <citetitle>
+ Sun Studio 11: C++ Migration Guide (document 819-3689)
+ </citetitle>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://people.redhat.com/drepper/dsohowto.pdf">
- <citetitle>
- How to Write Shared Libraries
- </citetitle>
- </ulink>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://people.redhat.com/drepper/dsohowto.pdf" class="uri">
</biblioid>
+ <citetitle>
+ How to Write Shared Libraries
+ </citetitle>
<author>
- <firstname>Ulrich</firstname>
- <surname>Drepper</surname>
+ <personname>
+ <firstname>Ulrich</firstname><surname>Drepper</surname>
+ </personname>
</author>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://www.arm.com/miscPDFs/8033.pdf">
- <citetitle>
- C++ ABI for the ARM Architecture
- </citetitle>
- </ulink>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.arm.com/miscPDFs/8033.pdf" class="uri">
</biblioid>
+ <citetitle>
+ C++ ABI for the ARM Architecture
+ </citetitle>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html">
- <citetitle>
- Dynamic Shared Objects: Survey and Issues
- </citetitle>
- </ulink>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" class="uri">
</biblioid>
+ <citetitle>
+ Dynamic Shared Objects: Survey and Issues
+ </citetitle>
<subtitle>
ISO C++ J16/06-0046
</subtitle>
- <author>
- <firstname>Benjamin</firstname>
- <surname>Kosnik</surname>
- </author>
+ <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html">
- <citetitle>
- Versioning With Namespaces
- </citetitle>
- </ulink>
- </biblioid>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" class="uri">
+ </biblioid>
+ <citetitle>
+ Versioning With Namespaces
+ </citetitle>
<subtitle>
ISO C++ J16/06-0083
</subtitle>
- <author>
- <firstname>Benjamin</firstname>
- <surname>Kosnik</surname>
- </author>
+ <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author>
</biblioentry>
<biblioentry>
- <biblioid class="uri">
- <ulink url="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf">
- <citetitle>
- Binary Compatibility of Shared Libraries Implemented in C++
- on GNU/Linux Systems
- </citetitle>
- </ulink>
+ <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" class="uri">
</biblioid>
+ <citetitle>
+ Binary Compatibility of Shared Libraries Implemented in C++
+ on GNU/Linux Systems
+ </citetitle>
+
<subtitle>
SYRCoSE 2009
</subtitle>
- <author>
- <firstname>Pavel</firstname>
- <surname>Shved</surname>
- </author>
- <author>
- <firstname>Denis</firstname>
- <surname>Silakov</surname>
- </author>
+ <author><personname><firstname>Pavel</firstname><surname>Shved</surname></personname></author>
+ <author><personname><firstname>Denis</firstname><surname>Silakov</surname></personname></author>
</biblioentry>
</bibliography>
-</sect1>
+</section>