* win32-low.c (win32-attach): Fix return value.
authorPedro Alves <palves@redhat.com>
Thu, 10 May 2007 20:48:41 +0000 (20:48 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 10 May 2007 20:48:41 +0000 (20:48 +0000)
* target.h (target_ops): Describe ATTACH return values.

gdb/gdbserver/ChangeLog
gdb/gdbserver/target.h
gdb/gdbserver/win32-low.c

index b36dcfb156089bf4c859fd2c183a862d813b67e4..f9499544a667d87a272dd53425a5ce399096a835 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+       * win32-low.c (win32-attach): Fix return value.
+       * target.h (target_ops): Describe ATTACH return values.
+
 2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
 
        * win32-low.c (GETPROCADDRESS): Define.
index 6f88b49d78bb53a7671b6cfdd33dd7f4ce78cf54..36cc69a975fd486ec90c433283d193a0c3af9d03 100644 (file)
@@ -58,7 +58,10 @@ struct target_ops
   /* Attach to a running process.
 
      PID is the process ID to attach to, specified by the user
-     or a higher layer.  */
+     or a higher layer.
+
+     Returns -1 if attaching is unsupported, 0 on success, and calls
+     error() otherwise.  */
 
   int (*attach) (unsigned long pid);
 
index 680cafea182ff9da9a2f373a60a555a413642d4c..265c91691fb85aac53e12770ff59d7d0024be29f 100644 (file)
@@ -580,7 +580,6 @@ win32_create_inferior (char *program, char **program_args)
 static int
 win32_attach (unsigned long pid)
 {
-  int res = 0;
   winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
   winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
 #ifdef _WIN32_WCE
@@ -591,28 +590,24 @@ win32_attach (unsigned long pid)
   DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
   DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
 
-  res = DebugActiveProcess (pid) ? 1 : 0;
-
-  if (!res)
-    error ("Attach to process failed.");
-
-  if (DebugSetProcessKillOnExit != NULL)
-    DebugSetProcessKillOnExit (FALSE);
+  if (DebugActiveProcess (pid))
+    {
+      if (DebugSetProcessKillOnExit != NULL)
+       DebugSetProcessKillOnExit (FALSE);
 
-  current_process_id = pid;
-  current_process_handle = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
+      current_process_handle = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
 
-  if (current_process_handle == NULL)
-    {
-      res = 0;
+      if (current_process_handle != NULL)
+       {
+         current_process_id = pid;
+         do_initial_child_stuff (pid);
+         return 0;
+       }
       if (DebugActiveProcessStop != NULL)
        DebugActiveProcessStop (current_process_id);
     }
 
-  if (res)
-    do_initial_child_stuff (pid);
-
-  return res;
+  error ("Attach to process failed.");
 }
 
 /* Handle OUTPUT_DEBUG_STRING_EVENT from child process.  */