Don't write to inferior_ptid in darwin-nat.c
authorPedro Alves <palves@redhat.com>
Thu, 18 Jun 2020 20:28:28 +0000 (21:28 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 18 Jun 2020 22:11:57 +0000 (23:11 +0100)
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.

gdb/ChangeLog
gdb/darwin-nat.c

index 88db3be38c8947d1f4bfdaef432a1ed0ac4549f5..4d98772b91397abc75ad3190d42ab6733c6e69f3 100644 (file)
@@ -1,3 +1,16 @@
+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
index 2d74bc010c35e29a3048b880355b3be5d55d9706..0d7b028e39cbc4c7d5169a962408f88d3e23d2b5 100644 (file)
@@ -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;
 }