This was set up for arm in ntdll and ucrtbase in 3ef9a04f9181fb7d28832c60b5439337460005b6, but msvcrt was missed.
Signed-off-by: Martin Storsjö martin@martin.st
-- v2: msvcrt: Hook up __C_specific_handler and __jump_unwind for arm
From: Martin Storsjö martin@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@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
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!
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.
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).
This merge request was approved by Piotr Caban.