Module: wine Branch: master Commit: 218bc84e03eaa807caca58027334e9b173dcfa7e URL: http://source.winehq.org/git/wine.git/?a=commit;h=218bc84e03eaa807caca580273...
Author: Sebastian Lackner sebastian@fds-team.de Date: Thu Feb 18 09:58:13 2016 +0100
ntdll: Mimic Windows behaviour when calling debug service.
Signed-off-by: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/signal_i386.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index 10235fe..5708aae 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -1940,6 +1940,21 @@ static void WINAPI raise_segv_exception( EXCEPTION_RECORD *rec, CONTEXT *context goto done; } break; + case EXCEPTION_BREAKPOINT: + if (!is_wow64) + { + /* On Wow64, the upper DWORD of Rax contains garbage, and the debug + * service is usually not recognized when called from usermode. */ + switch (rec->ExceptionInformation[0]) + { + case 1: /* BREAKPOINT_PRINT */ + case 3: /* BREAKPOINT_LOAD_SYMBOLS */ + case 4: /* BREAKPOINT_UNLOAD_SYMBOLS */ + case 5: /* BREAKPOINT_COMMAND_STRING (>= Win2003) */ + goto done; + } + } + break; } status = NtRaiseException( rec, context, TRUE ); raise_status( status, rec );