[PATCH] libstdc++: Make debug iterator pointer sequence const [PR116369]

François Dumont frs.dumont@gmail.com
Mon May 12 17:03:31 GMT 2025


Hi

As back to stage 1is it ok to commit this change ?

François


On 31/03/2025 22:20, François Dumont wrote:
> Hi
>
> Following this previous patch 
> https://gcc.gnu.org/pipermail/libstdc++/2024-August/059418.html I've 
> completed it for the _Safe_unordered_container_base type and 
> implemented the rest of the change to store the safe iterator sequence 
> as a pointer-to-const.
>
>     libstdc++: Make debug iterator pointer sequence const [PR116369]
>
>     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.
>     Symbols export are maintained thanks to __asm directives.
>
>     libstdc++-v3/ChangeLog:
>
>             PR c++/116369
>             * include/debug/safe_base.h
>             (_Safe_iterator_base::_M_sequence): Declare as 
> pointer-to-const.
>             (_Safe_iterator_base::_M_attach, _M_attach_single): Take 
> pointer-to-const
>             _Safe_sequence_base. Add __asm directive to preserve name 
> mangling.
>             (_Safe_sequence_base::_M_detach_all, _M_detach_singular, 
> _M_revalidate_singular)
>             (_M_swap, _M_get_mutex, _M_attach, _M_attach_single, 
> _M_detash, _M_detash_single):
>             Add const qualifier and __asm directive to preserve name 
> mangling.
>             * include/debug/safe_unordered_base.h
>             (_Safe_local_iterator_base::_M_get_container): Make public 
> and return
>             _Safe_unordered_container_base as pointer-to-const.
> (_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): Take
>             _Safe_unordered_container_base as pointer-to-const. Add 
> __asm directive to preserve
>             name mangling.
>             (_Safe_unordered_container_base::_M_local_iterators, 
> _M_const_local_iterators):
>             Add mutable.
>             (_Safe_unordered_container_base::_M_detach_all, _M_swap, 
> _M_attach_local)
>             (_M_attach_local_single, _M_detach_loca, 
> _M_detach_local_single): Add const
>             qualifier and __asm directive to preserve name mangling.
>             * include/debug/safe_iterator.h 
> (_Safe_iterator<>::_M_attach, _M_attach_single):
>             Take _Safe_sequence_base as pointer-to-const.
>             (_Safe_iterator<>::_M_get_sequence): Add const_cast and 
> comment about it.
>             * include/debug/safe_local_iterator.h 
> (_Safe_local_iterator<>): Replace usages
>             of _M_sequence member by _M_get_container().
>             (_Safe_local_iterator<>::_M_attach, _M_attach_single): Take
>             _Safe_unordered_container_base as pointer-to-const.
>             (_Safe_local_iterator<>::_M_get_sequence): Rename into...
>             (_Safe_local_iterator<>::_M_get_ucontainer): ...this. Add 
> necessary const_cast and
>             comment to explain it.
>             * include/debug/safe_sequence.h
>             (_Safe_sequence<>::_M_invalidate_if, _M_transfer_from_if): 
> Add const qualifier.
>             * include/debug/safe_sequence.tcc: Adapt.
>             * 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.
>
> Also available as a PR
>
> https://forge.sourceware.org/gcc/gcc-TEST/pulls/47
>
> Tested under Linux x64.
>
> Ok to commit ?
>
> François


More information about the Libstdc++ mailing list