From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0cjcEdPf8GlZTgEAWB0awg (envelope-from ) for ; Tue, 28 Apr 2026 12:26:59 -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=ZGPmalrZ; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ZGPmalrZ; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 4195C1E0BA; Tue, 28 Apr 2026 12:26:59 -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_MSPIKE_H2,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 A445A1E067 for ; Tue, 28 Apr 2026 12:26:58 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 780984BB8F78 for ; Tue, 28 Apr 2026 16:26:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 780984BB8F78 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=ZGPmalrZ; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ZGPmalrZ Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20f::7]) by sourceware.org (Postfix) with ESMTPS id AEE5F4BB8F5E for ; Tue, 28 Apr 2026 16:25:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AEE5F4BB8F5E 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 AEE5F4BB8F5E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c20f::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1777393552; cv=pass; b=WKhkdiOQkDmjaW+2TZkuTxLZBG0Za9yE6xD49EiIDfm+GUKyvA3rj+ue3mlhHHxYGGdJWJxPNlQhz0FkExJtJ88SmtYgyjdY1yPgniijSHLEktnnpy2iRml4C6t1FXXQUj4JS27Lh9gW3DVokfARS0gMVvPflG79HyoVXUTqgaQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1777393552; c=relaxed/simple; bh=lqdC8n2SYDpB4qKzgGxQCEX43cGgVa5fIQ7Ax4CxQv0=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=oi4Wt5L1t/bVON0CGvU/vhwx/oc9fJENILlbvaVaRLfsiGbACrZyhMN9AzlU0FoJpJaYGeFXo5WY9cXUjcxAwIEZbd+BmGGxYdi2FPYCwt/iOXOoIpXuq4zq0cNwgfpatjbys1w9YL/ItHCR7qcW2AClZ6Na5dNsr/8urZYSAa8= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AEE5F4BB8F5E ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=TqZ2jh7xhmy6O5PScWGEZwtwrF8z1todxsUPxT6V5u0DluApQGTFegrL1w9AXgTZGbQ4HrO0shWgkVE8ejTn/BbQPT8tLrvPZiW5kitX68Q/UHuzEA/zXzEiyO5pMfU4GKqKyDXVc3pdaU3Sn24+RE3nU7MvWPyzbatb0AtmJ0J4+/Wr71yBQk25X5iEF/26aJyDP5ee+ZiYRUb/srT5+Ibf2evKLPpo+zPLSs+Tb1rgWmXYWgQQw6mjQbEr2uI+B4k0P5WXtsm6M7ecEBd5uudJtx6hykRtYjs/3urvWbcBrpAOF3pqZXyarkYV9blMeJnjyPCXp04FqEi6DKfPWA== 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=v/oX9VLOzP/bvFG9Tsxe3C3riruTtLAdtdUHmt2t3sw=; b=mmyG/Cz9SyBNnqnSk7Py5RhJZzkoWjJlButOX53RKN/c6TGaP7QAteSGE2hJDbjOk4Zyr+jcMc+DaQffIc2cR5thncK13w8oDJNayw+lOcxXIew/7ly+MdEkVDts4MF5uhLeRDwCMcXKe7k9z/F4+qtqNrEUGHW6TeEebAlJeqIyCwx0VTJkDqaqkeoY2FnCmSkgp4M1sCApk+7oSuAzmHGxze3BvJjnziw+kYoZ6ZCVVu/gjXkAiYLf2NO9qYdOfvuMwzaJL+kAVhMCbSAP8wEKej7/N7cVeWznzFOx63R+o8okEKnTGKgY6CN7eFpjkhUFCDwavs5eAaVRaRloPQ== 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=v/oX9VLOzP/bvFG9Tsxe3C3riruTtLAdtdUHmt2t3sw=; b=ZGPmalrZW5iF/kFF6l0qZQv1Hp+iwScKW98vTktQqDbKy0OJpgrSZdHm64Zs3FCpHlyXb+Sg5OrEBug1Vxsft/b3iEb/c2wXp1LBivhvnPdxeoW+mRYj3jUKYKvLQL6WRWkhN1Uguy88qpgFNEWxho7l5bCyHopeTHRCDj3PcPA= Received: from DUZPR01CA0300.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::24) by DB9PR08MB9491.eurprd08.prod.outlook.com (2603:10a6:10:45a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 16:25:36 +0000 Received: from DB5PEPF00014B8B.eurprd02.prod.outlook.com (2603:10a6:10:4b7:cafe::f9) by DUZPR01CA0300.outlook.office365.com (2603:10a6:10:4b7::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue, 28 Apr 2026 16:25:36 +0000 X-MS-Exchange-Authentication-Results: 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 DB5PEPF00014B8B.mail.protection.outlook.com (10.167.8.199) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18 via Frontend Transport; Tue, 28 Apr 2026 16:25:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IuwF6RH79F6wZ1rWKW4/RSE8YglcJeBjr5/niCYHjxvSFiYUGzJY2SPEcxC0eXr6pix7NBYNsxVZgvPrlpPkQbCNbzPqW7bNORoDZgnrdN/NlInaTqSQAg7KrI2JPwMkEIKimkrKZfnRl5jmP3OtH9O4myD8RAJgoVJgMILDS6W6e5stDZBTohBNpdAJ/QCNcluX87kWre+PHLAaMZ2L83K7JABnJvGjSQ7Z6D8aYC0fV4LztQpEQcIuao2u6axJdL8OH1EKa3JzoHVpzmaDJAnWTk3t+/z1mIe226e3gSNxvUG+U/I/WhbYGKNARNVEOJMJYMv/pdJZt1RSvW7zlg== 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=v/oX9VLOzP/bvFG9Tsxe3C3riruTtLAdtdUHmt2t3sw=; b=U6g8AkVBWHHW/+ksLDEJbTuMU3Wzl2TpAgtERYIPsgurBHsquah6Vqm+3OvUxFLstGeCdO13rcLvmrPaBi1j+NcviDmGPLYOnRwf5iXt41HmIJs8xtTyvlHmuT1rIadN4vZvruhdtFNKXQDHNo3v821HkQ09g57ta/6CGnp7of5nJuxHQQchid/TWv8c7r7eeGhYZCCsKTj7f2OiPAMOv+204EIS7iKwitNBcle1fq9F5f6GV0ZKXxugHObXJm38BTQUaZvDAYTLAcb37Sl3soXPugCbtf6snKfNiPPXPUTjk58KtQpu+jHj7GmPIrL2+hW0iam9N/UXnTkdYx4Anw== 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=v/oX9VLOzP/bvFG9Tsxe3C3riruTtLAdtdUHmt2t3sw=; b=ZGPmalrZW5iF/kFF6l0qZQv1Hp+iwScKW98vTktQqDbKy0OJpgrSZdHm64Zs3FCpHlyXb+Sg5OrEBug1Vxsft/b3iEb/c2wXp1LBivhvnPdxeoW+mRYj3jUKYKvLQL6WRWkhN1Uguy88qpgFNEWxho7l5bCyHopeTHRCDj3PcPA= Received: from CWLP123CA0202.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19c::15) by AS8PR08MB6200.eurprd08.prod.outlook.com (2603:10a6:20b:292::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 16:24:32 +0000 Received: from AM2PEPF0001C712.eurprd05.prod.outlook.com (2603:10a6:400:19c:cafe::8b) by CWLP123CA0202.outlook.office365.com (2603:10a6:400:19c::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Tue, 28 Apr 2026 16:24:32 +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 AM2PEPF0001C712.mail.protection.outlook.com (10.167.16.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18 via Frontend Transport; Tue, 28 Apr 2026 16:24:32 +0000 Received: from AZ-NEU-EXJ02.Arm.com (10.240.25.139) 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, 28 Apr 2026 16:24:32 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EXJ02.Arm.com (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 28 Apr 2026 16:24:32 +0000 Received: from PF4S4363.arm.com (10.57.21.183) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 28 Apr 2026 16:24:31 +0000 From: Matthieu Longo To: , Tom Tromey Subject: [PATCH v2 1/4] gdb/python: add gdbpy_borrowed_ref Date: Tue, 28 Apr 2026 17:24:13 +0100 Message-ID: <20260428162416.511367-2-matthieu.longo@arm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260428162416.511367-1-matthieu.longo@arm.com> References: <20260428162416.511367-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM2PEPF0001C712:EE_|AS8PR08MB6200:EE_|DB5PEPF00014B8B:EE_|DB9PR08MB9491:EE_ X-MS-Office365-Filtering-Correlation-Id: 752149ea-3aac-4819-2462-08dea542c6fe x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|36860700016|1800799024|82310400026|376014|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: t026JtKuNFi+MBTM+auzVemloYHsHDEdx+4+ZJ0oBecGGk5UCCRGlnuqWe5UI9T9PVq71nKMllwJhefpMUy+tmt1GtehCXgm/p249KaAWr9olxsybk6ZDJa4fmS75+pQvPST62wsWV+zIPZYj3cAaRWj4hw14WxFEXwNXdHhSi75JFnuQTw2jCZhQ+a31llp5THr3+GLW6aBQnbun84y8kRJvpufjtw8lj861fk1j2zKGgCA8IDpxUZXq9kTVcJmzNj1BVsRMzXbA5Y/YT9ZmLs3CK0+GWRYR50wjdR6AKdpHppRU62KiOM3YUlZkwl4ww2e4fzpuhhBI36ie+nWRAhjkkvvGIwkPxLmCcq5fF/00t1psMz2f23Y/tAqh40UzCHhyjFdpATDacrvCSY6lWVxSUOJPphxUp1KxfPlU+OYcvOe/l1Z9MsdNM0sxDYQkuzeSl1Ri9tI9LyYLepU2wtF0+UATiroR7MTljB5/RUrC1h10fBKJuuFukkqw2JK4ofGyRI7HPVnok4EfMXpPvaqIOD9DNUnsI2+J1HdwO2Ms4r0PDnepoUcr1hUdHNf8GIlqfrA/E9r04IeW0yvqOAE3db06EsxkCRy66TeZXnHxYCEBnxOLHkhg2Wj5OWVbrxzCJo6IsXcQxJW4p2eIvyCnsINzPKm3d76zmaIQFv9qNa1+YQTwhPNIokiJlgIBSx11uBlyRUmxtwr3dXixwdWD0IUNQJ0NP91L+pXcDANGUaWmmP8la/8s3jn8FSth7jabU99BizbcD61lCsFcg== 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)(36860700016)(1800799024)(82310400026)(376014)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: cdIHaR8wBeQUb/ECFUcMfrzpfvtOJPuFpbrgBngyFg39fgIoel/ndpsnu/+WoLOZETaTrtVjdJG0mYCpYupwsc1iT1JtIp5spCc2EsunQV0eQND3lrhyJclxz2u/tGnoyeXzKQED1wcwcPeYcgydRAFl48kPqxUJy+J1SMenu65T5LiY6KuGk0REkEmMAHoepN3VEb/xPeld76lyRMdbaJM0ZN0tVTNmb+rzkRBbjZ72qdhk0AfwkgoQaOV2035CkeaJCRnJliEnOotJM4DlZQaKgWTiQpRMbUw8WkskKqayhKWWsncDCDD8kvBQvocwiU7dqndahcpb9FgrJwYW0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6200 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B8B.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2dba8d1b-b479-4dba-cd16-08dea542a15c X-Microsoft-Antispam: BCL:0; ARA:13230040|35042699022|1800799024|36860700016|14060799003|82310400026|376014|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 8UXjKyxpxqPGuX72gmZ3GSujN0qloUXEu4WZHF3RduzlzJ+gJYLSVpKDwzYMJ+jKSSSNVXA8B3FjDUr0TvTTE5shaGWccsB9c+NAhpmX7Z0VTEsV0mL6ITeJLleXQ7rAIc19QVqeI+uo54fR/5+9Ah8unOLLIDYgSa4hIiRorTzNy3eODZfUgnNYaacK1SRvuLloHXiHHrZUep1mV67sKyots3yyHPOXrO4zcpeSCvSX8TzSh6A8FA/xIulmruJPCcPnAvMbaEvhDDGW3Zmn1nZFKraoS2g2fW8vJCHJl9RyzUbXIjZ7eaeKKNbrD8jwxy0/xqYylr8f6UHrk1MbRvw1Q0p0tFf1/xIOpIdHNcgFTOwDrTHiegR57s6zUOGduQpUj9uSzkFYnh/ucqzQF7bot6l2reN3mqmMKS22qR9/MNsq8WNDJdga2Tmn29q3Mi438Hl+tW6RH71dk4Ar0x74cQPqbufpdx3CrhO3Wa35ODTmr9T49yJix6Quk2u6w41WqlL0TOmchyG8S3jevyZsG0AhGRUGBEMGW4s2rBZD4ExacK9/LXTXnNFYxKGRj+u4T69yO+SKp5t5gH4Jo8TB1necl8ohmcaOPwVbz4JQ+AdhcoDemSkE+mErYFMneoh44OG3/4hXoNtTludUyeJW+EsaDVCsP72/wHiPys0O6ROeHY8lvrDFYGZ/oLIk16KxrEINosbZ7/Ax17BtzzU/7OSSElQOxsEQx731CbPSK5XtHbE6EeO59wVCp5v+7ezBc/kRyDj1GhK/s1CnkA== 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)(35042699022)(1800799024)(36860700016)(14060799003)(82310400026)(376014)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +tKYwAuvH6Owj7lyQeREiiCDu9a3Jnco2ptzv2mVGZ8phD+PsoKPOsuBfyaZRpAqYh9Io8b7UppdVb92bN1vMoq+j4jfIb0T87n79hYqH9x8i3TXaT/zdUnyESWuIuBIU5sC3v8N0VtojLbmXsY+oh68XhfeC+YW/RbXW/DIJFWqzxGnneOdJYRWhh5dBA0ttFETUjFgwlwdsGyQINOdXTRJJXx/VFY5E0PLTMaUbwFIJNQ2Q1Vt7TJPqxbZPgeQFMI3DP0ipZ5EN5d/aG9hoX2hk7RVYxDSx43dgt7rSctjMW8gxz7qPCSscp+MQpK9A007hFvhxnOhj1VTCuxvJpdvDJT66Xj0SOh43pXQXAglDPXz/EEsJoARIqbFs6J2bqMHjMf3qreBrRHH/KjHimO+t08ok9YS9SDkpS+G98IlXX6APCU9sbTidKXVvyjs X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 16:25:35.7602 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 752149ea-3aac-4819-2462-08dea542c6fe 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: DB5PEPF00014B8B.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9491 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 From: Tom Tromey This adds a new gdbpy_borrowed_ref class. This class is primarily for code "documentation" purposes -- it makes it clear to the reader that a given reference is borrowed. However, it also adds a tiny bit of safety, in that conversion to gdbpy_ref<> will acquire a new reference. --- gdb/python/py-ref.h | 115 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/gdb/python/py-ref.h b/gdb/python/py-ref.h index dc0b14814af..8190dc38627 100644 --- a/gdb/python/py-ref.h +++ b/gdb/python/py-ref.h @@ -41,6 +41,121 @@ struct gdbpy_ref_policy template using gdbpy_ref = gdb::ref_ptr; +/* A class representing a borrowed reference. + + This is a simple wrapper for a PyObject*. Aside from documenting + what the code does, the main advantage of using this is that + conversion to a gdbpy_ref<> is guaranteed to make a new + reference. */ +template +class gdbpy_borrowed_ref +{ +public: + + gdbpy_borrowed_ref () noexcept + : m_obj (nullptr) + { + } + + gdbpy_borrowed_ref (const std::nullptr_t) noexcept + : m_obj (nullptr) + { + } + + template > + gdbpy_borrowed_ref (U *obj) noexcept + : m_obj (obj) + { + } + + template > + gdbpy_borrowed_ref (const gdbpy_ref &ref) noexcept + : m_obj (ref.get ()) + { + } + + gdbpy_borrowed_ref (const gdbpy_borrowed_ref &other) noexcept + : m_obj (other.m_obj) + { + } + + gdbpy_borrowed_ref &operator= (const gdbpy_borrowed_ref &other) + { + m_obj = other.m_obj; + return *this; + } + + operator bool () const noexcept + { + return m_obj != nullptr; + } + + operator T * () const noexcept + { + return m_obj; + } + + /* Explicit version of the previous implicit cast operator. */ + T *get () const noexcept + { + return m_obj; + } + + /* When converting a borrowed reference to a gdbpy_ref<>, a new + reference is acquired. */ + template > + operator gdbpy_ref () + { + if (m_obj != nullptr) + return gdbpy_ref::new_reference (m_obj); + return nullptr; + } + + /* Convert a borrowed reference to a strong one, i.e. gdbpy_ref<>. */ + gdbpy_ref strong_ref () const noexcept + { + if (m_obj != nullptr) + return gdbpy_ref::new_reference (m_obj); + return nullptr; + } + + /* Let users refer to members of the underlying pointer. */ + T *operator-> () const noexcept + { + return m_obj; + } + +private: + T *m_obj; +}; + +template +inline bool operator== (const gdbpy_borrowed_ref &lhs, const std::nullptr_t) +{ + return lhs.get () == nullptr; +} + +template +inline bool operator!= (const gdbpy_borrowed_ref &lhs, const std::nullptr_t) +{ + return lhs.get () != nullptr; +} + +template +inline bool operator== (const std::nullptr_t, const gdbpy_borrowed_ref &rhs) +{ + return nullptr == rhs.get (); +} + +template +inline bool operator!= (const std::nullptr_t, const gdbpy_borrowed_ref &rhs) +{ + return nullptr != rhs.get (); +} + /* A wrapper class for Python extension objects that have a __dict__ attribute. Any Python C object extension needing __dict__ should inherit from this -- 2.54.0