Include all ARM64 C++ mangled symbols. Add _local_unwind symbol which is
present also in ARM64 version. And remove _setjmp, setjmp and __jump_unwind
symbols which are not present in any ARM64 version.

As a reference were checked msvcrt.dll versions 7.0.17083.1000 and
7.0.19041.546 and all have same set of symbols.
---
 mingw-w64-crt/def-include/func.def.in  |   7 ++
 mingw-w64-crt/lib-common/msvcrt.def.in | 109 +++++++++++++++++++++++--
 2 files changed, 110 insertions(+), 6 deletions(-)

diff --git a/mingw-w64-crt/def-include/func.def.in 
b/mingw-w64-crt/def-include/func.def.in
index fdda790a9b90..aae896bdb953 100644
--- a/mingw-w64-crt/def-include/func.def.in
+++ b/mingw-w64-crt/def-include/func.def.in
@@ -10,20 +10,24 @@
 // F_ARM64     - function available only on arm64
 // F_ARM_ANY   - function available on 32 and 64 bit arm
 // F_NON_I386  - function available on everything but i386
+// F_NON_ARM64 - function available on everything but arm64
 #if defined(DEF_X64)
 #define F64(x) x
 #define F_X64(x) x
 #define F_X86_ANY(x) x
 #define F_NON_I386(x) x
+#define F_NON_ARM64(x) x
 #elif defined(DEF_I386)
 #define F32(x) x
 #define F_I386(x) x
 #define F_X86_ANY(x) x
+#define F_NON_ARM64(x) x
 #elif defined(DEF_ARM32)
 #define F32(x) x
 #define F_ARM32(x) x
 #define F_ARM_ANY(x) x
 #define F_NON_I386(x) x
+#define F_NON_ARM64(x) x
 #elif defined(DEF_ARM64)
 #define F64(x) x
 #define F_ARM64(x) x
@@ -60,6 +64,9 @@
 #ifndef F_NON_I386
 #define F_NON_I386(x)
 #endif
+#ifndef F_NON_ARM64
+#define F_NON_ARM64(x)
+#endif
 
 #if defined(DEF_I386)
 #define STDCALL_DECORATED_EXPORT(symbol) symbol == _ ## symbol
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in 
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 8b0b85b20bee..c7a78e2dc794 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -314,8 +314,105 @@ EXPORTS
 #endif
 
 #ifdef DEF_ARM64
