From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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-Spam-Status: No, score=-3019.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,JMQ_SPF_NEUTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: >>>>> "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