From e562623a15c6aca6b4e8f2e880c7b28682d768c1 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 12 Mar 2012 11:27:19 +0100 Subject: [PATCH] ntdll: Add support for the special STATUS_UNWIND_CONSOLIDATE exception code. --- dlls/ntdll/signal_x86_64.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index a0d02a3422b..12acf942407 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -3062,6 +3062,12 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec context->u.s.Xmm14 = jmp->Xmm14; context->u.s.Xmm15 = jmp->Xmm15; } + else if (rec->ExceptionCode == STATUS_UNWIND_CONSOLIDATE && rec->NumberParameters >= 1) + { + PVOID (CALLBACK *consolidate)(EXCEPTION_RECORD *) = (void *)rec->ExceptionInformation[0]; + TRACE( "calling consolidate callback %p\n", consolidate ); + target_ip = consolidate( rec ); + } context->Rax = (ULONG64)retval; context->Rip = (ULONG64)target_ip; TRACE( "returning to %lx stack %lx\n", context->Rip, context->Rsp ); -- 2.11.4.GIT