summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-01-13 10:56:06 +0000
committerPedro Alves <palves@redhat.com>2016-01-13 10:58:03 +0000
commit8465445732dc04c3fb6cf954274e12d06b274f08 (patch)
treee65ec5f892665f2e5b31daa6a41171ddb82a37b5
parente3940304fe75c91f99e260a89fe8c45ece7e373f (diff)
downloadbinutils-gdb-8465445732dc04c3fb6cf954274e12d06b274f08.tar.gz
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 <palves@redhat.com> * 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 <palves@redhat.com> * gdb.python/py-infthread.exp: Test InferiorThread.inferior. gdb/doc/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * python.texi (Threads In Python): Document InferiorThread.inferior.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/NEWS5
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/python.texi5
-rw-r--r--gdb/python/py-infthread.c14
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.python/py-infthread.exp3
7 files changed, 42 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1e6f9227fa7..47b5ffbbe77 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2016-01-13 Pedro Alves <palves@redhat.com>
+ * NEWS: Mention InferiorThread.inferior.
+ * python/py-infthread.c (thpy_get_inferior): New.
+ (thread_object_getset): Register "inferior".
+
+2016-01-13 Pedro Alves <palves@redhat.com>
+
* NEWS: Mention $_inferior.
* inferior.c (inferior_id_make_value): New.
(inferior_funcs): New.
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,5 +1,10 @@
2016-01-13 Pedro Alves <palves@redhat.com>
+ * python.texi (Threads In Python): Document
+ InferiorThread.inferior.
+
+2016-01-13 Pedro Alves <palves@redhat.com>
+
* gdb.texinfo (Inferiors and Programs): Document the $_inferior
convenience variable.
(Convenience Vars): Likewise.
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,5 +1,9 @@
2016-01-13 Pedro Alves <palves@redhat.com>
+ * gdb.python/py-infthread.exp: Test InferiorThread.inferior.
+
+2016-01-13 Pedro Alves <palves@redhat.com>
+
* gdb.base/default.exp: Expect $_inferior as well.
* gdb.multi/base.exp: Test $_inferior.
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)" "\\<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]
gdb_test "python print ('result = %s' % t0.num)" " = 1" "test InferiorThread.num"
gdb_test "python print ('result = %s' % str (t0.ptid))" " = \\(\[0-9\]+, \[0-9\]+, \[0-9\]+\\)" "test InferiorThread.ptid"
+gdb_py_test_silent_cmd "python i0 = t0.inferior" "test InferiorThread.inferior" 1
+gdb_test "python print ('result = %s' % i0.num)" " = 1" "test Inferior.num"
+
gdb_py_test_silent_cmd "python name = gdb.selected_thread().name" \
"get supplied name of current thread" 1
gdb_py_test_silent_cmd "python gdb.selected_thread().name = 'hibob'" \