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.
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.
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*
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.
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 ()
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. */
{ "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 }
};
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.
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'" \