From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2044.outbound.protection.outlook.com [40.107.94.44]) by sourceware.org (Postfix) with ESMTPS id 626EF385802A for ; Mon, 17 Jan 2022 12:44:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 626EF385802A ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mk6LXqnvLvNEyRkMaCBMStaZRfKt7icNwYbxeOekTclAa37QM92lDvOskt9IfyzMK/X+J9/S/FYsVx8k1I7Cptd80Y3AuKX0zrIC+ioUwRro2YBuWHhghNGHl6xyDWulvuX8HCBkcfaOpZsaxzuJjdR3zJruxKSXQLs5vQt4w/GDTGr3iR1WeJXcq+A5/Ly4lqnjVQyRmAV8xvCrYNVpRXZneKOGka9otNJuo3EkwuE2rEZp/BVQc08dYnQmFMKjs2YTlVqUUQMkmcBew4Wm4t7zt03EFhJKAxw5ArQKN8I8PALVKI/a6twRibeg82uuBFtZmtMJqqLK6f7SWZms0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=14k0wBiV+oUzoDt4VU7rjf79ACK83mHxeKu9Ke139ts=; b=jtUIP5wVFcAUTWOtisidNSEArvhUjJ1RctVNFkUqtlE70WS8hDl+XBAQfgd+S8P0OZ3hUfuEHiQvIpXhW4YXtsJpZIUJfAm70K1sFaGR/3fNHLwPqYUTqLDO2KZuIdfJ/6yd6kEe1wfmTyqplA+vsl9cguOl+/mFjfocZ4q4ttGkep5M+rClYPyww9kYttMEIfQAePdaEPUqJICvaCU5RGaAvLTyVN5RCA8na3TZImHM/40bFDuhMJjB2Wh6WNHF072WDNoCTfGKYKR6u4i67kSw0RWyr5QpaLbEevpNwH6cCJ0AqgndBVyX5C56O10PtWgeI3eSqRCoQAmgcKpa+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=labware.com; dmarc=pass action=none header.from=labware.com; dkim=pass header.d=labware.com; arc=none Received: from DM6PR17MB3113.namprd17.prod.outlook.com (2603:10b6:5:6::10) by DM5PR17MB1484.namprd17.prod.outlook.com (2603:10b6:3:145::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.12; Mon, 17 Jan 2022 12:44:38 +0000 Received: from DM6PR17MB3113.namprd17.prod.outlook.com ([fe80::7839:31f:2416:6ba5]) by DM6PR17MB3113.namprd17.prod.outlook.com ([fe80::7839:31f:2416:6ba5%7]) with mapi id 15.20.4888.014; Mon, 17 Jan 2022 12:44:38 +0000 From: Jan Vrany To: gdb-patches@sourceware.org Cc: Jan Vrany Subject: [PATCH 0/5] create GDB/MI commands using python Date: Mon, 17 Jan 2022 12:44:20 +0000 Message-Id: <20220117124425.2658516-1-jan.vrany@labware.com> X-Mailer: git-send-email 2.30.2 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: LO4P123CA0120.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:192::17) To DM6PR17MB3113.namprd17.prod.outlook.com (2603:10b6:5:6::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ba4199ec-342b-46d3-d98c-08d9d9b71fa4 X-MS-TrafficTypeDiagnostic: DM5PR17MB1484:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yjGYi9QQjU1q/5+zVml+qZ2u9OISF3neePGas4/CqbixbBNydHyV0I9IDoutPDBOJc4xbUlobdpQ0N2P8UN0ALsXnxScHzSiOLwqFegoZbSrWc6S6l7hmJW1X86dHv0V9tX5gA3jgmzUFmHyUpK8rG/js67mwyu3JWczWbfvp37/biLbBXMEZMKzhjtnSDI+g51Zyk49NwZSac7j4IfG5/IXRMt4dxZbLMy0Uqqj0/+1y4QmqFq79Zn8ZLgXp+JuFUsib6YVmt4U/QCb4d6pO/moRaiOQSdo3A8XYZdgc+H/zzpQsqiXMbvFtQdmbxJwxxAo/64gXxzcr/d2ns2Kp9bVkVumk5Xkt884dsO7UW4+/r1XDo+PRBZrHX7XfGIahsORVNe9e/tEJJrkqbZB6AtC4ijEvrFja9YA0TXpIidGwet6H0fPvkyVmGn5KqNsL/HtEo8Ce/Q8coHXXhtaR18dqTgFwqlAflukdw53e3Hhr2PLKga5uLfSdEKNyeYU+poZSXuSQ9YupHz097PPzrxzvWWWer7UD7gzNzODxFuAWSD7r2ujO7x41mjXmJB6KAgpZscfs9LFUDqvOnDku701m2Sp+jAWe8RsMnEWeICZk0BqKXBq7iJCrjgWpYI/2Wl5exCc/yn2zYhIeKL6uBQkZM2Yf6DOr8lqVh/uCMbj1UwcDH9x6FBSJ4RA0hVd07UkuUr34POpb2PReEcBEQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR17MB3113.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(4326008)(26005)(6916009)(1076003)(2906002)(316002)(6506007)(36756003)(66946007)(6666004)(66476007)(66556008)(38100700002)(5660300002)(38350700002)(508600001)(186003)(107886003)(52116002)(86362001)(83380400001)(44832011)(6512007)(6486002)(8676002)(8936002)(2616005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WnIoJ6uSNQPZAdIvVCB82RbECqUB8R4jrQQxXU/Fb9tQglsqL3XTFdyrUncK?= =?us-ascii?Q?B46wn27tL91Ga8am+/3urjLvJ+aQrH5GiEN4pp/Gy1SjJO0Fb8SuhKuJT6k1?= =?us-ascii?Q?1TGNn4r9cH8C8zC7Ad7ZKIrPDejea0GSfUwBmwtN+vMdgueysWWUrw1Rm8hd?= =?us-ascii?Q?x+Ex6FtU6HH8IF9FydqN6gdQV8uU7iQDeaQ+F6YapUjHkMoN2boa+w7K6l3j?= =?us-ascii?Q?QpALsD7HuiwU2siNLNqNuriiw8E/foWnOcOTtGzo1AsOJJZrBwWH7YNj7OF/?= =?us-ascii?Q?oPYWSL86qYYuKJ4jARR5yZ1nbR0SMcpaWHSfYzPMKV7uUtCVdHMvHGYv+bpf?= =?us-ascii?Q?q6xEJY9pxCQSiMYBGBCJVz8fcRlfE6/64Y6k/CUsbLZXTDL2/fX51KKbm1gs?= =?us-ascii?Q?S6ov114SgMI5t28e2cVzm8tANv3iIkBAFyyYu+E4cPCe5EW87rJ4FMA5IPdH?= =?us-ascii?Q?QhSpSmJGSI7MutHxiPuqWvgLTmOF1tggYjBWN41U/lxSIMW9cH0TKffiPrFG?= =?us-ascii?Q?uEJPCogKvI4kAgf530yo05VpHmW3gjpku+b9lBx/S1Mxpstj7hMXUbKZRCEh?= =?us-ascii?Q?J2DLB9ULwKx3PTA5SvZPgTq9dE4Br6zaI9CHQ+AKJrokr70QN/hW3UuzgByY?= =?us-ascii?Q?BHL6c08iqI/W2y4rH3GuIhnfDHQzMZDfrikgCNCyswut+x/A8ATVehLTw5Id?= =?us-ascii?Q?TA/Kgmj9WXRF32bnehtQlHQYPEsXdHXSg3b7D9p3ENpi4JjFgsyPzVA1YJjj?= =?us-ascii?Q?+TSKyJQr8SmYsSRnDL8FfhksQBrF4b4dmY6IykA4twMDuYcu8HOO3KCd9uMC?= =?us-ascii?Q?h1gZWjvglYLGzw9RlzX/yyC48whhjPOzzaN98Y8bD0cj7ZeCtnH53dbzyP5v?= =?us-ascii?Q?4OwIcuoRoOnOnY9+bOXrcXKAesvoCiH9ka0eLx59s8Dh3AaHJj6A25ioQoDT?= =?us-ascii?Q?dG8hJDJNl2MA0N3MAcOPP2hCe9wNwZM0cnAUwjFwgZmrwBFo+thIMTzC61+o?= =?us-ascii?Q?K/Q3YT1LiBqFcZZBsth3ByWiG9JsAiFb7lH8YtjjmLwWaEXyz2aqGk6eU/fe?= =?us-ascii?Q?xwGEdMAqrZDAnr/ARYdO6z/6GxjBYg2Ps9gjmVeasd6b1WNzMASAgZXohw7U?= =?us-ascii?Q?fGLvRUvwav60QAwFJmy7V70WbHHRXZR7KNVW9l31CCcipGdtqqfrRTMXKOMp?= =?us-ascii?Q?zl3lf9eRwGvFJ0Ordx3MVIAapog4jxGD8tLp9cVqpTbSXshg8IRhtwiiWFp8?= =?us-ascii?Q?+hK2ZNGEJA1t8patrYntzgZYoJG4+SfHSHPlTqcUm4NUFpd2pj/hxaRlQ3+K?= =?us-ascii?Q?T+CanNUzGlvKai0HyzAPIkIZ08o/oIgwVTqgxJWFvG208LVeWaqVHzKF6FRA?= =?us-ascii?Q?fJOcCVnkSKgB9Mj5N53U/ppW7TPkylwa2YIUkymOREoQC7ydzF4nLfILUcm7?= =?us-ascii?Q?N0h6whSeaQo2F6oOB5YpG9UyVz9FN7sbCcpbDoD1C1UWUzGbgMpIo3hQf06J?= =?us-ascii?Q?NqAtNxpvjn9M7wNfxe7Cl07u2S/CY39Q7p/jfs8Eg81OtiUpI7a3Lg/ay27b?= =?us-ascii?Q?KpSA1xWK6hG83P7M2AO9h6PU2Igtnnw7rRuT5Sa6eeeM82MoFcvxPt8bzUhW?= =?us-ascii?Q?WkjOCq9NO6e03q6zvtBvVvI=3D?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba4199ec-342b-46d3-d98c-08d9d9b71fa4 X-MS-Exchange-CrossTenant-AuthSource: DM6PR17MB3113.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2022 12:44:38.3400 (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: xJPitXKllhK7OT0+IGkC0NLgVokuDlK6B7VWOLwJtHwR/HB4+5zI+i6s3PjjKk8vNOVNZfe3s+2aKBH2s34KZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR17MB1484 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jan 2022 12:44:41 -0000 This is a restart of an earlier attempts to allow custom GDB/MI commands written in Python. I went thought comments made on earlier attempts and changed code as suggested except in few cases - see my comments below. ==== gdb/python/py-micmd.c > > + > > +extern PyTypeObject > > + micmdpy_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("micmdpy_object"); > > Is there a reason this is "extern"? I don't see this used anywhere > outside py-micmd.c. I think it is. micmdpy_object_type is needed in gdbpy_initialize_micommands() and then it is statically initialized at the bottom of the file when all functions are defined. The extern allows this. Same thing is done in py-cmd.c for CLI commands. > > + > > +/* If the command invoked returns a list, this function parses it and create an > > + appropriate MI out output. > > + > > + The returned values must be Python string, > > "values ... string" doesn't parse correctly for me. > > Did you mean I have rewritten the comment and renamed the function to emit_py_result() which seems to me a better name (now). > > + } > > + } > There's aspace vs tabs mixup above, and in other parts > of the file too. Please fix that throughout. Changed to use spaces consistenly. > > + > > +PyTypeObject micmdpy_object_type = { > > Can this be static? I don't think so, see above. ===== Jan Vrany (5): gdb/mi: introduce new class mi_command_builtin gdb/python: create GDB/MI commands using python. gdb/python: allow redefinition of python GDB/MI commands gdb/testsuite: add tests for python-defined MI commands gdb/python: document GDB/MI commands in Python gdb/Makefile.in | 1 + gdb/NEWS | 2 + gdb/doc/python.texi | 80 ++++++- gdb/mi/mi-cmds.c | 60 +++-- gdb/mi/mi-cmds.h | 32 ++- gdb/python/py-micmd.c | 312 +++++++++++++++++++++++++ gdb/python/py-micmd.h | 66 ++++++ gdb/python/python-internal.h | 2 + gdb/python/python.c | 13 +- gdb/testsuite/gdb.python/py-mi-cmd.exp | 133 +++++++++++ gdb/testsuite/gdb.python/py-mi-cmd.py | 68 ++++++ 11 files changed, 733 insertions(+), 36 deletions(-) create mode 100644 gdb/python/py-micmd.c create mode 100644 gdb/python/py-micmd.h create mode 100644 gdb/testsuite/gdb.python/py-mi-cmd.exp create mode 100644 gdb/testsuite/gdb.python/py-mi-cmd.py -- 2.30.2