aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2020-06-18 21:28:28 +0100
committerPedro Alves <palves@redhat.com>2020-06-18 23:11:57 +0100
commitfe7d6a8db01f2a71520578267df7cd2d780ececb (patch)
tree71fd42bef6a4f3ad195216ccb9b5dbf826c51b31
parent975f8708de015fb2b813edbf8b714f4777c57a41 (diff)
downloadgdb-fe7d6a8db01f2a71520578267df7cd2d780ececb.zip
gdb-fe7d6a8db01f2a71520578267df7cd2d780ececb.tar.gz
gdb-fe7d6a8db01f2a71520578267df7cd2d780ececb.tar.bz2
Don't write to inferior_ptid in darwin-nat.c
Untested. gdb/ChangeLog: 2020-06-18 Pedro Alves <palves@redhat.com> * darwin-nat.c (darwin_nat_target::decode_message): Don't write to inferior_ptid. (darwin_nat_target::stop_inferior, darwin_nat_target::kill): Avoid inferior_ptid. (darwin_attach_pid): Use switch_to_no_thread instead of writing to inferior_ptid directly. (darwin_nat_target::init_thread_list): Switch to thread, instead of writing to inferior_ptid. (darwin_nat_target::attach): Don't write to inferior_ptid. (darwin_nat_target::get_ada_task_ptid): Avoid inferior_ptid.
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/darwin-nat.c16
2 files changed, 20 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 88db3be..4d98772 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
2020-06-18 Pedro Alves <palves@redhat.com>
+ * darwin-nat.c (darwin_nat_target::decode_message): Don't write to
+ inferior_ptid.
+ (darwin_nat_target::stop_inferior, darwin_nat_target::kill): Avoid
+ inferior_ptid.
+ (darwin_attach_pid): Use switch_to_no_thread instead of writing to
+ inferior_ptid directly.
+ (darwin_nat_target::init_thread_list): Switch to thread, instead
+ of writing to inferior_ptid.
+ (darwin_nat_target::attach): Don't write to inferior_ptid.
+ (darwin_nat_target::get_ada_task_ptid): Avoid inferior_ptid.
+
+2020-06-18 Pedro Alves <palves@redhat.com>
+
* gnu-nat.c (gnu_nat_target::create_inferior): Switch to the added
thread.
(gnu_nat_target::attach): Don't write to inferior_ptid directly.
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index 2d74bc0..0d7b028 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -1111,8 +1111,7 @@ darwin_nat_target::decode_message (mach_msg_header_t *hdr,
/* Looks necessary on Leopard and harmless... */
wait4 (inf->pid, &wstatus, 0, NULL);
- inferior_ptid = ptid_t (inf->pid, 0, 0);
- return inferior_ptid;
+ return ptid_t (inf->pid);
}
else
{
@@ -1402,7 +1401,7 @@ darwin_nat_target::stop_inferior (inferior *inf)
/* Wait until the process is really stopped. */
while (1)
{
- ptid = wait_1 (inferior_ptid, &wstatus);
+ ptid = wait_1 (ptid_t (inf->pid), &wstatus);
if (wstatus.kind == TARGET_WAITKIND_STOPPED
&& wstatus.value.sig == GDB_SIGNAL_STOP)
break;
@@ -1527,13 +1526,13 @@ darwin_nat_target::kill ()
darwin_resume_inferior (inf);
- ptid = wait_1 (inferior_ptid, &wstatus);
+ ptid = wait_1 (ptid_t (inf->pid), &wstatus);
}
else if (errno != ESRCH)
warning (_("Failed to kill inferior: kill (%d, 9) returned [%s]"),
inf->pid, safe_strerror (errno));
- target_mourn_inferior (inferior_ptid);
+ target_mourn_inferior (ptid_t (inf->pid));
}
static void
@@ -1653,7 +1652,7 @@ darwin_attach_pid (struct inferior *inf)
catch (const gdb_exception &ex)
{
exit_inferior (inf);
- inferior_ptid = null_ptid;
+ switch_to_no_thread ();
throw;
}
@@ -1692,7 +1691,7 @@ darwin_nat_target::init_thread_list (inferior *inf)
struct thread_info *first_thread
= thread_info_from_private_thread_info (first_pti);
- inferior_ptid = first_thread->ptid;
+ switch_to_thread (first_thread);
}
/* The child must synchronize with gdb: gdb must set the exception port
@@ -2027,7 +2026,6 @@ darwin_nat_target::attach (const char *args, int from_tty)
error (_("Can't attach to process %d: %s (%d)"),
pid, safe_strerror (errno), errno);
- inferior_ptid = ptid_t (pid);
inf = current_inferior ();
inferior_appeared (inf, pid);
inf->attach_flag = 1;
@@ -2439,7 +2437,7 @@ darwin_nat_target::get_ada_task_ptid (long lwp, long thread)
names_count * sizeof (mach_port_t));
if (res)
- return ptid_t (inferior_ptid.pid (), 0, res);
+ return ptid_t (current_inferior ()->pid, 0, res);
else
return null_ptid;
}