aboutsummaryrefslogtreecommitdiff
path: root/gdb/inferior.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2018-11-22 16:09:12 +0000
committerPedro Alves <palves@redhat.com>2018-11-22 16:09:12 +0000
commit151bb4a5059e73934f7bc61318efaaffe0c91b81 (patch)
tree1fc2e95d8a6fe37949f6ee0d3893aaaca32474b7 /gdb/inferior.c
parent79a9468c702f7087b5bbff2cfd2210a94e7c5fa4 (diff)
downloadgdb-151bb4a5059e73934f7bc61318efaaffe0c91b81.zip
gdb-151bb4a5059e73934f7bc61318efaaffe0c91b81.tar.gz
gdb-151bb4a5059e73934f7bc61318efaaffe0c91b81.tar.bz2
Avoid find_thread_ptid with null_ptid
With a following patch, find_thread_ptid will first find the inferior for the passed-in ptid, using find_inferior_pid, and then look for the thread in that inferior's thread list. If we pass down null_ptid to find_thread_ptid then that means we'll end up passing 0 to find_inferior_pid, which hits this assertion: > struct inferior * > find_inferior_pid (int pid) > { > struct inferior *inf; > > /* Looking for inferior pid == 0 is always wrong, and indicative of > a bug somewhere else. There may be more than one with pid == 0, > for instance. */ > gdb_assert (pid != 0); This patch prepares for the change, by avoiding passing down null_ptid to find_thread_ptid or to functions that naturally use it, such as the target_pid_to_str call in inferior.c:add_inferior. In that latter case, the patch changes GDB output, from: (gdb) add-inferior [New inferior 2 (process 0)] to: (gdb) add-inferior [New inferior 2] which seems like a good change to me. It might not even make sense to talk about "process" for the current target, for example. The python_on_normal_stop change ends up avoiding looking up the same thread twice (inferior_thread also does a look up). gdb/ChangeLog: 2018-11-22 Pedro Alves <palves@redhat.com> * cli/cli-interp.c (cli_on_user_selected_context_changed): Use inferior_thread instead of find_thread_ptid, and only when inferior_ptid is not null_ptid. * inferior.c (add_inferior): Don't include target_pid_to_str output when the inferior is not started. * python/py-inferior.c (python_on_normal_stop): Don't use find_thread_ptid. (tui_on_user_selected_context_changed): Use inferior_thread instead of find_thread_ptid, and only when inferior_ptid is not null_ptid.
Diffstat (limited to 'gdb/inferior.c')
-rw-r--r--gdb/inferior.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gdb/inferior.c b/gdb/inferior.c
index 17d28c4..394386a 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -122,9 +122,14 @@ add_inferior (int pid)
struct inferior *inf = add_inferior_silent (pid);
if (print_inferior_events)
- printf_unfiltered (_("[New inferior %d (%s)]\n"),
- inf->num,
- target_pid_to_str (ptid_t (pid)));
+ {
+ if (pid != 0)
+ printf_unfiltered (_("[New inferior %d (%s)]\n"),
+ inf->num,
+ target_pid_to_str (ptid_t (pid)));
+ else
+ printf_unfiltered (_("[New inferior %d]\n"), inf->num);
+ }
return inf;
}