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.
(winapi_DebugActiveProcessStop): Add WINAPI. typedef as pointer.
(winapi_DebugSetProcessKillOnExit): Likewise.
/* 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);
static int
win32_attach (unsigned long pid)
{
- int res = 0;
winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
#ifdef _WIN32_WCE
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. */