<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gcc.git/libstdc++-v3/src/c++11/debug.cc, branch trunk</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/'/>
<entry>
<title>libstdc++: Make debug iterator pointer sequence const [PR116369]</title>
<updated>2025-07-08T05:04:00+00:00</updated>
<author>
<name>François Dumont</name>
<email>frs.dumont@gmail.com</email>
</author>
<published>2025-03-27T18:02:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=2fd6f42c17a8040dbd3460ca34d93695dacf8575'/>
<id>2fd6f42c17a8040dbd3460ca34d93695dacf8575</id>
<content type='text'>
In revision a35dd276cbf6236e08bcf6e56e62c2be41cf6e3c the debug sequence
have been made mutable to allow attach iterators to const containers.
This change completes this fix by also declaring debug unordered container
members mutable.

Additionally the debug iterator sequence is now a pointer-to-const and so
_Safe_sequence_base _M_attach and all other methods are const qualified.
Not-const methods exported are preserved for abi backward compatibility.

libstdc++-v3/ChangeLog:

	PR c++/116369
	* config/abi/pre/gnu-versioned-namespace.ver: Use new const qualified symbols.
	* config/abi/pre/gnu.ver: Add new const qualified symbols.
	* include/debug/safe_base.h
	(_Safe_iterator_base::_M_sequence): Declare as pointer-to-const.
	(_Safe_iterator_base::_M_attach, _M_attach_single): New, take pointer-to-const
	_Safe_sequence_base.
	(_Safe_sequence_base::_M_detach_all, _M_detach_singular, _M_revalidate_singular)
	(_M_swap, _M_get_mutex): New, const qualified.
	(_Safe_sequence_base::_M_attach, _M_attach_single, _M_detach, _M_detach_single):
	const qualify.
	* include/debug/safe_container.h (_Safe_container&lt;&gt;::_M_cont): Add const qualifier.
	(_Safe_container&lt;&gt;::_M_swap_base): New.
	(_Safe_container(_Safe_container&amp;&amp;, const _Alloc&amp;, std::false_type)):
	Adapt to use latter.
	(_Safe_container&lt;&gt;::operator=(_Safe_container&amp;&amp;)): Likewise.
	(_Safe_container&lt;&gt;::_M_swap): Likewise and take parameter as const reference.
	* include/debug/safe_unordered_base.h
	(_Safe_local_iterator_base::_M_safe_container): New.
	(_Safe_local_iterator_base::_Safe_local_iterator_base): Take
	_Safe_unordered_container_base as pointer-to-const.
	(_Safe_unordered_container_base::_M_attach, _M_attach_single): New, take
	container as _Safe_unordered_container_base pointer-to-const.
	(_Safe_unordered_container_base::_M_local_iterators, _M_const_local_iterators):
	Add mutable.
	(_Safe_unordered_container_base::_M_detach_all, _M_swap): New, const qualify.
	(_Safe_unordered_container_base::_M_attach_local, _M_attach_local_single)
	(_M_detach_local, _M_detach_local_single): Add const qualifier.
	* include/debug/safe_unordered_container.h (_Safe_unordered_container::_M_self()): New.
	* include/debug/safe_unordered_container.tcc
	(_Safe_unordered_container::_M_invalidate_if, _M_invalidated_local_if): Use latter.
	* include/debug/safe_iterator.h (_Safe_iterator&lt;&gt;::_M_attach, _M_attach_single):
	Take _Safe_sequence_base as pointer-to-const.
	(_Safe_iterator&lt;&gt;::_M_get_sequence): Add const_cast and comment about it.
	* include/debug/safe_local_iterator.h (_Safe_local_iterator&lt;&gt;): Replace usages
	of _M_sequence member by _M_safe_container().
	(_Safe_local_iterator&lt;&gt;::_M_attach, _M_attach_single): Take
	_Safe_unordered_container_base as pointer-to-const.
	(_Safe_local_iterator&lt;&gt;::_M_get_sequence): Rename into...
	(_Safe_local_iterator&lt;&gt;::_M_get_ucontainer): ...this. Add necessary const_cast and
	comment to explain it.
	(_Safe_local_iterator&lt;&gt;::_M_is_begin, _M_is_end): Adapt.
	* include/debug/safe_local_iterator.tcc: Adapt.
	* include/debug/safe_sequence.h
	(_Safe_sequence&lt;&gt;::_M_invalidate_if, _M_transfer_from_if): Add const qualifier.
	* include/debug/safe_sequence.tcc: Adapt.
	* include/debug/deque (std::__debug::deque::erase): Adapt to use new const
	qualified methods.
	* include/debug/formatter.h: Adapt.
	* include/debug/forward_list (_Safe_forward_list::_M_this): Add const
	qualification and return pointer for consistency with 'this' keyword.
	(_Safe_forward_list::_M_swap_aux): Rename into...
	(_Safe_forward_list::_S_swap_aux): ...this and take sequence as const reference.
	(forward_list&lt;&gt;::resize): Adapt to use const methods.
	* include/debug/list (list&lt;&gt;::resize): Likewise.
	* src/c++11/debug.cc: Adapt to const qualification.
	* testsuite/util/testsuite_containers.h
	(forward_members_unordered::forward_members_unordered): Add check on local_iterator
	conversion to const_local_iterator.
	(forward_members::forward_members): Add check on iterator conversion to
	const_iterator.
	* testsuite/23_containers/unordered_map/const_container.cc: New test case.
	* testsuite/23_containers/unordered_multimap/const_container.cc: New test case.
	* testsuite/23_containers/unordered_multiset/const_container.cc: New test case.
	* testsuite/23_containers/unordered_set/const_container.cc: New test case.
	* testsuite/23_containers/vector/debug/mutex_association.cc: Adapt.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In revision a35dd276cbf6236e08bcf6e56e62c2be41cf6e3c the debug sequence
