* linux-low.c (linux_mourn): Also remove the process.
	* server.c (handle_target_event): Don't remove the process here.
	* nto-low.c (nto_mourn): New.
	(nto_target_ops): Install it.
	* spu-low.c (spu_mourn): New.
	(spu_target_ops): Install it.
	* win32-low.c (win32_mourn): New.
	(win32_target_ops): Install it.
+2010-04-12  Pedro Alves  <pedro@codesourcery.com>
+
+       gdb/gdbserver/
+       * linux-low.c (linux_mourn): Also remove the process.
+       * server.c (handle_target_event): Don't remove the process here.
+       * nto-low.c (nto_mourn): New.
+       (nto_target_ops): Install it.
+       * spu-low.c (spu_mourn): New.
+       (spu_target_ops): Install it.
+       * win32-low.c (win32_mourn): New.
+       (win32_target_ops): Install it.
+
 2010-04-12  Pedro Alves  <pedro@codesourcery.com>
 
        * server.h (buffer_xml_printf): Remove redundant `;'.
 
   free (priv->arch_private);
   free (priv);
   process->private = NULL;
+
+  remove_process (process);
 }
 
 static void
 
   return 0;
 }
 
+static void
+nto_mourn (struct process_info *process)
+{
+  remove_process (process);
+}
+
 /* Check if the given thread is alive.  
 
    Return 1 if alive, 0 otherwise.  */
   nto_attach,
   nto_kill,
   nto_detach,
-  NULL, /* nto_mourn */
+  nto_mourn,
   NULL, /* nto_join */
   nto_thread_alive,
   nto_resume,
 
 
       if (last_status.kind == TARGET_WAITKIND_EXITED
          || last_status.kind == TARGET_WAITKIND_SIGNALLED)
-       {
-         mourn_inferior (process);
-         remove_process (process);
-       }
+       mourn_inferior (process);
 
       if (forward_event)
        {
 
   return 0;
 }
 
+static void
+spu_mourn (struct process_info *process)
+{
+  remove_process (process);
+}
+
 static void
 spu_join (int pid)
 {
   spu_attach,
   spu_kill,
   spu_detach,
-  NULL, /* mourn */
+  spu_mourn,
   spu_join,
   spu_thread_alive,
   spu_resume,
 
   return 0;
 }
 
+static void
+win32_mourn (struct process_info *process)
+{
+  remove_process (process);
+}
+
 /* Wait for inferiors to end.  */
 static void
 win32_join (int pid)
   win32_attach,
   win32_kill,
   win32_detach,
-  NULL,
+  win32_mourn,
   win32_join,
   win32_thread_alive,
   win32_resume,