From ebe84f23d2f3c0cb145cc7b3acfb011a4c7df1c9 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 18 Jun 2020 21:28:26 +0100 Subject: [PATCH] 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 * 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. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/nto-procfs.c | 24 ++++++++++++------------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2d99bf3f223..dc0202d3374 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2020-06-18 Pedro Alves + + * 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 * remote-sim.c (gdbsim_target::create_inferior): Switch to thread diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c index 58e572c094d..f649b6cf58b 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); -- 2.30.2