This applies the beahviour from a69762541a18107fbd8e9fb8362c3af8ddf1d90b (on x86_64) to arm64 as well.
Signed-off-by: Martin Storsjo martin@martin.st --- This fixes one aspect of https://github.com/microsoft/compiler-tests/blob/master/seh/seh0027.c on arm64. --- dlls/ntdll/signal_arm64.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c index c9f44e92d30..cc620eb1b46 100644 --- a/dlls/ntdll/signal_arm64.c +++ b/dlls/ntdll/signal_arm64.c @@ -341,6 +341,7 @@ static DWORD call_handler( EXCEPTION_RECORD *rec, CONTEXT *context, DISPATCHER_C res = dispatch->LanguageHandler( rec, (void *)dispatch->EstablisherFrame, context, dispatch ); TRACE( "handler at %p returned %u\n", dispatch->LanguageHandler, res );
+ rec->ExceptionFlags &= EH_NONCONTINUABLE; __wine_pop_frame( &frame ); return res; }
This mirrors ae07938ba661dc0515673835878710a25c99eec8 (from x86_64) to arm64.
Signed-off-by: Martin Storsjo martin@martin.st --- With this in place, all tests from https://github.com/microsoft/compiler-tests/tree/master/seh pass on arm64. --- dlls/ntdll/signal_arm64.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c index cc620eb1b46..c31eb510382 100644 --- a/dlls/ntdll/signal_arm64.c +++ b/dlls/ntdll/signal_arm64.c @@ -315,10 +315,10 @@ static DWORD call_teb_unwind_handler( EXCEPTION_RECORD *rec, DISPATCHER_CONTEXT static DWORD __cdecl nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame, CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher ) { - if (rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)) return ExceptionContinueSearch; + if (!(rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND))) + rec->ExceptionFlags |= EH_NESTED_CALL;
- /* FIXME */ - return ExceptionNestedException; + return ExceptionContinueSearch; }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=79929
Your paranoid android.
=== debiant (build log) ===
The task timed out
=== debiant (build log) ===
The task timed out
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=79928
Your paranoid android.
=== debiant (build log) ===
The task timed out
=== debiant (build log) ===
The task timed out