* win32-low.c (GETPROCADDRESS): Define.

(winapi_DebugActiveProcessStop): Add WINAPI.  typedef as pointer.
	(winapi_DebugSetProcessKillOnExit): Likewise.
	(win32_create_inferior): Force usage of ansi CreateProcessA.
	(win32_attach): Use GETPROCADDRESS.
	(win32_detach): Likewise.
This commit is contained in:
Pedro Alves 2007-05-10 20:39:18 +00:00
parent 24d456905c
commit bf91483160
2 changed files with 38 additions and 26 deletions

View File

@ -1,3 +1,12 @@
2007-05-10 Pedro Alves <pedro_alves@portugalmail.pt>
* win32-low.c (GETPROCADDRESS): Define.
(winapi_DebugActiveProcessStop): Add WINAPI. typedef as pointer.
(winapi_DebugSetProcessKillOnExit): Likewise.
(win32_create_inferior): Force usage of ansi CreateProcessA.
(win32_attach): Use GETPROCADDRESS.
(win32_detach): Likewise.
2007-05-10 Pedro Alves <pedro_alves@portugalmail.pt>
* win32-low.c (win32_wait): Don't use WSTOPSIG.

View File

@ -55,6 +55,14 @@
#define COUNTOF(STR) (sizeof (STR) / sizeof ((STR)[0]))
#endif
#ifdef _WIN32_WCE
# define GETPROCADDRESS(DLL, PROC) \
((winapi_ ## PROC) GetProcAddress (DLL, TEXT (#PROC)))
#else
# define GETPROCADDRESS(DLL, PROC) \
((winapi_ ## PROC) GetProcAddress (DLL, #PROC))
#endif
int using_threads = 1;
/* Globals. */
@ -70,8 +78,8 @@ static int debug_registers_used = 0;
#define NUM_REGS (the_low_target.num_regs)
typedef BOOL winapi_DebugActiveProcessStop (DWORD dwProcessId);
typedef BOOL winapi_DebugSetProcessKillOnExit (BOOL KillOnExit);
typedef BOOL WINAPI (*winapi_DebugActiveProcessStop) (DWORD dwProcessId);
typedef BOOL WINAPI (*winapi_DebugSetProcessKillOnExit) (BOOL KillOnExit);
#ifndef CONTEXT_EXTENDED_REGISTERS
#define CONTEXT_EXTENDED_REGISTERS 0
@ -462,7 +470,7 @@ win32_create_inferior (char *program, char **program_args)
int argc;
PROCESS_INFORMATION pi;
#ifndef __MINGW32CE__
STARTUPINFO si = { sizeof (STARTUPINFO) };
STARTUPINFOA si = { sizeof (STARTUPINFOA) };
char *winenv = NULL;
#else
wchar_t *wargs, *wprogram;
@ -523,16 +531,16 @@ win32_create_inferior (char *program, char **program_args)
NULL, /* start info, not supported */
&pi); /* proc info */
#else
ret = CreateProcess (program, /* image name */
args, /* command line */
NULL, /* security */
NULL, /* thread */
TRUE, /* inherit handles */
flags, /* start flags */
winenv, /* environment */
NULL, /* current directory */
&si, /* start info */
&pi); /* proc info */
ret = CreateProcessA (program, /* image name */
args, /* command line */
NULL, /* security */
NULL, /* thread */
TRUE, /* inherit handles */
flags, /* start flags */
winenv, /* environment */
NULL, /* current directory */
&si, /* start info */
&pi); /* proc info */
#endif
#ifndef USE_WIN32API
@ -573,18 +581,15 @@ static int
win32_attach (unsigned long pid)
{
int res = 0;
winapi_DebugActiveProcessStop *DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit *DebugSetProcessKillOnExit = NULL;
winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
#ifdef _WIN32_WCE
HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
#else
HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
#endif
DebugActiveProcessStop = (winapi_DebugActiveProcessStop *)
GetProcAddress (dll, _T("DebugActiveProcessStop"));
DebugSetProcessKillOnExit = (winapi_DebugSetProcessKillOnExit *)
GetProcAddress (dll, _T("DebugSetProcessKillOnExit"));
DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
res = DebugActiveProcess (pid) ? 1 : 0;
@ -686,17 +691,15 @@ win32_kill (void)
static void
win32_detach (void)
{
winapi_DebugActiveProcessStop *DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit *DebugSetProcessKillOnExit = NULL;
winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
#ifdef _WIN32_WCE
HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
#else
HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
#endif
DebugActiveProcessStop = (winapi_DebugActiveProcessStop *)
GetProcAddress (dll, _T("DebugActiveProcessStop"));
DebugSetProcessKillOnExit = (winapi_DebugSetProcessKillOnExit *)
GetProcAddress (dll, _T("DebugSetProcessKillOnExit"));
DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
if (DebugSetProcessKillOnExit != NULL)
DebugSetProcessKillOnExit (FALSE);