aboutsummaryrefslogtreecommitdiff
path: root/gdb/thread.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-01-15 21:46:23 +0000
committerPedro Alves <palves@redhat.com>2016-01-15 21:46:23 +0000
commit71ef29a86b252a4780517fc9b2bf9f7d3dd2d991 (patch)
tree6906fc0e6297b079fa951857e19f15aefd7143cc /gdb/thread.c
parent3f5b7598805c8253c43c989a540a2408c8b685ad (diff)
downloadgdb-71ef29a86b252a4780517fc9b2bf9f7d3dd2d991.zip
gdb-71ef29a86b252a4780517fc9b2bf9f7d3dd2d991.tar.gz
gdb-71ef29a86b252a4780517fc9b2bf9f7d3dd2d991.tar.bz2
Star wildcard ranges (e.g., "info thread 2.*")
Add support for specifying "all threads of inferior N", by writing "*" as thread number/range in thread ID lists. E.g., "info threads 2.*" or "thread apply 2.* bt". gdb/ChangeLog: 2016-01-15 Pedro Alves <palves@redhat.com> * NEWS: Mention star wildcard ranges. * cli/cli-utils.c (get_number_or_range): Check state->in_range first. (number_range_setup_range): New function. * cli/cli-utils.h (number_range_setup_range): New declaration. * thread.c (thread_apply_command): Support star TID ranges. * tid-parse.c (tid_range_parser_finished) (tid_range_parser_string, tid_range_parser_skip) (get_tid_or_range, get_tid_or_range): Handle TID_RANGE_STATE_STAR_RANGE. (tid_range_parser_star_range): New function. * tid-parse.h (enum tid_range_state) <TID_RANGE_STATE_STAR_RANGE>: New value. (tid_range_parser_star_range): New declaration. gdb/doc/ChangeLog: 2016-01-15 Pedro Alves <palves@redhat.com> * gdb.texinfo (Threads) <thread ID lists>: Document star ranges. gdb/testsuite/ChangeLog: 2016-01-15 Pedro Alves <palves@redhat.com> * gdb.multi/tids.exp: Test star wildcard ranges.
Diffstat (limited to 'gdb/thread.c')
-rw-r--r--gdb/thread.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gdb/thread.c b/gdb/thread.c
index 56de6e1..c7f1467 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -1864,6 +1864,26 @@ thread_apply_command (char *tidlist, int from_tty)
inf = find_inferior_id (inf_num);
if (inf != NULL)
tp = find_thread_id (inf, thr_num);
+
+ if (tid_range_parser_star_range (&parser))
+ {
+ if (inf == NULL)
+ {
+ warning (_("Unknown inferior %d"), inf_num);
+ tid_range_parser_skip (&parser);
+ continue;
+ }
+
+ /* No use looking for threads past the highest thread number
+ the inferior ever had. */
+ if (thr_num >= inf->highest_thread_num)
+ tid_range_parser_skip (&parser);
+
+ /* Be quiet about unknown threads numbers. */
+ if (tp == NULL)
+ continue;
+ }
+
if (tp == NULL)
{
if (show_inferior_qualified_tids ()