summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/doc/html/manual/debug.html
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-17 23:50:28 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-17 23:50:28 +0000
commitddd674b8b37f3143894277cb635ac2f07604ddf0 (patch)
treeccbba16db0b6c1f58a97ad335c7313202c81120a /libstdc++-v3/doc/html/manual/debug.html
parentcd1be69fee37bfb5dcf849583986cd12b1ea9107 (diff)
downloadppe42-gcc-ddd674b8b37f3143894277cb635ac2f07604ddf0.tar.gz
ppe42-gcc-ddd674b8b37f3143894277cb635ac2f07604ddf0.zip
2012-01-17 Benjamin Kosnik <bkoz@redhat.com>
* doc/html/*: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183264 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/doc/html/manual/debug.html')
-rw-r--r--libstdc++-v3/doc/html/manual/debug.html24
1 files changed, 17 insertions, 7 deletions
diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html
index 70edbf2a59e..6d6e0190c5c 100644
--- a/libstdc++-v3/doc/html/manual/debug.html
+++ b/libstdc++-v3/doc/html/manual/debug.html
@@ -136,14 +136,24 @@
redefining them will only affect inline functions and template
instantiations which are compiled in user code. This allows annotation
of templates such as <code class="code">shared_ptr</code>, but not code which is
- only instantiated in the library.
- In order to annotate <code class="code">basic_string</code> reference counting it
- is necessary to disable extern templates (by defining
- <code class="code">_GLIBCXX_EXTERN_TEMPLATE=-1</code>) or to rebuild the
- <code class="code">.so</code> file.
+ only instantiated in the library. Code which is only instantiated in
+ the library needs to be recompiled with the annotation macros defined.
+ That can be done by rebuilding the entire
+ <code class="filename">libstdc++.so</code> file but a simpler
+ alternative exists for ELF platforms such as GNU/Linux, because ELF
+ symbol interposition allows symbols defined in the shared library to be
+ overridden by symbols with the same name that appear earlier in the
+ runtime search path. This means you only need to recompile the functions
+ that are affected by the annotation macros, which can be done by
+ recompiling individual files.
+ Annotating <code class="code">std::string</code> and <code class="code">std::wstring</code>
+ reference counting can be done by disabling extern templates (by defining
+ <code class="code">_GLIBCXX_EXTERN_TEMPLATE=-1</code>) or by rebuilding the
+ <code class="filename">src/string-inst.cc</code> file.
Annotating the remaining atomic operations (at the time of writing these
- are in <code class="code">ios_base::Init::~Init</code>, <code class="code">locale::_Impl</code> and
- <code class="code">locale::facet</code>) requires rebuilding the <code class="code">.so</code> file.
+ are in <code class="code">ios_base::Init::~Init</code>, <code class="code">locale::_Impl</code>,
+ <code class="code">locale::facet</code> and <code class="code">thread::_M_start_thread</code>)
+ requires rebuilding the relevant source files.
</p><p>
The approach described above is known to work with the following race
detection tools:
OpenPOWER on IntegriCloud