aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/gdbserver/ChangeLog5
-rw-r--r--gdb/gdbserver/target.h5
-rw-r--r--gdb/gdbserver/win32-low.c29
3 files changed, 21 insertions, 18 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index b36dcfb..f949954 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,10 @@
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.
diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
index 6f88b49..36cc69a 100644
--- a/gdb/gdbserver/target.h
+++ b/gdb/gdbserver/target.h
@@ -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);
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index 680cafe..265c916 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -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. */