Pass debug exceptions to winedos.
This commit is contained in:
parent
94a9d33b6c
commit
b5b8810e99
|
@ -1270,9 +1270,8 @@ void __wine_enter_vm86( CONTEXT *context )
|
||||||
case VM86_TRAP: /* return due to DOS-debugger request */
|
case VM86_TRAP: /* return due to DOS-debugger request */
|
||||||
switch(VM86_ARG(res))
|
switch(VM86_ARG(res))
|
||||||
{
|
{
|
||||||
case T_TRCTRAP: /* Single-step exception */
|
case T_TRCTRAP: /* Single-step exception, single step flag is cleared by raise_trap_exception */
|
||||||
rec.ExceptionCode = EXCEPTION_SINGLE_STEP;
|
rec.ExceptionCode = EXCEPTION_SINGLE_STEP;
|
||||||
context->EFlags &= ~0x100; /* clear single-step flag */
|
|
||||||
break;
|
break;
|
||||||
case T_BPTFLT: /* Breakpoint exception */
|
case T_BPTFLT: /* Breakpoint exception */
|
||||||
rec.ExceptionAddress = (char *)rec.ExceptionAddress - 1; /* back up over the int3 instruction */
|
rec.ExceptionAddress = (char *)rec.ExceptionAddress - 1; /* back up over the int3 instruction */
|
||||||
|
|
|
@ -557,6 +557,15 @@ static WINE_EXCEPTION_FILTER(exception_handler)
|
||||||
ERR( "Protected mode STI caught by real mode handler!\n" );
|
ERR( "Protected mode STI caught by real mode handler!\n" );
|
||||||
DOSVM_SendQueuedEvents(context);
|
DOSVM_SendQueuedEvents(context);
|
||||||
return EXCEPTION_CONTINUE_EXECUTION;
|
return EXCEPTION_CONTINUE_EXECUTION;
|
||||||
|
|
||||||
|
case EXCEPTION_SINGLE_STEP:
|
||||||
|
ret = DOSVM_EmulateInterruptRM( context, 1 );
|
||||||
|
return ret ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_EXECUTE_HANDLER;
|
||||||
|
|
||||||
|
case EXCEPTION_BREAKPOINT:
|
||||||
|
ret = DOSVM_EmulateInterruptRM( context, 3 );
|
||||||
|
return ret ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_EXECUTE_HANDLER;
|
||||||
|
|
||||||
}
|
}
|
||||||
return EXCEPTION_CONTINUE_SEARCH;
|
return EXCEPTION_CONTINUE_SEARCH;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue