From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id QFjUJEBkl2daIRwAWB0awg (envelope-from ) for ; Mon, 27 Jan 2025 05:47:28 -0500 Received: by simark.ca (Postfix, from userid 112) id 91A8F1E105; Mon, 27 Jan 2025 05:47:28 -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 2EE9C1E08E for ; Mon, 27 Jan 2025 05:47:28 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CAEB5385801B for ; Mon, 27 Jan 2025 10:47:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CAEB5385801B Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.129.114]) by sourceware.org (Postfix) with ESMTP id 183863858430 for ; Mon, 27 Jan 2025 10:45:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 183863858430 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 183863858430 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974745; cv=none; b=nuEN3TckachOpaloYMWzDuJNy5+IeSNpYXJhIfQbjtZ/lRiBpdbI3SUP0/sWDysuIYPCNbIFuaRj8VOEwGncHUZEmsVmGzu2KZ1B5nbQKpFzZA30OHQYzSE+WkTVxNFfpm/fl+AqDMJbwQ3nFOZY9LfORWvjroInxYSuedqtIjI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974745; c=relaxed/simple; bh=qFyLBFg2LCUeOk78pvLQJ0lc+lwsXG0ghZMECg49R9w=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=naL7HsH7ulPd/OHi+LxVmixzOO14GH/5955QTqRWak/6OEYhw8RsEEUoM4UfNpsjfwDvFmVfwwA89Ayc+pMP3p8ee14Dn5YHYdvgBZMznubIvd6AhGxzFn4YZRYkSgyNXT+xpa9WS5Y79Tp/+2qj+iZijALsV/dOX2Wk+Wrf1+w= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 183863858430 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2041.outbound.protection.outlook.com [104.47.70.41]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-287-z4zb3PRQMpWROzRSVPiY3Q-2; Mon, 27 Jan 2025 05:45:42 -0500 X-MC-Unique: z4zb3PRQMpWROzRSVPiY3Q-2 X-Mimecast-MFC-AGG-ID: z4zb3PRQMpWROzRSVPiY3Q Received: from SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) by DM4PR17MB6954.namprd17.prod.outlook.com (2603:10b6:8:18e::15) 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:45:40 +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:45:40 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany Subject: [RFC 2/9] gdb/python: preserve identity for gdb.Symbol objects Date: Mon, 27 Jan 2025 10:44:28 +0000 Message-ID: <20250127104435.823519-3-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: LO4P123CA0500.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::19) To SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR17MB4314:EE_|DM4PR17MB6954:EE_ X-MS-Office365-Filtering-Correlation-Id: 45239a90-795b-48b6-a803-08dd3ebfbde9 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?1fOoF/Vc8AaFyWU93QUiEZkmdp7aavy5rAwNJWPWdoRrZase67PgiYP095N0?= =?us-ascii?Q?l0jQbNC2RE5DUBg0reKrcisX8SIuMuv56b6zOfu0sMfAo9xjE8dTc+sd3sKq?= =?us-ascii?Q?vIHh5RmyzTV4ubRNAX0hLukgZLbLx1D8i/spSZkp2MHAR2V1EcJ2UI9oFQVq?= =?us-ascii?Q?HjxsSk6Sl6hLnH/4716wXMA2FmZb3Ac6q8V+b0B3f0DmPyLess3bkG94H5eM?= =?us-ascii?Q?9z9Y1FcNZKJnN4aBRQlLEmGNaVxwvuFXfjjqGQ0VKzPNz3jw0XnDkm0RyXCq?= =?us-ascii?Q?20/WJ3ZQLaRBo1KYQQeRDrEYySly26nVc3zyKCCsYPwxtmBfS6P+gaEoBiyK?= =?us-ascii?Q?qM+GF75ZYjYq+IoRWjAIH/tNwdt8KUJ39CIiEoLE6sXVEGqJOQJnSPCmBAy+?= =?us-ascii?Q?x/8k8F21H2CPVJi3u8zDW4K/d9z2/5oA3L/ioyUu1b3tmNS4W4CJ6vxJpDi7?= =?us-ascii?Q?S3YDEdlu/LrzhMwgKRquDJtTXv4amSiWV24xP1t/82wk4R3gGbj5UGf1GZqe?= =?us-ascii?Q?teOYtYRpdSBwLo2Kfyf+n80q+i4ArGe87ssEJ64pTE7dAak+UoskNsdfqagD?= =?us-ascii?Q?zA6lbMs1/+xkhP0OgKMkN8wx1rNjEuJCE/7M9lc/E0bISI34EOau12hh9w0m?= =?us-ascii?Q?v6TXmrD4ikjkyx/hLCWKN4bm1haOkEH1vLjp5ABw7XRXsn+h29HidaxwH02f?= =?us-ascii?Q?LBPIQZgVmV/zshmAgvGatrt0p2X/4gKaqF2seL4HAhnndff8yrRPKgauvUfL?= =?us-ascii?Q?Q4k5rWPcZ6H7qBEE2k5SxnmtEtKB7YYf098k0JrjYHuHnqzTGh1287TG4wIO?= =?us-ascii?Q?RJcwpu8vzj25TGmfiyQTrDBERwuiftLb5dxXK/8qo52ijQ0VU3CNIM75hdE6?= =?us-ascii?Q?E6rgpdMTnspXW+St/sPMV5hAZp0nvjSwVPUhcewpsyDkCpALfzcxatzlmI6h?= =?us-ascii?Q?0Tn0l+eCb8CS7voEEd/D+o84/BxuMRY4mjSglWrqIw8/SsA2Ud2nI6yOxnCP?= =?us-ascii?Q?6Wi8Vfgk2uYMIvb9WkKeWTe7rfK33qAHerOYjzDLK819YjvIo8gctqxkGEjB?= =?us-ascii?Q?tk7FH5mentmp6UqstXdviwNqyYHHxwA1IPT7vhUl/F35Z3exSxWwCW0HoOJz?= =?us-ascii?Q?R4yehAXEgxdD4egkuF7vXeLSD/yTYTPDb5hSzpqTHVt1vnruTgjsYgcnaJuv?= =?us-ascii?Q?YTYSPVpQgLUQHxmm2ZapMM/S6MpKfbIZFZ/h8CdjscfC7mR7Gc4AeTLEzKyE?= =?us-ascii?Q?AYOeIocDtq/2huIvsoYAHg1tXvWNv+EobOX5NOzAGkX5lpqBRypMnCNEOsoR?= =?us-ascii?Q?5wf/urSf+uW+hX0eGxj1BeSZWCGW4cuMl3QjdCb4QrAz2eUNIV7MQMg6m5ps?= =?us-ascii?Q?rYZB6BigPWkkn80cXn75IlKJ39yl?= 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?3RG2vn3jeoSAYl6QIsJ50uops9L+V4bAHkoagk5DBQllyuArv9sH4OvwgdfW?= =?us-ascii?Q?s8gie+3zu6vPu/cYKVHUQgsLwasEc6g/A5/2vbyi7ukpJ9mjZzxVo5FSfb8G?= =?us-ascii?Q?nu7e/aZ6w5KRV6rUaBvZs9yZiCi3x5nFOzwa5FyDn6I0NizmHmJ6e/f/FRYD?= =?us-ascii?Q?sphWbiaJQekp2daDQSXF8by0yJD91GH4VhDCIPIJzXv14H2MLibcAOs3oxsj?= =?us-ascii?Q?2PxW7RZo3kI4QoTWMJwxyX2//J2G8itjNp8HKsG8fvuPfqW/bezEG4gULOr3?= =?us-ascii?Q?fioYW0M0wz2VbhqIqNzfvjBFtYsCkUY7IJa/si8L0njZtNdEyn3n9gx061gr?= =?us-ascii?Q?UiBzTXckIrjnNwITslWP+HFm84QWcs4FCrvQRm7bgZRtzCaW2oNzyf4nQM2b?= =?us-ascii?Q?MLhh7+hLu5mozTwPezwcnuMxsGg/V8AiollijXmfmawyBDVkXaAQenBsKNOq?= =?us-ascii?Q?FRhpzt3Y1XaJzYwhebnAmmtLkL8Bwabv4ZUMlc5eUOe93PqA1Yx5r2X1l3+p?= =?us-ascii?Q?Q05QTwuEFb7zFPfuEdcvWn5EXLhgwgqIERiogy87T3fCX2S2dn6hg1PXWrKR?= =?us-ascii?Q?2Wgzp2NdUjK3nPMSJH8FlbDl3my73/HG9T3L9eAaAJP4PeVORZDBSIYwZ4RG?= =?us-ascii?Q?MXCb/hY0/k7cCJSpaRXyl6d2yPG7hgoG+y6oojkVB+99MOwCIQeJuhvgkyJD?= =?us-ascii?Q?88kIy9/CY9HzoK81KViWqxNbsYke/SWxv9W8yebdRZ0RplxVQhngF7U7uUqO?= =?us-ascii?Q?QMY/6yTT34etiH668Gje7DxErRfx2ME4hpr1srqae6vFmHVfp0KsnnqtCTFB?= =?us-ascii?Q?iS/L5fGTyMXhQJQ1OMQDd2SbzhPMWzl7rvS/bysY0j/BV9VK0RPOznvyyH/c?= =?us-ascii?Q?uevZKzBD+ZqN1uqgMfyLrU3Zs8/H+V41QGAzH1QiVXZAMej/xhnSx0dk5dqI?= =?us-ascii?Q?ueiTmysp0+eO0Ns/dpAJvzc1ngMpzYymN6JQE4loVrTgJ071hwK8YJqRJxH2?= =?us-ascii?Q?F2oUVZTQReoYzYdkqrDD9ZExGgjJBcZJ7OMXh5bbdP/XVdytr92i7pZjBlwr?= =?us-ascii?Q?QFHYUhyV8UyWRBTy5pziRKXQzbcUW1RcKa6Hl9UsiB3xzazrelz7YyHWtwQm?= =?us-ascii?Q?eb+WycSPZuA3dUaRC+bMbDAN9hRgL3Gmw+5hGPLgFtnFhCUe7Rhm3t/+Wa0P?= =?us-ascii?Q?NRAtsnO71Fnt4rNiRJIQM2Pg7K2uNyUS0ErpsC70PoyPDMFPd1yEQpU8om4e?= =?us-ascii?Q?6iB+cleuo/IIAntLI09SvK668bewwsZE8f+xOvE9JyLFx9iWTbAu71BDSg1L?= =?us-ascii?Q?cNTFxfOlQyhHytF34OIMVLCEyPd5yus8D/ez+SWCtu/ZzpgxDXfGjYCkAu1A?= =?us-ascii?Q?XFqDMytXd86RjAztgO4G9RQwAVHY+TR0nI2HMoAGGxo8AT1iPLDnUdRHncXf?= =?us-ascii?Q?GJYFc3ZYqIsj+3P2F3dTxzkol68S1xqHgP33Eg2EU7/TjIBNbSQ8MSN+Zb+e?= =?us-ascii?Q?TnhDaGOxZ4OWWnzoA0opSMBm3EwSdnzrSxf01af9eJ4X0hVJ4N6AJH2mEa1Q?= =?us-ascii?Q?yRiD3IK5UM+aYy9PiROnkvOcyPPt8hMNAtoUwpAk?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45239a90-795b-48b6-a803-08dd3ebfbde9 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:45:40.4351 (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: mywCBpWbCU8xHThcyZjY8cCJ5/p7Nm97EIe3HRf+2QSoeaNFggUWJVJvbWletJfYbt+y2qbjxRYK6xIJks6FFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR17MB6954 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: qaRtQq9d37CAVt0oOGq9Kz0VkuAPn6ZKgLCfQIeuycs_1737974742 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 changes symbol_to_symbol_object() so that each it is called with a particular struct symbol * it returns the very same gdb.Symbol object. This is done in the same way as for gdb.Symtab objects in earlier commit ("gdb/python: preserve identity for gdb.Symtab objects") except that symbols may be either objfile-owned or arch-owned. Prior this commit, arch-owned objects we not put into any list (like objfile-owned ones) so they could not be easily looked up. This commit changes the code so arch-owned list are put into per-architecture list which is then used (solely) for looking up arch-owned gdb.Symbol. --- gdb/python/py-symbol.c | 64 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c index f1ba0ba00e0..2abac6553a0 100644 --- a/gdb/python/py-symbol.c +++ b/gdb/python/py-symbol.c @@ -70,6 +70,8 @@ struct symbol_object_deleter =20 static const registry::key sympy_objfile_data_key; +static const registry::key + sympy_gdbarch_data_key; =20 static PyObject * sympy_str (PyObject *self) @@ -334,19 +336,29 @@ static void set_symbol (symbol_object *obj, struct symbol *symbol) { obj->symbol =3D symbol; - obj->prev =3D NULL; - if (symbol->is_objfile_owned () - && symbol->symtab () !=3D NULL) + obj->prev =3D nullptr; + if (symbol->is_objfile_owned ()) { - struct objfile *objfile =3D symbol->objfile (); + /* Can it really happen that symbol->symtab () is NULL? */ + if (symbol->symtab () !=3D nullptr) +=09{ +=09 struct objfile *objfile =3D symbol->objfile (); + +=09 obj->next =3D sympy_objfile_data_key.get (objfile); +=09 if (obj->next) +=09 obj->next->prev =3D obj; +=09 sympy_objfile_data_key.set (objfile, obj); +=09} + } + else + { + struct gdbarch *arch =3D symbol->arch (); =20 - obj->next =3D sympy_objfile_data_key.get (objfile); + obj->next =3D sympy_gdbarch_data_key.get (arch); if (obj->next) =09obj->next->prev =3D obj; - sympy_objfile_data_key.set (objfile, obj); + sympy_gdbarch_data_key.set (arch, obj); } - else - obj->next =3D NULL; } =20 /* Create a new symbol object (gdb.Symbol) that encapsulates the struct @@ -356,6 +368,23 @@ symbol_to_symbol_object (struct symbol *sym) { symbol_object *sym_obj; =20 + /* Look if there's already a gdb.Symtab object for given SYMTAB + and if so, return it. */ + if (sym->is_objfile_owned ()) + sym_obj =3D sympy_objfile_data_key.get (sym->objfile ()); + else + sym_obj =3D sympy_gdbarch_data_key.get (sym->arch ()); + + while (sym_obj !=3D nullptr) + { + if (sym_obj->symbol =3D=3D sym) +=09{ +=09 Py_INCREF (sym_obj); +=09 return (PyObject*)sym_obj; +=09} + sym_obj =3D sym_obj->next; + } + sym_obj =3D PyObject_New (symbol_object, &symbol_object_type); if (sym_obj) set_symbol (sym_obj, sym); @@ -379,10 +408,21 @@ sympy_dealloc (PyObject *obj) =20 if (sym_obj->prev) sym_obj->prev->next =3D sym_obj->next; - else if (sym_obj->symbol !=3D NULL -=09 && sym_obj->symbol->is_objfile_owned () -=09 && sym_obj->symbol->symtab () !=3D NULL) - sympy_objfile_data_key.set (sym_obj->symbol->objfile (), sym_obj->next= ); + else if (sym_obj->symbol !=3D nullptr) + { + if (sym_obj->symbol->is_objfile_owned ()) +=09{ +=09 /* Can it really happen that symbol->symtab () is NULL? */ +=09 if (sym_obj->symbol->symtab () !=3D nullptr) +=09 sympy_objfile_data_key.set (sym_obj->symbol->objfile (), +=09=09=09=09=09sym_obj->next); +=09} + else +=09{ +=09 sympy_gdbarch_data_key.set (sym_obj->symbol->arch (), +=09=09=09=09 sym_obj->next); +=09} + } if (sym_obj->next) sym_obj->next->prev =3D sym_obj->prev; sym_obj->symbol =3D NULL; --=20 2.45.2