From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id UCAiLFF9WWgt1hoAWB0awg (envelope-from ) for ; Mon, 23 Jun 2025 12:14:09 -0400 Received: by simark.ca (Postfix, from userid 112) id AF7671E11E; Mon, 23 Jun 2025 12:14:09 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.0 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 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 B6FCD1E102 for ; Mon, 23 Jun 2025 12:14:08 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 50750384671B for ; Mon, 23 Jun 2025 16:14:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 50750384671B 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 719953846E77 for ; Mon, 23 Jun 2025 16:11:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 719953846E77 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 719953846E77 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=1750695071; cv=none; b=X+jRYvC47HPVqm42JsGCfVSxHdWRxJHUdLv6tbxj+iJ+W6mQ7fL1lZqk4f2kQshKQ5xc0Q3b1Ni5EfRUefdoHyUGO1GbxCxdZ6AtCNqVTXJ1YttnxBzs5vy2yWY6cINI4vW36/qf6Cnsf6QltPK5GtcQhit6x/tM6bHkeskMhOI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750695071; c=relaxed/simple; bh=iBIIM07gpHhxl+QjUHfpVle1BsEAB9VlUtb5PsrZHi8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=HfZDtWOUnIBSc2v9UxnLWl4kwvPMUaNzbu2/udom/+WqSIBSBIWfoc959bZmpsg1e6PX+g4wbpbz9+E+bjn+XfQwURqm/sCie7OqFEmFNEAn2jFftwAn3PDng4OKkL19So05DSHxVCGyPUjYtzu6G2ZHlutrlakjRiuNbC4ttBQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 719953846E77 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2138.outbound.protection.outlook.com [40.107.243.138]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-126-1JgVGU3vNKyWMUn_dO1-aA-1; Mon, 23 Jun 2025 12:11:08 -0400 X-MC-Unique: 1JgVGU3vNKyWMUn_dO1-aA-1 X-Mimecast-MFC-AGG-ID: 1JgVGU3vNKyWMUn_dO1-aA_1750695067 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by PH0PR17MB4637.namprd17.prod.outlook.com (2603:10b6:510:81::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.29; Mon, 23 Jun 2025 16:11:06 +0000 Received: from SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d]) by SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d%5]) with mapi id 15.20.8857.026; Mon, 23 Jun 2025 16:11:06 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany , Eli Zaretskii Subject: [RFC v5 09/18] gdb/python: add unlink () method to gdb.Objfile object Date: Mon, 23 Jun 2025 17:10:04 +0100 Message-ID: <20250623161013.650814-10-jan.vrany@labware.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250623161013.650814-1-jan.vrany@labware.com> References: <20250623161013.650814-1-jan.vrany@labware.com> X-ClientProxiedBy: LO4P123CA0561.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:33b::10) To SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR17MB5365:EE_|PH0PR17MB4637:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d64371e-b42d-4346-8b19-08ddb2708f02 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?19nucJx0fPBjVYzyCxxz8kN1EA7itHeoPjA3U7hdSj5bQFjNKMcNIdHkRWWX?= =?us-ascii?Q?443ZLFIHwByP2yI6KdhPgzvDN5FbhxO0T+F8FeCZYQ6PIlPEqZszQ1lOwcLh?= =?us-ascii?Q?J5uyXVG868Q0+PsU5B6kKDvoKnoCW2Ss39QKGt+w62RP6vP5ge6KIkZvKMNN?= =?us-ascii?Q?qMgvPKPvd/8ZUppN8tw+1bMZrZIgtGaRZgkwFTw3jpd11uUq2K265oFuOg3V?= =?us-ascii?Q?FH9EluJjgyqH+MtG6nvKL2BBgZlYCe9gpNLBuVspRySl466yBYuJseXhneAV?= =?us-ascii?Q?I+goFzdJZbLKEJE9MJPXk6SdojHSb79SK9xkHxM9kK9ZRHF395QpYP3xsKUr?= =?us-ascii?Q?64bjX5hZ9PYPx7+TV5vQrIckWMkCYC/G8L7Y29DUH3Q6K73YCWoo+p6FMKMe?= =?us-ascii?Q?RA9nVCKdbpd9aqcj4QIPxFGAO543DHvBt1C1ynA78HSkn+kMUnhoDhA42PUs?= =?us-ascii?Q?mOclQxNKrJw2C7jqhS7X6QmRFMFl/8cWj1HeCgZKNOMt+Qpyc5YH7zw7AClQ?= =?us-ascii?Q?A2/JSakdNdR25wl8hhR1PCmKYVcKqTVg2Rb8kKcgZ+yqiO1meejV+wl4/hTo?= =?us-ascii?Q?0ZVvftNEskQB9bjHCRdpIhtxcS81UXuKaM9Jg4L4KM07DY31f9/e/oAgVVOW?= =?us-ascii?Q?n7o4OgPRvQsAajJmsz5vHQqG3edXHIntsEWDJUExNXWPFsNy69oziJGiyVaB?= =?us-ascii?Q?KVQ45oMrQ4GJKV1WH8Io9WGEhbBY1XBonOtKrwFQ8DlukF8qGcCxNmYDRw0z?= =?us-ascii?Q?5OVa+bHNCAq5tkM+nIzd/jlsamyaegPgLt1R1VEdtRzuoiKcuyu7BuQ+OiLb?= =?us-ascii?Q?kyZn6CewrBJu8ddMt02NqJkQ7EDc+28XazMgCAOS3tlF0/bC5GBrza6XYlaB?= =?us-ascii?Q?PuB8KwPm3xOGFHKFu8CeOoicL8pu+iizhZS+RcoPFDcV25ux00hfS1IsQ0D7?= =?us-ascii?Q?vogZnSbt/a+yTBa+Ns/rtxtfSdTc3AYqvdZ8CwbsJ7+XY80O5e5ESFNXxkT3?= =?us-ascii?Q?BV4zfuzafhSoIBPWkW1qa0Sj8NNPk7XXxqMpMv5SqwXsGk6Mp9cYdV2msAga?= =?us-ascii?Q?jnBegZdauBUsrpmSPsDeUrFpdXaXPcrRs0BLYogiAyvdf/paub5kUkWM4kDY?= =?us-ascii?Q?9U/yIQfpMP35d251U1fvT6vg89c/b3SXdJG17VCRWHz6e0WdPzb4nHXliyJj?= =?us-ascii?Q?QhR5Ipta1rAAJkFZ2l4PhhCn9P3g/6QGioVwFtUNZKi4E1QsUSBUL5dhAV3s?= =?us-ascii?Q?uwcXUrEbah5SQV10jKFGvvj/7aTt2w0QjdLh/JX4fgb4Pl+AsNJoOJlXotCp?= =?us-ascii?Q?8n3ETuct/t6QhzIvhFcFop+rXDvVP0CDT0zuorFqYcdnzozv9Ca1dzClxD7C?= =?us-ascii?Q?vlOHitgOGbfNUGYSKjPTeYZf/bSwwYscupWgADTyWo3oqlJm7fm54UJB72Q1?= =?us-ascii?Q?0uOuJ6RysXk=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR17MB5365.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ldrjk9xHvJG7RnQvIFJeKAtyn9CvukyDnBPU1M6bczy405CX0R/i9cWCKxx2?= =?us-ascii?Q?L/4iz7kaJdaqWVRvSc663X9WaX4Sww3Xh3YML4x+9D7DM0qrxFMCV7H5hYkn?= =?us-ascii?Q?ww76DurTfEVdll0ZqZ2jmmkQUIgcKjsnjOfy0MD9mglExyk2n0IPBWs8/H5x?= =?us-ascii?Q?33cXLUbZGkrdWatUfNQTWbnBvVWvmKewXBIzvCnAipLzspZqIbhS8kU1yHyG?= =?us-ascii?Q?b8ebnp6Qnmcfxh6RyGfGm3CTffSp85u0DwqNx1TrCy1CVaP5rCuO+KW18zZd?= =?us-ascii?Q?bKlT2Ae63t60DHjm5x9zUKLn4n8yz1C0BaTRctqZaREuSAtqPY1jtBOKB5k1?= =?us-ascii?Q?PzBat3CgERZCmTXFD5MfzdO9UErOZZavPlBVHEfIBSQb29TXFXh/5FJoz7LC?= =?us-ascii?Q?NMrCPUKeaDVp9uPRdrBGoVgRqKUhRCg1DQzHjg5N/o142yIxYjWAbaVvDHKP?= =?us-ascii?Q?x3CRHaK+pLWAiX4RjX7CBrkTkZxxXAVn8PBl8cR7fCDxqzI5YhQDdoem881Q?= =?us-ascii?Q?3q/BeRKEgJt/QXISoBKIJAHRQaZgCdyS6n/PpMuSRhRw8HdwpD2dGDH1Nm+P?= =?us-ascii?Q?Bu52m84oiAk8ZDOpIaUJqdW4AOR73/zxbyfGuuDecfJcSBcZ6DQj/3sjLn2j?= =?us-ascii?Q?CmNWUfrhfMTG5Srhz3nXhFKGxTs6t6+uX15Ej6jfvPUZ1ATc63svzPJvRwqW?= =?us-ascii?Q?BiKkSLDVpr0hWz7vBR1tEQCSbWymG6fFSOxY/bMYV4oIMiOMHvrZiVIvAZ7A?= =?us-ascii?Q?VUZi1qeE5zS05zC9YI1My7vnIW5NhIWD0ZKj8ORwg58PIcPotYXNIycxKhiQ?= =?us-ascii?Q?Ja8qpmmfy4hyZYQtq7G3txmY5qsXGEZuR6QycPetadYGZf72v5NeJU+A9QAS?= =?us-ascii?Q?GQUuY+i8fnhqkZcP/WMjjS1wDbEcDr3dfSxBG4FoY36+AxodtJrsVBfBIunU?= =?us-ascii?Q?QANw2mKP7yn81f33bwdursaskp1FpTbODTKWs4LKZCO5QZ5F4ogyARc47E6N?= =?us-ascii?Q?u+N67Evg0tt9wPTU/Vm63BC2BAWie1L1Oiqn5UMS1Bu9CR1BBkgSGPvwqweL?= =?us-ascii?Q?jf35FZFVlqoEb40rYKgiFvtSlEVLbLXDKtvqH7AUMGM+9yZSNR2EZY9LXvlA?= =?us-ascii?Q?7IXzI07bB1b3IOGQEIaW+dy1xvoe77NJv4/RLylxCKhdrOWXDCr4egz5K6e1?= =?us-ascii?Q?aazt7iktxBg6dl85Z2fZlHiBQGdesi7BAnhWQtNMHxpP0HxY4GDCS8Y365gb?= =?us-ascii?Q?3hoseMPBqgVpS2pNWFv65m/c5C4IGw4da90GShf0v+ICjxOKyVcJ5yCB0KHW?= =?us-ascii?Q?um9Sm49yh3755RiUJi5lDtIoIvSDwIPt9IAtDRIXi04gpqpsoovMkh5hxrUg?= =?us-ascii?Q?DVdtbWo3vvA9lFJxtUWFAH+VvTUwsoFV2QyNlxEe9vG16emQv+yl6+RZkZaG?= =?us-ascii?Q?yVqUqZjhaq0h33msbWpF8uvxoe2EajYuiBoCe+zQuqJhcHJiebU/Vl1LhOEb?= =?us-ascii?Q?cjZ7hEltEvApzHDVOeUIHisipznQRfxXl0e7pjVLK3p0maCufRmMyHaLnD7X?= =?us-ascii?Q?gJ4Y/dg+GuwMElEUoTGr2jpYD8NbAs8FQYVfY1N0?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d64371e-b42d-4346-8b19-08ddb2708f02 X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2025 16:11:06.4125 (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: o+WzbbX0CVsZQeU3ur+lu0BBc7SMEu2pekxFd5XvOSxSSxI17clWUnRuWdE2/79lVReEhr4cJKTM+6WlkWAp3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR17MB4637 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 25souy4V6H74I_DOEYAI8JQUP7iE0M85dRyzWJr0VZ0_1750695067 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 adds method allowing one remove any objfile. This is meant to be used to remove objfiles for dynamic code when this dynamic code is discarded. However gdb.Objfile.unlink() makes no attempt to ensure this - to make it consistent with other Python API to create and modify objfiles related structures (compunits, symbol tables and so on). Reviewed-By: Eli Zaretskii --- gdb/doc/python.texi | 6 ++++++ gdb/python/py-objfile.c | 18 ++++++++++++++++++ gdb/testsuite/gdb.python/py-objfile.exp | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index ad9d65636b7..eac12bec4d3 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -5847,6 +5847,12 @@ Return a sequence of @code{gdb.Compunit} associated = with this objfile. @xref{Compunits In Python}. @end defun =20 +@defun Objfile.unlink () +Remove this objfile. This should be used only on objfiles created by +Python (see @code{Objfile.__init__} above) but @code{Objfile.unlink} does +not make any checks. +@end defun + @node Frames In Python @subsubsection Accessing inferior stack frames from Python =20 diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c index 6403db583a7..dc43e2c9e7d 100644 --- a/gdb/python/py-objfile.c +++ b/gdb/python/py-objfile.c @@ -608,6 +608,20 @@ objfpy_lookup_static_symbol (PyObject *self, PyObject = *args, PyObject *kw) Py_RETURN_NONE; } =20 +/* Implementation of gdb.Objfile.unlink (). */ + +static PyObject * +objfpy_unlink (PyObject *self, PyObject *args) +{ + objfile_object *obj =3D (objfile_object *) self; + + OBJFPY_REQUIRE_VALID (obj); + + obj->objfile->unlink(); + + Py_RETURN_NONE; +} + /* Implement repr() for gdb.Objfile. */ =20 static PyObject * @@ -873,6 +887,10 @@ Look up a static-linkage global symbol in this objfile= and return it." }, "compunits () -> List.\n\ Return a sequence of compunits associated to this objfile." }, =20 + { "unlink", objfpy_unlink, METH_NOARGS, + "unlink ().\n\ +Remove this objfile." }, + { NULL } }; =20 diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.py= thon/py-objfile.exp index 055a35cea41..1938350174d 100644 --- a/gdb/testsuite/gdb.python/py-objfile.exp +++ b/gdb/testsuite/gdb.python/py-objfile.exp @@ -210,3 +210,15 @@ gdb_test "python print( gdb.Objfile(\"Test objfile 4\"= , gdb))" \ gdb_test "python print( gdb.Objfile(\"Test objfile 5\", gdb.selected_infer= ior(), gdb.selected_inferior()))" \ =09"TypeError.*:.*" \ =09"create objfile with valid inferior but invalid arch" + +gdb_test "python print(objfile.unlink())" \ +=09"None" \ +=09"remove (dynamic) objfile" + +gdb_test "python print(objfile in gdb.objfiles())" \ +=09"False" \ +=09"removed (dynamic) objfile no longer in gdb.objfiles()" + +gdb_test "python print(objfile.is_valid())" \ +=09"False" \ +=09"removes (dynamic) objfile is no longer valid" --=20 2.47.2