have been made mutable to allow attach iterators to const containers.
This change completes this fix by also declaring debug unordered container
members mutable.

Additionally the debug iterator sequence is now a pointer-to-const and so
_Safe_sequence_base _M_attach and all other methods are const qualified.
Not-const methods exported are preserved for abi backward compatibility.

libstdc++-v3/ChangeLog:

	PR c++/116369
	* config/abi/pre/gnu-versioned-namespace.ver: Use new const qualified symbols.
	* config/abi/pre/gnu.ver: Add new const qualified symbols.
	* include/debug/safe_base.h
	(_Safe_iterator_base::_M_sequence): Declare as pointer-to-const.
	(_Safe_iterator_base::_M_attach, _M_attach_single): New, take pointer-to-const
	_Safe_sequence_base.
	(_Safe_sequence_base::_M_detach_all, _M_detach_singular, _M_revalidate_singular)
	(_M_swap, _M_get_mutex): New, const qualified.
	(_Safe_sequence_base::_M_attach, _M_attach_single, _M_detach, _M_detach_single):
	const qualify.
	* include/debug/safe_container.h (_Safe_container&lt;&gt;::_M_cont): Add const qualifier.
	(_Safe_container&lt;&gt;::_M_swap_base): New.
	(_Safe_container(_Safe_container&amp;&amp;, const _Alloc&amp;, std::false_type)):
	Adapt to use latter.
	(_Safe_container&lt;&gt;::operator=(_Safe_container&amp;&amp;)): Likewise.
	(_Safe_container&lt;&gt;::_M_swap): Likewise and take parameter as const reference.
	* include/debug/safe_unordered_base.h
	(_Safe_local_iterator_base::_M_safe_container): New.
	(_Safe_local_iterator_base::_Safe_local_iterator_base): Take
	_Safe_unordered_container_base as pointer-to-const.
	(_Safe_unordered_container_base::_M_attach, _M_attach_single): New, take
	container as _Safe_unordered_container_base pointer-to-const.
	(_Safe_unordered_container_base::_M_local_iterators, _M_const_local_iterators):
	Add mutable.
	(_Safe_unordered_container_base::_M_detach_all, _M_swap): New, const qualify.
	(_Safe_unordered_container_base::_M_attach_local, _M_attach_local_single)
	(_M_detach_local, _M_detach_local_single): Add const qualifier.
	* include/debug/safe_unordered_container.h (_Safe_unordered_container::_M_self()): New.
	* include/debug/safe_unordered_container.tcc
	(_Safe_unordered_container::_M_invalidate_if, _M_invalidated_local_if): Use latter.
	* include/debug/safe_iterator.h (_Safe_iterator&lt;&gt;::_M_attach, _M_attach_single):
	Take _Safe_sequence_base as pointer-to-const.
	(_Safe_iterator&lt;&gt;::_M_get_sequence): Add const_cast and comment about it.
	* include/debug/safe_local_iterator.h (_Safe_local_iterator&lt;&gt;): Replace usages
	of _M_sequence member by _M_safe_container().
	(_Safe_local_iterator&lt;&gt;::_M_attach, _M_attach_single): Take
	_Safe_unordered_container_base as pointer-to-const.
	(_Safe_local_iterator&lt;&gt;::_M_get_sequence): Rename into...
	(_Safe_local_iterator&lt;&gt;::_M_get_ucontainer): ...this. Add necessary const_cast and
	comment to explain it.
	(_Safe_local_iterator&lt;&gt;::_M_is_begin, _M_is_end): Adapt.
	* include/debug/safe_local_iterator.tcc: Adapt.
	* include/debug/safe_sequence.h
	(_Safe_sequence&lt;&gt;::_M_invalidate_if, _M_transfer_from_if): Add const qualifier.
	* include/debug/safe_sequence.tcc: Adapt.
	* include/debug/deque (std::__debug::deque::erase): Adapt to use new const
	qualified methods.
	* include/debug/formatter.h: Adapt.
	* include/debug/forward_list (_Safe_forward_list::_M_this): Add const
	qualification and return pointer for consistency with 'this' keyword.
	(_Safe_forward_list::_M_swap_aux): Rename into...
	(_Safe_forward_list::_S_swap_aux): ...this and take sequence as const reference.
	(forward_list&lt;&gt;::resize): Adapt to use const methods.
	* include/debug/list (list&lt;&gt;::resize): Likewise.
	* src/c++11/debug.cc: Adapt to const qualification.
	* testsuite/util/testsuite_containers.h
	(forward_members_unordered::forward_members_unordered): Add check on local_iterator
	conversion to const_local_iterator.
	(forward_members::forward_members): Add check on iterator conversion to
	const_iterator.
	* testsuite/23_containers/unordered_map/const_container.cc: New test case.
	* testsuite/23_containers/unordered_multimap/const_container.cc: New test case.
	* testsuite/23_containers/unordered_multiset/const_container.cc: New test case.
	* testsuite/23_containers/unordered_set/const_container.cc: New test case.
	* testsuite/23_containers/vector/debug/mutex_association.cc: Adapt.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright years.</title>
