From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 43641 invoked by alias); 6 Jan 2016 18:57:45 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 43615 invoked by uid 89); 6 Jan 2016 18:57:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: usplmg20.ericsson.net Received: from usplmg20.ericsson.net (HELO usplmg20.ericsson.net) (198.24.6.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 06 Jan 2016 18:57:41 +0000 Received: from EUSAAHC001.ericsson.se (Unknown_Domain [147.117.188.75]) by usplmg20.ericsson.net (Symantec Mail Security) with SMTP id 7C.DC.06940.3D16D865; Wed, 6 Jan 2016 19:49:56 +0100 (CET) Received: from [142.133.110.144] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.77) with Microsoft SMTP Server id 14.3.248.2; Wed, 6 Jan 2016 13:57:38 -0500 Subject: Re: [PATCH v3 3/7] Centralize thread ID printing To: Pedro Alves , References: <1452085418-18300-1-git-send-email-palves@redhat.com> <1452085418-18300-4-git-send-email-palves@redhat.com> From: Simon Marchi Message-ID: <568D63A2.8020606@ericsson.com> Date: Wed, 06 Jan 2016 18:57:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <1452085418-18300-4-git-send-email-palves@redhat.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2016-01/txt/msg00099.txt.bz2 On 16-01-06 08:03 AM, Pedro Alves wrote: > Add a new function to print a thread ID, in the style of paddress, > plongest, etc. and adjust all CLI-reachable paths to use it. > > This gives us a single place to tweak to print inferior-qualified > thread IDs later: > > - [Switching to thread 1 (Thread 0x7ffff7fc2740 (LWP 8155))] > + [Switching to thread 1.1 (Thread 0x7ffff7fc2740 (LWP 8155))] > > etc., though for now, this has no user-visible change. > > No regressions on x86_64 Fedora 20. > > gdb/ChangeLog: > 2016-01-06 Pedro Alves > > * breakpoint.c (remove_threaded_breakpoints) > (print_one_breakpoint_location): Use print_thread_id. > * btrace.c (btrace_enable, btrace_disable, btrace_teardown) > (btrace_fetch, btrace_clear): Use print_thread_id. > * common/print-utils.c (CELLSIZE): Delete. > (get_cell): Rename to ... > (get_print_cell): ... this and made extern. Adjust call callers. > Adjust to use PRINT_CELL_SIZE. > * common/print-utils.h (get_print_cell): Declare. > (PRINT_CELL_SIZE): New. > * gdbthread.h (print_thread_id): Declare. > * infcmd.c (signal_command): Use print_thread_id. > * inferior.c (print_inferior): Use print_thread_id. > * infrun.c (handle_signal_stop) > (insert_exception_resume_breakpoint) > (insert_exception_resume_from_probe) > (print_signal_received_reason): Use print_thread_id. > * record-btrace.c (record_btrace_info) > (record_btrace_resume_thread, record_btrace_cancel_resume) > (record_btrace_step_thread, record_btrace_wait): Use > print_thread_id. > * thread.c (thread_apply_all_command): Use print_thread_id. > (print_thread_id): New function. > (thread_apply_command): Use print_thread_id. > (thread_command, thread_find_command, do_captured_thread_select): > Use print_thread_id. > --- > gdb/breakpoint.c | 8 ++++-- > gdb/btrace.c | 15 ++++++---- > gdb/common/print-utils.c | 71 ++++++++++++++++++++++++------------------------ > gdb/common/print-utils.h | 8 ++++++ > gdb/gdbthread.h | 4 +++ > gdb/infcmd.c | 8 +++--- > gdb/inferior.c | 4 +-- > gdb/infrun.c | 2 +- > gdb/record-btrace.c | 14 ++++++---- > gdb/thread.c | 45 ++++++++++++++++++++---------- > 10 files changed, 108 insertions(+), 71 deletions(-) > > diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c > index d72021e..b2a3c47 100644 > --- a/gdb/breakpoint.c > +++ b/gdb/breakpoint.c > @@ -3249,8 +3249,8 @@ remove_threaded_breakpoints (struct thread_info *tp, int silent) > b->disposition = disp_del_at_next_stop; > > printf_filtered (_("\ > -Thread-specific breakpoint %d deleted - thread %d no longer in the thread list.\n"), > - b->number, tp->num); > +Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"), > + b->number, print_thread_id (tp)); > > /* Hide it from the user. */ > b->number = 0; > @@ -6514,9 +6514,11 @@ print_one_breakpoint_location (struct breakpoint *b, > > if (!part_of_multiple && b->thread != -1) > { > + struct thread_info *thr = find_thread_id (b->thread); > + > /* FIXME should make an annotation for this. */ > ui_out_text (uiout, "\tstop only in thread "); > - ui_out_field_int (uiout, "thread", b->thread); > + ui_out_field_string (uiout, "thread", print_thread_id (thr)); > ui_out_text (uiout, "\n"); > } > > diff --git a/gdb/btrace.c b/gdb/btrace.c > index 4c88ddd..dfcc3c8 100644 > --- a/gdb/btrace.c > +++ b/gdb/btrace.c > @@ -1044,7 +1044,8 @@ btrace_enable (struct thread_info *tp, const struct btrace_config *conf) > if (!target_supports_btrace (conf->format)) > error (_("Target does not support branch tracing.")); > > - DEBUG ("enable thread %d (%s)", tp->num, target_pid_to_str (tp->ptid)); > + DEBUG ("enable thread %s (%s)", print_thread_id (tp), > + target_pid_to_str (tp->ptid)); > > tp->btrace.target = target_enable_btrace (tp->ptid, conf); > > @@ -1076,7 +1077,8 @@ btrace_disable (struct thread_info *tp) > if (btp->target == NULL) > return; > > - DEBUG ("disable thread %d (%s)", tp->num, target_pid_to_str (tp->ptid)); > + DEBUG ("disable thread %s (%s)", print_thread_id (tp), > + target_pid_to_str (tp->ptid)); > > target_disable_btrace (btp->target); > btp->target = NULL; > @@ -1095,7 +1097,8 @@ btrace_teardown (struct thread_info *tp) > if (btp->target == NULL) > return; > > - DEBUG ("teardown thread %d (%s)", tp->num, target_pid_to_str (tp->ptid)); > + DEBUG ("teardown thread %s (%s)", print_thread_id (tp), > + target_pid_to_str (tp->ptid)); > > target_teardown_btrace (btp->target); > btp->target = NULL; > @@ -1269,7 +1272,8 @@ btrace_fetch (struct thread_info *tp) > struct cleanup *cleanup; > int errcode; > > - DEBUG ("fetch thread %d (%s)", tp->num, target_pid_to_str (tp->ptid)); > + DEBUG ("fetch thread %s (%s)", print_thread_id (tp), > + target_pid_to_str (tp->ptid)); > > btinfo = &tp->btrace; > tinfo = btinfo->target; > @@ -1341,7 +1345,8 @@ btrace_clear (struct thread_info *tp) > struct btrace_thread_info *btinfo; > struct btrace_function *it, *trash; > > - DEBUG ("clear thread %d (%s)", tp->num, target_pid_to_str (tp->ptid)); > + DEBUG ("clear thread %s (%s)", print_thread_id (tp), > + target_pid_to_str (tp->ptid)); > > /* Make sure btrace frames that may hold a pointer into the branch > trace data are destroyed. */ > diff --git a/gdb/common/print-utils.c b/gdb/common/print-utils.c > index 5bb83b5..1a21404 100644 > --- a/gdb/common/print-utils.c > +++ b/gdb/common/print-utils.c > @@ -21,15 +21,15 @@ > #include "print-utils.h" > /* Temporary storage using circular buffer. */ > > +/* Number of cells in the circular buffer. */ > #define NUMCELLS 16 > -#define CELLSIZE 50 > > /* Return the next entry in the circular buffer. */ > > -static char * > -get_cell (void) > +char * > +get_print_cell (void) > { > - static char buf[NUMCELLS][CELLSIZE]; > + static char buf[NUMCELLS][PRINT_CELL_SIZE]; > static int cell = 0; > > if (++cell >= NUMCELLS) > @@ -43,7 +43,7 @@ decimal2str (char *sign, ULONGEST addr, int width) > /* Steal code from valprint.c:print_decimal(). Should this worry > about the real size of addr as the above does? */ > unsigned long temp[3]; > - char *str = get_cell (); > + char *str = get_print_cell (); > int i = 0; > > do > @@ -62,14 +62,14 @@ decimal2str (char *sign, ULONGEST addr, int width) > switch (i) > { > case 1: > - xsnprintf (str, CELLSIZE, "%s%0*lu", sign, width, temp[0]); > + xsnprintf (str, PRINT_CELL_SIZE, "%s%0*lu", sign, width, temp[0]); > break; > case 2: > - xsnprintf (str, CELLSIZE, "%s%0*lu%09lu", sign, width, > + xsnprintf (str, PRINT_CELL_SIZE, "%s%0*lu%09lu", sign, width, > temp[1], temp[0]); > break; > case 3: > - xsnprintf (str, CELLSIZE, "%s%0*lu%09lu%09lu", sign, width, > + xsnprintf (str, PRINT_CELL_SIZE, "%s%0*lu%09lu%09lu", sign, width, > temp[2], temp[1], temp[0]); > break; > default: > @@ -84,7 +84,7 @@ static char * > octal2str (ULONGEST addr, int width) > { > unsigned long temp[3]; > - char *str = get_cell (); > + char *str = get_print_cell (); > int i = 0; > > do > @@ -104,15 +104,15 @@ octal2str (ULONGEST addr, int width) > { > case 1: > if (temp[0] == 0) > - xsnprintf (str, CELLSIZE, "%*o", width, 0); > + xsnprintf (str, PRINT_CELL_SIZE, "%*o", width, 0); > else > - xsnprintf (str, CELLSIZE, "0%0*lo", width, temp[0]); > + xsnprintf (str, PRINT_CELL_SIZE, "0%0*lo", width, temp[0]); > break; > case 2: > - xsnprintf (str, CELLSIZE, "0%0*lo%010lo", width, temp[1], temp[0]); > + xsnprintf (str, PRINT_CELL_SIZE, "0%0*lo%010lo", width, temp[1], temp[0]); > break; > case 3: > - xsnprintf (str, CELLSIZE, "0%0*lo%010lo%010lo", width, > + xsnprintf (str, PRINT_CELL_SIZE, "0%0*lo%010lo%010lo", width, > temp[2], temp[1], temp[0]); > break; > default: > @@ -155,18 +155,18 @@ phex (ULONGEST l, int sizeof_l) > switch (sizeof_l) > { > case 8: > - str = get_cell (); > - xsnprintf (str, CELLSIZE, "%08lx%08lx", > + str = get_print_cell (); > + xsnprintf (str, PRINT_CELL_SIZE, "%08lx%08lx", > (unsigned long) (l >> thirty_two), > (unsigned long) (l & 0xffffffff)); > break; > case 4: > - str = get_cell (); > - xsnprintf (str, CELLSIZE, "%08lx", (unsigned long) l); > + str = get_print_cell (); > + xsnprintf (str, PRINT_CELL_SIZE, "%08lx", (unsigned long) l); > break; > case 2: > - str = get_cell (); > - xsnprintf (str, CELLSIZE, "%04x", (unsigned short) (l & 0xffff)); > + str = get_print_cell (); > + xsnprintf (str, PRINT_CELL_SIZE, "%04x", (unsigned short) (l & 0xffff)); > break; > default: > str = phex (l, sizeof (l)); > @@ -189,22 +189,22 @@ phex_nz (ULONGEST l, int sizeof_l) > { > unsigned long high = (unsigned long) (l >> thirty_two); > > - str = get_cell (); > + str = get_print_cell (); > if (high == 0) > - xsnprintf (str, CELLSIZE, "%lx", > + xsnprintf (str, PRINT_CELL_SIZE, "%lx", > (unsigned long) (l & 0xffffffff)); > else > - xsnprintf (str, CELLSIZE, "%lx%08lx", high, > + xsnprintf (str, PRINT_CELL_SIZE, "%lx%08lx", high, > (unsigned long) (l & 0xffffffff)); > break; > } > case 4: > - str = get_cell (); > - xsnprintf (str, CELLSIZE, "%lx", (unsigned long) l); > + str = get_print_cell (); > + xsnprintf (str, PRINT_CELL_SIZE, "%lx", (unsigned long) l); > break; > case 2: > - str = get_cell (); > - xsnprintf (str, CELLSIZE, "%x", (unsigned short) (l & 0xffff)); > + str = get_print_cell (); > + xsnprintf (str, PRINT_CELL_SIZE, "%x", (unsigned short) (l & 0xffff)); > break; > default: > str = phex_nz (l, sizeof (l)); > @@ -219,9 +219,9 @@ phex_nz (ULONGEST l, int sizeof_l) > char * > hex_string (LONGEST num) > { > - char *result = get_cell (); > + char *result = get_print_cell (); > > - xsnprintf (result, CELLSIZE, "0x%s", phex_nz (num, sizeof (num))); > + xsnprintf (result, PRINT_CELL_SIZE, "0x%s", phex_nz (num, sizeof (num))); > return result; > } > > @@ -230,14 +230,14 @@ hex_string (LONGEST num) > char * > hex_string_custom (LONGEST num, int width) > { > - char *result = get_cell (); > - char *result_end = result + CELLSIZE - 1; > + char *result = get_print_cell (); > + char *result_end = result + PRINT_CELL_SIZE - 1; > const char *hex = phex_nz (num, sizeof (num)); > int hex_len = strlen (hex); > > if (hex_len > width) > width = hex_len; > - if (width + 2 >= CELLSIZE) > + if (width + 2 >= PRINT_CELL_SIZE) > internal_error (__FILE__, __LINE__, _("\ > hex_string_custom: insufficient space to store result")); > > @@ -294,7 +294,7 @@ int_string (LONGEST val, int radix, int is_signed, int width, > const char * > core_addr_to_string (const CORE_ADDR addr) > { > - char *str = get_cell (); > + char *str = get_print_cell (); > > strcpy (str, "0x"); > strcat (str, phex (addr, sizeof (addr))); > @@ -306,7 +306,7 @@ core_addr_to_string (const CORE_ADDR addr) > const char * > core_addr_to_string_nz (const CORE_ADDR addr) > { > - char *str = get_cell (); > + char *str = get_print_cell (); > > strcpy (str, "0x"); > strcat (str, phex_nz (addr, sizeof (addr))); > @@ -318,8 +318,9 @@ core_addr_to_string_nz (const CORE_ADDR addr) > const char * > host_address_to_string_1 (const void *addr) > { > - char *str = get_cell (); > + char *str = get_print_cell (); > > - xsnprintf (str, CELLSIZE, "0x%s", phex_nz ((uintptr_t) addr, sizeof (addr))); > + xsnprintf (str, PRINT_CELL_SIZE, "0x%s", > + phex_nz ((uintptr_t) addr, sizeof (addr))); > return str; > } > diff --git a/gdb/common/print-utils.h b/gdb/common/print-utils.h > index 706877b..8790d0b 100644 > --- a/gdb/common/print-utils.h > +++ b/gdb/common/print-utils.h > @@ -20,6 +20,10 @@ > #ifndef COMMON_CELLS_H > #define COMMON_CELLS_H > > +/* How many characters (including the terminating null byte) fit in a > + cell. */ > +#define PRINT_CELL_SIZE 50 > + > /* %d for LONGEST. The result is stored in a circular static buffer, > NUMCELLS deep. */ > > @@ -71,4 +75,8 @@ extern const char *host_address_to_string_1 (const void *addr); > #define host_address_to_string(ADDR) \ > host_address_to_string_1 ((const void *) (ADDR)) > > +/* Return the next entry in the circular print buffer. */ > + > +extern char *get_print_cell (void); > + > #endif /* COMMON_CELLS_H */ > diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h > index b75184b..e1e264a 100644 > --- a/gdb/gdbthread.h > +++ b/gdb/gdbthread.h > @@ -361,6 +361,10 @@ extern ptid_t thread_id_to_pid (int); > into the integer thread id (GDB's homegrown id, not the system's). */ > extern int pid_to_thread_id (ptid_t ptid); > > +/* Return a string version of THR's thread ID. The result is stored > + in a circular static buffer, NUMCELLS deep. */ > +const char *print_thread_id (struct thread_info *thr); > + > /* Boolean test for an already-known pid (which may be overloaded with > extra thread information). */ > extern int in_thread_list (ptid_t ptid); > diff --git a/gdb/infcmd.c b/gdb/infcmd.c > index 8a71283..d46e8a7 100644 > --- a/gdb/infcmd.c > +++ b/gdb/infcmd.c > @@ -1316,8 +1316,8 @@ signal_command (char *signum_exp, int from_tty) > { > if (!must_confirm) > printf_unfiltered (_("Note:\n")); > - printf_unfiltered (_(" Thread %d previously stopped with signal %s, %s.\n"), > - tp->num, > + printf_unfiltered (_(" Thread %s previously stopped with signal %s, %s.\n"), > + print_thread_id (tp), > gdb_signal_to_name (tp->suspend.stop_signal), > gdb_signal_to_string (tp->suspend.stop_signal)); > must_confirm = 1; > @@ -1325,10 +1325,10 @@ signal_command (char *signum_exp, int from_tty) > } > > if (must_confirm > - && !query (_("Continuing thread %d (the current thread) with specified signal will\n" > + && !query (_("Continuing thread %s (the current thread) with specified signal will\n" > "still deliver the signals noted above to their respective threads.\n" > "Continue anyway? "), > - inferior_thread ()->num)) > + print_thread_id (inferior_thread ()))) > error (_("Not confirmed.")); > } > > diff --git a/gdb/inferior.c b/gdb/inferior.c > index 8f9ac33..45b3141 100644 > --- a/gdb/inferior.c > +++ b/gdb/inferior.c > @@ -748,8 +748,8 @@ inferior_command (char *args, int from_tty) > switch_to_thread (tp->ptid); > } > > - printf_filtered (_("[Switching to thread %d (%s)] "), > - pid_to_thread_id (inferior_ptid), > + printf_filtered (_("[Switching to thread %s (%s)] "), > + print_thread_id (inferior_thread ()), > target_pid_to_str (inferior_ptid)); > } > else > diff --git a/gdb/infrun.c b/gdb/infrun.c > index 0c61d26..001e7b4 100644 > --- a/gdb/infrun.c > +++ b/gdb/infrun.c > @@ -7905,7 +7905,7 @@ print_signal_received_reason (struct ui_out *uiout, enum gdb_signal siggnal) > ui_out_text (uiout, "\n["); > ui_out_field_string (uiout, "thread-name", > target_pid_to_str (t->ptid)); > - ui_out_field_fmt (uiout, "thread-id", "] #%d", t->num); > + ui_out_field_fmt (uiout, "thread-id", "] #%s", print_thread_id (t)); > ui_out_text (uiout, " stopped"); > } > else > diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c > index a0b8836..8c33010 100644 > --- a/gdb/record-btrace.c > +++ b/gdb/record-btrace.c > @@ -438,8 +438,8 @@ record_btrace_info (struct target_ops *self) > } > > printf_unfiltered (_("Recorded %u instructions in %u functions (%u gaps) " > - "for thread %d (%s).\n"), insns, calls, gaps, > - tp->num, target_pid_to_str (tp->ptid)); > + "for thread %s (%s).\n"), insns, calls, gaps, > + print_thread_id (tp), target_pid_to_str (tp->ptid)); > > if (btrace_is_replaying (tp)) > printf_unfiltered (_("Replay in progress. At instruction %u.\n"), > @@ -1864,7 +1864,7 @@ record_btrace_resume_thread (struct thread_info *tp, > { > struct btrace_thread_info *btinfo; > > - DEBUG ("resuming thread %d (%s): %x (%s)", tp->num, > + DEBUG ("resuming thread %s (%s): %x (%s)", print_thread_id (tp), > target_pid_to_str (tp->ptid), flag, btrace_thread_flag_to_str (flag)); > > btinfo = &tp->btrace; > @@ -2131,7 +2131,8 @@ record_btrace_cancel_resume (struct thread_info *tp) > if (flags == 0) > return; > > - DEBUG ("cancel resume thread %d (%s): %x (%s)", tp->num, > + DEBUG ("cancel resume thread %s (%s): %x (%s)", > + print_thread_id (tp), > target_pid_to_str (tp->ptid), flags, > btrace_thread_flag_to_str (flags)); > > @@ -2354,7 +2355,7 @@ record_btrace_step_thread (struct thread_info *tp) > flags = btinfo->flags & (BTHR_MOVE | BTHR_STOP); > btinfo->flags &= ~(BTHR_MOVE | BTHR_STOP); > > - DEBUG ("stepping thread %d (%s): %x (%s)", tp->num, > + DEBUG ("stepping thread %s (%s): %x (%s)", print_thread_id (tp), > target_pid_to_str (tp->ptid), flags, > btrace_thread_flag_to_str (flags)); > > @@ -2563,7 +2564,8 @@ record_btrace_wait (struct target_ops *ops, ptid_t ptid, > /* We moved the replay position but did not update registers. */ > registers_changed_ptid (eventing->ptid); > > - DEBUG ("wait ended by thread %d (%s): %s", eventing->num, > + DEBUG ("wait ended by thread %s (%s): %s", > + print_thread_id (eventing), > target_pid_to_str (eventing->ptid), > target_waitstatus_to_string (status)); > > diff --git a/gdb/thread.c b/gdb/thread.c > index 4c2259f..87861d5 100644 > --- a/gdb/thread.c > +++ b/gdb/thread.c > @@ -1588,6 +1588,17 @@ make_cleanup_restore_current_thread (void) > restore_current_thread_cleanup_dtor); > } > > +/* See gdbthread.h. */ > + > +const char * > +print_thread_id (struct thread_info *thr) > +{ > + char *s = get_print_cell (); > + > + xsnprintf (s, PRINT_CELL_SIZE, "%d", thr->num); > + return s; > +} > + > /* If non-zero tp_array_compar should sort in ascending order, otherwise in > descending order. */ > > @@ -1678,8 +1689,8 @@ thread_apply_all_command (char *cmd, int from_tty) > if (thread_alive (tp_array[k])) > { > switch_to_thread (tp_array[k]->ptid); > - printf_filtered (_("\nThread %d (%s):\n"), > - tp_array[k]->num, > + printf_filtered (_("\nThread %s (%s):\n"), > + print_thread_id (tp_array[k]), > target_pid_to_str (inferior_ptid)); > execute_command (cmd, from_tty); > > @@ -1691,6 +1702,8 @@ thread_apply_all_command (char *cmd, int from_tty) > do_cleanups (old_chain); > } > > +/* Implementation of the "thread apply" command. */ > + > static void > thread_apply_command (char *tidlist, int from_tty) > { > @@ -1757,13 +1770,15 @@ thread_command (char *tidstr, int from_tty) > > if (target_has_stack) > { > + struct thread_info *tp = inferior_thread (); > + > if (is_exited (inferior_ptid)) > - printf_filtered (_("[Current thread is %d (%s) (exited)]\n"), > - pid_to_thread_id (inferior_ptid), > + printf_filtered (_("[Current thread is %s (%s) (exited)]\n"), > + print_thread_id (tp), > target_pid_to_str (inferior_ptid)); > else > - printf_filtered (_("[Current thread is %d (%s)]\n"), > - pid_to_thread_id (inferior_ptid), > + printf_filtered (_("[Current thread is %s (%s)]\n"), > + print_thread_id (tp), > target_pid_to_str (inferior_ptid)); > } > else > @@ -1812,32 +1827,32 @@ thread_find_command (char *arg, int from_tty) > { > if (tp->name != NULL && re_exec (tp->name)) > { > - printf_filtered (_("Thread %d has name '%s'\n"), > - tp->num, tp->name); > + printf_filtered (_("Thread %s has name '%s'\n"), > + print_thread_id (tp), tp->name); > match++; > } > > tmp = target_thread_name (tp); > if (tmp != NULL && re_exec (tmp)) > { > - printf_filtered (_("Thread %d has target name '%s'\n"), > - tp->num, tmp); > + printf_filtered (_("Thread %s has target name '%s'\n"), > + print_thread_id (tp), tmp); > match++; > } > > tmp = target_pid_to_str (tp->ptid); > if (tmp != NULL && re_exec (tmp)) > { > - printf_filtered (_("Thread %d has target id '%s'\n"), > - tp->num, tmp); > + printf_filtered (_("Thread %s has target id '%s'\n"), > + print_thread_id (tp), tmp); > match++; > } > > tmp = target_extra_thread_info (tp); > if (tmp != NULL && re_exec (tmp)) > { > - printf_filtered (_("Thread %d has extra info '%s'\n"), > - tp->num, tmp); > + printf_filtered (_("Thread %s has extra info '%s'\n"), > + print_thread_id (tp), tmp); > match++; > } > } > @@ -1877,7 +1892,7 @@ do_captured_thread_select (struct ui_out *uiout, void *tidstr) > annotate_thread_changed (); > > ui_out_text (uiout, "[Switching to thread "); > - ui_out_field_int (uiout, "new-thread-id", pid_to_thread_id (inferior_ptid)); > + ui_out_field_string (uiout, "new-thread-id", print_thread_id (tp)); > ui_out_text (uiout, " ("); > ui_out_text (uiout, target_pid_to_str (inferior_ptid)); > ui_out_text (uiout, ")]"); > LGTM.