diff options
author | Pedro Alves <palves@redhat.com> | 2020-06-18 21:28:28 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2020-06-18 23:11:57 +0100 |
commit | fe7d6a8db01f2a71520578267df7cd2d780ececb (patch) | |
tree | 71fd42bef6a4f3ad195216ccb9b5dbf826c51b31 | |
parent | 975f8708de015fb2b813edbf8b714f4777c57a41 (diff) | |
download | gdb-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/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/darwin-nat.c | 16 |
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; } |