From c8d37639e3a23ed7349a17c3ac4d1407113eaa17 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 18 Sep 2013 12:00:06 +0000 Subject: [PATCH] [Hurd/gnu-nat] Fix old "signal-thread" command regression. By inspection, I noticed that when I made the gnu-nat use ptid(pid,0,tid) to represent a thread, instead of using ptid(tid,0,0), in , I introduced a bug. The change was: else { - int tid = PIDGET (thread_id_to_pid (atoi (args))); + int tid = ptid_get_tid (thread_id_to_pid (atoi (args))); if (tid < 0) error (_("Thread ID %s not known. Use the \"info threads\" command to\n" "see the IDs of currently known threads."), args); and thread_id_to_pid does: ptid_t thread_id_to_pid (int num) { struct thread_info *thread = find_thread_id (num); if (thread) return thread->ptid; else return pid_to_ptid (-1); } (pid_to_ptid (-1) is the same as minus_one_ptid.) So before, we were really looking at the pid, where thread_id_to_pid stores the -1. The right fix is to compare the whole ptid to minus_one_ptid, of course. Completely untested, but I think it's obvious enough, so I went ahead and put it in. gdb/ 2013-09-18 Pedro Alves * gnu-nat.c (set_sig_thread_cmd): Compare the thread's ptid to minus_one_ptid instead of looking at the ptid's tid field and comparing that to -1. --- gdb/ChangeLog | 6 ++++++ gdb/gnu-nat.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f5c1e3a..5ae9a10 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2013-09-18 Pedro Alves + + * gnu-nat.c (set_sig_thread_cmd): Compare the thread's ptid to + minus_one_ptid instead of looking at the ptid's tid field and + comparing that to -1. + 2013-09-18 Andrew Burgess * main.h (get_gdb_program_name): Remove extra whitespace. diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c index 59d2f23..fa55b10 100644 --- a/gdb/gnu-nat.c +++ b/gdb/gnu-nat.c @@ -2922,13 +2922,13 @@ set_sig_thread_cmd (char *args, int from_tty) inf->signal_thread = 0; else { - int tid = ptid_get_tid (thread_id_to_pid (atoi (args))); + ptid_t ptid = thread_id_to_pid (atoi (args)); - if (tid < 0) + if (ptid_equal (ptid, minus_one_ptid)) error (_("Thread ID %s not known. " "Use the \"info threads\" command to\n" "see the IDs of currently known threads."), args); - inf->signal_thread = inf_tid_to_thread (inf, tid); + inf->signal_thread = inf_tid_to_thread (inf, ptid_get_tid (ptid)); } } -- 2.7.4