From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 2REcJyWIsmqY9DIAWB0awg (envelope-from ) for ; Tue, 22 Sep 2026 09:52:37 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=JennRYHC; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=JennRYHC; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 93CB71E06B; Tue, 22 Sep 2026 09:52:37 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 39DB71E01F for ; Tue, 22 Sep 2026 09:52:36 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 71AF44BB1C1A for ; Tue, 22 Sep 2026 13:52:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 71AF44BB1C1A Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=JennRYHC; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=JennRYHC Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013025.outbound.protection.outlook.com [52.101.83.25]) by sourceware.org (Postfix) with ESMTPS id 8398B4BA2E04 for ; Tue, 22 Sep 2026 13:52:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8398B4BA2E04 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8398B4BA2E04 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=52.101.83.25 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1790085120; cv=pass; b=Mnm2Vs8aDpk2rXiEHLnLBhz09C1ZdwuqdzQN6eP2sVjXVGdl+Zb+L/uG60TssFAdfabHU/FVt8aH/w+nDDbSDmFDpBh/Ysa7kitDMCAiZFoxhwVcTsLF2DteKmGrf1L9wjbMIw3ggmSvUjPhbAXM7WYu/tf2C0XYR3wl3pdBvII= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1790085120; c=relaxed/simple; bh=eyMP8xmj3xy3Rs2Irb8iQ14Wm3bCTQJPlVhZKlBQBdc=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=vW8oIXDi9zobyYtFnsPNzck/jQEBS6shEYPdJRE+jnW/QJTOFxH79Aug9SjOYy66RUD20SVdhPKnhf1gl682lN/YSLhHuBvM5bNcHJ4JxOCiYpSmf4amQQwzpbduM3nXKiu46lG4qQ8lYgC0IVZdexBgMlfWGyxqIdFeO3y7ZoI= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=JennRYHC; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=JennRYHC DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8398B4BA2E04 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ApJGNN5FITCso/zBaFHdEKzrUsj4p+4fiObtwGWU4PYNXbFYg82JP7CItMgkGZ/YTO/owyLd4KFFrHDFNmbDB7+GUaNKRNAUePuZtaj8U8Kpefz5sbRoZ6RaEm6byrMK3NrolgC5WlWX3qrtACnR60J8FMYL2uN/QO325kYR8wAGxWWZbun3utRN+06t0EZBOCurgRE430MyFuIV5rRbnJ8paEBdb6cP/rqmAOzuNV5+S6uLiPrBkOiBmzaBiZo6K/Ob822uyRnCgjSiNV4E65/1vnW0v2A72awHpu6TlzOZeL1fq5LSMQ7solVItWKbZjwHCCj9ZR1plcYO0/kloQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2dXRCPV4/+hPtewzVH8Sjrwihbrq6/P3RHSp3KZxO3k=; b=zRrGSQckwGpp9kAdH5ul50LcGW5Sd2rRj5X5M39Q63QCvalRJEoEbcP8uhPvgEQomcJ7jAK7TkqutVChsavrJQD2kHAVbt9mNo0Gl7qzO9w+GGz5lWPQUauamWqqeFXr/wE0vOvFNUmZ6e3u+1mH/OwThTbxisk6cB7KiEFFMjYAAykXo5K8v4xSm5n22ocImQix33twfk+YgQLjUubNGbvakYOeZH9tKazGedaWeI53xqgy6kbCUey4/dpt4kNBh9+q/5+oenZHyoHAPafiXZOG8XaB2pPx16349V2BQyuMp29n144AK5La9NMuilAZwdzAHOjKUUvS+/+oC6T5Nw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2dXRCPV4/+hPtewzVH8Sjrwihbrq6/P3RHSp3KZxO3k=; b=JennRYHC2dzkYR0gyQVkvZjWmvw3FbZcn5fpbn9XBbvqyRTzg6cNvIw6Llq84XcgLbBpDRtTcYoB6cJNbrpJfw/B4pVPwrZGlK5oU/sw6Ijnd6C5l5eYupdaPLY19RFqCVak71Ms6OciaWf9N5Ro3ypDlPG0p8Mgy+RIWKC9aTY= Received: from AM8P191CA0002.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::7) by GV1PR08MB7753.eurprd08.prod.outlook.com (2603:10a6:150:54::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 13:51:49 +0000 Received: from CPH1EPF00000529.eurprd05.prod.outlook.com (2603:10a6:20b:21a:cafe::9f) by AM8P191CA0002.outlook.office365.com (2603:10a6:20b:21a::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.16 via Frontend Transport; Tue, 22 Sep 2026 13:51:48 +0000 X-MS-Exchange-Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by CPH1EPF00000529.mail.protection.outlook.com (10.167.241.164) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 13:51:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ODnhBe9wMqEidM5NScyFlxLNvgt0PcBVL5N9upfEA6YlakYAYdb8vF/gGv/wF2I3ISHioYowM5h+paLYAch9gBCqjMWptQQiAEaS0yeEkxwlpvF7wIp9Yv3mb242Ga331KAAtrdhe5Gch5F7owiTUOFPnfV56c0u0S8xh8z5yvb3nZys3xniUjbA2uqFzJykk0rzg5GWLi7a74INN5bzIGX3aKix1WZ1Yyog7+3qvhc98v6xNdlO8W37eBaPlIBpmEVrDCK5BPbYiBIKzm2us/6DaS8Kd/69tg/RZ6IDjABSH5+3x6WD19z9FZp4Y/+YSwNEpfoMq5zDhPME9+JWqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2dXRCPV4/+hPtewzVH8Sjrwihbrq6/P3RHSp3KZxO3k=; b=MdbFTcbohgC4scsW/X1QXhG4zw2FY4b9DM6mp5WJTEjSQCFPcnW+wPyfBV5f9TKg3J+dgQLv99Jsw2ksHaHwRKWKBUaJV7VguaT/ijDzs7JhmiaF485mCNwy8b2v9++MVwygHURTayrRkOrc4X6IA3h8fQGOfrhjquvf4exsV/IrgAkM7QLbaW+6cQJyVx+l1iFn+5682SZqb7iM1p2bdaCRItukHhd5AQuvD7thkOTn8IiFXY0/1WRoqv5NfUNKcM0YJluvXg0ovdWzjmfneOdqrsfQ73mOZvG3Zq+oxCQO4w9tusxMlq/jxDYWU8RthpAz+jnyWXd+wK5E4nudYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2dXRCPV4/+hPtewzVH8Sjrwihbrq6/P3RHSp3KZxO3k=; b=JennRYHC2dzkYR0gyQVkvZjWmvw3FbZcn5fpbn9XBbvqyRTzg6cNvIw6Llq84XcgLbBpDRtTcYoB6cJNbrpJfw/B4pVPwrZGlK5oU/sw6Ijnd6C5l5eYupdaPLY19RFqCVak71Ms6OciaWf9N5Ro3ypDlPG0p8Mgy+RIWKC9aTY= Received: from PAZP264CA0194.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:237::27) by GVXPR08MB11400.eurprd08.prod.outlook.com (2603:10a6:150:2e5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.13; Tue, 22 Sep 2026 13:51:10 +0000 Received: from MA3PEPF00000405.eurprd04.prod.outlook.com (2603:10a6:102:237:cafe::a0) by PAZP264CA0194.outlook.office365.com (2603:10a6:102:237::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.13 via Frontend Transport; Tue, 22 Sep 2026 13:51:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by MA3PEPF00000405.mail.protection.outlook.com (10.167.241.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 13:51:08 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX03.Arm.com (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 22 Sep 2026 13:51:06 +0000 Received: from PF4S4363.arm.com (10.0.144.159) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 22 Sep 2026 13:51:06 +0000 From: Matthieu Longo To: CC: Andrew Burgess , Tom Tromey , Matthieu Longo Subject: [PATCH v3 1/8] gdb support: add gdb::ranges::replace algorithm Date: Tue, 22 Sep 2026 14:50:43 +0100 Message-ID: <20260922135050.236941-2-matthieu.longo@arm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260922135050.236941-1-matthieu.longo@arm.com> References: <20260922135050.236941-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: MA3PEPF00000405:EE_|GVXPR08MB11400:EE_|CPH1EPF00000529:EE_|GV1PR08MB7753:EE_ X-MS-Office365-Filtering-Correlation-Id: ceb47d61-8fe0-4258-3654-08df18b0a591 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|1800799024|82310400026|36860700016|23010399003|376014|10067099003|56012099006|22082099003|18002099003|11063799006|5023799004|13003099007; X-Microsoft-Antispam-Message-Info-Original: sdNeWwryVqiZriLD9FSz1k6jPmPG5lSBaZ281hix2B7WWq0BG8eH566Z0gTJFYnwjSj/uLHgoeK/4mY8xQz8cClOrr8+rK0ai3l431yt80/aBGga9fivP6U4T5HtgXpu7s9JQepfkpA6ibSfv0eVdEbLRo5RCvrXTYkeTnNWP8YrdTmjtoradOxtnW8vh4iV13o08Y2GJG3wkB5e+hVUYoONppLMaGnShZsf2k2HwmE2Bgtdm7SVOmn160tDoK6xy70Ve0VX6S5pMFkfsZltW1OI7HJaIKvOwyjKNWD7mZ+Z4VLhuOZGjHIJj/x9s6M6QJOsBpTMKrAqCfCeVqRetBvBfUeh4VnV2lgUc+yhSS+jk0xcwvc/waumfAYczK5JwIfFnmM48DWENrIbyNm1zEmUgmS8K3B/yU1OiUZ1edONIBz83F5e/mkveAEzCDZJvNv//t9Wbq0Zw1EM2QHGV44sKXSth8+5bts4E2iKj4EsBswTEn9AkiEtnNjZyElCGoOAWMlUGH8/aOMCF3ZsQvF+KYORUC0Tx1074hg/SjwCuToy0wOLFxCmr2MA8bzUk72trPb0A8EoMKlm7norPcyH42PSnntYtMhTL2j5UNbFx8NG4DU2F/cVKQMNV9INQM4kzQ/Od0PXvdhgwavL7Q== X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(36860700016)(23010399003)(376014)(10067099003)(56012099006)(22082099003)(18002099003)(11063799006)(5023799004)(13003099007); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: LDmA7T9DPez8pkaW0bO+hMrWoQpAXX0nM/HkAhLSbIe1icUKcgMHox9UIAQRcqBsjhIXcK9vDsDTyzc6gvT3j59EGGp6EXqr7xMwDWyqSE0YLRbzdoaEE8T+rAbZWAIAl+6zaQ79Gi18/cIsTU7HYOl33BQaqAqEFQXgtqKC/TCcfhLdELUO5HaKycH0nuIaY9DS8IQOHTE03vZLccICajIZNIX+BOOdnnRz0jd4ROgl3OjeMItR2JRw9GkwlqMCEkV5VtGwcRTsywrQDxenIVVDRFuHtHygXRO9DCaG3Xt8AbS68Ed7HipyWKtJJD/JnYUQctUSUKClsn1VdDurkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11400 X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF00000529.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 825daf22-0130-4bf0-e94a-08df18b08df4 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|23010399003|82310400026|14060799003|36860700016|1800799024|35042699022|13003099007|22082099003|18002099003|11063799006|56012099006|5023799004|10067099003; X-Microsoft-Antispam-Message-Info: rsNY8M9F4ocKQ9gYmR0s5mEn8Wf66DHSWkOcyThRA+Ohw+77PFoE+ZdBjwXaDa3ryOovLvqTK2q5aQkvr6H4JNqlfOr60/Pc4gB7kIIexpfYq2XVRXpkukN2YJJK+ffeW2ZeG6ylgA4ND87+Z1+ts4E3KAjy7AGAFKetR/impV5uBCp1daGmzHgOIQ2OL2EymtFo1zot8q3zGRSnYUgjRnxgTW84gNMbAeO3iR9ZifCeVSoy1kzFIp0hCG960qaJW9LBCUeYTjGc+nZtRIBlprTErsDbgjUqwYDjsYh6xB5YP1/buAYbPeeUQJbiuRNo96uxpMYCjlQEateK+53ivLlMafCdEltVvPJuPG4ypwiMaon5fXlRLy/SwYPT+MN23yIP70QKmSRuQaZtQaVvkpbc2BXDTbbWqgzTT0VSzsSQDZTf40PZl34SxrdtYs67hGz5XHs5FgyEPLfeqfF5x61gwQaikV5PLTTuOUaHS1B68YMbMRA2os3hgTaRpoHEk7U418UL8fr8emIKaTssZL/lNJCrm5yqd4B3ROrXd73Zquu+3e/U2JpuZY98DG8cm4a238IPb736I4C3a5Th/OzPSeOfV2HPDoOE6HF4W2PdaMI7hU4S3y94W7ONruLchaHwcNpyiB9G9nNj6bL1UA== X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(23010399003)(82310400026)(14060799003)(36860700016)(1800799024)(35042699022)(13003099007)(22082099003)(18002099003)(11063799006)(56012099006)(5023799004)(10067099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3jCz2euSwVw2WO0RRB7N1xeBHzsmmNKWuH+ttPHdGN0raCdu/VjhRBMZfwf9AR8od0UnLmUg9PvHfbG3OcpDUMdlVYR042KLH0bUx7oShKiwFJCSfYT0PH+zGTGfPlg/R5GKskhz9kJblGk+k7NmBjXNbwVXLKD+UlfXp2nr/JbHHEomHNvhMGEQRZm6fq+4sbIx7FDnLITbAknADY4UgLHgvTnNy7bAQjOAMWwUQpghE4Q2AqrSJkz07f+LqgZNf8n09/K1pp62i0+26cI34olK9Ju9ui6V5YZIaoZa5q0oLdPmIMFOZNasDXdZXgT7k9jxp+L9Nj0VDoZOHsNVmT8c4YS4j7MIfSzT2PnSXRsvM2hMzsOmB54tN45z4Kp7R6el9xxdR5f903HGVExMuNkLKYEoX3frBaOglTbtev1tQxg9SUKUDPRALjQ8e6/f X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 13:51:47.9594 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ceb47d61-8fe0-4258-3654-08df18b0a591 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF00000529.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7753 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Provide a C++17-compatible replacement for the C++20 std::ranges::replace algorithm, allowing callers to use a consistent interface until GDB transitions to C++20. The helper should be removed once the C++ standard library implementation become available. Also add unit tests for ranges::replace. https://en.cppreference.com/cpp/algorithm/ranges/replace --- gdb/Makefile.in | 1 + gdb/unittests/ranges-selftests.c | 63 ++++++++++++++++++++++++++++++++ gdbsupport/ranges.h | 39 ++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 gdb/unittests/ranges-selftests.c create mode 100644 gdbsupport/ranges.h diff --git a/gdb/Makefile.in b/gdb/Makefile.in index d1574ec2d2c..9d34b6cd3e4 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -483,6 +483,7 @@ SELFTESTS_SRCS = \ unittests/ptid-selftests.c \ unittests/main-thread-selftests.c \ unittests/mkdir-recursive-selftests.c \ + unittests/ranges-selftests.c \ unittests/remote-arg-selftests.c \ unittests/rsp-low-selftests.c \ unittests/scoped_fd-selftests.c \ diff --git a/gdb/unittests/ranges-selftests.c b/gdb/unittests/ranges-selftests.c new file mode 100644 index 00000000000..6791502cc1f --- /dev/null +++ b/gdb/unittests/ranges-selftests.c @@ -0,0 +1,63 @@ +/* Self tests for gdb::ranges algorithms for GDB, the GNU debugger. + + Copyright (C) 2017-2026 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include "gdbsupport/selftest.h" +#include "gdbsupport/array-view.h" +#include "gdbsupport/ranges.h" +#include +#include + +namespace selftests { +namespace ranges_replace_tests { + +/* Entry point. */ + +static void +run_tests () +{ + /* With owning container, no copy and elements correctly replaced. */ + { + std::vector vec = {1, 2, 3, 2}; + gdb::ranges::replace (vec, 2, 1); + SELF_CHECK (vec[0] == 1); + SELF_CHECK (vec[1] == 1); + SELF_CHECK (vec[2] == 3); + SELF_CHECK (vec[3] == 1); + } + + /* With non-owning container. */ + { + std::array array = {1, 2, 3, 2}; + gdb::array_view view = array; + gdb::ranges::replace (view, 2, 1); + SELF_CHECK (array[0] == 1); + SELF_CHECK (array[1] == 1); + SELF_CHECK (array[2] == 3); + SELF_CHECK (array[3] == 1); + } +} + +} /* namespace ranges_replaceq_tests */ +} /* namespace selftests */ + +INIT_GDB_FILE (ranges_selftests) +{ + selftests::register_test ("ranges_replace", + selftests::ranges_replace_tests::run_tests); +} diff --git a/gdbsupport/ranges.h b/gdbsupport/ranges.h new file mode 100644 index 00000000000..96d9c0162bb --- /dev/null +++ b/gdbsupport/ranges.h @@ -0,0 +1,39 @@ +/* Copyright (C) 2026 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef GDBSUPPORT_RANGES_H +#define GDBSUPPORT_RANGES_H + +namespace gdb { +namespace ranges { + +/* Replace all occurrences of a value in the provided range. + + Note: this helper is a reimplementation of std::ranges::replace, only + available from C++20 onwards, and consequently, should be replaced by + std::ranges::replace once GDB switches to C++20. */ + +template +void replace (Range &&r, const T &old_value, const T &new_value) +{ + std::replace (r.begin (), r.end (), old_value, new_value); +} + +} /* namespace ranges */ +} /* namespace gdb */ + +#endif /* GDBSUPPORT_RANGES_H */ -- 2.55.0