]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/gnu-nat.c
Consolidate target_mourn_inferior between GDB and gdbserver
[thirdparty/binutils-gdb.git] / gdb / gnu-nat.c
index d17a7503c60b57830dda515f16caa9b0006d8142..927ee5c6f17833e7f2ca4d5f6ab0f4a4d5cf035c 100644 (file)
@@ -1,5 +1,5 @@
 /* Interface GDB to the GNU Hurd.
-   Copyright (C) 1992-2014 Free Software Foundation, Inc.
+   Copyright (C) 1992-2016 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -539,7 +539,7 @@ make_proc (struct inf *inf, mach_port_t port, int tid)
 {
   error_t err;
   mach_port_t prev_port = MACH_PORT_NULL;
-  struct proc *proc = xmalloc (sizeof (struct proc));
+  struct proc *proc = XNEW (struct proc);
 
   proc->port = port;
   proc->tid = tid;
@@ -636,7 +636,7 @@ _proc_free (struct proc *proc)
 static struct inf *
 make_inf (void)
 {
-  struct inf *inf = xmalloc (sizeof (struct inf));
+  struct inf *inf = XNEW (struct inf);
 
   inf->task = 0;
   inf->threads = 0;
@@ -804,7 +804,8 @@ inf_validate_procinfo (struct inf *inf)
       inf->nomsg = !!(pi->state & PI_NOMSG);
       if (inf->nomsg)
        inf->traced = !!(pi->state & PI_TRACED);
-      vm_deallocate (mach_task_self (), (vm_address_t) pi, pi_len);
+      vm_deallocate (mach_task_self (), (vm_address_t) pi,
+                    pi_len * sizeof (*(procinfo_t) 0));
       if (noise_len > 0)
        vm_deallocate (mach_task_self (), (vm_address_t) noise, noise_len);
     }
@@ -844,21 +845,16 @@ inf_validate_task_sc (struct inf *inf)
 
   suspend_count = pi->taskinfo.suspend_count;
 
-  vm_deallocate (mach_task_self (), (vm_address_t) pi, pi_len);
+  vm_deallocate (mach_task_self (), (vm_address_t) pi,
+                pi_len * sizeof (*(procinfo_t) 0));
   if (noise_len > 0)
-    vm_deallocate (mach_task_self (), (vm_address_t) pi, pi_len);
+    vm_deallocate (mach_task_self (), (vm_address_t) noise, noise_len);
 
   if (inf->task->cur_sc < suspend_count)
     {
-      int abort;
-
-      target_terminal_ours (); /* Allow I/O.  */
-      abort = !query (_("Pid %d has an additional task suspend count of %d;"
-                     " clear it? "), inf->pid,
-                     suspend_count - inf->task->cur_sc);
-      target_terminal_inferior ();     /* Give it back to the child.  */
-
-      if (abort)
+      if (!query (_("Pid %d has an additional task suspend count of %d;"
+                   " clear it? "), inf->pid,
+                 suspend_count - inf->task->cur_sc))
        error (_("Additional task suspend count left untouched."));
 
       inf->task->cur_sc = suspend_count;
@@ -2078,7 +2074,7 @@ gnu_kill_inferior (struct target_ops *ops)
       task_terminate (task->port);
       inf_set_pid (gnu_current_inf, -1);
     }
-  target_mourn_inferior ();
+  target_mourn_inferior (inferior_ptid);
 }
 
 /* Clean up after the inferior dies.  */
@@ -2348,7 +2344,7 @@ gnu_write_inferior (task_t task, CORE_ADDR addr,
   char *errstr = "Bug in gnu_write_inferior";
 
   struct vm_region_list *region_element;
-  struct vm_region_list *region_head = (struct vm_region_list *) NULL;
+  struct vm_region_list *region_head = NULL;
 
   /* Get memory from inferior with page aligned addresses.  */
   err = vm_read (task,
@@ -2417,9 +2413,7 @@ gnu_write_inferior (task_t task, CORE_ADDR addr,
          }
 
        /* Chain the regions for later use.  */
-       region_element =
-         (struct vm_region_list *)
-         obstack_alloc (&region_obstack, sizeof (struct vm_region_list));
+       region_element = XOBNEW (&region_obstack, struct vm_region_list);
 
        region_element->protection = protection;
        region_element->start = region_address;
@@ -3264,21 +3258,16 @@ This is the same as setting `task pause', `exceptions', and\n\
           &setlist);
 
   /* Commands to show information about the task's ports.  */
-  add_cmd ("send-rights", class_info, info_send_rights_cmd,
-          _("Show information about the task's send rights"),
-          &infolist);
-  add_cmd ("receive-rights", class_info, info_recv_rights_cmd,
-          _("Show information about the task's receive rights"),
-          &infolist);
-  add_cmd ("port-rights", class_info, info_port_rights_cmd,
-          _("Show information about the task's port rights"),
-          &infolist);
-  add_cmd ("port-sets", class_info, info_port_sets_cmd,
-          _("Show information about the task's port sets"),
-          &infolist);
-  add_cmd ("dead-names", class_info, info_dead_names_cmd,
-          _("Show information about the task's dead names"),
-          &infolist);
+  add_info ("send-rights", info_send_rights_cmd,
+           _("Show information about the task's send rights"));
+  add_info ("receive-rights", info_recv_rights_cmd,
+           _("Show information about the task's receive rights"));
+  add_info ("port-rights", info_port_rights_cmd,
+           _("Show information about the task's port rights"));
+  add_info ("port-sets", info_port_sets_cmd,
+           _("Show information about the task's port sets"));
+  add_info ("dead-names", info_dead_names_cmd,
+           _("Show information about the task's dead names"));
   add_info_alias ("ports", "port-rights", 1);
   add_info_alias ("port", "port-rights", 1);
   add_info_alias ("psets", "port-sets", 1);