projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
On MS-Windows, define _WIN32_WINNT in a single common place.
[deliverable/binutils-gdb.git]
/
gdb
/
gdbserver
/
win32-low.c
diff --git
a/gdb/gdbserver/win32-low.c
b/gdb/gdbserver/win32-low.c
index 9f0c4e46c1ffcf9d9d5e444d538435a046b1e59c..1a50141c123faf158c30a772686e805a5b43ff07 100644
(file)
--- a/
gdb/gdbserver/win32-low.c
+++ b/
gdb/gdbserver/win32-low.c
@@
-1,5
+1,5
@@
/* Low level interface to Windows debugging, for gdbserver.
/* Low level interface to Windows debugging, for gdbserver.
- Copyright (C) 2006-201
8
Free Software Foundation, Inc.
+ Copyright (C) 2006-201
9
Free Software Foundation, Inc.
Contributed by Leo Zayas. Based on "win32-nat.c" from GDB.
Contributed by Leo Zayas. Based on "win32-nat.c" from GDB.
@@
-32,8
+32,8
@@
#include <tlhelp32.h>
#include <psapi.h>
#include <process.h>
#include <tlhelp32.h>
#include <psapi.h>
#include <process.h>
-#include "gdb_tilde_expand.h"
-#include "common-inferior.h"
+#include "
common/
gdb_tilde_expand.h"
+#include "common
/common
-inferior.h"
#ifndef USE_WIN32API
#include <sys/cygwin.h>
#ifndef USE_WIN32API
#include <sys/cygwin.h>
@@
-120,7
+120,7
@@
current_thread_ptid (void)
static ptid_t
debug_event_ptid (DEBUG_EVENT *event)
{
static ptid_t
debug_event_ptid (DEBUG_EVENT *event)
{
- return ptid_
build
(event->dwProcessId, event->dwThreadId, 0);
+ return ptid_
t
(event->dwProcessId, event->dwThreadId, 0);
}
/* Get the thread context of the thread associated with TH. */
}
/* Get the thread context of the thread associated with TH. */
@@
-208,7
+208,7
@@
static win32_thread_info *
child_add_thread (DWORD pid, DWORD tid, HANDLE h, void *tlb)
{
win32_thread_info *th;
child_add_thread (DWORD pid, DWORD tid, HANDLE h, void *tlb)
{
win32_thread_info *th;
- ptid_t ptid = ptid_
build
(pid, tid, 0);
+ ptid_t ptid = ptid_
t
(pid, tid, 0);
if ((th = thread_rec (ptid, FALSE)))
return th;
if ((th = thread_rec (ptid, FALSE)))
return th;
@@
-556,7
+556,6
@@
create_process (const char *program, char *args,
DWORD flags, PROCESS_INFORMATION *pi)
{
const char *inferior_cwd = get_inferior_cwd ();
DWORD flags, PROCESS_INFORMATION *pi)
{
const char *inferior_cwd = get_inferior_cwd ();
- std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
BOOL ret;
#ifdef _WIN32_WCE
BOOL ret;
#ifdef _WIN32_WCE
@@
-576,6
+575,7
@@
create_process (const char *program, char *args,
if (inferior_cwd != NULL)
{
if (inferior_cwd != NULL)
{
+ std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
'/', '\\');
wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
'/', '\\');
wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
@@
-607,7
+607,10
@@
Could not convert the expanded inferior cwd to wide-char."));
TRUE, /* inherit handles */
flags, /* start flags */
NULL, /* environment */
TRUE, /* inherit handles */
flags, /* start flags */
NULL, /* environment */
- expanded_infcwd.c_str (), /* current directory */
+ /* current directory */
+ (inferior_cwd == NULL
+ ? NULL
+ : gdb_tilde_expand (inferior_cwd).c_str()),
&si, /* start info */
pi); /* proc info */
#endif
&si, /* start info */
pi); /* proc info */
#endif
@@
-624,14
+627,13
@@
static int
win32_create_inferior (const char *program,
const std::vector<char *> &program_args)
{
win32_create_inferior (const char *program,
const std::vector<char *> &program_args)
{
+ client_state &cs = get_client_state ();
#ifndef USE_WIN32API
char real_path[PATH_MAX];
char *orig_path, *new_path, *path_ptr;
#endif
BOOL ret;
DWORD flags;
#ifndef USE_WIN32API
char real_path[PATH_MAX];
char *orig_path, *new_path, *path_ptr;
#endif
BOOL ret;
DWORD flags;
- int argslen;
- int argc;
PROCESS_INFORMATION pi;
DWORD err;
std::string str_program_args = stringify_argv (program_args);
PROCESS_INFORMATION pi;
DWORD err;
std::string str_program_args = stringify_argv (program_args);
@@
-701,6
+703,10
@@
win32_create_inferior (const char *program,
do_initial_child_stuff (pi.hProcess, pi.dwProcessId, 0);
do_initial_child_stuff (pi.hProcess, pi.dwProcessId, 0);
+ /* Wait till we are at 1st instruction in program, return new pid
+ (assuming success). */
+ cs.last_ptid = win32_wait (ptid_t (current_process_id), &cs.last_status, 0);
+
return current_process_id;
}
return current_process_id;
}
@@
-797,15
+803,11
@@
win32_clear_inferiors (void)
clear_inferiors ();
}
clear_inferiors ();
}
-/* Kill all inferiors. */
+/* Implementation of target_ops::kill. */
+
static int
static int
-win32_kill (
int pid
)
+win32_kill (
process_info *process
)
{
{
- struct process_info *process;
-
- if (current_process_handle == NULL)
- return -1;
-
TerminateProcess (current_process_handle, 0);
for (;;)
{
TerminateProcess (current_process_handle, 0);
for (;;)
{
@@
-821,16
+823,15
@@
win32_kill (int pid)
win32_clear_inferiors ();
win32_clear_inferiors ();
- process = find_process_pid (pid);
remove_process (process);
return 0;
}
remove_process (process);
return 0;
}
-/* Detach from inferior PID. */
+/* Implementation of target_ops::detach. */
+
static int
static int
-win32_detach (
int pid
)
+win32_detach (
process_info *process
)
{
{
- struct process_info *process;
winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
#ifdef _WIN32_WCE
winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
#ifdef _WIN32_WCE
@@
-857,7
+858,6
@@
win32_detach (int pid)
return -1;
DebugSetProcessKillOnExit (FALSE);
return -1;
DebugSetProcessKillOnExit (FALSE);
- process = find_process_pid (pid);
remove_process (process);
win32_clear_inferiors ();
remove_process (process);
win32_clear_inferiors ();
@@
-870,7
+870,8
@@
win32_mourn (struct process_info *process)
remove_process (process);
}
remove_process (process);
}
-/* Wait for inferiors to end. */
+/* Implementation of target_ops::join. */
+
static void
win32_join (int pid)
{
static void
win32_join (int pid)
{
@@
-906,7
+907,7
@@
win32_resume (struct thread_resume *resume_info, size_t n)
/* This handles the very limited set of resume packets that GDB can
currently produce. */
/* This handles the very limited set of resume packets that GDB can
currently produce. */
- if (n == 1 &&
ptid_equal (resume_info[0].thread, minus_one_ptid)
)
+ if (n == 1 &&
resume_info[0].thread == minus_one_ptid
)
tid = -1;
else if (n > 1)
tid = -1;
tid = -1;
else if (n > 1)
tid = -1;
@@
-915,7
+916,7
@@
win32_resume (struct thread_resume *resume_info, size_t n)
the Windows resume code do the right thing for thread switching. */
tid = current_event.dwThreadId;
the Windows resume code do the right thing for thread switching. */
tid = current_event.dwThreadId;
- if (
!ptid_equal (resume_info[0].thread, minus_one_ptid)
)
+ if (
resume_info[0].thread != minus_one_ptid
)
{
sig = gdb_signal_from_host (resume_info[0].sig);
step = resume_info[0].kind == resume_step;
{
sig = gdb_signal_from_host (resume_info[0].sig);
step = resume_info[0].kind == resume_step;
@@
-1604,7
+1605,7
@@
win32_wait (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
OUTMSG2 (("Child exited with retcode = %x\n",
ourstatus->value.integer));
win32_clear_inferiors ();
OUTMSG2 (("Child exited with retcode = %x\n",
ourstatus->value.integer));
win32_clear_inferiors ();
- return p
id_to_ptid
(current_event.dwProcessId);
+ return p
tid_t
(current_event.dwProcessId);
case TARGET_WAITKIND_STOPPED:
case TARGET_WAITKIND_LOADED:
OUTMSG2 (("Child Stopped with signal = %d \n",
case TARGET_WAITKIND_STOPPED:
case TARGET_WAITKIND_LOADED:
OUTMSG2 (("Child Stopped with signal = %d \n",
This page took
0.026475 seconds
and
4
git commands to generate.