-; List of ARM64 C++ mangled symbols
-; TODO: Fill this list with all symbols from the first ARM64 version of 
msvcrt.dll
+; List of ARM64 C++ mangled symbols which matches the first ARM64 version of 
msvcrt.dll (Windows 10 Fall Creators Update)
+; public: __cdecl __non_rtti_object::__non_rtti_object(class __non_rtti_object 
const &__ptr64 )__ptr64
+??0__non_rtti_object@@QEAA@AEBV0@@Z
+; public: __cdecl __non_rtti_object::__non_rtti_object(char const 
*__ptr64)__ptr64
+??0__non_rtti_object@@QEAA@PEBD@Z
+; private: __thiscall bad_cast::bad_cast(char const *const *)
+??0bad_cast@@AAE@PBQBD@Z
+; private: __cdecl bad_cast::bad_cast(char const *__ptr64 const 
*__ptr64)__ptr64
+??0bad_cast@@AEAA@PEBQEBD@Z
+; public: __thiscall bad_cast::bad_cast(char const *const &)
+??0bad_cast@@QAE@ABQBD@Z
+; public: __cdecl bad_cast::bad_cast(char const *__ptr64 const &__ptr64 
)__ptr64
+??0bad_cast@@QEAA@AEBQEBD@Z
+; public: __cdecl bad_cast::bad_cast(class bad_cast const &__ptr64 )__ptr64
+??0bad_cast@@QEAA@AEBV0@@Z
+; public: __cdecl bad_cast::bad_cast(char const *__ptr64)__ptr64
+??0bad_cast@@QEAA@PEBD@Z
+; public: __cdecl bad_typeid::bad_typeid(class bad_typeid const &__ptr64 
)__ptr64
+??0bad_typeid@@QEAA@AEBV0@@Z
+; public: __cdecl bad_typeid::bad_typeid(char const *__ptr64)__ptr64
+??0bad_typeid@@QEAA@PEBD@Z
+; public: __cdecl exception::exception(char const *__ptr64 const &__ptr64 
)__ptr64
+??0exception@@QEAA@AEBQEBD@Z
+; public: __cdecl exception::exception(char const *__ptr64 const &__ptr64 
,int)__ptr64
+??0exception@@QEAA@AEBQEBDH@Z
+; public: __cdecl exception::exception(class exception const &__ptr64 )__ptr64
+??0exception@@QEAA@AEBV0@@Z
+; public: __cdecl exception::exception(void)__ptr64
+??0exception@@QEAA@XZ
+; public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void)__ptr64
+??1__non_rtti_object@@UEAA@XZ
+; public: virtual __cdecl bad_cast::~bad_cast(void)__ptr64
+??1bad_cast@@UEAA@XZ
+; public: virtual __cdecl bad_typeid::~bad_typeid(void)__ptr64
+??1bad_typeid@@UEAA@XZ
+; public: virtual __cdecl exception::~exception(void)__ptr64
+??1exception@@UEAA@XZ
+; public: virtual __cdecl type_info::~type_info(void)__ptr64
+??1type_info@@UEAA@XZ
+; void *__ptr64 __cdecl operator new(unsigned __int64)
+??2@YAPEAX_K@Z
+; void *__ptr64 __cdecl operator new(unsigned __int64,int,char const 
*__ptr64,int)
+??2@YAPEAX_KHPEBDH@Z
+; void __cdecl operator delete(void *__ptr64)
+??3@YAXPEAX@Z
+; public: class __non_rtti_object &__ptr64 __cdecl __non_rtti_object::operator 
=(class __non_rtti_object const &__ptr64 )__ptr64
+??4__non_rtti_object@@QEAAAEAV0@AEBV0@@Z
+; public: class bad_cast &__ptr64 __cdecl bad_cast::operator =(class bad_cast 
const &__ptr64 )__ptr64
+??4bad_cast@@QEAAAEAV0@AEBV0@@Z
+; public: class bad_typeid &__ptr64 __cdecl bad_typeid::operator =(class 
bad_typeid const &__ptr64 )__ptr64
+??4bad_typeid@@QEAAAEAV0@AEBV0@@Z
+; public: class exception &__ptr64 __cdecl exception::operator =(class 
exception const &__ptr64 )__ptr64
+??4exception@@QEAAAEAV0@AEBV0@@Z
+; public: int __cdecl type_info::operator ==(class type_info const &__ptr64 
)const __ptr64
+??8type_info@@QEBAHAEBV0@@Z
+; public: int __cdecl type_info::operator !=(class type_info const &__ptr64 
)const __ptr64
+??9type_info@@QEBAHAEBV0@@Z
+; const __non_rtti_object::$vftable
+??_7__non_rtti_object@@6B@ DATA
+; const bad_cast::$vftable
+??_7bad_cast@@6B@ DATA
+; const bad_typeid::$vftable
+??_7bad_typeid@@6B@ DATA
+; const exception::$vftable
+??_7exception@@6B@ DATA
+; public: void __cdecl bad_cast::__dflt_ctor_closure(void)__ptr64
+??_Fbad_cast@@QEAAXXZ
+; public: void __cdecl bad_typeid::__dflt_ctor_closure(void)__ptr64
+??_Fbad_typeid@@QEAAXXZ
+; void *__ptr64 __cdecl operator new[](unsigned __int64)
+??_U@YAPEAX_K@Z
+; void *__ptr64 __cdecl operator new[](unsigned __int64,int,char const 
*__ptr64,int)
+??_U@YAPEAX_KHPEBDH@Z
+; void __cdecl operator delete[](void *__ptr64)
+??_V@YAXPEAX@Z
+; int(__cdecl *)(unsigned __int64)__cdecl _query_new_handler(void)
+?_query_new_handler@@YAP6AH_K@ZXZ
+; int(__cdecl *)(unsigned __int64)__cdecl _set_new_handler(int(__cdecl 
*)(unsigned __int64))
+?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z
+; int __cdecl _set_new_mode(int)
+?_set_new_mode@@YAHH@Z
+; void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *__ptr64)__cdecl 
_set_se_translator(void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS 
*__ptr64))
+?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
+; public: int __cdecl type_info::before(class type_info const &__ptr64 )const 
__ptr64
+?before@type_info@@QEBAHAEBV1@@Z
+; public: char const *__ptr64 __cdecl type_info::name(void)const __ptr64
+?name@type_info@@QEBAPEBDXZ
+; public: char const *__ptr64 __cdecl type_info::raw_name(void)const __ptr64
+?raw_name@type_info@@QEBAPEBDXZ
+; void(__cdecl *)(void)__cdecl set_terminate(void(__cdecl *)(void))
+?set_terminate@@YAP6AXXZP6AXXZ@Z
+; void(__cdecl *)(void)__cdecl set_unexpected(void(__cdecl *)(void))
+?set_unexpected@@YAP6AXXZP6AXXZ@Z
+; void __cdecl terminate(void)
+?terminate@@YAXXZ
+; void __cdecl unexpected(void)
+?unexpected@@YAXXZ
+; public: virtual char const *__ptr64 __cdecl exception::what(void)const 
__ptr64
+?what@exception@@UEBAPEBDXZ
 #endif
 
 
