commit 52cc9bd1b3137c918c8ecd389d2059684b32a9a0 Author: Vladimir Prus Date: Fri Jan 30 19:34:11 2009 +0300 Make -thread-list-ids report the current thread. gdb/doc/ * gdb.texinfo (GDB/MI Thread Commands): Document the 'current-thread-id' field. Remove the example with zero threads, since current GDB won't ever report that if there's inferior. gdb/ * thread.c (do_captured_list_thread_ids): Report the current thread id. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 583d96c..9a4cd68 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -20497,23 +20497,11 @@ Part of @samp{info threads} supplies the same information. @subsubheading Example -No threads present, besides the main process: - -@smallexample -(gdb) --thread-list-ids -^done,thread-ids=@{@},number-of-threads="0" -(gdb) -@end smallexample - - -Several threads: - @smallexample (gdb) -thread-list-ids ^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, -number-of-threads="3" +current-thread-id="1",number-of-threads="3" (gdb) @end smallexample diff --git a/gdb/thread.c b/gdb/thread.c index 8a98b8e..1d6d9c4 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -410,6 +410,7 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg) struct thread_info *tp; int num = 0; struct cleanup *cleanup_chain; + int current_thread = -1; prune_threads (); target_find_new_threads (); @@ -420,11 +421,18 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg) { if (tp->state_ == THREAD_EXITED) continue; + + if (ptid_equal (tp->ptid, inferior_ptid)) + current_thread = tp->num; + num++; ui_out_field_int (uiout, "thread-id", tp->num); } do_cleanups (cleanup_chain); + + if (current_thread != -1) + ui_out_field_int (uiout, "current-thread-id", current_thread); ui_out_field_int (uiout, "number-of-threads", num); return GDB_RC_OK; }