+2020-06-18 Pedro Alves <palves@redhat.com>
+
+ * nto-procfs.c (nto_procfs_target::update_thread_list): Avoid
+ inferior_ptid.
+ (nto_procfs_target::attach): Avoid inferior_ptid. Switch to
+ thread.
+ (nto_procfs_target::detach): Avoid referencing
+ inferior_ptid. Use switch_to_no_thread instead of writing to
+ inferior_ptid directly.
+ (nto_procfs_target::mourn_inferior): Use switch_to_no_thread
+ instead of writing to inferior_ptid directly.
+ (nto_procfs_target::create_inferior): Avoid inferior_ptid. Switch
+ to thread.
+
2020-06-18 Pedro Alves <palves@redhat.com>
* remote-sim.c (gdbsim_target::create_inferior): Switch to thread
prune_threads ();
- pid = inferior_ptid.pid ();
+ pid = current_inferior ()->pid;
status.tid = 1;
printf_unfiltered ("Attaching to %s\n",
target_pid_to_str (ptid_t (pid)).c_str ());
}
- inferior_ptid = do_attach (ptid_t (pid));
+ ptid_t ptid = do_attach (ptid_t (pid));
inf = current_inferior ();
inferior_appeared (inf, pid);
inf->attach_flag = 1;
if (!target_is_pushed (ops))
push_target (ops);
- procfs_update_thread_list (ops);
+ update_thread_list ();
+
+ switch_to_thread (find_thread_ptid (this, ptid));
}
void
void
nto_procfs_target::detach (inferior *inf, int from_tty)
{
- int pid;
-
target_announce_detach ();
if (siggnal)
- SignalKill (nto_node (), inferior_ptid.pid (), 0, 0, 0, 0);
+ SignalKill (nto_node (), inf->pid, 0, 0, 0, 0);
close (ctl_fd);
ctl_fd = -1;
- pid = inferior_ptid.pid ();
- inferior_ptid = null_ptid;
- detach_inferior (pid);
+ switch_to_no_thread ();
+ detach_inferior (inf->pid);
init_thread_list ();
inf_child_maybe_unpush_target (ops);
}
SignalKill (nto_node (), inferior_ptid.pid (), 0, SIGKILL, 0, 0);
close (ctl_fd);
}
- inferior_ptid = null_ptid;
+ switch_to_no_thread ();
init_thread_list ();
inf_child_mourn_inferior (ops);
}
if (fds[2] != STDERR_FILENO)
close (fds[2]);
- inferior_ptid = do_attach (ptid_t (pid));
- procfs_update_thread_list (ops);
+ ptid_t ptid = do_attach (ptid_t (pid));
+ update_thread_list ();
+ switch_to_thread (find_thread_ptid (this, ptid));
inf = current_inferior ();
inferior_appeared (inf, pid);