aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2020-06-18 21:28:26 +0100
committerPedro Alves <palves@redhat.com>2020-06-18 23:10:09 +0100
commitebe84f23d2f3c0cb145cc7b3acfb011a4c7df1c9 (patch)
tree6c1a6b60d0c6a684340f8af203b6cc07d4f2cdc1
parent191f02e59316d8ff15684d24e1c8f4d07b2dd582 (diff)
downloadgdb-ebe84f23d2f3c0cb145cc7b3acfb011a4c7df1c9.zip
gdb-ebe84f23d2f3c0cb145cc7b3acfb011a4c7df1c9.tar.gz
gdb-ebe84f23d2f3c0cb145cc7b3acfb011a4c7df1c9.tar.bz2
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.
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/nto-procfs.c24
2 files changed, 26 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2d99bf3..dc0202d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,19 @@
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
after creating it, instead of writing to inferior_ptid.
(gdbsim_target_open): Use switch_to_no_thread instead of writing
diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c
index 58e572c..f649b6c 100644
--- a/gdb/nto-procfs.c
+++ b/gdb/nto-procfs.c
@@ -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);