aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/NEWS3
-rw-r--r--gdb/doc/ChangeLog4
-rw-r--r--gdb/doc/gdb.texinfo19
-rw-r--r--gdb/gdbthread.h4
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.multi/tids.exp8
-rw-r--r--gdb/thread.c14
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."));