diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-01-17 23:50:28 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-01-17 23:50:28 +0000 |
commit | ddd674b8b37f3143894277cb635ac2f07604ddf0 (patch) | |
tree | ccbba16db0b6c1f58a97ad335c7313202c81120a /libstdc++-v3/doc/html/manual/debug.html | |
parent | cd1be69fee37bfb5dcf849583986cd12b1ea9107 (diff) | |
download | ppe42-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.html | 24 |
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: |