From patchwork Thu Nov 21 12:47:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Vran=C3=BD?= X-Patchwork-Id: 101648 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2675B3857365 for ; Thu, 21 Nov 2024 12:50:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2675B3857365 X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org 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 B780E385734E for ; Thu, 21 Nov 2024 12:48:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B780E385734E 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 B780E385734E 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=1732193296; cv=none; b=AbqhWAeh7WV6raJVMtkV7Ge9fZkIlMOFtxrQcojYmYeQlOSuzEJ4bhS1MbA6XMy9r3PBBz37TgSc2HlswoEXA7aTWfpq+4oaUvoKMSPaUZlr2ikxoit0f1vyG0MopjZAvAoh6LZHzr4MHMTOW8ItBMNT8M+3vIpmwv8a2KE9ZX8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1732193296; c=relaxed/simple; bh=1EGGxb01SO9mtDOgtDeE+JEhR3RxNkbfkDwWfoD28YA=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=BLKT4abxzLWXkNJGLyVgx1OLq5qZZ3jyDK+rQ0obK6KivDF4cm84PCiYj+XqtXAe+InkFCivuOKSWmiI3voq4rRTAY7NZHN2fRTwzjb2+MYEEGPbdTCsaU3Ra2vz6xGpwjYdJ6i6yodBHWJ0bbzBB+GKmeM+ZmX62jsyGxY2pW8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B780E385734E Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-252-vwfwq-cXNJWUtln2JxNGXQ-1; Thu, 21 Nov 2024 07:48:15 -0500 X-MC-Unique: vwfwq-cXNJWUtln2JxNGXQ-1 X-Mimecast-MFC-AGG-ID: vwfwq-cXNJWUtln2JxNGXQ Received: from SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) by SA1PR17MB6504.namprd17.prod.outlook.com (2603:10b6:806:337::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.22; Thu, 21 Nov 2024 12:48:13 +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.8158.023; Thu, 21 Nov 2024 12:48:13 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany , Eli Zaretskii Subject: [RFC v2 12/21] gdb/python: add unlink () method to gdb.Objfile object Date: Thu, 21 Nov 2024 12:47:05 +0000 Message-ID: <20241121124714.419946-13-jan.vrany@labware.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241121124714.419946-1-jan.vrany@labware.com> References: <20241121124714.419946-1-jan.vrany@labware.com> X-ClientProxiedBy: LO4P123CA0033.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:151::20) To SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR17MB4314:EE_|SA1PR17MB6504:EE_ X-MS-Office365-Filtering-Correlation-Id: 425943c5-76d9-4aa0-6623-08dd0a2ac346 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: hCdTH1LhhiikqC3oW9O9iC5VNPN9G55q9Tmmt18gk0T9SKp9GtVPTnSzTgn+x35GUziyGo92oFhqAyT01odhR6OKjlLXpw0Dd9t1CpYajRnsAYBzz2o7jPsbPo+rSc84MZ7ak8iNDtL4++VZsTxo4A4WCJnZ/+aLkRaD8LLOQ04tGx9uilHTWgVIPISDwiA46/pIZEbMe+8eN2QhKMRPLPOUtn9TWLDj+dwtvgkvXB0JhhEkM6oFMODSNI5b9ZlR+UKemZsEJXo+g0bUT8xpLfdSpMhbeKeS7j1X04q6Se35iMt1bMEaNBqdib6Z2nihMxxHl//tpxhJpV93zH1xA5pPugnt0VmwC03b0RqgR45L8/LbFSlVJPwoDxMqIgKt/zNiNFb81N6TkMQKNjRjkflotEgiCiV06HbOOiOQF+BFMeEjsh5grUUkgldTVccYe+2wD6wjPFg3H5XlIbuUDPug42jjybhCkPXgBw4HJLShSjlbKRjkE6eAaD126LutfsiIIn7hrm2TjIMIQnQkPus2bmqkdT3jbt19h8EWrrAf/U1hOXfIE2uG6F18YxSZ77pmpA0tZXxkqClBlUO9blpVdP5DGucPiVmJ1/36CDok0qcHg5HaJ1Gi31t88mNNaXvjUPFgsJQgmKbzxxXvWFqzGfN3LTmy/v9a9ojL6+KANXDNWYmrPd6UReC2+EJRLgwDc/VqAViQ04uJNS3JVfe1Bw86u4IsuH9Sj6bft1PTMj4j6u871L8ilKk39cnCwWJ1mkb79nqc/LuKYonPdvOhjmu+XPIoz9MWcHcvqfdsREFQxlkbH/atwJpP/f13Q9HfJ+d3QCqSgyvQKexmz7Er/zo1k67M8lOKUsEFLWhkQAMhXH19+jh/QCJWjfZkePCCqpJE3tpHaoqBXT1aNg++7I83MuuSufvnir+TK9F9G6veY4pLchrv3pMSbJ1ZL3rS5OqbFHT6yb5dRI5f/5KmK8JJzGNUT9aXVBAjxhdefeR4E9+2ieyFqg+jnKZCEC9tQiY+9YksEEfJwwIUBFhlby4LPO9UFDWcVmZrpIkUZmFvfPmJU3J5XZXgAMfHh079f5iC3i2fA/MhPBJ50udpiYQw2gsPy0tVljK3Yw1hVZnCzzqDg6JC+bysvCJgetVdm76UkP5jmxB0MDs9l9tY6Uv2FM9OI407oKl+1fGQX+71mBR2ca6ZOJF60KRCCz38Cw7jjUG897zS7HAMAJm8jj+ttg+hhsDS97ZkTkcDe4MkLnUSY+DG1udqKZ1vBCkH97ZxvQACQdSED7B+YaFTKQNL2DZ47IifvcY/3HxUL+A10wjsjsSTdwmkzExM 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: xKGzZVqLwPn1PyvKXqAuqUjDIXs6+CRVj1jOLvctudSWRRwHZBhI4gV+QxIrszbN97CqZicNGTjLhmncucMcHG0gSLm0BDD00e17/uumEhW+KPeW3w8765EcXws/9MPJBWXLTMCfbuRComeVs+DnnJkLLAUmOgCUIvLafP1OGZ0D5lcZSybRA5eU/9f6DuYZiq5OLSA954tQo9EpIbUR5cv3eb73QvX5BlxM17QyfXbePA7ILUYWMfTRPM1a5aU2aalJpCC/qyW+PHD19x+BnXZrp82d9J5xkQwO9sdXxeUWG6x+7iF8RP0wyXqdJq2XyUfqczLXYHgMnXO08M4qpvVaGUChkMLHy8uetEzrGDJUz8Iy0yl7CfJm0ctOBQpyHooXwXwsWpcA4fwPjLFCg+eXLHO85J1ElCeAKlnYVN2P11k9oINHPG+1lQdfJzk2h2ApI3e1o45EONLG8TwN8Bb5T1Lq9tLrP5AaOO+ShIo0AuLfT4bPtLEaWBCDlQtjJtaODPJEIyvU3B9Wq9MBt+fE1fuZTP1FWEYVM40lXufI45dQ8hr9QLrajiSlD4Ir+RxqoBBTXm1eQ6EKs7/VtFeK0w0dJkEqrkJjKRj0BQWaz8MHm6hDI6CA/J+bVbyDeTaIS3HkVoixV+UgzrnIwnqv90hZvDUbGFbOq9qwbXR7WiHyuLSIUGFib7bX/YQdHS0l1ZuYhM+7v3vNG3oLDqaPay1SekfKX1A7QLFKrOkZjF169aoW6QzdxXBnpUXDK3rVj4+ZCuNV9+D78FPPgaXUX9DELaj0DvoY3A1o+ZiGFMAhZoLhrcisKKTyUxQck/HtQMXb0tDV6/bk6o6AJu84qCJoNIrhoWVd9WGCjZ7AY8Bwp/DA5keZLVok7c+C9JlV9gWh853GYrvP0ZhBRlfftlpa+VzwPpuXlq7q5RQttE8jAGT0WDA5w56B8fmKUndbiWSoseLo7no3ZwI/lTE0v+SQrByxce8gncdPOFSsp+LyEPaVnrDggipp/jxP4yJYYvWaMg5FbT/5U0p1PFQQegDTVz2xZ7O/UIm8rTBUnpGxwaNRXxyoGTRYlG1W2RoM+RcSBfl2sQYjcfnZLAv0V3cN2lqFxaSaWPlxWPjN2OVbGrjFJe5/7/EhC6LBVm+X1TXQXPHUrRmKI2IlQWTKJKlzsq8EQNdigcWi+YtcfLP5KV79bwVdeNzSX2G2Rs1EdvwjephCD3qs08yiXB55HYHKNRxrwVyNiI/QYX3yj3s2jdTl2UKRZMv56aQDikPvpkq+EonV0KdpfyNnL2QUswQLYC8rSUdtGUmg+ffRtWWy/iL7ToYPBeWfm7lW32IGZwsiwEad20eL2ndUKJ0UOfU2XCHHsc2KvII0udlQv4vBOxxmtOsPnMhzmhYHzofP8rDrQGf29MLjGoY5pa7jZVhblBr4zHzCFn4LVlJYEURpwNZGr2FGIWbjfUc5erOWCYVn2KqzzjYv/JA7dp2bwWxT7FvkZCcj1MdanFK2fJ6MRrupo1brNPTyIgRjrCG+xr0LJjS+9FBaYbq7u/EUuWhrzzZF5mXaHlA+ZXX2syPjN7yFZTL49vBQNc+N X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 425943c5-76d9-4aa0-6623-08dd0a2ac346 X-MS-Exchange-CrossTenant-AuthSource: SA0PR17MB4314.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2024 12:48:13.8340 (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: KPPDhPBfSY9XSu29bOFLCuAxLBHPinUpzlYpbrQFLOD5/HtF9swUSNSlaLcpPdskKa+ALrknqUYKZymG/jOvCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR17MB6504 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: dbYI2gUpD96GdolMxNp2fUijT8nM9ryWbyP989Ch27s_1732193294 X-Mimecast-Originator: labware.com X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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~patchwork=sourceware.org@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 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 c32d84fb9ed..f48803d08b4 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -5710,6 +5710,12 @@ Return a sequence of all the compunits associated with this objfile. @xref{Compunits In Python}. @end defun +@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 diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c index cc225ca135d..f8b29ae1f47 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; } +/* Implementation of gdb.Objfile.unlink (). */ + +static PyObject * +objfpy_unlink (PyObject *self, PyObject *args) +{ + objfile_object *obj = (objfile_object *) self; + + OBJFPY_REQUIRE_VALID (obj); + + obj->objfile->unlink(); + + Py_RETURN_NONE; +} + /* Implement repr() for gdb.Objfile. */ static PyObject * @@ -871,6 +885,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." }, + { "unlink", objfpy_unlink, METH_NOARGS, + "unlink ().\n\ +Remove this objfile." }, + { NULL } }; diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.python/py-objfile.exp index 250ae4763b7..7a88cac663d 100644 --- a/gdb/testsuite/gdb.python/py-objfile.exp +++ b/gdb/testsuite/gdb.python/py-objfile.exp @@ -209,3 +209,15 @@ gdb_test "python print( gdb.Objfile(\"Test objfile 4\", gdb))" \ gdb_test "python print( gdb.Objfile(\"Test objfile 5\", gdb.selected_inferior(), gdb.selected_inferior()))" \ "TypeError.*:.*" \ "create objfile with valid inferior but invalid arch" + +gdb_test "python print(objfile.unlink())" \ + "None" \ + "remove (dynamic) objfile" + +gdb_test "python print(objfile in gdb.objfiles())" \ + "False" \ + "removed (dynamic) objfile no longer in gdb.objfiles()" + +gdb_test "python print(objfile.is_valid())" \ + "False" \ + "removes (dynamic) objfile is no longer valid"