X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgdbserver%2Fwin32-low.c;h=49c6cf1b7c9d68f735f5f24a8990e8f2989aa8c4;hb=268a13a5a3f7c6b9b6ffc5ac2d1b24eb41f3fbdc;hp=7ed5fc5c0e78ef8cc9c2f124899f435880bf050a;hpb=7dbac825b09f0847e608b50c80db816ef20d9315;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c index 7ed5fc5c0e..49c6cf1b7c 100644 --- a/gdb/gdbserver/win32-low.c +++ b/gdb/gdbserver/win32-low.c @@ -1,5 +1,5 @@ /* Low level interface to Windows debugging, for gdbserver. - Copyright (C) 2006-2018 Free Software Foundation, Inc. + Copyright (C) 2006-2019 Free Software Foundation, Inc. Contributed by Leo Zayas. Based on "win32-nat.c" from GDB. @@ -32,8 +32,8 @@ #include #include #include -#include "gdb_tilde_expand.h" -#include "common-inferior.h" +#include "gdbsupport/gdb_tilde_expand.h" +#include "gdbsupport/common-inferior.h" #ifndef USE_WIN32API #include @@ -120,7 +120,7 @@ current_thread_ptid (void) 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. */ @@ -208,7 +208,7 @@ static win32_thread_info * 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; @@ -627,14 +627,13 @@ static int win32_create_inferior (const char *program, const std::vector &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; - int argslen; - int argc; PROCESS_INFORMATION pi; DWORD err; std::string str_program_args = stringify_argv (program_args); @@ -706,7 +705,7 @@ win32_create_inferior (const char *program, /* Wait till we are at 1st instruction in program, return new pid (assuming success). */ - last_ptid = win32_wait (pid_to_ptid (current_process_id), &last_status, 0); + cs.last_ptid = win32_wait (ptid_t (current_process_id), &cs.last_status, 0); return current_process_id; } @@ -804,15 +803,11 @@ win32_clear_inferiors (void) clear_inferiors (); } -/* Kill all inferiors. */ +/* Implementation of target_ops::kill. */ + 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 (;;) { @@ -828,16 +823,15 @@ win32_kill (int pid) win32_clear_inferiors (); - process = find_process_pid (pid); remove_process (process); return 0; } -/* Detach from inferior PID. */ +/* Implementation of target_ops::detach. */ + 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 @@ -864,7 +858,6 @@ win32_detach (int pid) return -1; DebugSetProcessKillOnExit (FALSE); - process = find_process_pid (pid); remove_process (process); win32_clear_inferiors (); @@ -877,7 +870,8 @@ win32_mourn (struct process_info *process) remove_process (process); } -/* Wait for inferiors to end. */ +/* Implementation of target_ops::join. */ + static void win32_join (int pid) { @@ -913,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. */ - 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; @@ -922,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; - 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; @@ -1611,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 (); - return pid_to_ptid (current_event.dwProcessId); + return ptid_t (current_event.dwProcessId); case TARGET_WAITKIND_STOPPED: case TARGET_WAITKIND_LOADED: OUTMSG2 (("Child Stopped with signal = %d \n",