Check for syslevel violations while relay debugging.

This commit is contained in:
Ulrich Weigand 1999-05-22 16:29:39 +00:00 committed by Alexandre Julliard
parent c5b8b3aeae
commit 6cd829bd4c
2 changed files with 18 additions and 0 deletions

View File

@ -189,6 +189,8 @@ void RELAY_DebugCallFrom16( int func_type, char *args,
AX_reg(context), BX_reg(context), CX_reg(context),
DX_reg(context), SI_reg(context), DI_reg(context),
(WORD)ES_reg(context), EFL_reg(context) );
SYSLEVEL_CheckNotLevel( 2 );
}
@ -226,6 +228,8 @@ void RELAY_DebugCallFrom16Ret( int func_type, int ret_val, CONTEXT *context)
(WORD)ES_reg(context), EFL_reg(context) );
break;
}
SYSLEVEL_CheckNotLevel( 2 );
}
@ -294,6 +298,8 @@ void RELAY_DebugCallTo16( int* stack, int nb_args )
DPRINTF(") ss:sp=%04x:%04x\n", SELECTOROF(thdb->cur_stack),
OFFSETOF(thdb->cur_stack) );
}
SYSLEVEL_CheckNotLevel( 2 );
}
@ -309,6 +315,8 @@ void RELAY_DebugCallTo16Ret( int ret_val )
DPRINTF("CallTo16() ss:sp=%04x:%04x retval=0x%08x\n",
SELECTOROF(thdb->cur_stack), OFFSETOF(thdb->cur_stack), ret_val);
SYSLEVEL_CheckNotLevel( 2 );
}

View File

@ -11,6 +11,7 @@
#include "builtin32.h"
#include "selectors.h"
#include "stackframe.h"
#include "syslevel.h"
#include "debugstr.h"
#include "main.h"
#include "debugtools.h"
@ -113,6 +114,8 @@ int RELAY_CallFrom32( int ret_addr, ... )
GET_FS( fs );
DPRINTF( ") ret=%08x fs=%04x\n", ret_addr, fs );
SYSLEVEL_CheckNotLevel( 1 );
if (*relay_addr == 0xc3) /* cdecl */
{
LRESULT (*cfunc)() = (LRESULT(*)())func;
@ -200,6 +203,9 @@ int RELAY_CallFrom32( int ret_addr, ... )
}
DPRINTF( "Ret %s() retval=%08x ret=%08x fs=%04x\n",
buffer, ret, ret_addr, fs );
SYSLEVEL_CheckNotLevel( 1 );
return ret;
}
@ -250,6 +256,8 @@ void WINAPI REGS_FUNC(RELAY_CallFrom32Regs)( CONTEXT *context )
EBP_reg(context), ESP_reg(context), DS_reg(context),
ES_reg(context), GS_reg(context), EFL_reg(context) );
SYSLEVEL_CheckNotLevel( 1 );
/* Now call the real function */
switch(nb_args)
{
@ -291,6 +299,8 @@ void WINAPI REGS_FUNC(RELAY_CallFrom32Regs)( CONTEXT *context )
DPRINTF(" ebp=%08lx esp=%08lx ds=%04lx es=%04lx gs=%04lx flags=%08lx\n",
EBP_reg(context), ESP_reg(context), DS_reg(context),
ES_reg(context), GS_reg(context), EFL_reg(context) );
SYSLEVEL_CheckNotLevel( 1 );
}
#else /* __i386__ */