<updated>2025-01-02T10:59:57+00:00</updated>
<author>
<name>Jakub Jelinek</name>
<email>jakub@redhat.com</email>
</author>
<published>2025-01-02T10:59:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=6441eb6dc020faae0672ea724dfdb38c6a9bf6a1'/>
<id>6441eb6dc020faae0672ea724dfdb38c6a9bf6a1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: Use noexcept insted of throw() in src/c++11/debug.cc</title>
<updated>2024-08-23T12:18:19+00:00</updated>
<author>
<name>Jonathan Wakely</name>
<email>jwakely@redhat.com</email>
</author>
<published>2024-08-21T11:22:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=9115593d8517d210ffe7da2c8ec786342381e471'/>
<id>9115593d8517d210ffe7da2c8ec786342381e471</id>
<content type='text'>
libstdc++-v3/ChangeLog:

	* src/c++11/debug.cc: Replace throw() with noexcept.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
libstdc++-v3/ChangeLog:

	* src/c++11/debug.cc: Replace throw() with noexcept.
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: [_GLIBCXX_DEBUG] Fix assignment of value-initialized iterator [PR112477]</title>
<updated>2024-01-11T18:29:37+00:00</updated>
<author>
<name>François Dumont</name>
<email>fdumont@gcc.gnu.org</email>
</author>
<published>2024-01-10T18:06:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=46afbeb81414302829fbf10c107e5466a3cf44d7'/>
<id>46afbeb81414302829fbf10c107e5466a3cf44d7</id>
<content type='text'>
Now that _M_Detach do not reset iterator _M_version value we need to reset it when
the iterator is attached to a new sequence, even if this sequencer is null when
assigning a value-initialized iterator. In this case _M_version shall be resetted to 0.

