From: Pedro Alves Date: Wed, 13 Jan 2016 10:56:06 +0000 (+0000) Subject: Add Python InferiorThread.inferior attribute X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8465445732dc04c3fb6cf954274e12d06b274f08;p=binutils-gdb.git Add Python InferiorThread.inferior attribute So a script can easily get at a thread's inferior and its number. gdb/ChangeLog: 2016-01-13 Pedro Alves * NEWS: Mention InferiorThread.inferior. * python/py-infthread.c (thpy_get_inferior): New. (thread_object_getset): Register "inferior". gdb/testsuite/ChangeLog: 2016-01-13 Pedro Alves * gdb.python/py-infthread.exp: Test InferiorThread.inferior. gdb/doc/ChangeLog: 2016-01-13 Pedro Alves * python.texi (Threads In Python): Document InferiorThread.inferior. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1e6f9227fa7..47b5ffbbe77 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2016-01-13 Pedro Alves + + * NEWS: Mention InferiorThread.inferior. + * python/py-infthread.c (thpy_get_inferior): New. + (thread_object_getset): Register "inferior". + 2016-01-13 Pedro Alves * NEWS: Mention $_inferior. diff --git a/gdb/NEWS b/gdb/NEWS index c22ac54565d..ed387547824 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -175,6 +175,11 @@ show remote catch-syscall-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/ChangeLog b/gdb/doc/ChangeLog index b51e8df587b..be162255553 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2016-01-13 Pedro Alves + + * python.texi (Threads In Python): Document + InferiorThread.inferior. + 2016-01-13 Pedro Alves * gdb.texinfo (Inferiors and Programs): Document the $_inferior diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index e749810c0e7..855da44fed9 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 2637f60f331..5075071f00d 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/ChangeLog b/gdb/testsuite/ChangeLog index 5d773ca4fc0..ec2a0674b3f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-01-13 Pedro Alves + + * gdb.python/py-infthread.exp: Test InferiorThread.inferior. + 2016-01-13 Pedro Alves * gdb.base/default.exp: Expect $_inferior as well. diff --git a/gdb/testsuite/gdb.python/py-infthread.exp b/gdb/testsuite/gdb.python/py-infthread.exp index 6e02d023e59..e07fd82dfab 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)" "\\