From patchwork Wed Jan 6 13:03:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 10244 Received: (qmail 67050 invoked by alias); 6 Jan 2016 13:03:43 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 66823 invoked by uid 89); 6 Jan 2016 13:03:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Changes, defun, @defun, 15111 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 06 Jan 2016 13:03:42 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id 07DA3C00040F for ; Wed, 6 Jan 2016 13:03:41 +0000 (UTC) Received: from brno.lan (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u06D3cfL007715 for ; Wed, 6 Jan 2016 08:03:40 -0500 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH v3 2/7] Add Python InferiorThread.inferior attribute Date: Wed, 6 Jan 2016 13:03:33 +0000 Message-Id: <1452085418-18300-3-git-send-email-palves@redhat.com> In-Reply-To: <1452085418-18300-1-git-send-email-palves@redhat.com> References: <1452085418-18300-1-git-send-email-palves@redhat.com> So a script can easily get at a thread's inferior and its number. gdb/ChangeLog: 2016-01-06 Pedro Alves * NEWS: Mention InferiorThread.inferior. * python/py-infthread.c (thpy_get_inferior): New. (thread_object_getset): Register "inferior". gdb/testsuite/ChangeLog: 2016-01-06 Pedro Alves * gdb.python/py-infthread.exp: Test InferiorThread.inferior. gdb/doc/ChangeLog: 2016-01-06 Pedro Alves * python.texi (Threads In Python): Document InferiorThread.inferior. --- gdb/NEWS | 5 +++++ gdb/doc/python.texi | 5 +++++ gdb/python/py-infthread.c | 14 ++++++++++++++ gdb/testsuite/gdb.python/py-infthread.exp | 3 +++ 4 files changed, 27 insertions(+) diff --git a/gdb/NEWS b/gdb/NEWS index 31c870d..57a6c71 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -151,6 +151,11 @@ show remote exec-event-feature-packet format. It outputs data in hexadecimal format with zero-padding on the left. +* Python Scripting + + ** gdb.InferiorThread objects have a new attribute "inferior", which + is the Inferior object the thread belongs to. + *** Changes in GDB 7.10 * Support for process record-replay and reverse debugging on aarch64*-linux* diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index e749810..855da44 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -3006,6 +3006,11 @@ Either the LWPID or TID may be 0, which indicates that the operating system does not use that identifier. @end defvar +@defvar InferiorThread.inferior +The inferior this thread belongs to. This attribute is represented as +a @code{gdb.Inferior} object. This attribute is not writable. +@end defvar + A @code{gdb.InferiorThread} object has the following methods: @defun InferiorThread.is_valid () diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c index 2637f60..5075071 100644 --- a/gdb/python/py-infthread.c +++ b/gdb/python/py-infthread.c @@ -140,6 +140,18 @@ thpy_get_ptid (PyObject *self, void *closure) return gdbpy_create_ptid_object (thread_obj->thread->ptid); } +/* Getter for InferiorThread.inferior -> Inferior. */ + +static PyObject * +thpy_get_inferior (PyObject *self, void *ignore) +{ + thread_object *thread_obj = (thread_object *) self; + + THPY_REQUIRE_VALID (thread_obj); + + return thread_obj->inf_obj; +} + /* Implementation of InferiorThread.switch (). Makes this the GDB selected thread. */ @@ -285,6 +297,8 @@ static PyGetSetDef thread_object_getset[] = { "num", thpy_get_num, NULL, "ID of the thread, as assigned by GDB.", NULL }, { "ptid", thpy_get_ptid, NULL, "ID of the thread, as assigned by the OS.", NULL }, + { "inferior", thpy_get_inferior, NULL, + "The Inferior object this thread belongs to.", NULL }, { NULL } }; diff --git a/gdb/testsuite/gdb.python/py-infthread.exp b/gdb/testsuite/gdb.python/py-infthread.exp index 6e02d02..e07fd82 100644 --- a/gdb/testsuite/gdb.python/py-infthread.exp +++ b/gdb/testsuite/gdb.python/py-infthread.exp @@ -44,6 +44,9 @@ gdb_test "python print (t0)" "\\