@@ -693,7 +790,7 @@ F_I386(_seh_longjmp_unwind@4)
 _set_error_mode
 F_X86_ANY(_set_sbh_threshold)
 F_X86_ANY(_seterrormode)
-_setjmp
+F_NON_ARM64(_setjmp)
 F_I386(_setjmp3)
 F_X86_ANY(_setmaxstdio)
 _setmbcp
@@ -1159,7 +1256,7 @@ F_NON_I386(_finitef)
 F_X64(_fpclassf)
 F_NON_I386(_hypotf)
 F_X64(_isnanf)
-F_X64(_local_unwind)
+F64(_local_unwind)
 F_NON_I386(_logbf)
 F_X64(_nextafterf)
 F_X64(_scalbf)
@@ -1178,7 +1275,7 @@ F_NON_I386(log10f F_X86_ANY(DATA)) ; i386 log10f provided 
by emu
 F_NON_I386(logf F_X86_ANY(DATA)) ; i386 logf provided by emu
 F_NON_I386(modff DATA) ; i386 modff provided by emu
 F_NON_I386(powf DATA) ; i386 powf provided by emu
-F_NON_I386(setjmp)
+F_NON_I386(F_NON_ARM64(setjmp))
 F_NON_I386(sinf F_X86_ANY(DATA)) ; i386 sinf provided by emu
 F_NON_I386(sinhf DATA) ; i386 sinhf provided by emu
 F_NON_I386(sqrtf DATA) ; i386 sqrtf provided by emu
@@ -1758,7 +1855,7 @@ wscanf_s
 
 ; These symbols were added in Windows 8 OS system version of msvcrt.dll
 ; This is the first ARM32 version of msvcrt.dll, all symbols in this section 
and also above this section are present in all ARM32 versions of msvcrt.dll
-F_ARM_ANY(__jump_unwind)
+F_ARM32(__jump_unwind)
 F_ARM_ANY(_create_locale) ; i386 and x64 _create_locale replaced by emu
 F_ARM_ANY(_free_locale) ; i386 and x64 _free_locale replaced by emu
 F_ARM_ANY(_get_current_locale) ; i386 and x64 _get_current_locale replaced by 
emu
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to