From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41944 invoked by alias); 13 Apr 2017 16:11:19 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 41859 invoked by uid 89); 13 Apr 2017 16:11:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.2 spammy=proceeding, surrounding, todos X-HELO: mail-wr0-f179.google.com Received: from mail-wr0-f179.google.com (HELO mail-wr0-f179.google.com) (209.85.128.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 13 Apr 2017 16:11:11 +0000 Received: by mail-wr0-f179.google.com with SMTP id c55so38605410wrc.3 for ; Thu, 13 Apr 2017 09:11:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=8nfcvl7qjrE1Fp9VPxHv0B735ubXQuxwQAg+Z7iTj6A=; b=g/JTYC4uq34CMPQcEAw4t8wus3Lb05PC9cPTwile4oRpO1bcTy8PljqID6r5F3Xxio xQed556gDe1tWiLLBsBJerrJt/+DuIKfVcdIfQwAaT4AUJQLTN1KMhTi7Hvedl7QuvcJ +gf5Z9TsXUcQJhcy1G9Opohd9JIdSZZ4KKU2iz7q80XSq4qZF/TyTq9ffZM9DJx4f548 U+N8Asvdr39iNNjRZhh5+mRB1jOK4UqMS3nMaV3gOOh/Yfh7X+GRmsCSWqJ1yd3aiNIr S1pLKNMMaz53FfOlpJdGzOP2rViEt+/nW08o19mtkpvetBwq7CyfdujQcjEAiE67BHBl in3A== X-Gm-Message-State: AN3rC/6NrCgdnkx5bpsAAzwECNvOypqnYZ9AZa75LLud8a3urghRZyZa irOnEKIrPGgYcFXfMuZFyQ== X-Received: by 10.223.177.199 with SMTP id r7mr3990990wra.164.1492099870713; Thu, 13 Apr 2017 09:11:10 -0700 (PDT) Received: from ?IPv6:2a02:c7f:ae15:7800:4685:ff:fe66:9f4? ([2a02:c7f:ae15:7800:4685:ff:fe66:9f4]) by smtp.gmail.com with ESMTPSA id p22sm3474763wmi.18.2017.04.13.09.11.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Apr 2017 09:11:09 -0700 (PDT) Subject: Re: [PATCH v2 2/7] Add `thread_from_thread_handle' function to (Python) gdb module To: Kevin Buettner , gdb-patches@sourceware.org References: <20170408224959.67164a27@pinnacle.lan> <20170408230657.556b99e4@pinnacle.lan> From: Phil Muldoon Message-ID: Date: Thu, 13 Apr 2017 16:11:00 -0000 MIME-Version: 1.0 In-Reply-To: <20170408230657.556b99e4@pinnacle.lan> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2017-04/txt/msg00441.txt.bz2 On 09/04/17 07:06, Kevin Buettner wrote: > gdb/ChangeLog: > * python/py-infthread.c (gdbpy_thread_from_thread_handle): New > function. > * python/python-internal.h (thread_object_type): Declare. > (gdbpy_thread_from_thread_handle): Declare. > * python/python.c (thread_from_thread_handle): Register. > --- > gdb/python/py-infthread.c | 41 +++++++++++++++++++++++++++++++++++++++++ > gdb/python/python-internal.h | 3 +++ > gdb/python/python.c | 4 ++++ > 3 files changed, 48 insertions(+) > > diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c > index 5482bf9..5739984 100644 > --- a/gdb/python/py-infthread.c > +++ b/gdb/python/py-infthread.c > @@ -294,6 +294,47 @@ gdbpy_selected_thread (PyObject *self, PyObject *args) > Py_RETURN_NONE; > } > > +/* Implementation of gdb.thread_from_thread_handle (handle) > + -> gdb.InferiorThread. */ > + > +PyObject * > +gdbpy_thread_from_thread_handle (PyObject *self, PyObject *args, PyObject *kw) > +{ > + PyObject *handle_obj, *result; > + static char *keywords[] = { "thread_handle", NULL }; > + > + if (! PyArg_ParseTupleAndKeywords (args, kw, "O", keywords, &handle_obj)) > + return NULL; > + > + result = Py_None; > + > + if (gdbpy_is_value_object (handle_obj)) > + { > + TRY > + { > + struct thread_info *thread_info; > + struct value *val = value_object_to_value (handle_obj); > + > + thread_info = find_thread_by_handle (val); > + if (thread_info != NULL) > + { > + result = (PyObject *) find_thread_object (thread_info->ptid); > + if (result) > + Py_INCREF (result); Initially this caught me off guard and wondered why find_thread_object required a reference count. But it does return a borrowed reference, though it does not seem to be documented as such. I think the code surrounding this should be documented, but not in this patch. I'll add it to one of my TODOs. > + } > + } > + CATCH (except, RETURN_MASK_ALL) > + { > + if (except.reason < 0) > + gdbpy_convert_exception (except); > + return NULL; > + } > + END_CATCH > + } > + > + return result; > +} The Python bits look good to me, as do the tests and documentation. Please wait on a maintainer to give the overall patch a yes/no before proceeding. Cheers Phil