Don't write to inferior_ptid in nto-procfs.c

A best effort patch, which fixes some bit rot and removes some
inferior_ptid references -- this port clearly hasn't been built in a
long while.

gdb/ChangeLog:
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.
This commit is contained in:
Pedro Alves 2020-06-18 21:28:26 +01:00
parent 191f02e593
commit ebe84f23d2
2 changed files with 26 additions and 12 deletions

View File

@ -1,3 +1,17 @@
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

View File

@ -393,7 +393,7 @@ nto_procfs_target::update_thread_list ()
prune_threads ();
pid = inferior_ptid.pid ();
pid = current_inferior ()->pid;
status.tid = 1;
@ -712,7 +712,7 @@ nto_procfs_target::attach (const char *args, int from_tty)
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;
@ -720,7 +720,9 @@ nto_procfs_target::attach (const char *args, int from_tty)
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
@ -1000,19 +1002,16 @@ nto_procfs_target::xfer_partial (enum target_object object,
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);
}
@ -1132,7 +1131,7 @@ nto_procfs_target::mourn_inferior ()
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);
}
@ -1303,8 +1302,9 @@ nto_procfs_target::create_inferior (const char *exec_file,
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);