From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id uPmUO/5yPWQgoC4AWB0awg (envelope-from ) for ; Mon, 17 Apr 2023 12:25:34 -0400 Received: by simark.ca (Postfix, from userid 112) id F0F8C1E221; Mon, 17 Apr 2023 12:25:34 -0400 (EDT) Authentication-Results: simark.ca; dkim=fail reason="signature verification failed" (768-bit key; unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=Bi1BAeJz; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from 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 RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 43B171E0D3 for ; Mon, 17 Apr 2023 12:25:34 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CB7DB3857703 for ; Mon, 17 Apr 2023 16:25:33 +0000 (GMT) Received: from outbound-ss-820.bluehost.com (outbound-ss-820.bluehost.com [69.89.24.241]) by sourceware.org (Postfix) with ESMTPS id 9F7313858C53 for ; Mon, 17 Apr 2023 16:25:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9F7313858C53 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com Received: from cmgw15.mail.unifiedlayer.com (unknown [10.0.90.130]) by progateway2.mail.pro1.eigbox.com (Postfix) with ESMTP id 0FC5C10046B42 for ; Mon, 17 Apr 2023 16:25:13 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id oRfFptXl7ZSXQoRfFpXcgr; Mon, 17 Apr 2023 16:25:13 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=a8T1SWeF c=1 sm=1 tr=0 ts=643d72e9 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=dKHAf1wccvYA:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=CCpqsmhAAAAA:8 a=RCv7wDNaccS_3S9ZSGAA:9 a=ul9cdbp4aOFLsgKbc677:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:References :Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=cUAns4dfCNaa7QXCXELqjwC1ZZLjp29nbD+oJngIXZ0=; b=Bi1BAeJzkIl+6wVmnhOFtaYlCe HVwy6NOD9bq6CHmGehlWRpg17spAEVcMSVs3Tbu7hQVjS7omWfCBWPPXoMFi9h3aYIZilbN2d73Cg ujUqn1VmCuLxOMyK1pbks9HEK; Received: from 71-211-191-82.hlrn.qwest.net ([71.211.191.82]:38988 helo=murgatroyd) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1poRfE-001eGa-R1; Mon, 17 Apr 2023 10:25:12 -0600 From: Tom Tromey To: Andrew Burgess via Gdb-patches Cc: Andrew Burgess Subject: Re: [PATCH 5/5] gdb/python: extend the Python Disassembler API to allow for styling References: <62700c9aaddb83cc05e1b5e51e115d4eea8281e4.1680596378.git.aburgess@redhat.com> X-Attribution: Tom Date: Mon, 17 Apr 2023 10:25:12 -0600 In-Reply-To: <62700c9aaddb83cc05e1b5e51e115d4eea8281e4.1680596378.git.aburgess@redhat.com> (Andrew Burgess via Gdb-patches's message of "Tue, 4 Apr 2023 09:21:07 +0100") Message-ID: <87354y4gt3.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 71.211.191.82 X-Source-L: No X-Exim-ID: 1poRfE-001eGa-R1 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 71-211-191-82.hlrn.qwest.net (murgatroyd) [71.211.191.82]:38988 X-Source-Auth: tom+tromey.com X-Email-Count: 3 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes 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: , Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" >>>>> "Andrew" == Andrew Burgess via Gdb-patches writes: Andrew> This commit extends the Python Disassembler API to allow for styling Andrew> of the instructions. Thanks for doing this. Andrew> + struct gdbarch *gdbarch = nullptr; Andrew> + for (Py_ssize_t i = 0; i < parts_count; ++i) Andrew> + { Andrew> + gdbpy_ref<> part (PySequence_GetItem (parts_list, i)); PySequence_GetItem can fail, so this needs a check. Andrew> +static PyObject * Andrew> +disasmpy_addr_part_string (PyObject *self, void *closure) Andrew> +{ Andrew> + disasm_addr_part_object *obj = (disasm_addr_part_object *) self; Andrew> + Andrew> + string_file buf; Andrew> + print_address (obj->gdbarch, obj->address, &buf); This should probably be in a try/catch. Unless the callee is known to never throw, it's important to catch gdb exceptions when calling from the Python layer into the core. Failure to do so will probably cause crashes. Andrew> +/* Describe the gdb.disassembler.DisassemblerPart type. */ Andrew> + Andrew> +PyTypeObject disasm_part_object_type = { Andrew> + PyVarObject_HEAD_INIT (nullptr, 0) Andrew> + "gdb.disassembler.DisassemblerPart", /*tp_name*/ Andrew> + sizeof (PyObject), /*tp_basicsize*/ Andrew> + 0, /*tp_itemsize*/ Andrew> + 0, /*tp_dealloc*/ Andrew> + 0, /*tp_print*/ Andrew> + 0, /*tp_getattr*/ Andrew> + 0, /*tp_setattr*/ Andrew> + 0, /*tp_compare*/ Andrew> + 0, /*tp_repr*/ Should this one have a repr? After the recent traffic about this I wonder if we should just mandate that all new types have this slot set. Tom