You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-12-15 08:03:15 -08:00
Rebase against ae73e09a8d071eaa33fafe785e8295384b9e64a7.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From b2c573c7d371f760d92b7490fd1aca002e2f18c6 Mon Sep 17 00:00:00 2001
|
||||
From ed725c78b5deb6c482a60ac26eda5f5d58ab531c Mon Sep 17 00:00:00 2001
|
||||
From: Paul Gofman <pgofman@codeweavers.com>
|
||||
Date: Tue, 26 Oct 2021 19:07:26 +0300
|
||||
Subject: [PATCH] ntdll: Don't use Wine frames during exception processing on
|
||||
@@ -10,10 +10,10 @@ CW-Bug-ID: #19570
|
||||
1 file changed, 46 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
|
||||
index b1ab4933b93..3d163fbc6ea 100644
|
||||
index ac543338893..f2c7cad5675 100644
|
||||
--- a/dlls/ntdll/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/signal_x86_64.c
|
||||
@@ -347,15 +347,32 @@ __ASM_GLOBAL_FUNC( RtlCaptureContext,
|
||||
@@ -348,15 +348,32 @@ __ASM_GLOBAL_FUNC( RtlCaptureContext,
|
||||
"fxsave 0x100(%rcx)\n\t" /* context->FltSave */
|
||||
"ret" );
|
||||
|
||||
@@ -48,7 +48,7 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
/**********************************************************************
|
||||
* call_handler
|
||||
*
|
||||
@@ -364,19 +381,19 @@ static DWORD __cdecl nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_
|
||||
@@ -365,19 +382,19 @@ static DWORD __cdecl nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_
|
||||
*/
|
||||
static DWORD call_handler( EXCEPTION_RECORD *rec, CONTEXT *context, DISPATCHER_CONTEXT *dispatch )
|
||||
{
|
||||
@@ -62,7 +62,7 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
dispatch->LanguageHandler, rec, (void *)dispatch->EstablisherFrame, dispatch->ContextRecord, dispatch );
|
||||
- res = dispatch->LanguageHandler( rec, (void *)dispatch->EstablisherFrame, context, dispatch );
|
||||
+ res = exception_handler_call_wrapper( rec, (void *)dispatch->EstablisherFrame, context, dispatch );
|
||||
TRACE_(seh)( "handler at %p returned %u\n", dispatch->LanguageHandler, res );
|
||||
TRACE_(seh)( "handler at %p returned %lu\n", dispatch->LanguageHandler, res );
|
||||
|
||||
rec->ExceptionFlags &= EH_NONCONTINUABLE;
|
||||
- __wine_pop_frame( &frame );
|
||||
@@ -74,7 +74,7 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -990,7 +1007,8 @@ PVOID WINAPI RtlVirtualUnwind( ULONG type, ULONG64 base, ULONG64 pc,
|
||||
@@ -992,7 +1009,8 @@ PVOID WINAPI RtlVirtualUnwind( ULONG type, ULONG64 base, ULONG64 pc,
|
||||
|
||||
struct unwind_exception_frame
|
||||
{
|
||||
@@ -84,7 +84,7 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
DISPATCHER_CONTEXT *dispatch;
|
||||
};
|
||||
|
||||
@@ -999,7 +1017,7 @@ struct unwind_exception_frame
|
||||
@@ -1001,7 +1019,7 @@ struct unwind_exception_frame
|
||||
*
|
||||
* Handler for exceptions happening while calling an unwind handler.
|
||||
*/
|
||||
@@ -93,7 +93,7 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
|
||||
{
|
||||
struct unwind_exception_frame *unwind_frame = (struct unwind_exception_frame *)frame;
|
||||
@@ -1019,27 +1037,36 @@ static DWORD __cdecl unwind_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_
|
||||
@@ -1021,27 +1039,36 @@ static DWORD __cdecl unwind_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_
|
||||
return ExceptionCollidedUnwind;
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
dispatch->LanguageHandler, rec, (void *)dispatch->EstablisherFrame, dispatch->ContextRecord, dispatch );
|
||||
- res = dispatch->LanguageHandler( rec, (void *)dispatch->EstablisherFrame, dispatch->ContextRecord, dispatch );
|
||||
+ res = unwind_handler_call_wrapper( rec, (void *)dispatch->EstablisherFrame, dispatch->ContextRecord, dispatch );
|
||||
TRACE( "handler %p returned %x\n", dispatch->LanguageHandler, res );
|
||||
TRACE( "handler %p returned %lx\n", dispatch->LanguageHandler, res );
|
||||
|
||||
- __wine_pop_frame( &frame.frame );
|
||||
-
|
||||
@@ -140,5 +140,5 @@ index b1ab4933b93..3d163fbc6ea 100644
|
||||
{
|
||||
case ExceptionContinueSearch:
|
||||
--
|
||||
2.35.1
|
||||
2.38.1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user