From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id YPrYIUh9WWgt1hoAWB0awg (envelope-from ) for ; Mon, 23 Jun 2025 12:14:00 -0400 Received: by simark.ca (Postfix, from userid 112) id 853491E11C; Mon, 23 Jun 2025 12:14:00 -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 D753C1E0C2 for ; Mon, 23 Jun 2025 12:13:59 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8F348386B7EE for ; Mon, 23 Jun 2025 16:13:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8F348386B7EE 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 DBA443846E75 for ; Mon, 23 Jun 2025 16:11:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DBA443846E75 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 DBA443846E75 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=1750695078; cv=none; b=B0cWWvHprviqwTMdCVq1m9hGZpfLkdE25cUTX5KRcF0WD8d0bDF7/uQxqKzvENgYYm5A3WXMp3xdRKx0rHHzOn7TN2j4laYNLZ4zQd56xQbfwmYhmZf6dwHkhiImcTSPyweWXw+zsw8xDnjqMmsu1GoKhPoDZRZQKHNNTIrnmL4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750695078; c=relaxed/simple; bh=kt1wV+qe5Hke8++grK5iEIWWqQw+/Kjqiqozlhx3i9o=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=G7jODxuHy6Dn4vLYsXJxgEHZOql2+GCkSupOs7oQn7Y/fioqzngPUexpxiZw0fet+egXYyJAIbEd8Evj4Bn4TppexxmqxaVPMrnw1BLG/9trDbnIjMfT2Oejk/c2HM8672xzg6kQ17icv6Bxm0SC0lFGuBr1lQ8Rc6nIsagrjgM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DBA443846E75 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2124.outbound.protection.outlook.com [40.107.244.124]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-338-JKRledWJOPym790Wz-dN0Q-1; Mon, 23 Jun 2025 12:11:16 -0400 X-MC-Unique: JKRledWJOPym790Wz-dN0Q-1 X-Mimecast-MFC-AGG-ID: JKRledWJOPym790Wz-dN0Q_1750695074 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:13 +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:13 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany , Eli Zaretskii Subject: [RFC v5 11/18] gdb/python: allow instantiation of gdb.Symtab from Python Date: Mon, 23 Jun 2025 17:10:06 +0100 Message-ID: <20250623161013.650814-12-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: LO4P123CA0021.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:151::8) 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: a0e847f0-83ed-4f2d-d0e2-08ddb270937f 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?jJYl/sDrCgU7mwWkswJvqZZD4ULnwK2DPX8ZB9NQLTUFlfP7C3cnSShKO0A9?= =?us-ascii?Q?6YkvZhK86a3VcTxmOsT+W3I308qMoCN7F9EVhepRwtXacde46mfCQb0vCgVt?= =?us-ascii?Q?fG67a0aqq1HODkd6vmWJh61aOKnWyTzIwb+xB1gmQgoDwZqbATzOhEMvYJub?= =?us-ascii?Q?1cozr8GMjmb9mM146LlI8QT6MkVznJzD7HtLugFcG9ItMmJu84X/M6sfA3Zc?= =?us-ascii?Q?EUq9o1ekwZXioLz/n3l7bUOq0LupHEH2PKiXp4pp81buQlCmmtm1QmqtigKR?= =?us-ascii?Q?qXy9ej2P/bBAlQpRo9veG1zEpICOnHpu7Zu6v8OaAPl2QWDO7imNLV9vGKuW?= =?us-ascii?Q?5yj/h4QTfosMurHtM282Kqe94tCaDy/NEoi8tL/Xxc+v85amBYzCLXTUML4j?= =?us-ascii?Q?W/yauknXCFexfukU3UWK6xGtlkmQV+M3nW9GwGk0wxtIS07oT3d6HupA2cfr?= =?us-ascii?Q?nujOT5HL/yFY8lzdcXHP+5s/BWCCQnLrmeSbCnoM767vxZR/WvCQKEQleXBQ?= =?us-ascii?Q?xyTOxGrE+Src5LRNgiIuS8N5bgUfv589dtWJFfJcpnI0FBi3WwwO5n0UIqAW?= =?us-ascii?Q?K3WKWfZ5Dntu8fU4p3mPKVy6tx9d1mQ2YsbyIPA2joRocgPOi3t5oWbJk4XT?= =?us-ascii?Q?/K0AGaaRLYCoyRq0XUIdvcRyp4tMDqA7LpIkkggtXOS8RaMA5+XnH8qvhClV?= =?us-ascii?Q?XB2LQ4UrmQrjuUqvU97R55HpzzF0TTQXkOt3g/YYpSnLLlzHQE41F6MfA2ms?= =?us-ascii?Q?4QgbFa8KehDM9Reb9fJbcHErDuF+o5VSWsRjazaCpK02kn0O6z6bvjZccpqY?= =?us-ascii?Q?5x6AlWcbulmnyMjKY/fHp1KnwO9NwdvYYe6PWP7p6BBUz+Ko/IMbotU50x7r?= =?us-ascii?Q?w0PAiQwV6IHrIxqlIV7tvPVkioAg3nP2zbNbjWQgAjft8iBUerMvlxe5BreV?= =?us-ascii?Q?Mw6vVYTT2jmg3oiVP6cV8zJ9njWoA7zY1s3n5CWdUttMk5iv/iqbMPaX1y/8?= =?us-ascii?Q?ADXmXnAOCM2fmfWvM6Cmi4hbiIuavTZ8zgTa3B9P/Ug1VD4TmLgl342GE19l?= =?us-ascii?Q?/SpU3eJMxBRNzjXRAo0iQQNGDTRVmbrbnOJSw+0wzJBo9ktUJuMcZUH6qSJ7?= =?us-ascii?Q?vy/CU9wcgNEZnPc6c7cqAdlOQLarRKSTsUJ2dxxFZkRSIKZ/kZpbcJ+m7+gL?= =?us-ascii?Q?bt5QUcZSRuu0xYNQLyHqcFyyN4haqmfq+0P0C1fsT9xbG+iE77VTtTg19xU/?= =?us-ascii?Q?cWZ0edBCVvDDhhjpe0nBgtKjSv/A4xsgnhtYFxOLBNVRF8JHujVL7rWFiySk?= =?us-ascii?Q?9ja5sp02lbLm3TftuQM2qct+UA2HwS0N/wUaB6Hsz8mWiIMM+hB01IXO3Iw8?= =?us-ascii?Q?laPii5nuAdDqF5TlkwZarr7069GzMvnqhejUcIo7qc5WbAmN9iv2R7G1U94B?= =?us-ascii?Q?+fj+dJBmqF8=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?P3EE1Aru9o8rWsfS5Y0BEfzGOM6uydhBooyX/wjylx/XcFfxcrl9GiCE27/L?= =?us-ascii?Q?MZE4s4V54WJHugiKUjK9pXSxfxM1V4i6ikg3lxVaCr5KgkhnVUupw/Kj4my0?= =?us-ascii?Q?8L0lOljK6rF3ATnbcnMHBnX9+AC80j5jnIF4ehi4oY0OlAbtC3wbRkZY1tHV?= =?us-ascii?Q?S8uqE+0Tyt4qXMl9cEZOmsn0KjVR2CJqdfhw+Gs0RRRNKqTLhcvjjngJKSdx?= =?us-ascii?Q?APwv3Gbw5bMtmFqY5IRbGOmilSRdwXCMDhOdb8AwZlwGA1toA087CrtcBlcw?= =?us-ascii?Q?WEEGHBxS7QOuv6pnOUNeg5j5TL6aX2ru+75KGNvBxJUmiixIh9V54+CRr2KM?= =?us-ascii?Q?Ph+Cuc2gDIyB/Tmm9WRPmNkO4zjSB3Dz3/4Akb1w7u980RhPeQygNs1tV1tR?= =?us-ascii?Q?849ZYI7WZq6WEbOyO+cMdJ2PVOgWB5vw5ucGtwiILtlYppDAFT75vuuXGK5d?= =?us-ascii?Q?D+l5prwUZTf73LX+07Pj1HwB3yT3qR1gyhNBhiGOooCfRsZ7a20FUPlwMbEh?= =?us-ascii?Q?0jdzmDu5olG8E2aHuSpI2DdrUFOZe9G/B0PDXyxprxb4Lqh7vXV+nZB7wZCP?= =?us-ascii?Q?spCHDC0P0GMKw5caeXHJ3ovQMKKR0JoF66FavGoMm3MKrwhq4JcVUC4y1+n2?= =?us-ascii?Q?U4ewZJFrTHm+4N5+oPz5SibB3UNwsn5KrR/mTasI+8meiQY6OaWPOcOBE9NN?= =?us-ascii?Q?hzjGBmW7x55qSLEhwIXibOV9RGhFhe4B+0e/dDKCL2QfOhGprh/U5+P0404c?= =?us-ascii?Q?Bv+nrgtEdx7TQY2IZ9pLLmWaf9DYnFmn3E7NoYtM8/aRhpuOq3gtjPMT0Ict?= =?us-ascii?Q?OLuztKMMGminnnJNx53VVIQDOBRA9hmF5U01A3oadClwW7eEdYcNNUWHz/Qf?= =?us-ascii?Q?KreU3vyjfbn2qQFtPqc5y+DYjhWqk79F3fatsSIdgFimE6G3/pUg+zb+jUma?= =?us-ascii?Q?01OT6ZC4Iao+ARG1ur3E+WiY5/53va7M+Em6OqUbHhyueFH539yuzWcLW9ou?= =?us-ascii?Q?eQJeQiuqwYyEOmHM6aPvmjlJbDagkQOLaUY4RFtHipHQoOwaTOLmETufizUN?= =?us-ascii?Q?jrzPOlLUrR/ZVNCSVG3KUghpVleu0picRNkAgXRLtVL1rZMXrAEQ8ZHpYPFi?= =?us-ascii?Q?DIIRCHQx4V7LSCknyamxjWhsP+neIPfBIGeMhPnQZnkkxqwQ44JIySF0DJFd?= =?us-ascii?Q?jL4MqOEOlukltachRurKOylJCmwMQ61TgpBkI0oT0D5Cqk/6QtWoF68KOo8Z?= =?us-ascii?Q?/ZrTW1GYYLcWLfaEUos/mpDnrOvo+l0CTE5WnlsVfoMC/1EkqvJXa3R5Tk4i?= =?us-ascii?Q?oQ90RM4T+PHrzf9yXMQBHvWihJoUlnu4f4aiy5S5l2kPX8NFaF/R2D46I/3S?= =?us-ascii?Q?P6GTTurEWIkRTTUYwgaBd0pCMl+OAUVxjbigpg8Ck+/kY4TiwKzxVRwi3ZHZ?= =?us-ascii?Q?e6hlOqXbP38o0gRGCR9nZmh8Yu9gHL7GfUxHM+sSIDdTMFmmLyTEBxnJTKQq?= =?us-ascii?Q?iAywl8zFyuGfpsRq1tr4KtRWvnwkapcjZOh/xMeukt7eCCWSs84AhiaNd3VA?= =?us-ascii?Q?Ve8ub7s2eH52z52r97mkf3Ul+/D6sjp1zlyHVQt7?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0e847f0-83ed-4f2d-d0e2-08ddb270937f 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:13.8274 (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: QUXRxI2tbnE8XTSXeZGT5DJqx/sHz1pBoc3U0C/F2mP2UPooMnpIdCdW6sRmTpRAj6OVIfRyz9fzdYI2EyJ3KQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR17MB4637 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: pboeC42MC5juUnhjMMpclzflO9vkHIT1qUFAIhx0OPA_1750695074 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 code to allow user extension to instantiate gdb.Symtab. This is a step towards a Python support for dynamically generated code (JIT) in GDB. Reviewed-By: Eli Zaretskii --- gdb/doc/python.texi | 4 ++ gdb/python/py-symtab.c | 53 +++++++++++++++++++++++++- gdb/testsuite/gdb.python/py-symtab.exp | 14 +++++++ 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index ffa78c0d859..65e243074ff 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -6650,6 +6650,10 @@ The @code{gdb.Compunit} this symbol table belongs to= . =20 A @code{gdb.Symtab} object has the following methods: =20 +@defun Symtab.__init__ (filename, compunit) +Create a new symtab for given @var{filename} in given @var{compunit}. +@end defun + @defun Symtab.is_valid () Returns @code{True} if the @code{gdb.Symtab} object is valid, @code{False} if not. A @code{gdb.Symtab} object can become invalid if diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c index 806a6efa4fd..2faeb963ea6 100644 --- a/gdb/python/py-symtab.c +++ b/gdb/python/py-symtab.c @@ -92,6 +92,8 @@ static const gdbpy_registrysymtab) + { + PyErr_Format (PyExc_RuntimeError, +=09=09 _("Symtab object already initialized.")); + return -1; + } + + static const char *keywords[] =3D { "filename", "compunit", nullptr }; + const char *filename; + PyObject *cu_obj; + + if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "sO", keywords, +=09=09=09=09=09 &filename, &cu_obj)) + return -1; + + + compunit_symtab *cu =3D compunit_object_to_compunit (cu_obj); + if (cu =3D=3D nullptr) + { + PyErr_Format (PyExc_TypeError, +=09=09 _("The compunit argument is not valid gdb.Compunit " +=09=09 "object")); + return -1; + } + + struct symtab *symtab =3D allocate_symtab (cu, filename); + set_symtab (self, symtab); + + return 0; +} + static PyObject * salpy_str (PyObject *self) { @@ -438,7 +480,6 @@ symtab_object_to_symtab (PyObject *obj) static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION gdbpy_initialize_symtabs (void) { - symtab_object_type.tp_new =3D PyType_GenericNew; if (gdbpy_type_ready (&symtab_object_type) < 0) return -1; =20 @@ -514,7 +555,15 @@ PyTypeObject symtab_object_type =3D { 0,=09=09=09=09 /*tp_iternext */ symtab_object_methods,=09 /*tp_methods */ 0,=09=09=09=09 /*tp_members */ - symtab_object_getset=09=09 /*tp_getset */ + symtab_object_getset,=09=09 /*tp_getset */ + 0,=09=09=09=09 /*tp_base */ + 0,=09=09=09=09 /*tp_dict */ + 0,=09=09=09=09 /*tp_descr_get */ + 0,=09=09=09=09 /*tp_descr_set */ + 0, /*tp_dictoffset */ + stpy_init,=09 /*tp_init */ + 0,=09=09=09=09 /*tp_alloc */ + PyType_GenericNew,=09=09 /*tp_new */ }; =20 static gdb_PyGetSetDef sal_object_getset[] =3D { diff --git a/gdb/testsuite/gdb.python/py-symtab.exp b/gdb/testsuite/gdb.pyt= hon/py-symtab.exp index 4828a0a33b6..fb1310da480 100644 --- a/gdb/testsuite/gdb.python/py-symtab.exp +++ b/gdb/testsuite/gdb.python/py-symtab.exp @@ -126,6 +126,16 @@ gdb_test "python print (symtab !=3D \"xxx\")"\ "True" \ "test symtab non-equality with non-symtab" =20 +# Test creating new symtab in existing compunit +gdb_py_test_silent_cmd "python cu =3D symtab.compunit" "remember compunit"= 1 +gdb_test "python print(repr( gdb.Symtab(\"some_file.txt\", cu) ))" \ + "" \ + "test creation of symtab" + +gdb_test "python print(repr( gdb.Symtab(\"some_file.txt\", (1,2,3)) ))" \ + "TypeError.*:.*" \ + "test creation of symtab passing non-compunit object" + # Test is_valid when the objfile is unloaded. This must be the last # test as it unloads the object file in GDB. gdb_unload @@ -136,3 +146,7 @@ gdb_test "python print (symtab.is_valid())" "False" \ =20 gdb_test_no_output "python sal =3D None" "test sal destructor" gdb_test_no_output "python symtab =3D None" "test symtab destructor" + +gdb_test "python print(repr( gdb.Symtab(\"some_file2.txt\", cu) ))" \ + "TypeError.*:.*" \ + "test creation of symtab passing invalid compunit" --=20 2.47.2