return object;
}
+/* Implement repr() for gdb.InferiorThread. */
+
+static PyObject *
+thpy_repr (PyObject *self)
+{
+ thread_object *thread_obj = (thread_object *) self;
+
+ if (thread_obj->thread == nullptr)
+ return gdb_py_invalid_object_repr (self);
+
+ thread_info *thr = thread_obj->thread;
+ return PyUnicode_FromFormat ("<%s id=%s target-id=\"%s\">",
+ Py_TYPE (self)->tp_name,
+ print_full_thread_id (thr),
+ target_pid_to_str (thr->ptid).c_str ());
+}
+
/* Return a reference to a new Python object representing a ptid_t.
The object is a tuple containing (pid, lwp, tid). */
PyObject *
0, /*tp_getattr*/
0, /*tp_setattr*/
0, /*tp_compare*/
- 0, /*tp_repr*/
+ thpy_repr, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
0, /*tp_as_mapping*/
"Inferior.connection_num equals Inferior.connection.num"
gdb_test "python print ('result = %s' % i0.pid)" " = \[0-9\]+" "test Inferior.pid"
gdb_test "python print ('result = %s' % i0.was_attached)" " = False" "test Inferior.was_attached"
-gdb_test "python print (i0.threads ())" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"
+gdb_test "python print (i0.threads ())" \
+ "\\(<gdb.InferiorThread id=${decimal}\\.${decimal} target-id=\"\[^\r\n\]*\">,\\)" \
+ "test Inferior.threads"
gdb_test "python print (i0.progspace)" "<gdb.Progspace object at $hex>"
gdb_test "python print (i0.progspace == gdb.progspaces()\[0\])" "True"
gdb_continue_to_breakpoint "cont to check_threads" ".*pthread_barrier_wait.*"
gdb_test "python print (len (i0.threads ()))" "\r\n9" "test Inferior.threads 2"
+# Grab the last thread from the list. This thread object will become
+# invalid when the corresponding thread exits.
+gdb_test_no_output "python last_thread = i0.threads()\[-1\]"
+gdb_test "python print(last_thread)" \
+ "<gdb.InferiorThread id=${decimal}\\.${decimal} target-id=\"\[^\r\n\]*\">" \
+ "test repr of a valid thread"
+
# Proceed to the next test.
gdb_breakpoint [gdb_get_line_number "Break here."]
gdb_continue_to_breakpoint "cont to Break here." ".*Break here\..*"
+# Check the repr() for an invalid gdb.InferiorThread object.
+gdb_test "python print(last_thread)" \
+ "<gdb.InferiorThread \\(invalid\\)>" \
+ "test repr of an invalid thread"
+
# Test memory read and write operations.
gdb_py_test_silent_cmd "python addr = gdb.selected_frame ().read_var ('str')" \
gdb_py_test_silent_cmd "python t0 = gdb.selected_thread ()" "test gdb.selected_thread" 1
-gdb_test "python print (t0)" "\\<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>" "verify InferiorThread object"
+gdb_test "python print (t0)" \
+ "<gdb.InferiorThread id=${decimal}\\.${decimal} target-id=\"\[^\r\n\]*\">"
gdb_test "python print ('result = %s' % t0.num)" " = 1" "test InferiorThread.num"
gdb_test "python print ('result = %s' % t0.global_num)" " = 1" "test InferiorThread.global_num"
gdb_test "python print ('result = %s' % str (t0.ptid))" " = \\(\[0-9\]+, \[0-9\]+, \[0-9\]+\\)" "test InferiorThread.ptid"