Cover Letter Detail
Show a cover letter.
GET /api/covers/2226674/?format=api
{ "id": 2226674, "url": "http://patchwork.ozlabs.org/api/covers/2226674/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/cover/bmm.hhuo67grsc.gcc.gcc-TEST.fdumont.47.1.0@forge-stage.sourceware.org/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<bmm.hhuo67grsc.gcc.gcc-TEST.fdumont.47.1.0@forge-stage.sourceware.org>", "list_archive_url": null, "date": "2026-04-22T18:14:31", "name": "[v1,0/2] libstdc++: Make debug iterator pointer sequence const [PR116369]", "submitter": { "id": 93220, "url": "http://patchwork.ozlabs.org/api/people/93220/?format=api", "name": "François Dumont via Sourceware Forge", "email": "forge-bot+fdumont@forge-stage.sourceware.org" }, "mbox": "http://patchwork.ozlabs.org/project/gcc/cover/bmm.hhuo67grsc.gcc.gcc-TEST.fdumont.47.1.0@forge-stage.sourceware.org/mbox/", "series": [ { "id": 501071, "url": "http://patchwork.ozlabs.org/api/series/501071/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=501071", "date": "2026-04-22T18:14:31", "name": "libstdc++: Make debug iterator pointer sequence const [PR116369]", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/501071/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2226674/comments/", "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org", "sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org", "server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g16wj3Yjgz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 04:20:53 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id A5F3D48FEC09\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 18:20:51 +0000 (GMT)", "from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id 67A0B4D8D1E5\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:16:10 +0000 (GMT)", "from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id 8963B4342F\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:16:03 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org A5F3D48FEC09", "OpenDKIM Filter v2.11.0 sourceware.org 67A0B4D8D1E5" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 67A0B4D8D1E5", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 67A0B4D8D1E5", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776881770; cv=none;\n b=lcj5CpgCBu1YnJFDj0eApVB437R0ARTqFiXJan3txvDoc1Dx/giQIMS9ff9ojEDVvqmDOfkmZ71uPEqQwAQyvbMIpl7CvyGFcGtqClMo3vpihH8SqOZUKE9pLe092WL1eSA0yKu3RTC8nw7fIjWN3eaHHhk9pG7iEf8AE/upWjI=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776881770; c=relaxed/simple;\n bh=DPmVpQ5oj1BMGhJRrQ9OXMGAvS2KQ/sXnVh6OO1To1I=;\n h=From:Date:Subject:MIME-Version:To:Message-ID;\n b=EsG6FSfb8j3rz98Bv+fin+d4Q5UGelVRwGN+qV4PUh0nqzoGD/3Zyd4dRSQQ++dX4sfFHE9/gE42RWEse+jqpdtHL7nEF+EyIroC7aE2oMpN/NE2M79I59WNawY45dSVx3X8Sny9SKDt3Xl64zCxSJMkHG3ZfXBqfnf+yWuk6sQ=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "From": "=?utf-8?q?Fran=C3=A7ois_Dumont_via_Sourceware_Forge?=\n <forge-bot+fdumont@forge-stage.sourceware.org>", "Date": "Wed, 22 Apr 2026 18:14:31 +0000", "Subject": "[PATCH v1 0/2] libstdc++: Make debug iterator pointer sequence const\n [PR116369]", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>", "Message-ID": "\n <bmm.hhuo67grsc.gcc.gcc-TEST.fdumont.47.1.0@forge-stage.sourceware.org>", "X-Mailer": "batrachomyomachia", "X-Pull-Request-Organization": "gcc", "X-Pull-Request-Repository": "gcc-TEST", "X-Pull-Request": "https://forge.sourceware.org/gcc/gcc-TEST/pulls/47", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Reply-To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>,\n fdumont@gcc.gnu.org", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "Hi gcc-patches mailing list,\nFrançois Dumont via Sourceware Forge <forge-bot+fdumont@forge-stage.sourceware.org> has requested that the following forgejo pull request\nbe published on the mailing list.\n\nCreated on: 2025-03-31 19:58:27+00:00\nLatest update: 2025-08-14 09:27:03+00:00\nChanges: 0 changed files, 0 additions, 0 deletions\nHead revision: fdumont/gcc-TEST ref refs/pull/47/head commit cbedd5f8679310d76c68edb1a00ad63f0882bded\nBase revision: gcc/gcc-TEST ref trunk commit 988e87b66882875b14a6cab11c17516863c74a63 r16-1893-g988e87b6688287\nMerge base: 988e87b66882875b14a6cab11c17516863c74a63\nFull diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/47.diff\nDiscussion: https://forge.sourceware.org/gcc/gcc-TEST/pulls/47\nRequested Reviewers:\n\nIn revision a35dd276cb the debug sequence\nhave been made mutable to allow attach iterators to const containers.\nThis change completes this fix by also declaring debug unordered container\nmembers mutable.\n\nAdditionally the debug iterator sequence is now a pointer-to-const and so\n_Safe_sequence_base _M_attach and all other methods are const qualified.\nNot-const methods exported are preserved for abi backward compatibility. The\nnew const methods are calling the latter thanks to a safe use of const_cast.\n\nlibstdc++-v3/ChangeLog:\n\n\tPR c++/116369\n\t* include/debug/safe_base.h\n\t(_Safe_iterator_base::_M_sequence): Declare as pointer-to-const.\n\t(_Safe_iterator_base::_M_attach, _M_attach_single): New, take pointer-to-const\n\t_Safe_sequence_base.\n\t(_Safe_sequence_base::_M_detach_all, _M_detach_singular, _M_revalidate_singular)\n\t(_M_swap, _M_get_mutex): New, const qualified.\n\t(_Safe_sequence_base::_M_attach, _M_attach_single, _M_detach, _M_detach_single):\n\tconst qualify.\n\t* include/debug/safe_container.h (_Safe_container<>::_M_cont): Add const qualifier.\n\t(_Safe_container<>::_M_swap_base): New.\n\t(_Safe_container(_Safe_container&&, const _Alloc&, std::false_type)):\n\tAdapt to use latter.\n\t(_Safe_container<>::operator=(_Safe_container&&)): Likewise.\n\t(_Safe_container<>::_M_swap): Likewise and take parameter as const reference.\n\t* include/debug/safe_unordered_base.h\n\t(_Safe_local_iterator_base::_M_safe_container): New.\n\t(_Safe_local_iterator_base::_Safe_local_iterator_base): Take\n\t_Safe_unordered_container_base as pointer-to-const.\n\t(_Safe_unordered_container_base::_M_attach, _M_attach_single): New, take\n\tcontainer as _Safe_unordered_container_base pointer-to-const.\n\t(_Safe_unordered_container_base::_M_local_iterators, _M_const_local_iterators):\n\tAdd mutable.\n\t(_Safe_unordered_container_base::_M_detach_all, _M_swap): New, const qualify.\n\t(_Safe_unordered_container_base::_M_attach_local, _M_attach_local_single)\n\t(_M_detach_local, _M_detach_local_single): Add const qualifier.\n\t* include/debug/safe_iterator.h (_Safe_iterator<>::_M_attach, _M_attach_single):\n\tTake _Safe_sequence_base as pointer-to-const.\n\t(_Safe_iterator<>::_M_get_sequence): Add const_cast and comment about it.\n\t* include/debug/safe_local_iterator.h (_Safe_local_iterator<>): Replace usages\n\tof _M_sequence member by _M_safe_container().\n\t(_Safe_local_iterator<>::_M_attach, _M_attach_single): Take\n\t_Safe_unordered_container_base as pointer-to-const.\n\t(_Safe_local_iterator<>::_M_get_sequence): Rename into...\n\t(_Safe_local_iterator<>::_M_get_ucontainer): ...this. Add necessary const_cast and\n\tcomment to explain it.\n\t(_Safe_local_iterator<>::_M_is_begin, _M_is_end): Adapt.\n\t* include/debug/safe_local_iterator.tcc: Adapt.\n\t* include/debug/safe_sequence.h\n\t(_Safe_sequence<>::_M_invalidate_if, _M_transfer_from_if): Add const qualifier.\n\t* include/debug/safe_sequence.tcc: Adapt.\n\n\t* include/debug/deque (std::__debug::deque::erase): Adapt to use new const\n\tqualified methods.\n\t* include/debug/formatter.h: Adapt.\n\t* include/debug/forward_list (_Safe_forward_list::_M_this): Add const\n\tqualification.\n\t(_Safe_forward_list::_M_swap_aux): Rename into...\n\t(_Safe_forward_list::_S_swap_aux): ...this and take sequence as const reference.\n\t(forward_list<>::resize): Adapt to use const methods.\n\t* include/debug/list (list<>::resize): Likewise.\n\t* src/c++11/debug.cc: Adapt to const qualification.\n\t* testsuite/util/testsuite_containers.h\n\t(forward_members_unordered::forward_members_unordered): Add check on local_iterator\n\tconversion to const_local_iterator.\n\t(forward_members::forward_members): Add check on iterator conversion to\n\tconst_iterator.\n\t* testsuite/23_containers/unordered_map/const_container.cc: New test case.\n\t* testsuite/23_containers/unordered_multimap/const_container.cc: New test case.\n\t* testsuite/23_containers/unordered_multiset/const_container.cc: New test case.\n\t* testsuite/23_containers/unordered_set/const_container.cc: New test case.\n\t* testsuite/23_containers/vector/debug/mutex_association.cc: Adapt.\n\n\nChanged files:\n- A: libstdc++-v3/testsuite/23_containers/unordered_map/const_container.cc\n- A: libstdc++-v3/testsuite/23_containers/unordered_multimap/const_container.cc\n- A: libstdc++-v3/testsuite/23_containers/unordered_multiset/const_container.cc\n- A: libstdc++-v3/testsuite/23_containers/unordered_set/const_container.cc\n- M: libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver\n- M: libstdc++-v3/config/abi/pre/gnu.ver\n- M: libstdc++-v3/include/debug/deque\n- M: libstdc++-v3/include/debug/formatter.h\n- M: libstdc++-v3/include/debug/forward_list\n- M: libstdc++-v3/include/debug/list\n- M: libstdc++-v3/include/debug/safe_base.h\n- M: libstdc++-v3/include/debug/safe_container.h\n- M: libstdc++-v3/include/debug/safe_iterator.h\n- M: libstdc++-v3/include/debug/safe_local_iterator.h\n- M: libstdc++-v3/include/debug/safe_local_iterator.tcc\n- M: libstdc++-v3/include/debug/safe_sequence.h\n- M: libstdc++-v3/include/debug/safe_sequence.tcc\n- M: libstdc++-v3/include/debug/safe_unordered_base.h\n- M: libstdc++-v3/include/debug/safe_unordered_container.h\n- M: libstdc++-v3/include/debug/safe_unordered_container.tcc\n- M: libstdc++-v3/src/c++11/debug.cc\n- M: libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc\n- M: libstdc++-v3/testsuite/util/testsuite_containers.h\n\n\nFrançois Dumont (2):\n libstdc++: Make debug iterator pointer sequence const [PR116369]\n libstdc++: Fix const qualification of _GLIBCXX_DEBUG mode\n\n .../abi/pre/gnu-versioned-namespace.ver | 18 +-\n libstdc++-v3/config/abi/pre/gnu.ver | 14 ++\n libstdc++-v3/include/debug/deque | 5 +-\n libstdc++-v3/include/debug/formatter.h | 10 +-\n libstdc++-v3/include/debug/forward_list | 71 +++----\n libstdc++-v3/include/debug/list | 15 +-\n libstdc++-v3/include/debug/safe_base.h | 77 ++++++--\n libstdc++-v3/include/debug/safe_container.h | 25 ++-\n libstdc++-v3/include/debug/safe_iterator.h | 14 +-\n .../include/debug/safe_local_iterator.h | 102 +++++-----\n .../include/debug/safe_local_iterator.tcc | 4 +-\n libstdc++-v3/include/debug/safe_sequence.h | 9 +-\n libstdc++-v3/include/debug/safe_sequence.tcc | 6 +-\n .../include/debug/safe_unordered_base.h | 67 +++++--\n .../include/debug/safe_unordered_container.h | 4 +\n .../debug/safe_unordered_container.tcc | 4 +-\n libstdc++-v3/src/c++11/debug.cc | 174 ++++++++++++++----\n .../unordered_map/const_container.cc | 18 ++\n .../unordered_multimap/const_container.cc | 21 +++\n .../unordered_multiset/const_container.cc | 14 ++\n .../unordered_set/const_container.cc | 13 ++\n .../vector/debug/mutex_association.cc | 2 +-\n .../testsuite/util/testsuite_containers.h | 6 +\n 23 files changed, 487 insertions(+), 206 deletions(-)\n create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_map/const_container.cc\n create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_multimap/const_container.cc\n create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_multiset/const_container.cc\n create mode 100644 libstdc++-v3/testsuite/23_containers/unordered_set/const_container.cc" }