From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id EXoMFBMMp2nAphIAWB0awg (envelope-from ) for ; Tue, 03 Mar 2026 11:28:03 -0500 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=QaznFzlB; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=QaznFzlB; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 491861E0DD; Tue, 03 Mar 2026 11:28:03 -0500 (EST) 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 50C541E089 for ; Tue, 03 Mar 2026 11:28:02 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id D64624BA23C7 for ; Tue, 3 Mar 2026 16:28:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D64624BA23C7 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=QaznFzlB; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=QaznFzlB Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012037.outbound.protection.outlook.com [52.101.66.37]) by sourceware.org (Postfix) with ESMTPS id E546D4BA23EE for ; Tue, 3 Mar 2026 16:19:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E546D4BA23EE 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 E546D4BA23EE Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=52.101.66.37 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1772554794; cv=pass; b=ehFb+i/CPOV+IUR5mpv0B2EOYMMLrrBCZD6lolOKAK71lCRaKslp+vofRiu6z5nxchHZEfb1LKsmPwIHiRTdM0307fj0fVHOguuEkTdWApmyhrn+roYdwzDR8U4cv/H3l4t7HlP/OhwKCalQaXizIy9BDvTPCaBqQJCiqw13QjM= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1772554794; c=relaxed/simple; bh=fb9e15nRqgh6sb0nsa22Y/ipX600BooeO7Uqc32uncs=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=iiv+/Q4QJxL3mb2stv56gKUEXe/LRyLsOVZtB95vIHfTv241mz6U652eCyzcX0Mw2EJfy5lV8IoUxD8/Yie/ARh27bIR7SKagtoJfVwY1lIIhlSzwHKZj7qN3XJcmBIsbhbXWpJyTAmZOWQvkaOxnMlhWPZLKOt1pLAj9JsLVYY= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E546D4BA23EE ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=zPP8VM6nF9lIZKUaHgg/EN4+R/8RAejvyCQIDNkAKzVbdRzHNurXiVMjryzzVLEGKWRn2Lc4qnXHDpBojv0f+LpGzweIdtnruNGzAO8zDZknJEREHi1c9Yv6Ru4YfSW6Dq1DR0QyGFjNd0xuT8xQPeevFMA61fL3+Rei4GKiUvDRRtvDt00cGTtRKHN1e7dWzA1c0TuqSqGMynDAQjqrLgZ3UbIPToaNkcjaJlERKpinIYq5keMNYzn2y1UlknVZexJViBIPEdAwkDevGR+tJ42we9BPCUaQ2arTH+WJOZ+bt7LmyIGCzzdMb04xeM7rkyiI5MGpduhhTw9Z0IoYrQ== 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=HMoyGBTbh+QZtlIsRcKl3vdJ11pWkwJRX1c3KIpegiE=; b=gMtAlXiS6yXXu5XKlev8Fm4OSfXzlKJlcrIO6uvg5C3Me6eZtkdAtCXN/wiN38WrSv9OttPhwTJ8NpnPw06IaQ8gV8BQ/RBjVZQa0hB2EchgQXfG99xDtpxFD/NPfe85WM2AXCmGFXfv5wDdJI2aIogRtI255FB8VjguoVKsrnATzafeeA1NfE0U4UkpVyPc0z6cDZi5Vxt189vonUkAbJShwHS2ajHli4GBX7ka5/3ixuUix6Hz82j7StbfT1r/XkHQ2M52cLdt7q1wwIIxAmFUPt1Zg4Nfm9uLx3O5qOeOIKyki80noXGgxsSS3Zf/261AzarXCemmzWmxf3eqlA== 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=HMoyGBTbh+QZtlIsRcKl3vdJ11pWkwJRX1c3KIpegiE=; b=QaznFzlB33xgYUfuzzB6QDuobJWiXLbjaN0V5tvid+5cP5R4+gUvitGJ3rFnvhYNyfM0Eaq3nmj47zyDvOluq2ZEHlQy8ASYoLOz3075yjM6weV3ENZJPOl/shbKUu1JgCqDsirDX8tt2AJ0+0bCULDiKAXg1OHAJ7jIsMKvsR8= Received: from DU2P250CA0030.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:231::35) by DBBPR08MB10602.eurprd08.prod.outlook.com (2603:10a6:10:52c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.22; Tue, 3 Mar 2026 16:19:49 +0000 Received: from DB1PEPF000509F5.eurprd02.prod.outlook.com (2603:10a6:10:231:cafe::a1) by DU2P250CA0030.outlook.office365.com (2603:10a6:10:231::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.21 via Frontend Transport; Tue, 3 Mar 2026 16:19:44 +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 DB1PEPF000509F5.mail.protection.outlook.com (10.167.242.151) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Tue, 3 Mar 2026 16:19:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VsyXlBuATdQBJ3UaoOhffg6C8Qn6pfhU5/CChJMQUPoERJ9aT1ahyGypXfAdpzagmK0kmYNGQZHJcV19bHSn3CuH0+fE/jHvfrsHMbR5hHmXv3qvELItC+F9H0v8HSAEkO+UnHr2gKB/IRUmqWakxUcAtj9v0lElH1caKtAfUwBth8A7VGMe/nFp2d9PC0XHxxxs5Lht+b/sKrWTrEHSTCvhWm22TR2mFIU3XxvodKbQb5kp6gELrsodRZwHTGAVnk9QBbGfMOh5qXgI4ztEP9EsOuuJI4BA5Umx+a/D8w/HXIB7YGJq3FZ3on865eaNJ2Gq22+l4zDRAnBEdFLwSA== 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=HMoyGBTbh+QZtlIsRcKl3vdJ11pWkwJRX1c3KIpegiE=; b=gDwmEYYPLj1X9iHkDyHQs+fwec5ZTOIub+aTogVlqbvEY+SmwgpbYoFGWVjotWiiRijNiowumoLwHycy1Hv7w+BxWYVtt4QJq2BHGreRQHBABEg+9cn7RsYnaJNmOienfn1aVqKveo61+ky11ptwWIVsCsJ3uMuAjmJMKUCCuDPAQcnrtJkqHwPmdxXB5u9eLEIsXNTpm+6TVzTVHXWZzvt3njkg+dHp6AcN93oZb7ZwPrzQqVgGKBagMFh8G4+li67lsg84lj08C1OdxmqsuH3tY9wpL1sHCr+0mO2YQED4a+GcresxGQnmGHWfpPpCEsHAakT5Al//+j5Z6hWVzA== 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=HMoyGBTbh+QZtlIsRcKl3vdJ11pWkwJRX1c3KIpegiE=; b=QaznFzlB33xgYUfuzzB6QDuobJWiXLbjaN0V5tvid+5cP5R4+gUvitGJ3rFnvhYNyfM0Eaq3nmj47zyDvOluq2ZEHlQy8ASYoLOz3075yjM6weV3ENZJPOl/shbKUu1JgCqDsirDX8tt2AJ0+0bCULDiKAXg1OHAJ7jIsMKvsR8= Received: from AM0PR10CA0025.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::35) by DB9PR08MB7724.eurprd08.prod.outlook.com (2603:10a6:10:393::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.22; Tue, 3 Mar 2026 16:18:44 +0000 Received: from AM4PEPF00027A5D.eurprd04.prod.outlook.com (2603:10a6:208:17c:cafe::e2) by AM0PR10CA0025.outlook.office365.com (2603:10a6:208:17c::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.21 via Frontend Transport; Tue, 3 Mar 2026 16:18:28 +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 AM4PEPF00027A5D.mail.protection.outlook.com (10.167.16.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Tue, 3 Mar 2026 16:18:44 +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, 3 Mar 2026 16:18:30 +0000 Received: from PF4S4363.arm.com (10.57.82.243) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 3 Mar 2026 16:18:29 +0000 From: Matthieu Longo To: , Tom Tromey CC: Matthieu Longo Subject: [PATCH v2 8/9] gdb/python: add gdbpy_dict_wrapper:allocate_dict helper Date: Tue, 3 Mar 2026 16:16:58 +0000 Message-ID: <20260303161659.397427-9-matthieu.longo@arm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260303161659.397427-1-matthieu.longo@arm.com> References: <20260303161659.397427-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM4PEPF00027A5D:EE_|DB9PR08MB7724:EE_|DB1PEPF000509F5:EE_|DBBPR08MB10602:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a20e824-459b-4a8e-15be-08de7940b11e x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info-Original: u77Ck9+IkIP+q72DBjcFWloUG9gaXbZVLM+XFjntjfuItw8qXimUfqERk1qljDwfhJpyJIUO+4+LzagfLSha9s0kDtQbM56zxyoKDwS9ta6oPh5cvBHeKDHr0pXsfDxHMGcD8DJuNAh08OjY9FMu2pyAdajVdhCDJHbW6RhQZzPYnfJHs+EMJZ21cgeko0elbf61FCJgsHVIJaZd4yCkWnaqxNDEfpLgxub+5LDaDSpEaCi5SW/UqUo1aSMorwptsQTlue0saP/ACs0/XCPFacsioY0oyNQuiRAjP2KtjR8Oq47PmPq3eifQ6wA9QE3wThUCgPu8NiSAS6uPkPnaO4hmzt3jraOrPlHKrrGDYtMb6Ze/FyQ+RcFkW6K65p3Y8/A6sniuGaoT3400MD2dSD/0Gq/vEaWDZuKXTcGKHnIr6RUaVb08Qh9JBNhXoR1wvwMDCLChQEf9WNeg0fLU4GkSCpcyV7mb+W9GJptrJ4d4TSRi4nufFboKWKADN/xabrA1fh3JIYwecTeHhWukDdVt5ZS38kUesm6npptWYN0Vv/gxvn0gEyJh16sdSXewdRdUfQMD/+1Ws0PhBfy9TECjcyYbABPFIBSpHheO+7BPwHI4nHClPKI+IYpJK9moug1uauUh5LbfdlF+WSPBqQeYMIoihZfHNH6V+B8cZdPKESaKpQDo7EiRJWA5sfEojTxewA8/QIZj5EZxhyG7RMSXv5agEQwJwqrYCFn4VfGjrQOw39DNk1TjKeE+jP8/uBcv94Xcll76gPlHfz3pUqt8uvVLUj2vBgiXXaeB+be1dMS+nieddVWc0wnpg+ppXiax565WMwgolMJu5PCOVA== 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)(36860700013)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7724 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509F5.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e71b8b65-4d8b-41bb-2cc0-08de79408a9a X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|14060799003|1800799024|376014|35042699022; X-Microsoft-Antispam-Message-Info: nkU36yjYSAG2WAn0M1DaZGr8yeqZgZ/b3hWe3rNLkYQKFKGtjJ2JrVFbeJ5upK3HUmba8HJeU/0tIFctvnSKG9mSZfxegl0AN0mZqf5jGS1g/oj4UatJZFxqDwLqradT7d0sLPIQEoVP0tgww97oO2S/0QAyFP8f9MbwMrYcIuU/nwa9ZWNUNbPexE6vG2D71F75qiWE8w1lgjVJffHpVdcOhPoi/aXTOAvbrN+WGEdUIon7a+RCsPSQmNkTh1IN7m+Ot0H4xbhm47rQVADVtFvnWEQ7/cdhqdZqJdq6+LFvX7Txj9f6HtJ28d3DEHr5yrQ31dHf81hI4j6adfOorYS/hz7ahoNjJlMt3IproAAVoAt+ABHqTC5EOCus94MjIW9nDgSM8rw6sWCdhLyWhQ8RzpuQJo7qmee4H2OXXRTDtmiR+dpHacKdxN6ud5fNzIhgVnAFRGULwO/+zKtmK7RqhyrcV35AcsutqfyK5UYfLKfCv6C5DKOGaQr6WLrA4UwEJNMOBbmG5V+rJNO8BQUZSRUORX8NYLd2ZjLwyDD5D+gZ9gjPvN3R4Cvd/8yyO5oorZXOrpp8Wbr+pOP3aFvcFIGsfuapiIEJQExOsLc4BD5EeUXSD+VQXylcqcobWGktdFkgRIBTEvsaXyxE+EhwHWnTg7pzEvvOokM5A6vuhV0Y5CD8UeXTwS5VQt5eqb6zxnkzLT74OCNGJ16sC1N7ZNgiLhFitUDrAlgvxBMZwA0L7Yan6tTHbfzfEvpa1Orpmk5P7KyAgOLD1WSoQ5zUcsII670n2p2MseUfUH1qa+00O2sf/iyoRMjF8ZjFl9gvSAxs0tLuqtP6Cty/1w== 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)(82310400026)(36860700013)(14060799003)(1800799024)(376014)(35042699022); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gvBc0X5VkMFXAfMzeJrKQs3U/zDnszE+COqDZPwIi6I9C8c8cudKxdEE/QOSeUvRHFAONEY49QFjozLr4SHoRSh8DDbJuzMS3sv+al5zeLnw+xHmWBd+bfmExsFd00c00qOAHwRp4G8zgSBr50a1I6Un1gMXAB9Kv9v9QTyxtQ1xHVjAguHFTiYXEQVPqHf4nRILh8coiUVrU0avVPi8uiV/CjxU6268FcgQVrN3sXuVO91JQ8xkjNnW6Tx8MNxuCbjyao4F0+VTO0HaJ4j4pK9KbKPAgld5OSQP4Zzvdm2sDf63HSpIhGT1ELtRwdP3k9eWPtyfJ5HGFCvZY+EjeLp26P+bOLaxbXGuMXSppTW7hpo+nRMoPof0PngByoYGt5Mt+Xj7OP8NyfR03k/b0rrXrCOvj3RhBOM7AQZqwAMzFH6TYSPX/zq74wN34Yef X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2026 16:19:48.9115 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3a20e824-459b-4a8e-15be-08de7940b11e 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: DB1PEPF000509F5.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10602 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 Python extension objects that support __dict__ must inherit from gdbpy_dict_wrapper, a wrapper class that stores the PyObject corresponding to the __dict__ attribute. Currently, management of this dictionary is not centralized, and each Python extension object implements its own logic to create, access, and destroy it. This patch focuses on the allocation of the dictionary, introduces a new helper function, gdbpy_dict_wrapper::allocate_dict(), and adapts the existing code to use the helper. --- gdb/python/py-corefile.c | 3 +-- gdb/python/py-event.c | 7 +++---- gdb/python/py-inferior.c | 3 +-- gdb/python/py-infthread.c | 7 +++---- gdb/python/py-objfile.c | 7 +++---- gdb/python/py-progspace.c | 3 +-- gdb/python/py-ref.h | 11 +++++++++++ gdb/python/py-type.c | 9 +++------ 8 files changed, 26 insertions(+), 24 deletions(-) diff --git a/gdb/python/py-corefile.c b/gdb/python/py-corefile.c index de88a964efb..5aefd2092c8 100644 --- a/gdb/python/py-corefile.c +++ b/gdb/python/py-corefile.c @@ -132,8 +132,7 @@ gdbpy_core_file_from_inferior (inferior *inf) which requires that the 'inferior' be set to NULL. */ object->inferior = nullptr; object->mapped_files = nullptr; - object->dict = PyDict_New (); - if (object->dict == nullptr) + if (! gdbpy_dict_wrapper::allocate_dict (object)) return nullptr; /* Now that the gdb.Corefile has been successfully initialised and we know diff --git a/gdb/python/py-event.c b/gdb/python/py-event.c index 8fb21b7fdad..47c2ba4c84d 100644 --- a/gdb/python/py-event.c +++ b/gdb/python/py-event.c @@ -31,11 +31,10 @@ create_event_object (PyTypeObject *py_type) { gdbpy_ref event_obj (PyObject_New (event_object, py_type)); if (event_obj == NULL) - return NULL; + return nullptr; - event_obj->dict = PyDict_New (); - if (!event_obj->dict) - return NULL; + if (! gdbpy_dict_wrapper::allocate_dict (event_obj)) + return nullptr; return gdbpy_ref<> ((PyObject *) event_obj.release ()); } diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c index dbf3a536255..e1cd1b8f9dd 100644 --- a/gdb/python/py-inferior.c +++ b/gdb/python/py-inferior.c @@ -224,8 +224,7 @@ inferior_to_inferior_object (struct inferior *inferior) inf_obj->inferior = inferior; inf_obj->threads = new thread_map_t (); - inf_obj->dict = PyDict_New (); - if (inf_obj->dict == nullptr) + if (! gdbpy_dict_wrapper::allocate_dict (inf_obj)) return nullptr; /* PyObject_New initializes the new object with a refcount of 1. This counts diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c index 0f29e9fb7a4..ca9a34632d6 100644 --- a/gdb/python/py-infthread.c +++ b/gdb/python/py-infthread.c @@ -41,16 +41,15 @@ create_thread_object (struct thread_info *tp) gdbpy_ref inf_obj = inferior_to_inferior_object (tp->inf); if (inf_obj == NULL) - return NULL; + return nullptr; thread_obj.reset (PyObject_New (thread_object, &thread_object_type)); if (thread_obj == NULL) - return NULL; + return nullptr; thread_obj->thread = tp; thread_obj->inf_obj = (PyObject *) inf_obj.release (); - thread_obj->dict = PyDict_New (); - if (thread_obj->dict == nullptr) + if (! gdbpy_dict_wrapper::allocate_dict (thread_obj)) return nullptr; return thread_obj; diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c index feae62c32a8..289182c794d 100644 --- a/gdb/python/py-objfile.c +++ b/gdb/python/py-objfile.c @@ -201,12 +201,11 @@ objfpy_dealloc (PyObject *o) static bool objfpy_initialize (gdbpy_ref &self) { - self->objfile = NULL; - - self->dict = PyDict_New (); - if (self->dict == NULL) + if (! gdbpy_dict_wrapper::allocate_dict (self)) return false; + self->objfile = NULL; + self->printers = PyList_New (0); if (self->printers == NULL) return false; diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c index 15f7fbead65..c38fd740286 100644 --- a/gdb/python/py-progspace.c +++ b/gdb/python/py-progspace.c @@ -171,8 +171,7 @@ pspy_initialize (gdbpy_ref &self) { self->pspace = NULL; - self->dict = PyDict_New (); - if (self->dict == NULL) + if (! gdbpy_dict_wrapper::allocate_dict (self)) return false; self->printers = PyList_New (0); diff --git a/gdb/python/py-ref.h b/gdb/python/py-ref.h index 4ce7e29357d..f67e247cc98 100644 --- a/gdb/python/py-ref.h +++ b/gdb/python/py-ref.h @@ -81,6 +81,17 @@ struct gdbpy_dict_wrapper : public PyObject auto *wrapper = reinterpret_cast (self); return &wrapper->dict; } + + template + static bool + allocate_dict (gdbpy_ref& self) + { + static_assert (std::is_base_of_v + || std::is_same_v); + auto *obj = static_cast (self.get ()); + obj->dict = PyDict_New (); + return obj->dict != nullptr; + } }; #endif /* GDB_PYTHON_PY_REF_H */ diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index ec4126d0589..a4b046be1ad 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -93,12 +93,9 @@ field_new (void) gdbpy_ref result (PyObject_New (field_object, &field_object_type)); - if (result != NULL) - { - result->dict = PyDict_New (); - if (!result->dict) - return NULL; - } + if (result != nullptr && ! gdbpy_dict_wrapper::allocate_dict (result)) + return nullptr; + return (PyObject *) result.release (); } -- 2.53.0