commit db1768f54c7274aea1b171e61ae5b89814c2f691
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Jun 9 14:43:09 2014 +0100
* doc/Makefile.am: Add missing file. Use generate.consistent.ids
parameter for DocBook HTML generation.
* doc/Makefile.in: Regenerate.
* doc/doxygen/user.cfg.in: Unset DOT_FONTNAME.
* doc/xml/faq.xml: Update content and improve formatting.
* doc/xml/manual/abi.xml: Add stable ID attribute and fix links.
* doc/xml/manual/allocator.xml: Add stable ID attribute.
* doc/xml/manual/bitmap_allocator.xml: Likewise.
* doc/xml/manual/build_hacking.xml: Likewise.
* doc/xml/manual/codecvt.xml: Change URL.
* doc/xml/manual/ctype.xml: Add stable ID attribute.
* doc/xml/manual/debug_mode.xml: Likewise.
* doc/xml/manual/documentation_hacking.xml: Likewise.
* doc/xml/manual/evolution.xml: Likewise.
* doc/xml/manual/extensions.xml: Likewise.
* doc/xml/manual/locale.xml: Likewise.
* doc/xml/manual/messages.xml: Make section id consistent, improve
markup, change URL.
* doc/xml/manual/parallel_mode.xml: Add stable ID attributes.
* doc/xml/manual/profile_mode.xml: Likewise.
* doc/xml/manual/shared_ptr.xml: Likewise. Also remove old info.
* doc/xml/manual/status_cxx1998.xml: Add stable ID attributes.
* doc/xml/manual/status_cxx2011.xml: Likewise.
* doc/xml/manual/status_cxx2014.xml: Likewise.
* doc/xml/manual/status_cxxtr1.xml: Likewise.
* doc/xml/manual/status_cxxtr24733.xml: Likewise.
* doc/xml/manual/using.xml: Likewise.
* doc/html/*: Regenerate.
@@ -339,6 +339,7 @@ xml_sources_manual = \
${xml_dir}/manual/spine.xml \
${xml_dir}/manual/status_cxx1998.xml \
${xml_dir}/manual/status_cxx2011.xml \
+ ${xml_dir}/manual/status_cxx2014.xml \
${xml_dir}/manual/status_cxxtr1.xml \
${xml_dir}/manual/status_cxxtr24733.xml \
${xml_dir}/manual/strings.xml \
@@ -462,7 +463,7 @@ xml_noinst = \
XSLTPROC = xsltproc
XSLT_FLAGS = --nonet --xinclude
-XSLT_PARAM = --param toc.section.depth 4
+XSLT_PARAM = --param toc.section.depth 4 --param generate.consistent.ids 1
#XSL_STYLE_DIR = /usr/share/xml/docbook/stylesheet/docbook-xsl-ns
#XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets
XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
@@ -405,6 +405,7 @@ xml_sources_manual = \
${xml_dir}/manual/spine.xml \
${xml_dir}/manual/status_cxx1998.xml \
${xml_dir}/manual/status_cxx2011.xml \
+ ${xml_dir}/manual/status_cxx2014.xml \
${xml_dir}/manual/status_cxxtr1.xml \
${xml_dir}/manual/status_cxxtr24733.xml \
${xml_dir}/manual/strings.xml \
@@ -526,7 +527,7 @@ xml_noinst = \
${xml_image_dir}/confdeps.pdf
XSLT_FLAGS = --nonet --xinclude
-XSLT_PARAM = --param toc.section.depth 4
+XSLT_PARAM = --param toc.section.depth 4 --param generate.consistent.ids 1
#XSL_STYLE_DIR = /usr/share/xml/docbook/stylesheet/docbook-xsl-ns
#XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets
XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl
@@ -2282,7 +2282,7 @@ DOT_NUM_THREADS = 0
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTNAME = FreeSans
+DOT_FONTNAME =
# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
@@ -7,7 +7,7 @@
<copyright>
<year>
- 2008, 2010
+ 2008-2014
</year>
<holder>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
@@ -16,12 +16,11 @@
</info>
<!-- FAQ starts here -->
-<qandaset>
+<qandaset xml:id="faq.faq">
<!-- General Information -->
<qandadiv xml:id="faq.info" xreflabel="General Information">
-
<qandaentry xml:id="faq.what">
<question xml:id="faq.what.q">
<para>
@@ -32,11 +31,11 @@
<para>
The GNU Standard C++ Library v3 is an ongoing project to
implement the ISO 14882 Standard C++ library as described in
- clauses 17 through 27 and annex D. For those who want to see
+ clauses 17 through 30 and annex D. For those who want to see
exactly how far the project has come, or just want the latest
bleeding-edge code, the up-to-date source is available over
- anonymous SVN, and can even be browsed over
- the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html">web</link>.
+ anonymous SVN, and can be browsed over
+ the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/svn.html">web</link>.
</para>
</answer>
</qandaentry>
@@ -49,32 +48,31 @@
</question>
<answer xml:id="a-why">
<para>
- The completion of the ISO C++ standardization gave the C++
+ The completion of the initial ISO C++ standardization effort gave the C++
community a powerful set of reuseable tools in the form of the C++
- Standard Library. However, all existing C++ implementations are
+ Standard Library. However, for several years C++ implementations were
(as the Draft Standard used to say) <quote>incomplet and
- incorrekt</quote>, and many suffer from limitations of the compilers
- that use them.
+ incorrekt</quote>, and many suffered from limitations of the compilers
+ that used them.
</para>
<para>
The GNU compiler collection
(<command>gcc</command>, <command>g++</command>, etc) is widely
considered to be one of the leading compilers in the world. Its
development is overseen by the
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/">GCC team</link>. All of
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/">GCC team</link>. All of
the rapid development and near-legendary
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/buildstat.html">portability</link>
- that are the hallmarks of an open-source project are being
- applied to libstdc++.
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/buildstat.html">portability</link>
+ that are the hallmarks of an open-source project are applied to libstdc++.
</para>
<para>
- That means that all of the Standard classes and functions will be
- freely available and fully compliant. (Such as
- <classname>string</classname>,
- <classname>vector<></classname>, iostreams, and algorithms.)
- Programmers will no longer need to <quote>roll their own</quote>
- nor be worried about platform-specific incompatibilities.
- </para>
+ All of the standard classes and functions from C++98/C++03
+ (such as <classname>string</classname>,
+ <classname>vector<></classname>, iostreams, algorithms etc.)
+ are freely available and atempt to be fully compliant.
+ Work is ongoing to complete support for the current revision of the
+ ISO C++ Standard.
+ </para>
</answer>
</qandaentry>
@@ -88,15 +86,15 @@
<para>
The libstdc++ project is contributed to by several developers
all over the world, in the same way as GCC or the Linux kernel.
- Benjamin Kosnik, Gabriel Dos Reis, Phil Edwards, Ulrich Drepper,
- Loren James Rittle, and Paolo Carlini are the lead maintainers of
- the SVN archive.
+ The current maintainers are listed in the
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/viewcvs/gcc/trunk/MAINTAINERS?view=co"><filename>MAINTAINERS</filename></link>
+ file (look for "c++ runtime libs").
</para>
<para>
Development and discussion is held on the libstdc++ mailing
list. Subscribing to the list, or searching the list
archives, is open to everyone. You can read instructions for
- doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/libstdc++/">homepage</link>.
+ doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/lists.html">GCC mailing lists</link> page.
If you have questions, ideas, code, or are just curious, sign up!
</para>
</answer>
@@ -125,8 +123,8 @@
</question>
<answer xml:id="a-how">
<para>
- Here is <link linkend="appendix.contrib">a page devoted to
- this topic</link>. Subscribing to the mailing list (see above, or
+ See the <link linkend="appendix.contrib">Contributing</link> section in
+ the manual. Subscribing to the mailing list (see above, or
the homepage) is a very good idea if you have something to
contribute, or if you have spare time and want to
help. Contributions don't have to be in the form of source code;
@@ -145,12 +143,16 @@
</question>
<answer xml:id="a-whereis_old">
<para>
- The most recent libg++ README states that libg++ is no longer
- being actively maintained. It should not be used for new
- projects, and is only being kicked along to support older code.
+ The last libg++ README states
+ <quote>This package is considered obsolete and is no longer
+ being developed.</quote>
+ It should not be used for new projects, and won't even compile with
+ recent releases of GCC (or most other C++ compilers).
</para>
<para>
- More information in the <link linkend="manual.appendix.porting.backwards">backwards compatibility documentation</link>
+ More information can be found in the
+ <link linkend="manual.appendix.porting.backwards">Backwards
+ Compatibility</link> section of the libstdc++ manual.
</para>
</answer>
</qandaentry>
@@ -163,7 +165,7 @@
</question>
<answer xml:id="a-more_questions">
<para>
- If you have read the README file, and your question remains
+ If you have read the documentation, and your question remains
unanswered, then just ask the mailing list. At present, you do not
need to be subscribed to the list to send a message to it. More
information is available on the homepage (including how to browse
@@ -285,7 +287,7 @@
<para>
Libstdc++ sources for all official releases can be obtained as
part of the GCC sources, available from various sites and
- mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">list of
+ mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/mirrors.html">list of
download sites</link> is provided on the main GCC site.
</para>
<para>
@@ -308,7 +310,7 @@
</para>
<para>
For more information
- see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
+ see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
details</link>.
</para>
</answer>
@@ -325,7 +327,9 @@
conformance testing, regression testing, ABI testing, and
performance testing. Please consult the
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/test.html">testing
- documentation</link> for more details.
+ documentation</link> for GCC and
+ <link linkend="manual.intro.setup.test">Test</link> in the libstdc++
+ manual for more details.
</para>
<para>
If you find bugs in the testsuite programs themselves, or if you
@@ -382,26 +386,26 @@
<para>
The simplest way to fix this is
- to use the <literal>LD_LIBRARY_PATH</literal> environment variable,
+ to use the <envar>LD_LIBRARY_PATH</envar> environment variable,
which is a colon-separated list of directories in which the linker
will search for shared libraries:
</para>
- <screen>
- LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
- export LD_LIBRARY_PATH
- </screen>
+ <screen><command>
+ export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
+ </command></screen>
<para>
- Here the shell variable <command>${prefix}</command> is assumed to contain
+ Here the shell variable <varname>${prefix}</varname> is assumed to contain
the directory prefix where GCC was installed to. The directory containing
the library might depend on whether you want the 32-bit or 64-bit copy
of the library, so for example would be
- <filename>${prefix}/lib64</filename> on some systems.
+ <filename class="directory">${prefix}/lib64</filename> on some systems.
The exact environment variable to use will depend on your
- platform, e.g. DYLD_LIBRARY_PATH for Darwin,
- LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 for Solaris 32-/64-bit
- and SHLIB_PATH for HP-UX.
+ platform, e.g. <envar>DYLD_LIBRARY_PATH</envar> for Darwin,
+ <envar>LD_LIBRARY_PATH_32</envar>/<envar>LD_LIBRARY_PATH_64</envar>
+ for Solaris 32-/64-bit,
+ and <envar>SHLIB_PATH</envar> for HP-UX.
</para>
<para>
See the man pages for <command>ld</command>, <command>ldd</command>
@@ -411,7 +415,8 @@
<filename>rtld</filename> or <filename>dld.so</filename>.
</para>
<para>
- Using LD_LIBRARY_PATH is not always the best solution, <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
+ Using <envar>LD_LIBRARY_PATH</envar> is not always the best solution,
+ <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
Libraries</link> in the manual gives some alternatives.
</para>
</answer>
@@ -425,20 +430,20 @@
</question>
<answer xml:id="a-what_is_libsupcxx">
<para>
- If the only functions from <filename>libstdc++.a</filename>
+ If the only functions from <filename class="libraryfile">libstdc++.a</filename>
which you need are language support functions (those listed in
<link linkend="std.support">clause 18</link> of the
standard, e.g., <function>new</function> and
<function>delete</function>), then try linking against
- <filename>libsupc++.a</filename>, which is a subset of
- <filename>libstdc++.a</filename>. (Using <command>gcc</command>
+ <filename class="libraryfile">libsupc++.a</filename>, which is a subset of
+ <filename class="libraryfile">libstdc++.a</filename>. (Using <command>gcc</command>
instead of <command>g++</command> and explicitly linking in
- <filename>libsupc++.a</filename> via <literal>-lsupc++</literal>
+ <filename class="libraryfile">libsupc++.a</filename> via <option>-lsupc++</option>
for the final link step will do it). This library contains only
those support routines, one per object file. But if you are
using anything from the rest of the library, such as IOStreams
or vectors, then you'll still need pieces from
- <filename>libstdc++.a</filename>.
+ <filename class="libraryfile">libstdc++.a</filename>.
</para>
</answer>
</qandaentry>
@@ -461,14 +466,15 @@
for background reasons.)
</para>
<para>
- Some of the object files which make up libstdc++.a are rather large.
+ Some of the object files which make up
+ <filename class="libraryfile">libstdc++.a</filename> are rather large.
If you create a statically-linked executable with
- <literal>-static</literal>, those large object files are suddenly part
+ <option>-static</option>, those large object files are suddenly part
of your executable. Historically the best way around this was to
only place a very few functions (often only a single one) in each
source/object file; then extracting a single function is the same
- as extracting a single .o file. For libstdc++ this is only
- possible to a certain extent; the object files in question contain
+ as extracting a single <filename>.o</filename> file. For libstdc++ this
+ is only possible to a certain extent; the object files in question contain
template classes and template functions, pre-instantiated, and
splitting those up causes severe maintenance headaches.
</para>
@@ -477,8 +483,8 @@
collection in the GNU linker to get a result similar to separating
each symbol into a separate source and object files. On these platforms,
GNU ld can place each function and variable into its own
- section in a .o file. The GNU linker can then perform garbage
- collection on unused sections; this reduces the situation to only
+ section in a <filename>.o</filename> file. The GNU linker can then perform
+ garbage collection on unused sections; this reduces the situation to only
copying needed functions into the executable, as before, but all
happens automatically.
</para>
@@ -509,13 +515,14 @@
</para>
<para>
However, the reality is that libstdc++ is targeted and optimized
- for GCC/g++. This means that often libstdc++ uses specific,
- non-standard features of g++ that are not present in older
+ for GCC/G++. This means that often libstdc++ uses specific,
+ non-standard features of G++ that are not present in older
versions of proprietary compilers. It may take as much as a year or two
after an official release of GCC that contains these features for
proprietary tools to support these constructs.
</para>
<para>
+ Recent versions of libstdc++ are known to work with the Clang compiler.
In the near past, specific released versions of libstdc++ have
been known to work with versions of the EDG C++ compiler, and
vendor-specific proprietary C++ compilers such as the Intel ICC
@@ -528,7 +535,7 @@
<qandaentry xml:id="faq.solaris_long_long">
<question xml:id="q-solaris_long_long">
<para>
- No 'long long' type on Solaris?
+ No '<type>long long</type>' type on Solaris?
</para>
</question>
<answer xml:id="a-solaris_long_long">
@@ -555,13 +562,14 @@
</para>
</question>
<answer xml:id="a-predefined">
- <para>On Solaris, g++ (but not gcc) always defines the preprocessor
- macro <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens
+ <para>On Solaris, <command>g++</command> (but not <command>gcc</command>)
+ always defines the preprocessor macro
+ <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens
with <constant>_GNU_SOURCE</constant>. (This is not an exhaustive list;
other macros and other platforms are also affected.)
</para>
<para>These macros are typically used in C library headers, guarding new
- versions of functions from their older versions. The C++ standard
+ versions of functions from their older versions. The C++98 standard
library includes the C standard library, but it requires the C90
version, which for backwards-compatibility reasons is often not the
default for many vendors.
@@ -571,13 +579,14 @@
Usually the issue involves I/O-related typedefs. In order to
ensure correctness, the compiler simply predefines those symbols.
</para>
- <para>Note that it's not enough to #define them only when the library is
+ <para>Note that it's not enough to <literal>#define</literal> them only when the library is
being built (during installation). Since we don't have an 'export'
keyword, much of the library exists as headers, which means that
the symbols must also be defined as your programs are parsed and
compiled.
</para>
- <para>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in
+ <para>To see which symbols are defined, look for
+ <varname>CPLUSPLUS_CPP_SPEC</varname> in
the gcc config headers for your target (and try changing them to
see what happens when building complicated code). You can also run
<command>g++ -E -dM - < /dev/null"</command> to display
@@ -600,10 +609,13 @@
</para>
</question>
<answer xml:id="a-darwin_ctype">
- <para>This is a long-standing bug in the OS X support. Fortunately,
- the patch is quite simple, and well-known.
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a
- link to the solution</link>.
+ <note>
+ <para>This answer is old and probably no longer be relevant.</para>
+ </note>
+ <para>
+ This was a long-standing bug in the OS X support. Fortunately, the
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html">patch</link>
+ was quite simple, and well-known.
</para>
</answer>
@@ -616,9 +628,10 @@
</para>
</question>
<answer xml:id="a-threads_i386">
- <para>
- </para>
- <para>Support for atomic integer operations is/was broken on i386
+ <note>
+ <para>This answer is old and probably no longer be relevant.</para>
+ </note>
+ <para>Support for atomic integer operations was broken on i386
platforms. The assembly code accidentally used opcodes that are
only available on the i486 and later. So if you configured GCC
to target, for example, i386-linux, but actually used the programs
@@ -638,6 +651,9 @@
</para>
</question>
<answer xml:id="a-atomic_mips">
+ <note>
+ <para>This answer is old and probably no longer be relevant.</para>
+ </note>
<para>
The atomic locking routines for MIPS targets requires MIPS II
and later. A patch went in just after the 3.3 release to
@@ -661,7 +677,7 @@
<para>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
5.0.1) and later uses localization and formatting code from the system
C library (glibc) version 2.2.5 which contains necessary bugfixes.
- Most GNU/Linux distros make more recent versions available now.
+ All GNU/Linux distros make more recent versions available now.
libstdc++ 4.6.0 and later require glibc 2.3 or later for this
localization and formatting code.
</para>
@@ -680,10 +696,13 @@
</para>
</question>
<answer xml:id="a-freebsd_wchar">
+ <note>
+ <para>This answer is old and probably no longer be relevant.</para>
+ </note>
<para>
Older versions of FreeBSD's C library do not have sufficient
support for wide character functions, and as a result the
- libstdc++ configury decides that wchar_t support should be
+ libstdc++ configury decides that <type>wchar_t</type> support should be
disabled. In addition, the libstdc++ platform checks that
enabled <type>wchar_t</type> were quite strict, and not granular
enough to detect when the minimal support to
@@ -713,7 +732,7 @@
<para>
Short answer: Pretty much everything <emphasis>works</emphasis>
except for some corner cases. Support for localization
- in <classname>locale</classname> may be incomplete on non-GNU
+ in <classname>locale</classname> may be incomplete on some non-GNU
platforms. Also dependent on the underlying platform is support
for <type>wchar_t</type> and <type>long
long</type> specializations, and details of thread support.
@@ -745,12 +764,12 @@
published on <link xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">the WG21
website</link>.
- Some of these issues have resulted in code changes in libstdc++.
+ Many of these issues have resulted in code changes in libstdc++.
</para>
<para>
If you think you've discovered a new bug that is not listed,
please post a message describing your problem to the author of
- the library issues list or the Usenet group comp.lang.c++.moderated.
+ the library issues list.
</para>
</answer>
</qandaentry>
@@ -798,7 +817,7 @@
One of the most-reported non-bug reports. Executing a sequence like:
</para>
- <literallayout class="normal">
+ <programlisting>
#include <fstream>
...
std::fstream fs("a_file");
@@ -807,7 +826,7 @@
// .
fs.close();
fs.open("a_new_file");
- </literallayout>
+ </programlisting>
<para>
All operations on the re-opened <varname>fs</varname> will fail, or at
@@ -835,15 +854,15 @@
</question>
<answer xml:id="a-wefcxx_verbose">
<para>
- Many warnings are emitted when <literal>-Weffc++</literal> is used. Making
- libstdc++ <literal>-Weffc++</literal>-clean is not a goal of the project,
+ Many warnings are emitted when <option>-Weffc++</option> is used. Making
+ libstdc++ <option>-Weffc++</option>-clean is not a goal of the project,
for a few reasons. Mainly, that option tries to enforce
object-oriented programming, while the Standard Library isn't
necessarily trying to be OO.
</para>
<para>
We do, however, try to have libstdc++ sources as clean as possible. If
- you see some simple changes that pacify <literal>-Weffc++</literal>
+ you see some simple changes that pacify <option>-Weffc++</option>
without other drawbacks, send us a patch.
</para>
</answer>
@@ -879,19 +898,20 @@
<answer xml:id="a-v2_headers">
<para>
If you are using headers in
- <filename>${prefix}/include/g++-3</filename>, or if the installed
- library's name looks like <filename>libstdc++-2.10.a</filename> or
- <filename>libstdc++-libc6-2.10.so</filename>, then you are using the
- old libstdc++-v2 library, which is nonstandard and
+ <filename class="directory">${prefix}/include/g++-3</filename>, or if
+ the installed library's name looks like
+ <filename class="libraryfile">libstdc++-2.10.a</filename> or
+ <filename class="libraryfile">libstdc++-libc6-2.10.so</filename>, then
+ you are using the old libstdc++-v2 library, which is non-standard and
unmaintained. Do not report problems with -v2 to the -v3
mailing list.
</para>
<para>
- For GCC versions 3.0 and 3.1 the libstdc++ header files are
- installed in <filename>${prefix}/include/g++-v3</filename> (see the
- 'v'?). Starting with version 3.2 the headers are installed in
- <filename>${prefix}/include/c++/${version}</filename> as this prevents
- headers from previous versions being found by mistake.
+ For GCC versions 3.0 and 3.1 the libstdc++ header files are installed in
+ <filename class="directory">${prefix}/include/g++-v3</filename>
+ (see the 'v'?). Starting with version 3.2 the headers are installed in
+ <filename class="directory">${prefix}/include/c++/${version}</filename>
+ as this prevents headers from previous versions being found by mistake.
</para>
</answer>
@@ -907,7 +927,7 @@
<answer xml:id="a-boost_concept_checks">
<para>
If you see compilation errors containing messages about
- <errortext>foo Concept </errortext>and something to do with a
+ <errortext>foo Concept</errortext> and something to do with a
<errortext>constraints</errortext> member function, then most
likely you have violated one of the requirements for types used
during instantiation of template containers and functions. For
@@ -939,17 +959,17 @@
</para>
<literallayout class="normal">
- // compile your library components
- g++ -fPIC -c a.cc
- g++ -fPIC -c b.cc
+ Compile your library components:
+ <command>g++ -fPIC -c a.cc</command>
+ <command>g++ -fPIC -c b.cc</command>
...
- g++ -fPIC -c z.cc
+ <command>g++ -fPIC -c z.cc</command>
- // create your library
- g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o
+ Create your library:
+ <command>g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o</command>
- // link the executable
- g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
+ Link the executable:
+ <command>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</command>
</literallayout>
</answer>
</qandaentry>
@@ -964,7 +984,7 @@
<para>
A few people have reported that the standard containers appear
to leak memory when tested with memory checkers such as
- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/">valgrind</link>.
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link>.
Under some configurations the library's allocators keep free memory in a
pool for later reuse, rather than returning it to the OS. Although
this memory is always reachable by the library and is never
@@ -1108,8 +1128,8 @@
compatibility</link> documentation.
</para>
<para>
- The FAQ for SGI's STL (one jump off of their main page) is
- still recommended reading.
+ The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/FAQ.html">FAQ</link>
+ for SGI's STL is still recommended reading.
</para>
</answer>
</qandaentry>
@@ -1189,7 +1209,7 @@
<answer xml:id="a-what_is_abi">
<para>
<acronym>ABI</acronym> stands for <quote>Application Binary
- Interface</quote>. Conventionally, it refers to a great
+ Interface</quote>. Conventionally, it refers to a great
mass of details about how arguments are arranged on the call
stack and/or in registers, and how various types are arranged
and padded in structs. A single CPU design may suffer
@@ -1207,18 +1227,24 @@
Users usually want an ABI to encompass more detail, allowing libraries
built with different compilers (or different releases of the same
compiler!) to be linked together. For C++, this includes many more
- details than for C, and CPU designers (for good reasons elaborated
- below) have not stepped up to publish C++ ABIs. The details include
- virtual function implementation, struct inheritance layout, name
- mangling, and exception handling. Such an ABI has been defined for
- GNU C++, and is immediately useful for embedded work relying only on
- a <quote>free-standing implementation</quote> that doesn't include (much
- of) the standard library. It is a good basis for the work to come.
- </para>
+ details than for C, and most CPU designers (for good reasons elaborated
+ below) have not stepped up to publish C++ ABIs. Such an ABI has been
+ defined for the Itanium architecture (see
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/">C++
+ ABI for Itanium</link>) and that is used by G++ and other compilers
+ as the de facto standard ABI on many common architectures (including x86).
+ G++ can also use the ARM architecture's EABI, for embedded
+ systems relying only on a <quote>free-standing implementation</quote> that
+ doesn't include (much of) the standard library, and the GNU EABI for
+ hosted implementations on ARM. Those ABIs cover low-level details
+ such as virtual function implementation, struct inheritance layout,
+ name mangling, and exception handling.
+ </para>
<para>
A useful C++ ABI must also incorporate many details of the standard
library implementation. For a C ABI, the layouts of a few structs
- (such as FILE, stat, jmpbuf, and the like) and a few macros suffice.
+ (such as <type>FILE</type>, <type>stat</type>, <type>jmpbuf</type>,
+ and the like) and a few macros suffice.
For C++, the details include the complete set of names of functions
and types used, the offsets of class members and virtual functions,
and the actual definitions of all inlines. C++ exposes many more
@@ -1230,9 +1256,9 @@
</para>
<para>
There are ways to help isolate library implementation details from the
- ABI, but they trade off against speed. Library details used in
- inner loops (e.g., getchar) must be exposed and frozen for all
- time, but many others may reasonably be kept hidden from user code,
+ ABI, but they trade off against speed. Library details used in inner
+ loops (e.g., <function>getchar</function>) must be exposed and frozen for
+ all time, but many others may reasonably be kept hidden from user code,
so they may later be changed. Deciding which, and implementing
the decisions, must happen before you can reasonably document a
candidate C++ ABI that encompasses the standard library.
@@ -1100,8 +1100,8 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm">
- Intel Compilers for Linux Compatibility with the GNU Compilers
+ xlink:href="https://software.intel.com/en-us/articles/intel-compilers-for-linux-compatibility-with-gnu-compilers">
+ Intel Compilers for Linux: Compatibility with GNU Compilers
</link>
</title>
</biblioentry>
@@ -1109,7 +1109,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://download.oracle.com/docs/cd/E19963-01/html/819-0690/index.html">
+ xlink:href="http://docs.oracle.com/cd/E23824_01/html/819-0690/index.html">
Linker and Libraries Guide (document 819-0690)
</link>
</title>
@@ -1143,7 +1143,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://www.arm.com/miscPDFs/8033.pdf">
+ xlink:href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0036b/index.html">
C++ ABI for the ARM Architecture
</link>
</title>
@@ -1179,7 +1179,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf">
+ xlink:href="http://syrcose.ispras.ru/2009/files/02_paper.pdf">
Binary Compatibility of Shared Libraries Implemented in C++
on GNU/Linux Systems
</link>
@@ -137,7 +137,7 @@
<section xml:id="allocator.impl"><info><title>Implementation</title></info>
- <section><info><title>Interface Design</title></info>
+ <section xml:id="allocator.interface"><info><title>Interface Design</title></info>
<para>
@@ -161,7 +161,7 @@
</section>
- <section><info><title>Selecting Default Allocation Policy</title></info>
+ <section xml:id="allocator.default"><info><title>Selecting Default Allocation Policy</title></info>
<para>
@@ -227,7 +227,7 @@
</section>
- <section><info><title>Disabling Memory Caching</title></info>
+ <section xml:id="allocator.caching"><info><title>Disabling Memory Caching</title></info>
<para>
@@ -163,7 +163,7 @@ else return false.</para></listitem>
(assume a 32-bit system where, size_t is a 32-bit entity).
</para>
-<table frame="all">
+<table frame="all" xml:id="table.bitmap_alloc">
<title>Bitmap Allocator Memory Map</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -76,7 +76,7 @@ in the build directory starts the build process. The <literal>all</literal> targ
<section xml:id="build_hacking.overview.map"><info><title>What Comes from Where</title></info>
- <figure>
+ <figure xml:id="fig.build_hacking.deps">
<title>Configure and Build File Dependencies</title>
<mediaobject>
<imageobject>
@@ -595,7 +595,7 @@ codecvt usage.
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://www.opengroup.org/austin/">
+ xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/">
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</link>
</title>
@@ -14,7 +14,7 @@
<section xml:id="facet.ctype.impl"><info><title>Implementation</title></info>
- <section><info><title>Specializations</title></info>
+ <section xml:id="facet.ctype.impl.spec"><info><title>Specializations</title></info>
<para>
@@ -175,7 +175,7 @@ which always works correctly.
containers:
</para>
-<table frame="all">
+<table frame="all" xml:id="table.debug_mode_containers">
<title>Debugging Containers</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
@@ -267,7 +267,7 @@ which always works correctly.
containers have additional debug capability.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.debug_mode_containers_cxx11">
<title>Debugging Containers C++11</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
@@ -206,7 +206,7 @@
<section xml:id="doxygen.prereq"><info><title>Prerequisites</title></info>
- <table frame="all">
+ <table frame="all" xml:id="table.doxygen_prereq">
<title>Doxygen Prerequisites</title>
<tgroup cols="3" align="center" colsep="1" rowsep="1">
@@ -582,7 +582,7 @@
doubt, consult the following table.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.doxygen_cmp">
<title>HTML to Doxygen Markup Comparison</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
@@ -652,7 +652,7 @@
<section xml:id="docbook.prereq"><info><title>Prerequisites</title></info>
- <table frame="all">
+ <table frame="all" xml:id="table.docbook_prereq">
<title>Docbook Prerequisites</title>
<tgroup cols="3" align="center" colsep="1" rowsep="1">
@@ -1029,7 +1029,7 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal>
detailed in the table below.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.docbook_cmp">
<title>HTML to Docbook XML Markup Comparison</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
@@ -1107,7 +1107,7 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal>
equivalents are listed in the table below.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.docbook_elem">
<title>Docbook XML Element Use</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
@@ -165,7 +165,7 @@ _Alloc_traits</code> have been removed.
underlying allocator was not user-configurable.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.extension_allocators">
<title>Extension Allocators</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
@@ -230,7 +230,7 @@ _Alloc_traits</code> have been removed.
the first released version of GCC that included the extension allocator.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.extension_allocators2">
<title>Extension Allocators Continued</title>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
@@ -13,7 +13,7 @@
</info>
-<preface><info><title/></info>
+<preface xml:id="manual.ext.preface"><info><title/></info>
<?dbhtml filename="ext_preface.html"?>
<para>
Here we will make an attempt at describing the non-Standard
@@ -560,7 +560,7 @@ global locale" (emphasis Paolo), that is:
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://www.opengroup.org/austin/">
+ xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/">
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</link>
</title>
@@ -1,5 +1,5 @@
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
- xml:id="manual.localization.facet.messages" xreflabel="Messages">
+ xml:id="std.localization.facet.messages" xreflabel="Messages">
<?dbhtml filename="messages.html"?>
<info><title>messages</title>
@@ -12,8 +12,8 @@
<para>
-The std::messages facet implements message retrieval functionality
-equivalent to Java's java.text.MessageFormat .using either GNU gettext
+The <classname>std::messages</classname> facet implements message retrieval functionality
+equivalent to Java's <classname>java.text.MessageFormat</classname> using either GNU <function>gettext</function>
or IEEE 1003.1-200 functions.
</para>
@@ -21,7 +21,7 @@ or IEEE 1003.1-200 functions.
<para>
-The std::messages facet is probably the most vaguely defined facet in
+The <classname>std::messages</classname> facet is probably the most vaguely defined facet in
the standard library. It's assumed that this facility was built into
the standard library in order to convert string literals from one
locale to the other. For instance, converting the "C" locale's
@@ -61,42 +61,42 @@ While the virtual functions are:
</para>
<para>
-<code>catalog do_open(const string&, const locale&) const</code>
+<code>catalog do_open(const string& name, const locale& loc) const</code>
</para>
<blockquote>
<para>
<emphasis>
--1- Returns: A value that may be passed to get() to retrieve a
-message, from the message catalog identified by the string name
+-1- Returns: A value that may be passed to <code>get()</code> to retrieve a
+message, from the message catalog identified by the string <code>name</code>
according to an implementation-defined mapping. The result can be used
-until it is passed to close(). Returns a value less than 0 if no such
+until it is passed to <code>close()</code>. Returns a value less than 0 if no such
catalog can be opened.
</emphasis>
</para>
</blockquote>
<para>
-<code>string_type do_get(catalog, int, int, const string_type&) const</code>
+<code>string_type do_get(catalog cat, int set , int msgid, const string_type& dfault) const</code>
</para>
<blockquote>
<para>
<emphasis>
--3- Requires: A catalog cat obtained from open() and not yet closed.
--4- Returns: A message identified by arguments set, msgid, and dfault,
+-3- Requires: A catalog <code>cat</code> obtained from <code>open()</code> and not yet closed.
+-4- Returns: A message identified by arguments <code>set</code>, <code>msgid</code>, and <code>dfault</code>,
according to an implementation-defined mapping. If no such message can
-be found, returns dfault.
+be found, returns <code>dfault</code>.
</emphasis>
</para>
</blockquote>
<para>
-<code>void do_close(catalog) const</code>
+<code>void do_close(catalog cat) const</code>
</para>
<blockquote>
<para>
<emphasis>
--5- Requires: A catalog cat obtained from open() and not yet closed.
--6- Effects: Releases unspecified resources associated with cat.
+-5- Requires: A catalog cat obtained from <code>open()</code> and not yet closed.
+-6- Effects: Releases unspecified resources associated with <code>cat</code>.
-7- Notes: The limit on such resources, if any, is implementation-defined.
</emphasis>
</para>
@@ -488,7 +488,7 @@ void test01()
<biblioentry>
<title>
<link xmlns:xlink="http://www.w3.org/1999/xlink"
- xlink:href="http://www.opengroup.org/austin/">
+ xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/">
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
</link>
</title>
@@ -191,7 +191,7 @@ flags for atomic operations.)
parallel algorithms that can be used in a similar manner:
</para>
-<table frame="all">
+<table frame="all" xml:id="table.parallel_algos">
<title>Parallel Algorithms</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
@@ -215,7 +215,7 @@ vector-size: improvement = 3: call stack = 0x804842c ...
<para>
</para>
-<table frame="all">
+<table frame="all" xml:id="table.profile_code_loc">
<title>Profile Code Location</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
@@ -690,7 +690,7 @@ it helps the user focus on the key problems and ignore the uninteresting ones.
specific needs or time budgets.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.profile_diagnostics">
<title>Profile Diagnostics</title>
<tgroup cols="7" align="left" colsep="1" rowsep="1">
@@ -59,7 +59,7 @@ technique known as type erasure.
<section xml:id="shared_ptr.impl"><info><title>Implementation</title></info>
- <section><info><title>Class Hierarchy</title></info>
+ <section xml:id="shared_ptr.hier"><info><title>Class Hierarchy</title></info>
<para>
@@ -155,7 +155,7 @@ deprecated in C++11 mode.
</section>
- <section><info><title>Thread Safety</title></info>
+ <section xml:id="shared_ptr.thread"><info><title>Thread Safety</title></info>
<para>
The
@@ -213,7 +213,7 @@ Policy below for details.
</section>
- <section><info><title>Selecting Lock Policy</title></info>
+ <section xml:id="shared_ptr.policy"><info><title>Selecting Lock Policy</title></info>
<para>
@@ -282,7 +282,7 @@ used when libstdc++ is built without <literal>--enable-threads</literal>.
</section>
-<section><info><title>Related functions and classes</title></info>
+<section xml:id="shared_ptr.rel"><info><title>Related functions and classes</title></info>
<variablelist>
@@ -350,7 +350,7 @@ be private.
<section xml:id="shared_ptr.using"><info><title>Use</title></info>
- <section><info><title>Examples</title></info>
+ <section xml:id="shared_ptr.examples"><info><title>Examples</title></info>
<para>
Examples of use can be found in the testsuite, under
@@ -361,7 +361,7 @@ be private.
</para>
</section>
- <section><info><title>Unresolved Issues</title></info>
+ <section xml:id="shared_ptr.issues"><info><title>Unresolved Issues</title></info>
<para>
The <emphasis><classname>shared_ptr</classname> atomic access</emphasis>
@@ -369,14 +369,6 @@ be private.
</para>
<para>
- The <type>_S_single</type> policy uses atomics when used in MT
- code, because it uses the same dispatcher functions that check
- <function>__gthread_active_p()</function>. This could be
- addressed by providing template specialisations for some members
- of <classname>_Sp_counted_base<_S_single></classname>.
- </para>
-
- <para>
Unlike Boost, this implementation does not use separate classes
for the pointer+deleter and pointer+deleter+allocator cases in
C++11 mode, combining both into _Sp_counted_deleter and using
@@ -31,7 +31,7 @@ particular release.
Broken/Partial
<?dbhtml bgcolor="#B0B0B0" ?>
-->
-<table frame="all">
+<table frame="all" xml:id="table.cxx98_status">
<title>C++ 1998/2003 Implementation Status</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
@@ -40,7 +40,7 @@ particular release.
Broken/Partial
<?dbhtml bgcolor="#B0B0B0" ?>
-->
-<table frame="all">
+<table frame="all" xml:id="table.cxx11_status">
<title>C++ 2011 Implementation Status</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
@@ -24,7 +24,7 @@ This page describes the C++14 and library TS support in mainline GCC SVN,
not in any particular release.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.cxx14_status">
<title>C++ 2014 Implementation Status</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
@@ -251,7 +251,7 @@ not in any particular release.
</table>
-<table frame="all">
+<table frame="all" xml:id="table.ts_status">
<title>C++ Technical Specifications Implementation Status</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
@@ -35,7 +35,7 @@ release.
Broken/Partial
<?dbhtml bgcolor="#B0B0B0" ?>
-->
-<table frame="all">
+<table frame="all" xml:id="table.tr1_status">
<title>C++ TR1 Implementation Status</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
@@ -29,7 +29,7 @@ particular release.
Broken/Partial
<?dbhtml bgcolor="#B0B0B0" ?>
-->
-<table frame="all">
+<table frame="all" xml:id="table.decfp_status">
<title>C++ TR 24733 Implementation Status</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
@@ -17,7 +17,7 @@
By default, <command>g++</command> is equivalent to <command>g++ -std=gnu++98</command>. The standard library also defaults to this dialect.
</para>
- <table frame="all">
+ <table frame="all" xml:id="table.cmd_options">
<title>C++ Command Options</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
@@ -115,7 +115,7 @@
C++98/03 include files. These are available in the default compilation mode, i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.cxx98_headers">
<title>C++ 1998 Library Headers</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -176,7 +176,7 @@
</table>
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.cxx98_cheaders">
<title>C++ 1998 Library Headers for C Library Facilities</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -222,7 +222,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
</para>
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.cxx11_headers">
<title>C++ 2011 Library Headers</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -308,7 +308,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.cxx11_cheaders">
<title>C++ 2011 Library Headers for C Library Facilities</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -362,7 +362,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
In addition, TR1 includes as:
</para>
-<table frame="all">
+<table frame="all" xml:id="table.tr1_headers">
<title>C++ TR 1 Library Headers</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -398,7 +398,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.tr1_cheaders">
<title>C++ TR 1 Library Headers for C Library Facilities</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -441,7 +441,7 @@ compiler supports scalar decimal floating-point types defined via
<code>__attribute__((mode(SD|DD|LD)))</code>.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.decfp_headers">
<title>C++ TR 24733 Decimal Floating-Point Header</title>
<tgroup cols="1" align="left" colsep="1" rowsep="1">
@@ -458,7 +458,7 @@ compiler supports scalar decimal floating-point types defined via
Also included are files for the C++ ABI interface:
</para>
-<table frame="all">
+<table frame="all" xml:id="table.abi_headers">
<title>C++ ABI Headers</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
@@ -474,7 +474,7 @@ compiler supports scalar decimal floating-point types defined via
And a large variety of extensions.
</para>
-<table frame="all">
+<table frame="all" xml:id="table.ext_headers">
<title>Extension Headers</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -537,7 +537,7 @@ compiler supports scalar decimal floating-point types defined via
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.debug_headers">
<title>Extension Debug Headers</title>
<tgroup cols="5" align="left" colsep="1" rowsep="1">
@@ -569,7 +569,7 @@ compiler supports scalar decimal floating-point types defined via
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.profile_headers">
<title>Extension Profile Headers</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
@@ -599,7 +599,7 @@ compiler supports scalar decimal floating-point types defined via
<para/>
-<table frame="all">
+<table frame="all" xml:id="table.parallel_headers">
<title>Extension Parallel Headers</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">