From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id iLzwOCxkl2daIRwAWB0awg (envelope-from ) for ; Mon, 27 Jan 2025 05:47:08 -0500 Received: by simark.ca (Postfix, from userid 112) id E29021E105; Mon, 27 Jan 2025 05:47:08 -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 64DE61E08E for ; Mon, 27 Jan 2025 05:47:08 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 49AFC3858290 for ; Mon, 27 Jan 2025 10:47:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 49AFC3858290 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 45B373858431 for ; Mon, 27 Jan 2025 10:45:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 45B373858431 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 45B373858431 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=1737974748; cv=none; b=Z3j4LY6RMyVoHbeWkzOpQZhKP7WWkx3YQAqKxkMLglusYYNMzrDS1MXiRFI+/PLmxrZioPPaIMXAqhb5aC5fWbs4PIyi/BHi099vYzhB7i/CVf0SN8tDHh4T0p1ZDuaKUS1ttVA2UfOP4ERyJ87ZzlRffS4wVLD+P2ztkIu6LpM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974748; c=relaxed/simple; bh=oST4fIbDvqjSB+YCLYetQ3EUOBsnI/dO/ccivx9TF7s=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=WUn7HjPirEuzCUGHiOw/YkF78Nf8EmYWMmzA0BmxQGbRt2HtugbN9QnlcqaZ71fv5QwcdI9Kw8xmftYyHH1d8CEsNd0xRa9s3B0FhS7j0X3Ud7JAcF07YVj2uecfUDQ9PiJTmMY3lUE+06GgnsPf/LDvTqE6AzecLd9O4il/ORw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 45B373858431 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2040.outbound.protection.outlook.com [104.47.70.40]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-509-Je6ySa5IO9mOQjduLEN3iA-1; Mon, 27 Jan 2025 05:45:47 -0500 X-MC-Unique: Je6ySa5IO9mOQjduLEN3iA-1 X-Mimecast-MFC-AGG-ID: Je6ySa5IO9mOQjduLEN3iA 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:46 +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:45 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany Subject: [RFC 3/9] gdb/python: do not hold on gdb.Symtab object from gdb.Symtab_and_line Date: Mon, 27 Jan 2025 10:44:29 +0000 Message-ID: <20250127104435.823519-4-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: LO2P265CA0418.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a0::22) 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: 85e4b5ee-de74-49d2-5cd9-08dd3ebfc134 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rAqLebYKRC+H/9nM7RCm4+5JZWUZEvaeP0RQeV3vAE8xSF5XcH2aAGqGEs4h?= =?us-ascii?Q?LQ7U2v3f+RrBe37Qtclxf5YKxVx4afqUTvP3Uw+JgS9UiTIx+QvdGXtKPrRl?= =?us-ascii?Q?SHWrP1gzK/6YMsqZQMgR0vmNyqolGnEfXOb0jdQ2bG9hJIE7/YJDyb+bwaBt?= =?us-ascii?Q?nSDjEGjWZ5qYLMTk6fPWAT8i4m8Ac2lx8y8aT09mdhgBJmCDjCHRmUMEbkMj?= =?us-ascii?Q?fP1+VSv/gvbEs7RZAgKigTAH8O7FojvIFUMc6LUidPxPDWUql/kr8LJ92PlY?= =?us-ascii?Q?BQRd5/v/xvyXX8fJqGm3sSHbxqMdwhJNQHhSvcmQtwcNjOIOWAlGoa9Hd1Qi?= =?us-ascii?Q?dZn6mWGDv6JcR9BkzBu4gwLXF6DOSh34wCUyZzHqachYLlOaq8FUH6qZTGHE?= =?us-ascii?Q?lBfAR6Lch3LcOk70mba8tMBD5PruGCaXYsyKkLdaEtaput04nNZEGiJQXZae?= =?us-ascii?Q?qj7BDF3Czp07IElbqju3plJIZy/UjdkOKzV/5BuzmA+EMrJWMlfiTMqRzsfU?= =?us-ascii?Q?k06FodMu1/LBJSNkP5lZ2QkXoP26hIdZO6HXL7tvuJDmqkkVPQTr/c7TpVTx?= =?us-ascii?Q?VeItmrkyGx+MM5mh4+QhVmUp2bmp5wmtHHLX4x1WX2O6l2r6W8vZhS9OpZ+G?= =?us-ascii?Q?IeobgteKnfMQ+k/tj9Fcyo3gdotWs5QzI9yMvo1hbM4VibPDHiF+vmWsCBnU?= =?us-ascii?Q?tyF9lud5Rp2My9aQqzqlDBeK+FjrSH8ZEaneP+XxnZbpoMQUw2vIvUQE5Neu?= =?us-ascii?Q?W/PGgXjdLw7NfJpbm3iBOuH+WAHHShSlxuDPMGkwZdANYQkofdmSCwxFnO+M?= =?us-ascii?Q?peaVVNw6LP3IM3STHpx6DyZl2ldvT+zbrKZIycYmxEtJy4jgcW75Fa4hw0Ur?= =?us-ascii?Q?uJO8gp3iuy8J/ScXX8t0Nz/7GPEHGXXGh9S86rXAqdwTaqsY7iEFZX5zKgVL?= =?us-ascii?Q?N6hfjJeJJByE7zn+8mJpQ8Yvdn5sSfbwz0pYjxOZiLoDKw7CMGTjNq9CvIn8?= =?us-ascii?Q?A9r+gSemts3netGi85jkpA63lViged0hMzIJPT4SPo5jHkf1xM3qHoUboEh8?= =?us-ascii?Q?K9S1kGcXvdvcx9kOmZkTB+lX95/H/5zF3v8PW2ujRXqo9T3VmlO0LUVvUC6v?= =?us-ascii?Q?v+OjZEEjVkgsP35+5IBC7rc4cPE2w2erojoF676Nx6mSgb1TjmEM99Ez6PcX?= =?us-ascii?Q?GJHouInP+HqnCjs+piFkAqMn9iIvusZmqwzuP3z7afsZ6xpY1fulf8qjgUas?= =?us-ascii?Q?NRXwGEenf8O0iIcBLczjrsJs5LLogWXT1SoaaUr+KHSnWpc3wJn5NYx4KvkN?= =?us-ascii?Q?sE6VswKGYQiwx21lmi5nWH9CsYiq9oq1StRjFkFDuG1YieAJx+0WrugODiD1?= =?us-ascii?Q?Fcu+ZPj75yn2dafPYrP1vq44AfJD?= 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)(376014)(366016)(1800799024); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ed9bUZn5QmFKONdn0ZmITWLA/z25wAvhwQf/2sIU0V8NuM4hbx1MJewbefmn?= =?us-ascii?Q?OuE+7g+xOCGdsIaiY1tOADk6aZ3WsJ8pQPAja7Rizkx+hNsMfYEDDiPToOY8?= =?us-ascii?Q?qRqw2qCuAUZMRLWVefm2Qg27pqrAGLUApHLhDqsw5f0BbjuqceCtf5tMEjGg?= =?us-ascii?Q?N6DpyWbwhyn2hxPoLScs9pUUjx9Y6lYP+BhrDfIRyEMazC4dTnv5gUd6Vzge?= =?us-ascii?Q?9Vm3p5ws4fyK6+2JKbRlGrsBvtDx7AFO7/LaEogYIhuQ6CxYqLGf1mNwWD+/?= =?us-ascii?Q?mixqcUVfWXrCM2COjdLbhaDw9cCXuwGA3noHhObbCnS9XTQf9oeDJ4sWIo57?= =?us-ascii?Q?0QoG2Dnd728cjwx0R5wW3wFenjnFQ4TalYlEeCA1GRZ2VDxxdacQT03BtLhP?= =?us-ascii?Q?2GLf8qbiUabbYFgyj6kcH0xTEQXTtD0VTW1sIYaVouJnDoeHP84OqUGTgnEC?= =?us-ascii?Q?OytrhtaV+o+UoBAn8rjYbvXuNL4HnUuSdnXaZdNCHgjOb8Suu4L/HhblQ3HZ?= =?us-ascii?Q?k9TZykN9hE8XIAYkDwnYvS7GkITR8ECq+EptnTsGwP9XscneWBtJVpam7faQ?= =?us-ascii?Q?6/dZw7QuitlY7cxeBs/5VP0ipwINL5fRuL+o/Ml3B5xl0neu8jijq4F18ajA?= =?us-ascii?Q?LxLUqEuCMA8PjD94B/IgHIFx18eYERpTxD3QKUtvpXHaxC3OflcyVceaU9gQ?= =?us-ascii?Q?JWlDUcSt0zXhwFQ4v5Azig6hUnLQMndR3kzUWQXBdn5sWKIJJLw0Un2pvIVg?= =?us-ascii?Q?KKhxCBosLXS/AE2hyHDoPRonysysiAYGl2+Vd8KT+fQnzQwa18ek9DrOT49S?= =?us-ascii?Q?Hyme5wPEnwdLvk9IuX75Gyjgc+fUEyh8mOdoTbYhzFAD6NHQNFQ3OWHT5r12?= =?us-ascii?Q?U07XivVOlWJhq21c84Q4f8+RTkunVdZLjK6LhZfa4pRRLE7qP9Lez663KZQw?= =?us-ascii?Q?xzMJR5VA54CbbxhNQ+O4+0llsktG5c3LwAGaX8dJyJV4wM06PZDyKA8E7HaP?= =?us-ascii?Q?R2aulNkthhcyDfziYZRyq4wG1GTJFA1telZ4YW/JvC5Ms1beDzm98ksglgM/?= =?us-ascii?Q?9FDYF3cr//NxmAOlg/vFaPavDI/MeoW937Omvhf98n8NrhSBVcM5YZyVv5fg?= =?us-ascii?Q?QOBcrV9W/NsYQ/ZhJzU78PZCq2ezhFR5lcXTgjaD0XCdNF6dggw7l/REU4Uv?= =?us-ascii?Q?cB3pufzhTOB574Vb/OHEsB1YtQlNsWYKCI2mXGNpIGVPTkSLaYAyhPUNTDgT?= =?us-ascii?Q?doNMR4+u8LbXhr7kYKk5TfQGwOyLdKir47wmSVxPHDD7n+EH9Yi2ELrGTzEx?= =?us-ascii?Q?2hASXQxhpd13NIBr3TNH/n3mFZVAwhNxYYvpTm8R+BM8qJwDzWh3EsxXGKxQ?= =?us-ascii?Q?1uPw5IMdriNmp5W6Wi5euyZ56WDGL5azMqzkO2oWt6vycben7WDFOWqkrrkW?= =?us-ascii?Q?kKKLrYRNLcGb4SYCoQSwXDsXalGr1dNjZuFW0+QbbM07ic2fKRCGMmA6RxVI?= =?us-ascii?Q?1lTSOHvIin1uNJcPJVdzMHOIg18zYyvtt9bfxDPMXhRgCHP5e5v+xEo0c8YX?= =?us-ascii?Q?xB/M8lOvrAeVKw5n3MZP7X2pXXTgPYG/mlto++SG?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85e4b5ee-de74-49d2-5cd9-08dd3ebfc134 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:45.9480 (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: t6mFP1OpdkkJGJlOD3S94ZY/v9Dc7tDiI3P5DQdQugEvpnGOibMMrAWDzK+0Yn60QFuJBajzF/DcUwGP8c+e4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR17MB6954 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: jDzzU7C0QSAl0Q5uBzbbwaN4igDMI63NayJtw7QaNfw_1737974746 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 Previous commit changed symtab_to_symtab_object() so each time it is called with particula struct symtab* it returns the same object. Therefore there's no longer need to hold on symtab object (gdb.Symtab) from struct sal_object in order to preserve identity of Symtab object held in gdb.Symtab_and_line.symtab property. This in turn allowed for some simplification in various functions. While at it I changed a couple of NULLs to nullptrs. --- gdb/python/py-symbol.c | 2 +- gdb/python/py-symtab.c | 73 ++++++++++++------------------------------ 2 files changed, 22 insertions(+), 53 deletions(-) diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c index 2abac6553a0..c157bd7f5d7 100644 --- a/gdb/python/py-symbol.c +++ b/gdb/python/py-symbol.c @@ -368,7 +368,7 @@ symbol_to_symbol_object (struct symbol *sym) { symbol_object *sym_obj; =20 - /* Look if there's already a gdb.Symtab object for given SYMTAB + /* Look if there's already a gdb.Symbol object for given SYMBOL and if so, return it. */ if (sym->is_objfile_owned ()) sym_obj =3D sympy_objfile_data_key.get (sym->objfile ()); diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c index 7b51e211daf..177028ecf01 100644 --- a/gdb/python/py-symtab.c +++ b/gdb/python/py-symtab.c @@ -77,8 +77,6 @@ static const registry::key =20 struct sal_object { PyObject_HEAD - /* The GDB Symbol table structure. */ - PyObject *symtab; /* The GDB Symbol table and line structure. */ struct symtab_and_line *sal; /* A Symtab and line object is associated with an objfile, so keep @@ -104,14 +102,10 @@ struct salpy_deleter { =09sal_object *next =3D obj->next; =20 -=09gdbpy_ref<> tmp (obj->symtab); -=09obj->symtab =3D Py_None; -=09Py_INCREF (Py_None); - -=09obj->next =3D NULL; -=09obj->prev =3D NULL; +=09obj->next =3D nullptr; +=09obj->prev =3D nullptr; =09xfree (obj->sal); -=09obj->sal =3D NULL; +=09obj->sal =3D nullptr; =20 =09obj =3D next; } @@ -272,18 +266,15 @@ salpy_str (PyObject *self) { const char *filename; sal_object *sal_obj; - struct symtab_and_line *sal =3D NULL; + struct symtab_and_line *sal =3D nullptr; =20 SALPY_REQUIRE_VALID (self, sal); =20 sal_obj =3D (sal_object *) self; - if (sal_obj->symtab =3D=3D Py_None) + if (sal_obj->sal->symtab =3D=3D nullptr) filename =3D ""; else - { - symtab *symtab =3D symtab_object_to_symtab (sal_obj->symtab); - filename =3D symtab_to_filename_for_display (symtab); - } + filename =3D symtab_to_filename_for_display (sal_obj->sal->symtab); =20 return PyUnicode_FromFormat ("symbol and line for %s, line %d", filename= , =09=09=09 sal->line); @@ -346,13 +337,13 @@ static PyObject * salpy_get_symtab (PyObject *self, void *closure) { struct symtab_and_line *sal; - sal_object *self_sal =3D (sal_object *) self; =20 SALPY_REQUIRE_VALID (self, sal); =20 - Py_INCREF (self_sal->symtab); - - return (PyObject *) self_sal->symtab; + if (sal->symtab =3D=3D nullptr) + Py_RETURN_NONE; + else + return symtab_to_symtab_object (sal->symtab); } =20 /* Implementation of gdb.Symtab_and_line.is_valid (self) -> Boolean. @@ -377,15 +368,14 @@ salpy_dealloc (PyObject *self) =20 if (self_sal->prev) self_sal->prev->next =3D self_sal->next; - else if (self_sal->symtab !=3D Py_None) + else if (self_sal->sal !=3D nullptr && self_sal->sal->symtab !=3D nullpt= r) salpy_objfile_data_key.set - (symtab_object_to_symtab (self_sal->symtab)->compunit ()->objfile ()= , + (self_sal->sal->symtab->compunit ()->objfile (), self_sal->next); =20 if (self_sal->next) self_sal->next->prev =3D self_sal->prev; =20 - Py_DECREF (self_sal->symtab); xfree (self_sal->sal); Py_TYPE (self)->tp_free (self); } @@ -395,37 +385,19 @@ salpy_dealloc (PyObject *self) Also, register the sal_object life-cycle with the life-cycle of the object file associated with this sal, if needed. If a failure occurs during the sal population, this function will return -1. */ -static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION +static void set_sal (sal_object *sal_obj, struct symtab_and_line sal) { - PyObject *symtab_obj; - - if (sal.symtab) - { - symtab_obj =3D symtab_to_symtab_object (sal.symtab); - /* If a symtab existed in the sal, but it cannot be duplicated, -=09 we exit. */ - if (symtab_obj =3D=3D NULL) -=09return -1; - } - else - { - symtab_obj =3D Py_None; - Py_INCREF (Py_None); - } - sal_obj->sal =3D ((struct symtab_and_line *) =09=09 xmemdup (&sal, sizeof (struct symtab_and_line), =09=09=09 sizeof (struct symtab_and_line))); - sal_obj->symtab =3D symtab_obj; sal_obj->prev =3D NULL; =20 /* If the SAL does not have a symtab, we do not add it to the objfile cleanup observer linked list. */ - if (sal_obj->symtab !=3D Py_None) + symtab *symtab =3D sal_obj->sal->symtab; + if (symtab !=3D nullptr) { - symtab *symtab =3D symtab_object_to_symtab (sal_obj->symtab); - sal_obj->next =09=3D salpy_objfile_data_key.get (symtab->compunit ()->objfile ()); if (sal_obj->next) @@ -435,8 +407,6 @@ set_sal (sal_object *sal_obj, struct symtab_and_line sa= l) } else sal_obj->next =3D NULL; - - return 0; } =20 /* Given a symtab, and a symtab_object that has previously been @@ -495,14 +465,13 @@ symtab_to_symtab_object (struct symtab *symtab) PyObject * symtab_and_line_to_sal_object (struct symtab_and_line sal) { - gdbpy_ref sal_obj (PyObject_New (sal_object, &sal_object_typ= e)); - if (sal_obj !=3D NULL) - { - if (set_sal (sal_obj.get (), sal) < 0) -=09return NULL; - } + sal_object *sal_obj; + + sal_obj =3D PyObject_New (sal_object, &sal_object_type); + if (sal_obj !=3D nullptr) + set_sal (sal_obj, sal); =20 - return (PyObject *) sal_obj.release (); + return (PyObject *) sal_obj; } =20 /* Return struct symtab_and_line reference that is wrapped by this --=20 2.45.2