Commit b5b8810e authored by Markus Amsler's avatar Markus Amsler Committed by Alexandre Julliard

Pass debug exceptions to winedos.

parent 94a9d33b
...@@ -1270,9 +1270,8 @@ void __wine_enter_vm86( CONTEXT *context ) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment