[PATCH v2 0/1] MR70: msvcrt: Hook up __C_specific_handler and __jump_unwind for arm
This was set up for arm in ntdll and ucrtbase in 3ef9a04f9181fb7d28832c60b5439337460005b6, but msvcrt was missed. Signed-off-by: Martin Storsjö <martin(a)martin.st> -- v2: msvcrt: Hook up __C_specific_handler and __jump_unwind for arm https://gitlab.winehq.org/wine/wine/-/merge_requests/70
From: Martin Storsjö <martin(a)martin.st> This was set up for arm in ntdll and ucrtbase in 3ef9a04f9181fb7d28832c60b5439337460005b6, but msvcrt was missed. Also hook them up similarly in msvcr110, msvcr120 and msvcr120_app. Signed-off-by: Martin Storsjö <martin(a)martin.st> --- dlls/msvcr110/msvcr110.spec | 4 ++-- dlls/msvcr120/msvcr120.spec | 4 ++-- dlls/msvcr120_app/msvcr120_app.spec | 4 ++-- dlls/msvcrt/msvcrt.spec | 3 ++- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 64b634b582e..7bdae76cf68 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -872,7 +872,7 @@ @ cdecl __AdjustPointer(ptr ptr) @ stub __BuildCatchObject @ stub __BuildCatchObjectHelper -@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler +@ stdcall -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler @ cdecl -arch=i386,x86_64,arm,arm64 __CppXcptFilter(long ptr) @ cdecl -arch=i386,x86_64,arm,arm64 __CxxDetectRethrow(ptr) @ cdecl -arch=i386,x86_64,arm,arm64 __CxxExceptionFilter(ptr ptr long ptr) @@ -948,7 +948,7 @@ @ cdecl __iscsymf(long) @ stub __iswcsym @ stub __iswcsymf -@ stub -arch=arm __jump_unwind +@ stdcall -arch=arm __jump_unwind(ptr ptr) ntdll.__jump_unwind # extern __lconv @ cdecl __lconv_init() @ cdecl -arch=i386 -norelay __libm_sse2_acos() diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 68855b90096..4cafd8ba247 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -856,7 +856,7 @@ @ cdecl __AdjustPointer(ptr ptr) @ stub __BuildCatchObject @ stub __BuildCatchObjectHelper -@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler +@ stdcall -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler @ cdecl -arch=i386,x86_64,arm,arm64 __CppXcptFilter(long ptr) @ cdecl -arch=i386,x86_64,arm,arm64 __CxxDetectRethrow(ptr) @ cdecl -arch=i386,x86_64,arm,arm64 __CxxExceptionFilter(ptr ptr long ptr) @@ -938,7 +938,7 @@ @ cdecl __iscsymf(long) @ stub __iswcsym @ stub __iswcsymf -@ stub -arch=arm __jump_unwind +@ stdcall -arch=arm __jump_unwind(ptr ptr) ntdll.__jump_unwind # extern __lconv @ cdecl __lconv_init() @ cdecl -arch=i386 -norelay __libm_sse2_acos() diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index eabb304dd6d..d964de1fb36 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -850,7 +850,7 @@ @ cdecl __AdjustPointer(ptr ptr) msvcr120.__AdjustPointer @ stub __BuildCatchObject @ stub __BuildCatchObjectHelper -@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) msvcr120.__C_specific_handler +@ stdcall -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr) msvcr120.__C_specific_handler @ cdecl -arch=i386,x86_64,arm,arm64 __CppXcptFilter(long ptr) msvcr120.__CppXcptFilter @ cdecl -arch=i386,x86_64,arm,arm64 __CxxDetectRethrow(ptr) msvcr120.__CxxDetectRethrow @ cdecl -arch=i386,x86_64,arm,arm64 __CxxExceptionFilter(ptr ptr long ptr) msvcr120.__CxxExceptionFilter @@ -914,7 +914,7 @@ @ cdecl __iscsymf(long) msvcr120.__iscsymf @ stub __iswcsym @ stub __iswcsymf -@ stub -arch=arm __jump_unwind +@ stdcall -arch=arm __jump_unwind(ptr ptr) msvcr120.__jump_unwind # extern __lconv @ cdecl __lconv_init() msvcr120.__lconv_init @ cdecl -arch=i386 -norelay __libm_sse2_acos() msvcr120.__libm_sse2_acos diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index de7cf0116d8..3aab3600e1d 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -172,7 +172,7 @@ @ extern _HUGE MSVCRT__HUGE @ cdecl _Strftime(ptr long str ptr ptr) @ cdecl _XcptFilter(long ptr) -@ stdcall -arch=x86_64,arm64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler +@ stdcall -arch=x86_64,arm,arm64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler @ cdecl -arch=i386,x86_64,arm,arm64 __CppXcptFilter(long ptr) # stub __CxxCallUnwindDelDtor # stub __CxxCallUnwindDtor @@ -218,6 +218,7 @@ @ cdecl __isascii(long) @ cdecl __iscsym(long) @ cdecl __iscsymf(long) +@ stdcall -arch=arm __jump_unwind(ptr ptr) ntdll.__jump_unwind @ extern __lc_codepage MSVCRT___lc_codepage @ stub __lc_collate @ extern __lc_collate_cp MSVCRT___lc_collate_cp -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/70
On Mon May 16 16:07:05 2022 +0000, Piotr Caban wrote:
This was set up for arm in ntdll and ucrtbase in 3ef9a04f9181fb7d28832c60b5439337460005b6, but msvcrt was missed. Could you please also add it to other msvcrXX.dlls? There's a __jump_unwind stub in msvcr110 and msvcr120. Done, thanks!
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/70#note_883
Piotr Caban (@piotr) commented about dlls/msvcr110/msvcr110.spec:
@ cdecl __AdjustPointer(ptr ptr) @ stub __BuildCatchObject @ stub __BuildCatchObjectHelper -@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler +@ stdcall -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler arm64 should be probably added as well.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/70#note_885
On Mon May 16 16:16:00 2022 +0000, Piotr Caban wrote:
arm64 should be probably added as well. No - arm64 only became available in MSVC 2017 15.6, which already was targeting UCRT. So the numbered msvcr* aren't ever relevant for ARM64 - only UCRT (and msvcrt.dll somewhat).
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/70#note_886
This merge request was approved by Piotr Caban. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/70
participants (2)
-
Martin Storsjö -
Piotr Caban (@piotr)