Pushed to trunk.

-- >8 --

libstdc++-v3/ChangeLog:

        * doc/xml/manual/debug.xml: Improve docs on debug builds and
        using ASan. Mention _GLIBCXX_ASSERTIONS. Reorder sections to put
        the most relevant ones first.
        * doc/xml/manual/using.xml: Add comma.
        * doc/html/*: Regenerate.
---
 libstdc++-v3/doc/html/index.html              |  2 +-
 libstdc++-v3/doc/html/manual/debug.html       | 75 +++++++++------
 .../doc/html/manual/ext_compile_checks.html   | 18 ++--
 libstdc++-v3/doc/html/manual/index.html       |  2 +-
 libstdc++-v3/doc/html/manual/intro.html       |  2 +-
 libstdc++-v3/doc/html/manual/using.html       |  2 +-
 .../doc/html/manual/using_macros.html         |  2 +-
 libstdc++-v3/doc/xml/manual/debug.xml         | 95 +++++++++++--------
 libstdc++-v3/doc/xml/manual/using.xml         |  2 +-
 9 files changed, 120 insertions(+), 80 deletions(-)

diff --git a/libstdc++-v3/doc/xml/manual/debug.xml 
b/libstdc++-v3/doc/xml/manual/debug.xml
index 7f6d0876fc6..23dbae5e521 100644
--- a/libstdc++-v3/doc/xml/manual/debug.xml
+++ b/libstdc++-v3/doc/xml/manual/debug.xml
@@ -30,7 +30,7 @@
     flags can be varied to change debugging characteristics. For
     instance, turning off all optimization via the <code>-g -O0
     -fno-inline</code> flags will disable inlining and optimizations,
-    and add debugging information, so that stepping through all functions,
+    and include debugging information, so that stepping through all functions,
     (including inlined constructors and destructors) is possible. In
     addition, <code>-fno-eliminate-unused-debug-types</code> can be
     used when additional debug information, such as nested class info,
@@ -55,41 +55,30 @@
 </para>
 </section>
 
-<section xml:id="debug.req"><info><title>Debug Versions of Library Binary 
Files</title></info>
-
+<section xml:id="debug.debug_mode"><info><title>Debug Mode</title></info>
 
 <para>
-  If you would like debug symbols in libstdc++, there are two ways to
-  build libstdc++ with debug flags. The first is to create a separate
-  debug build by running make from the top-level of a tree
-  freshly-configured with
-</para>
-<programlisting>
-     --enable-libstdcxx-debug
-</programlisting>
-<para>and perhaps</para>
-<programlisting>
-     --enable-libstdcxx-debug-flags='...'
-</programlisting>
-<para>
-  Both the normal build and the debug build will persist, without
-  having to specify <code>CXXFLAGS</code>, and the debug library will
-  be installed in a separate directory tree, in 
<code>(prefix)/lib/debug</code>.
-  For more information, look at the
-  <link linkend="manual.intro.setup.configure">configuration</link> section.
+  The <link linkend="manual.ext.debug_mode">Debug Mode</link>
+  has compile and run-time checks for many containers.
 </para>
 
 <para>
-  A second approach is to use the configuration flags
+  There are also lightweight assertions for checking function preconditions,
+  such as checking for out-of-bounds indices when accessing a
+  <classname>std::vector</classname>. These can be enabled without using
+  the full Debug Mode, by using <option>-D_GLIBCXX_ASSERTIONS</option>
+  (see <xref linkend="manual.intro.using.macros"/>).
 </para>
-<programlisting>
-     make CXXFLAGS='-g3 -fno-inline -O0' all
-</programlisting>
+
+</section>
+
+<section xml:id="debug.exceptions"><info><title>Tracking uncaught 
exceptions</title></info>
 
 <para>
-  This quick and dirty approach is often sufficient for quick
-  debugging tasks, when you cannot or don't want to recompile your
-  application to use the <link linkend="manual.ext.debug_mode">debug 
mode</link>.</para>
+  The <link linkend="support.termination.verbose">verbose
+  termination handler</link> gives information about uncaught
+  exceptions which kill the program.
+</para>
 </section>
 
 <section xml:id="debug.memory"><info><title>Memory Leak Hunting</title></info>
@@ -99,6 +88,13 @@
   which is enabled by the <option>-fsanitize=address</option> option.
 </para>
 
+<para>
+  The <classname>std::vector</classname> implementation has additional
+  instrumentation to work with AddressSanitizer, but this has to be enabled
+  explicitly by using <option>-D_GLIBCXX_SANITIZE_VECTOR</option>
+  (see <xref linkend="manual.intro.using.macros"/>).
+</para>
+
 <para>
   There are also various third party memory tracing and debug utilities
   that can be used to provide detailed memory allocation information
@@ -331,21 +327,44 @@
 
 </section>
 
-<section xml:id="debug.exceptions"><info><title>Tracking uncaught 
exceptions</title></info>
+<section xml:id="debug.req"><info><title>Debug Versions of Library Binary 
Files</title></info>
 
 <para>
-  The <link linkend="support.termination.verbose">verbose
-  termination handler</link> gives information about uncaught
-  exceptions which kill the program.
+  As described above, libstdc++ is built with debug symbols enabled by default,
+  but because it's also built with optimizations the code can be hard to
+  follow when stepping into the library in a debugger.
 </para>
+
+<para>
+  If you would like to debug <filename>libstdc++.so</filename> itself,
+  there are two ways to build an unoptimized libstdc++ with debug flags.
+  The first is to create a separate debug build by running make from the
+  top-level of a tree freshly-configured with
+</para>
+<programlisting>
+     --enable-libstdcxx-debug
+</programlisting>
+<para>and perhaps</para>
+<programlisting>
+     --enable-libstdcxx-debug-flags='...'
+</programlisting>
+<para>
+  Both the normal build and the debug build will persist, without
+  having to specify <code>CXXFLAGS</code>, and the debug library will
+  be installed in a separate directory tree, in 
<code>(prefix)/lib/debug</code>.
+  For more information, look at the
+  <link linkend="manual.intro.setup.configure">configuration</link> section.
+</para>
+
+<para>
+  A second approach is to use the configuration flags
+</para>
+<programlisting>
+     make CXXFLAGS='-g3 -fno-inline -O0' all
+</programlisting>
+
 </section>
 
-<section xml:id="debug.debug_mode"><info><title>Debug Mode</title></info>
-
-  <para> The <link linkend="manual.ext.debug_mode">Debug Mode</link>
-  has compile and run-time checks for many containers.
-  </para>
-</section>
 
 <section xml:id="debug.compile_time_checks"><info><title>Compile Time 
Checking</title></info>
 
diff --git a/libstdc++-v3/doc/xml/manual/using.xml 
b/libstdc++-v3/doc/xml/manual/using.xml
index b3b0c368e44..8ac7e74034c 100644
--- a/libstdc++-v3/doc/xml/manual/using.xml
+++ b/libstdc++-v3/doc/xml/manual/using.xml
@@ -1341,7 +1341,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 
hello.cc -o test.exe
         or <classname>malloc_allocator</classname></link>. The annotations
         must be present on all vector operations or none, so this macro must
         be defined to the same value for all translation units that create,
-        destroy or modify vectors.
+        destroy, or modify vectors.
       </para>
     </listitem></varlistentry>
     </variablelist>
-- 
2.44.0

Reply via email to