From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id GL4TLy1ll2daIRwAWB0awg (envelope-from ) for ; Mon, 27 Jan 2025 05:51:25 -0500 Received: by simark.ca (Postfix, from userid 112) id BD67C1E105; Mon, 27 Jan 2025 05:51:25 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 54BC61E08E for ; Mon, 27 Jan 2025 05:51:25 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0B3713858023 for ; Mon, 27 Jan 2025 10:51:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0B3713858023 Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.133.114]) by sourceware.org (Postfix) with ESMTP id B2F433858433 for ; Mon, 27 Jan 2025 10:46:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B2F433858433 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B2F433858433 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974774; cv=none; b=r0mtyHe5F0i2+tqF5XQUd21Xkk7zqVsRFZpULhCHem+EefoS9uwLxRYwejmjIgX/lgNukiUIxq3u4HukU74GBeH8EVGBdSgfNE9FLn0OwtxK55Fu/Vms87+QhDBwK0h0dxINYCqRvKMi3EfRcF4NGa7sl1mgJP9aV0gBvf0GDOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974774; c=relaxed/simple; bh=/JyGEx8RtCRs0D2J+Kb4cA8fDnwpL8ShOWjYiaM8a/8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=S3rsVvqb59BjXwZcCc6j0hXfC4hQX1eK/xrllLMSI+slH3dFjIpZUP77nWij+dDzidGIdZNyWkYLcCLCs8+EXnOJexSCCAxt/qth5v64Qg3nYnbu/ZA0F/m8GVt/YOYfEilyPQ/fERfdcGdXCTXok1oHuV6RTqw8cozf7Suoi9g= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B2F433858433 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2041.outbound.protection.outlook.com [104.47.74.41]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-422-j6-qfLoxOHuNXk1euNWNIQ-1; Mon, 27 Jan 2025 05:46:13 -0500 X-MC-Unique: j6-qfLoxOHuNXk1euNWNIQ-1 X-Mimecast-MFC-AGG-ID: j6-qfLoxOHuNXk1euNWNIQ Received: from SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) by IA1PR17MB6170.namprd17.prod.outlook.com (2603:10b6:208:3a5::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.22; Mon, 27 Jan 2025 10:46:12 +0000 Received: from SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::38a7:a6f2:3b95:bc26]) by SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::38a7:a6f2:3b95:bc26%5]) with mapi id 15.20.8377.021; Mon, 27 Jan 2025 10:46:12 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany Subject: [RFC 8/9] gdb/python: convert gdb.Symtab to use gdbpy_registry Date: Mon, 27 Jan 2025 10:44:34 +0000 Message-ID: <20250127104435.823519-9-jan.vrany@labware.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250127104435.823519-1-jan.vrany@labware.com> References: <20250127104435.823519-1-jan.vrany@labware.com> X-ClientProxiedBy: LO2P123CA0097.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::12) To SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR17MB4314:EE_|IA1PR17MB6170:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c08a195-69dc-4a14-e52e-08dd3ebfd0d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?YecNBUvHL5/fsoMVPu0nOvWNszgFDSrE1lMSEzEl8rlLDD1VcGPmUrrmipDL?= =?us-ascii?Q?5AnYzAuJvmEiaERtW7G/OIFJ3n4dj0nxEQxJ4SAZTu2cxDPYkGvvl1LfsUjh?= =?us-ascii?Q?28iyhALGnC2GZ+lyLhzKW1MYcQWIRw7mWG0IDqiXLIBeQA/lHWRPuDorTCHT?= =?us-ascii?Q?LfQoeGO0EpE6qrQBLvOwLm1SvHqkzUUoI08VxScAjBFz4z/7tVZszb+dlHHY?= =?us-ascii?Q?zchYYEcAPEYMvxzBZdtDY3aj60n6+bA6DcppLfL0QbjUgU+OFHwrZEG5A5Rj?= =?us-ascii?Q?cAkIz6EhWt34Z+RTS+jyC5PkF4eFQL7/STXeaRJI2Zqia8vt/Zgh3AvnGCqL?= =?us-ascii?Q?12QOv1OB64UMTDCmJcXQ7gvJnhBB/jVoYPP2O+XHZsXApVPkj/3O49jrrFll?= =?us-ascii?Q?XXZalcCYaaIXKr76SvqGr6+lWP/lTb1B2C/6ZYfzjDTq7WNAzvaykdZc7AcJ?= =?us-ascii?Q?kqI2ek5gKqLfRvMh6fI9VWw2TZ0HTatPUKT+dj1iTnmMJhg6KQw5GVbpJ78X?= =?us-ascii?Q?s5n0710M1SRaxqvJGmPTKrr5GnIVCtiujllc2MJUOx430qZIp/qsRrx5h/Ci?= =?us-ascii?Q?8Y/xmX906hA7GyQ1nXuuRCTiGIces9u8jhT91vgzetxLqSAMcQwxjyKxrIIL?= =?us-ascii?Q?xad714j4BXGFFyVSZfTfCWAFjF5EJv/Bi3HOA2Hl8+GbmUlDoCsyggXwQXlL?= =?us-ascii?Q?GPMrz/ACeLmjhSC4aJoqlZVRyoJ7/9652pRFwXgpUWH3pud8YJJkLPPYNDtV?= =?us-ascii?Q?ZKdgiDq9KXgVWBwZXpovKQ0mqhs9aWuUXaoMw7CgwYag5wAo7I/3+lQ3Sufu?= =?us-ascii?Q?nxEBtvjN5bO5POVq0173Suzx4ZWFkHMMXTM02SdlbVc8qMlF3xgOhG1TXHZb?= =?us-ascii?Q?Fy5TlNKhnG57KuFp2hW7HN8hxl3q35c2rRsBD/wlzLR5JgrfaoDgeJn+ZJ9O?= =?us-ascii?Q?8VF9KU0uM8zBKHDr4wXfLWyvs7rWGytMdP5oMWbjq3aogg6waJBuDVVf7Fyd?= =?us-ascii?Q?ZACjwfp5vzq45waEOilD58jkilX917sarTuF6JFukl+3ClEOa0tz172RzMyS?= =?us-ascii?Q?vDd1ykcwKxIrJoGSoabX2pyC4GPHjnd7NQEAWd9AW/w9niNAF5hWpAIQeJ1z?= =?us-ascii?Q?V6IH0n/aEtkk+PVUh4fKjh8/X5iLEeIKYKVQZxtQPL3V1LC+NnYYnpxICKps?= =?us-ascii?Q?bojXhmh3f6OR9X3BfU9k8lmGtBDPni9TEVGHkLL2Li70q+p8cE8U70DsUNXv?= =?us-ascii?Q?26HUUigHj8ywUg+sAHVZdN4XREc7NpiO3DdZBHtCrlTZKWMRxSjYfQDq5NMV?= =?us-ascii?Q?SSx/OOELLQZcVrVDQiaPg6lZWT3d75MACR8OHlIUh0/KQDZb0qTFCmIfZIeY?= =?us-ascii?Q?lQwE6yfeDVuiC9jTsVXQPLD/tevL?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA0PR17MB4314.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qxYrX5tE9fY7a0baega7Rh55NQYDyBMAKB3yVjKgH3UNtBR9gfreZZb591RI?= =?us-ascii?Q?g4suQD3fQ21nPQzUanQ96Ee4KJJmoUfsgOGBxzIOJWB2iVLTQ1ho0qpQQTym?= =?us-ascii?Q?ueKSp5tHs7yvgOe6KugKsgrhEFoiqwx72gUXhOpmLqEyGZmjSf1BREJQA/+w?= =?us-ascii?Q?t3E4HPj/3q4CBbs0aaFJUXWvRXRHyvxGqXVjrJktz5++Q17nWgUmCfp47zA4?= =?us-ascii?Q?w0XJ+Eg0V0wRw9b/nH0eSH7Bah7CEBcV+ex36MraOkYY6pPWUqMa5CSs7cJ2?= =?us-ascii?Q?wYpVusDedPyKU3FNTocat0q4VGqGIcB1FFQpAVkXvb5NNnETAEEGjzQ2bMwd?= =?us-ascii?Q?ZktcPzgneBalBJvaXDQ9kLSAqd0goSqcW3AluqtahwKAabqxHHibquu74etf?= =?us-ascii?Q?d7qEpDUvbYhkLI8zFhRQbe8mnjmso89FaZj5eVDHLWCNXEy10YziceQVa3SL?= =?us-ascii?Q?csc0HIyoE33/O4jNqTkVCMfT9DoYMrNn4P54NRLNv842fJb3PfW+lGHP1NCl?= =?us-ascii?Q?R3VTSvcUMhMyxMIn0GNkL2L3rQtu9Jv5uxPn86N01faqfoGHVHPY0lEzf6Un?= =?us-ascii?Q?sXkzc01vaEJpj/dhZh3vvEQO7FnkkIrT9CKEg4C+0yrxn6w/EXT19VJOuqIA?= =?us-ascii?Q?yTukrPUTh4b16z6/y7y5bpEV3pvtc5Ur7hJZOSUgFNbLSamY70IQTTYuTAfz?= =?us-ascii?Q?LIwW3dQhGPL/qV84lRHSU+jamJ82odr5CU4BYItlMHC/reXyDHBLS/R1GKOK?= =?us-ascii?Q?earqFKIytDwFa2OuWbtPdicoccuEDtuFvTF6WkanLNZBZKJi7ljLDWV7jbOF?= =?us-ascii?Q?cohpfhKJxNGIFovIU2akvM0p94/nCLbzrgr+R3xdlQXfMy7C9x/pTXyKSFq+?= =?us-ascii?Q?10cGwXU1S+YSWNh0S0BdwIXn+QmdDl3N2aC9DqsQcME5vdK0bVLvvLdRo+k4?= =?us-ascii?Q?LND2+fMXlb7dKNeHdVQu/ltA53NTFb559djSk+9FssONSGRJnRdYHpxj0K6x?= =?us-ascii?Q?DJCK4X/zbe6Ranw/6h63++V1Pocr646aezEj+/flF2VOANKdDq9dR37eWLHJ?= =?us-ascii?Q?aU50yFZBD2mI7AQx0LA2/e+zPlg7RJgBLw8F+T6qdHfKV92RxiFb1lv0f3RD?= =?us-ascii?Q?Ds0QE/Nqx4fBAMg7ELLyLhjbOzmZav4jXnTq5AwRmxsZE+Pt5Jrr+E0njgvh?= =?us-ascii?Q?b9hKi1Gl7nVgrr3oLZKDu0Pza/q+jyxWwg+aCtIgWmwDxaD0elJwqZKe3AG6?= =?us-ascii?Q?rw1wnhCb92cDxAx0jT2acZKaIFDMzg8hIm/gSQK68cJMt9ZvIa0fWvBz2OWq?= =?us-ascii?Q?ofwVsQ2JBPYsT3mtmKKO17QMNIZkWYpXb6ocK/NDiJhVaNO7KFapDdD8eLB3?= =?us-ascii?Q?F1AbnlVowQmHahoq6q+/vXbP9yfkcYfCjUa0isiS1TH2zBbXk9D+PWdE3+OP?= =?us-ascii?Q?slzGhdRRMAkAasVQZNNTMdFQJey3lKWvLIC0lGDMteak5dPFOBZ6rIvksBke?= =?us-ascii?Q?ImiK4Slzz47CZkcMOf3Jxp+5IDH/1oNDzb3Ip3UgKPAKBaRjwN9bChZhywy9?= =?us-ascii?Q?p8TefvwvGuGWlhk2t9gsd8FbReGYDOyrXgx9KsTg?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c08a195-69dc-4a14-e52e-08dd3ebfd0d9 X-MS-Exchange-CrossTenant-AuthSource: SA0PR17MB4314.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2025 10:46:12.2001 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LBm2RZ/kX9AMKTORjqUyzXUwq3R7tvFQzeuG824NrLgxyDq+RKqR8tNwOJBZc936gevQ3WuDw+40CIEc1gl7LQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR17MB6170 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: KTgx9odR7fqspYJWvSD11gbgsBVmJzrJUWrem3lDiAE_1737974773 X-Mimecast-Originator: labware.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=WINDOWS-1252 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 This commit converts gdb.Symtab to use gdbpy_registry for lifecycle management. Since gdb.Symtab only holds on the struct symtab * (and prev/next links) the default invalidator can be used. --- gdb/python/py-symtab.c | 74 +++++------------------------------------- 1 file changed, 8 insertions(+), 66 deletions(-) diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c index 177028ecf01..417ad68a155 100644 --- a/gdb/python/py-symtab.c +++ b/gdb/python/py-symtab.c @@ -28,39 +28,12 @@ struct symtab_object { PyObject_HEAD /* The GDB Symbol table structure. */ struct symtab *symtab; - /* A symtab object is associated with an objfile, so keep track with - a doubly-linked list, rooted in the objfile. This allows - invalidation of the underlying struct symtab when the objfile is - deleted. */ - symtab_object *prev; - symtab_object *next; -}; - -/* This function is called when an objfile is about to be freed. - Invalidate the symbol table as further actions on the symbol table - would result in bad data. All access to obj->symtab should be - gated by STPY_REQUIRE_VALID which will raise an exception on - invalid symbol tables. */ -struct stpy_deleter -{ - void operator() (symtab_object *obj) - { - while (obj) - { -=09symtab_object *next =3D obj->next; - -=09obj->symtab =3D NULL; -=09obj->next =3D NULL; -=09obj->prev =3D NULL; -=09obj =3D next; - } - } }; =20 extern PyTypeObject symtab_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object"); -static const registry::key - stpy_objfile_data_key; +static const gdbpy_registry> + stpy_registry; =20 /* Require a valid symbol table. All access to symtab_object->symtab should be gated by this call. */ @@ -280,23 +253,6 @@ salpy_str (PyObject *self) =09=09=09 sal->line); } =20 -static void -stpy_dealloc (PyObject *obj) -{ - symtab_object *symtab =3D (symtab_object *) obj; - - if (symtab->prev) - symtab->prev->next =3D symtab->next; - else if (symtab->symtab) - stpy_objfile_data_key.set (symtab->symtab->compunit ()->objfile (), -=09=09=09 symtab->next); - if (symtab->next) - symtab->next->prev =3D symtab->prev; - symtab->symtab =3D NULL; - Py_TYPE (obj)->tp_free (obj); -} - - static PyObject * salpy_get_pc (PyObject *self, void *closure) { @@ -418,16 +374,8 @@ static void set_symtab (symtab_object *obj, struct symtab *symtab) { obj->symtab =3D symtab; - obj->prev =3D NULL; if (symtab !=3D nullptr) - { - obj->next =3D stpy_objfile_data_key.get (symtab->compunit ()->objfil= e ()); - if (obj->next) -=09obj->next->prev =3D obj; - stpy_objfile_data_key.set (symtab->compunit ()->objfile (), obj); - } - else - obj->next =3D NULL; + stpy_registry.add (symtab->compunit ()->objfile (), obj); } =20 /* Create a new symbol table (gdb.Symtab) object that encapsulates the @@ -441,16 +389,10 @@ symtab_to_symtab_object (struct symtab *symtab) and if so, return it. */ if (symtab !=3D nullptr) { - symtab_obj =3D stpy_objfile_data_key.get (symtab->compunit ()->objfi= le ()); - while (symtab_obj !=3D nullptr) -=09{ -=09 if (symtab_obj->symtab =3D=3D symtab) -=09 { -=09 Py_INCREF (symtab_obj); -=09 return (PyObject*)symtab_obj; -=09 } -=09 symtab_obj =3D symtab_obj->next; -=09} + symtab_obj =3D stpy_registry.lookup (symtab->compunit ()->objfile ()= , +=09=09=09=09=09 symtab); + if (symtab_obj !=3D nullptr) + return (PyObject*)symtab_obj; } =20 symtab_obj =3D PyObject_New (symtab_object, &symtab_object_type); @@ -545,7 +487,7 @@ PyTypeObject symtab_object_type =3D { "gdb.Symtab",=09=09=09 /*tp_name*/ sizeof (symtab_object),=09 /*tp_basicsize*/ 0,=09=09=09=09 /*tp_itemsize*/ - stpy_dealloc,=09=09=09 /*tp_dealloc*/ + 0,=09=09=09 /*tp_dealloc*/ 0,=09=09=09=09 /*tp_print*/ 0,=09=09=09=09 /*tp_getattr*/ 0,=09=09=09=09 /*tp_setattr*/ --=20 2.45.2