This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Implement "info threads -gid"


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c84f6bbfe50ff13928360d3cc349d7c553867ce6

commit c84f6bbfe50ff13928360d3cc349d7c553867ce6
Author: Pedro Alves <palves@redhat.com>
Date:   Wed Jan 13 10:56:09 2016 +0000

    Implement "info threads -gid"
    
    This commit makes global thread IDs optionaly visible in "info
    threads", with the new "-gid" switch:
    
     (gdb) info threads -gid
       Id   GId  Target Id         Frame
       1.1  1    Thread 0x7ffff7fc2740 (LWP 6022) "threads" (running)
       1.2  3    Thread 0x7ffff77c0700 (LWP 6028) "threads" (running)
       1.3  4    Thread 0x7ffff7fc2740 (LWP 6032) "threads" (running)
       2.1  2    Thread 0x7ffff7fc1700 (LWP 6037) "threads" (running)
       2.2  5    Thread 0x7ffff77c0700 (LWP 6038) "threads" (running)
     * 2.3  6    Thread 0x7ffff7fc2740 (LWP 6039) "threads" (running)
    
     (gdb) info threads
       Id   Target Id         Frame
       1.1  Thread 0x7ffff7fc2740 (LWP 6022) "threads" (running)
       1.2  Thread 0x7ffff77c0700 (LWP 6028) "threads" (running)
       1.3  Thread 0x7ffff7fc2740 (LWP 6032) "threads" (running)
       2.1  Thread 0x7ffff7fc1700 (LWP 6037) "threads" (running)
       2.2  Thread 0x7ffff77c0700 (LWP 6038) "threads" (running)
     * 2.3  Thread 0x7ffff7fc2740 (LWP 6039) "threads" (running)
    
    No regressions on x86_64 Fedora 20.
    
    gdb/ChangeLog:
    2016-01-13  Pedro Alves  <palves@redhat.com>
    
    	* NEWS: Mention "info threads -gid".
    	* gdbthread.h (struct thread_info) <global_num>: Mention "info
    	threads -gid".
    	* thread.c (info_threads_command): Handle "-gid".
    	(_initialize_thread): Adjust "info threads" help string to mention
    	-gid.
    
    gdb/testsuite/ChangeLog:
    2016-01-13  Pedro Alves  <palves@redhat.com>
    
    	* gdb.multi/tids.exp: Test "info threads -gid".
    
    gdb/doc/ChangeLog:
    2016-01-13  Pedro Alves  <palves@redhat.com>
    
    	* gdb.texinfo (Threads): Document "info threads -gid".

Diff:
---
 gdb/ChangeLog                    |  9 +++++++++
 gdb/NEWS                         |  3 +++
 gdb/doc/ChangeLog                |  4 ++++
 gdb/doc/gdb.texinfo              | 19 +++++++++++++------
 gdb/gdbthread.h                  |  4 ++--
 gdb/testsuite/ChangeLog          |  4 ++++
 gdb/testsuite/gdb.multi/tids.exp |  8 ++++++++
 gdb/thread.c                     | 14 ++++++++++++--
 8 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d253808..603af22 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
 2016-01-13  Pedro Alves  <palves@redhat.com>
 
+	* NEWS: Mention "info threads -gid".
+	* gdbthread.h (struct thread_info) <global_num>: Mention "info
+	threads -gid".
+	* thread.c (info_threads_command): Handle "-gid".
+	(_initialize_thread): Adjust "info threads" help string to mention
+	-gid.
+
+2016-01-13  Pedro Alves  <palves@redhat.com>
+
 	* NEWS: Mention InferiorThread.global_num.
 	* python/py-infthread.c (thpy_get_global_num): New function.
 	(thread_object_getset): Register "global_num".
diff --git a/gdb/NEWS b/gdb/NEWS
index ff92079..024c184 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -34,6 +34,9 @@
      [Switching to thread 2.1 (Thread 0x7ffff7fc2740 (LWP 8157))] (running)
      (gdb)
 
+* You can use "info threads -gid" to display the global thread ID of
+  all threads.
+
 * The new convenience variable $_inferior holds the number of the
   current inferior.
 
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 65f8ed9..d723276 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,5 +1,9 @@
 2016-01-13  Pedro Alves  <palves@redhat.com>
 
+	* gdb.texinfo (Threads): Document "info threads -gid".
+
+2016-01-13  Pedro Alves  <palves@redhat.com>
+
 	* python.texi (Breakpoints In Python) <Breakpoint.thread>: Add
 	anchor.
 	(Threads In Python): Document new InferiorThread.global_num
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 786556e..654efa4 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -2959,6 +2959,10 @@ threads that you want to display using the thread ID list syntax
 the per-inferior thread number assigned by @value{GDBN}
 
 @item