libstdc++-v3/ChangeLog:

	PR libstdc++/112477
	* src/c++11/debug.cc
	(_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
	sequence.
	(_Safe_iterator_base::_M_attach_single): Likewise.
	(_Safe_local_iterator_base::_M_attach): Likewise.
	(_Safe_local_iterator_base::_M_attach_single): Likewise.
	* testsuite/23_containers/map/debug/112477.cc: New test case.

Reviewed-by: Jonathan Wakely &lt;jwakely@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that _M_Detach do not reset iterator _M_version value we need to reset it when
the iterator is attached to a new sequence, even if this sequencer is null when
assigning a value-initialized iterator. In this case _M_version shall be resetted to 0.

libstdc++-v3/ChangeLog:

	PR libstdc++/112477
	* src/c++11/debug.cc
	(_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
	sequence.
	(_Safe_iterator_base::_M_attach_single): Likewise.
	(_Safe_local_iterator_base::_M_attach): Likewise.
	(_Safe_local_iterator_base::_M_attach_single): Likewise.
	* testsuite/23_containers/map/debug/112477.cc: New test case.

Reviewed-by: Jonathan Wakely &lt;jwakely@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright years.</title>
<updated>2024-01-03T11:19:35+00:00</updated>
<author>
<name>Jakub Jelinek</name>
<email>jakub@redhat.com</email>
</author>
<published>2024-01-03T11:19:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=a945c346f57ba40fc80c14ac59be0d43624e559d'/>
<id>a945c346f57ba40fc80c14ac59be0d43624e559d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: Remove unconditional use of atomics in Debug Mode</title>
<updated>2023-09-11T16:07:24+00:00</updated>
<author>
<name>Jonathan Wakely</name>
<email>jwakely@redhat.com</email>
</author>
<published>2023-09-11T15:42:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=4a2766ed00a47904dc8b85bf0538aa116d8e658b'/>
<id>4a2766ed00a47904dc8b85bf0538aa116d8e658b</id>
<content type='text'>
The fix for PR 91910 (r10-3426-gf7a3a382279585) introduced unconditional
uses of atomics into src/c++11/debug.cc, which causes linker errors for
arm4t where GCC emits an unresolved reference to __sync_synchronize.

By making the uses of atomics depend on _GLIBCXX_HAS_GTHREADS we can
avoid those unconditional references to __sync_synchronize for targets
where the atomics are unnecessary. As a minor performance optimization
we can also check the __gnu_cxx::__is_single_threaded function to avoid
atomics for single-threaded programs even where they don't cause linker
errors.

libstdc++-v3/ChangeLog:

	* src/c++11/debug.cc (acquire_sequence_ptr_for_lock): New
	function.
	(reset_sequence_ptr): New function.
	(_Safe_iterator_base::_M_detach)
	(_Safe_local_iterator_base::_M_detach): Replace bare atomic_load
	with acquire_sequence_ptr_for_lock.
	(_Safe_iterator_base::_M_reset): Replace bare atomic_store with
	reset_sequence_ptr.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The fix for PR 91910 (r10-3426-gf7a3a382279585) introduced unconditional
uses of atomics into src/c++11/debug.cc, which causes linker errors for
arm4t where GCC emits an unresolved reference to __sync_synchronize.

By making the uses of atomics depend on _GLIBCXX_HAS_GTHREADS we can
avoid those unconditional references to __sync_synchronize for targets
where the atomics are unnecessary. As a minor performance optimization
we can also check the __gnu_cxx::__is_single_threaded function to avoid
atomics for single-threaded programs even where they don't cause linker
errors.

libstdc++-v3/ChangeLog:

	* src/c++11/debug.cc (acquire_sequence_ptr_for_lock): New
	function.
	(reset_sequence_ptr): New function.
	(_Safe_iterator_base::_M_detach)
	(_Safe_local_iterator_base::_M_detach): Replace bare atomic_load
	with acquire_sequence_ptr_for_lock.
	(_Safe_iterator_base::_M_reset): Replace bare atomic_store with
	reset_sequence_ptr.
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: Move __glibcxx_assert_fail to its own file</title>
<updated>2023-09-11T16:07:24+00:00</updated>
<author>
<name>Jonathan Wakely</name>
<email>jwakely@redhat.com</email>
</author>
<published>2023-09-11T14:58:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=c7db9000fa7caceadb4e72dcc6226abebf7a6239'/>
<id>c7db9000fa7caceadb4e72dcc6226abebf7a6239</id>
<content type='text'>
This avoids a dependency on the other symbols in src/c++11/debug.o when
linking statically to libstdc++.a without using -Wl,--gc-sections.

libstdc++-v3/ChangeLog:

	* src/c++11/Makefile.am: Add new file.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/debug.cc (__glibcxx_assert_fail): Move to ...
	* src/c++11/assert_fail.cc: New file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This avoids a dependency on the other symbols in src/c++11/debug.o when
linking statically to libstdc++.a without using -Wl,--gc-sections.

libstdc++-v3/ChangeLog:

	* src/c++11/Makefile.am: Add new file.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/debug.cc (__glibcxx_assert_fail): Move to ...
	* src/c++11/assert_fail.cc: New file.
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: [_GLIBCXX_DEBUG] Remove useless constructor checks</title>
<updated>2023-01-23T18:11:54+00:00</updated>
<author>
<name>François Dumont</name>
<email>fdumont@gcc.gnu.org</email>
</author>
<published>2023-01-23T05:26:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=c3c6c307792026705fe0398f5ee399f7668fed1b'/>
<id>c3c6c307792026705fe0398f5ee399f7668fed1b</id>
<content type='text'>
Creating a safe iterator from a normal iterator is done within the library where we
already know that it is done correctly. The rare situation where a user would use safe
iterators for his own purpose is non-Standard code so outside _GLIBCXX_DEBUG scope. For
those reasons the __msg_init_singular is useless and can be removed.

Additionally in the copy constructor used for post-increment and post-decrement operators
the __msg_init_copy_singular check can also be ommitted because of the preliminary
__msg_bad_incr and __msg_bad_decr checks.

libstdc++-v3/ChangeLog:

	* include/debug/safe_iterator.h (_Safe_iterator&lt;&gt;::_Unchecked): New.
	(_Safe_iterator(const _Safe_iterator&amp;, _Unchecked)): New.
	(_Safe_iterator::operator++(int)): Use latter.
	(_Safe_iterator::operator--(int)): Likewise.
	(_Safe_iterator(_Iterator, const _Safe_sequence_base*)): Remove !_M_insular()
	check.
	* include/debug/safe_local_iterator.h (_Safe_local_iterator&lt;&gt;::_Unchecked):
	New.
	(_Safe_local_iterator(const _Safe_local_iterator&amp;, _Unchecked)): New.
	(_Safe_local_iterator::operator++(int)): Use latter.
	* src/c++11/debug.cc (_S_debug_messages): Add as comment the _Debug_msg_id
	entry associated to the array entry.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Creating a safe iterator from a normal iterator is done within the library where we
already know that it is done correctly. The rare situation where a user would use safe
iterators for his own purpose is non-Standard code so outside _GLIBCXX_DEBUG scope. For
those reasons the __msg_init_singular is useless and can be removed.

Additionally in the copy constructor used for post-increment and post-decrement operators
the __msg_init_copy_singular check can also be ommitted because of the preliminary
__msg_bad_incr and __msg_bad_decr checks.

libstdc++-v3/ChangeLog:

	* include/debug/safe_iterator.h (_Safe_iterator&lt;&gt;::_Unchecked): New.
	(_Safe_iterator(const _Safe_iterator&amp;, _Unchecked)): New.
	(_Safe_iterator::operator++(int)): Use latter.
	(_Safe_iterator::operator--(int)): Likewise.
	(_Safe_iterator(_Iterator, const _Safe_sequence_base*)): Remove !_M_insular()
	check.
	* include/debug/safe_local_iterator.h (_Safe_local_iterator&lt;&gt;::_Unchecked):
	New.
	(_Safe_local_iterator(const _Safe_local_iterator&amp;, _Unchecked)): New.
	(_Safe_local_iterator::operator++(int)): Use latter.
	* src/c++11/debug.cc (_S_debug_messages): Add as comment the _Debug_msg_id
	entry associated to the array entry.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright years.</title>
<updated>2023-01-16T10:52:17+00:00</updated>
<author>
<name>Jakub Jelinek</name>
<email>jakub@redhat.com</email>
</author>
<published>2023-01-16T10:50:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=83ffe9cde7fe0b4deb0d1b54175fd9b19c38179c'/>
<id>83ffe9cde7fe0b4deb0d1b54175fd9b19c38179c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>libstdc++: Pass error handler to libbacktrace functions</title>
<updated>2022-12-07T19:54:45+00:00</updated>
<author>
<name>Jonathan Wakely</name>
<email>jwakely@redhat.com</email>
</author>
<published>2022-11-30T12:32:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/gcc.git/commit/?id=3ad0f470c16d5528a5283060b007f8b419c33c92'/>
<id>3ad0f470c16d5528a5283060b007f8b419c33c92</id>
<content type='text'>
Also pass threaded=1 to __glibcxx_backtrace_create_state and remove some
of the namespace scope declarations in the header.

Co-authored-by: François Dumont &lt;frs.dumont@gmail.com&gt;

libstdc++-v3/ChangeLog:

	* include/debug/formatter.h [_GLIBCXX_DEBUG_BACKTRACE]
	(_Error_formatter::_Error_formatter): Pass error handler to
	__glibcxx_backtrace_create_state. Pass 1 for threaded argument.
	(_Error_formatter::_S_err): Define empty function.
	* src/c++11/debug.cc (_Error_formatter::_M_error): Pass error
	handler to __glibcxx_backtrace_full.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also pass threaded=1 to __glibcxx_backtrace_create_state and remove some
of the namespace scope declarations in the header.

Co-authored-by: François Dumont &lt;frs.dumont@gmail.com&gt;

libstdc++-v3/ChangeLog:

	* include/debug/formatter.h [_GLIBCXX_DEBUG_BACKTRACE]
	(_Error_formatter::_Error_formatter): Pass error handler to
	__glibcxx_backtrace_create_state. Pass 1 for threaded argument.
	(_Error_formatter::_S_err): Define empty function.
	* src/c++11/debug.cc (_Error_formatter::_M_error): Pass error
	handler to __glibcxx_backtrace_full.
</pre>
</div>
</content>
</entry>
</feed>