+the global thread number assigned by @value{GDBN}, if the @samp{-gid}
+option was specified
+
+@item
 the target system's thread identifier (@var{systag})
 
 @item
@@ -2989,15 +2993,18 @@ For example,
 
 If you're debugging multiple inferiors, @value{GDBN} displays thread
 IDs using the qualified @var{inferior-num}.@var{thread-num} format.
-Otherwise, only @var{thread-num} is shown:
+Otherwise, only @var{thread-num} is shown.
+
+If you specify the @samp{-gid} option, @value{GDBN} displays a column
+indicating each thread's global thread ID:
 
 @smallexample
 (@value{GDBP}) info threads
-  Id   Target Id             Frame
-  1.1  process 35 thread 13  main (argc=1, argv=0x7ffffff8)
-  1.2  process 35 thread 23  0x34e5 in sigpause ()
-  1.3  process 35 thread 27  0x34e5 in sigpause ()
-* 2.1  process 65 thread 1   main (argc=1, argv=0x7ffffff8)
+  Id   GId  Target Id             Frame
+  1.1  1    process 35 thread 13  main (argc=1, argv=0x7ffffff8)
+  1.2  3    process 35 thread 23  0x34e5 in sigpause ()
+  1.3  4    process 35 thread 27  0x34e5 in sigpause ()
+* 2.1  2    process 65 thread 1   main (argc=1, argv=0x7ffffff8)
 @end smallexample
 
 On Solaris, you can display more information about user threads with a
diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h
index 5ff38bf..bfc9124 100644
--- a/gdb/gdbthread.h
+++ b/gdb/gdbthread.h
@@ -216,8 +216,8 @@ struct thread_info
      Above, both inferiors 1 and 2 have threads numbered 1-3, but each
      thread has its own unique global ID.  */
 
-  /* The thread's global GDB thread number.  This is exposed to MI and
-     Python/Scheme.  */
+  /* The thread's global GDB thread number.  This is exposed to MI,
+     Python/Scheme and visible with "info threads -gid".  */
   int global_num;
 
   /* The per-inferior thread number.  This is unique in the inferior
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 92989a9..c863518 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,9 @@
 2016-01-13  Pedro Alves  <palves@redhat.com>
 
+	* gdb.multi/tids.exp: Test "info threads -gid".
+
+2016-01-13  Pedro Alves  <palves@redhat.com>
+
 	* gdb.multi/tids.exp: Test InferiorThread.global_num and
 	Breakpoint.thread.
 	* gdb.python/py-infthread.exp: Test InferiorThread.global_num.
diff --git a/gdb/testsuite/gdb.multi/tids.exp b/gdb/testsuite/gdb.multi/tids.exp
index 6895f3c..b0c768f 100644
--- a/gdb/testsuite/gdb.multi/tids.exp
+++ b/gdb/testsuite/gdb.multi/tids.exp
@@ -150,6 +150,14 @@ with_test_prefix "two inferiors" {
     info_threads "" "1.1 1.2 2.1 2.2" \
 	"info threads again"
 
+    # Same, but show the global ID.
+    gdb_test "info threads -gid" \
+	[multi_line \
+	     "  1\.1 +1 +.*" \
+	     "\\* 1\.2 +4 +.* thread_function1 .* at .*$srcfile:.*" \
+	     "  2\.1 +2 +.*" \
+	     "  2\.2 +3 +.* thread_function1 .* at .*$srcfile:.*"]
+
     # Confirm the convenience variable show the expected number.
     gdb_test "p \$_thread == 2" " = 1"
 
diff --git a/gdb/thread.c b/gdb/thread.c
index dd8f7da..8ec6a38 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -1403,7 +1403,16 @@ print_thread_info (struct ui_out *uiout, char *requested_threads, int pid)
 static void
 info_threads_command (char *arg, int from_tty)
 {
-  print_thread_info_1 (current_uiout, arg, 0, -1, 0);
+  int show_global_ids = 0;
+
+  if (arg != NULL
+      && check_for_argument (&arg, "-gid", sizeof ("-gid") - 1))
+    {
+      arg = skip_spaces (arg);
+      show_global_ids = 1;
+    }
+
+  print_thread_info_1 (current_uiout, arg, 0, -1, show_global_ids);
 }
 
 /* See gdbthread.h.  */
@@ -2107,7 +2116,8 @@ _initialize_thread (void)
 
   add_info ("threads", info_threads_command, 
 	    _("Display currently known threads.\n\
-Usage: info threads [ID]...\n\
+Usage: info threads [-gid] [ID]...\n\
+-gid: Show global thread IDs.\n\
 If ID is given, it is a space-separated list of IDs of threads to display.\n\
 Otherwise, all threads are displayed."));


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]