Re: [Mingw-w64-public] [PATCH] crt: msvcrt.def.in: Fix ARM32 symbols

2024-04-18 Thread Martin Storsjö

On Sun, 14 Apr 2024, Pali Rohár wrote:


Symbols __CxxFrameHandler2, _freea_s, _get_pgmptr and _get_wpgmptr are not
present in Windows RT 8.0 and neither in 8.1 versions of msvcrt.dll
library. So mark them as X86-only.

And additional symbol __jump_unwind is present in Windows RT 8.0 and 8.1,
so put it into Windows 8 section as ARM-only.

Also update comment about ARM32 C++ symbols, they fully matches Windows RT
8.0 and 8.1 versions.

Inspected Windows RT 8.0 msvcrt.dll ARM32 has version string 7.0.9200.16384.
And Windows RT 8.1 msvcrt.dll ARM32 has version string 7.0.9468.0.
---
mingw-w64-crt/lib-common/msvcrt.def.in | 58 +++---
1 file changed, 52 insertions(+), 6 deletions(-)


Thanks, this patch LGTM, so I pushed it.

// Martin

___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


[Mingw-w64-public] [PATCH] crt: msvcrt.def.in: Fix ARM32 symbols

2024-04-14 Thread Pali Rohár
Symbols __CxxFrameHandler2, _freea_s, _get_pgmptr and _get_wpgmptr are not
present in Windows RT 8.0 and neither in 8.1 versions of msvcrt.dll
library. So mark them as X86-only.

And additional symbol __jump_unwind is present in Windows RT 8.0 and 8.1,
so put it into Windows 8 section as ARM-only.

Also update comment about ARM32 C++ symbols, they fully matches Windows RT
8.0 and 8.1 versions.

Inspected Windows RT 8.0 msvcrt.dll ARM32 has version string 7.0.9200.16384.
And Windows RT 8.1 msvcrt.dll ARM32 has version string 7.0.9468.0.
---
 mingw-w64-crt/lib-common/msvcrt.def.in | 58 +++---
 1 file changed, 52 insertions(+), 6 deletions(-)

diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in 
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 05b0f394713f..00162754e807 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -218,54 +218,99 @@ EXPORTS
 ?what@exception@@UEBAPEBDXZ
 #endif
 
-; List of ARM32 C++ mangled symbols
-; TODO: Verify if this list is correct and contains all symbols from the first 
ARM32 version of msvcrt.dll
+; List of ARM32 C++ mangled symbols which matches the first ARM32 version of 
msvcrt.dll (Windows RT 8.0)
 #ifdef DEF_ARM32
+; public: __cdecl __non_rtti_object::__non_rtti_object(class __non_rtti_object 
const &)
 ??0__non_rtti_object@@QAA@ABV0@@Z
+; public: __cdecl __non_rtti_object::__non_rtti_object(char const *)
 ??0__non_rtti_object@@QAA@PBD@Z
+; private: __cdecl bad_cast::bad_cast(char const *const *)
 ??0bad_cast@@AAA@PBQBD@Z
+; public: __cdecl bad_cast::bad_cast(class bad_cast const &)
 ??0bad_cast@@QAA@ABV0@@Z
+; public: __cdecl bad_cast::bad_cast(char const *)
 ??0bad_cast@@QAA@PBD@Z
+; public: __cdecl bad_typeid::bad_typeid(class bad_typeid const &)
 ??0bad_typeid@@QAA@ABV0@@Z
+; public: __cdecl bad_typeid::bad_typeid(char const *)
 ??0bad_typeid@@QAA@PBD@Z
+; public: __cdecl exception::exception(char const *const &)
 ??0exception@@QAA@ABQBD@Z
+; public: __cdecl exception::exception(char const *const &,int)
 ??0exception@@QAA@ABQBDH@Z
+; public: __cdecl exception::exception(class exception const &)
 ??0exception@@QAA@ABV0@@Z
+; public: __cdecl exception::exception(void)
 ??0exception@@QAA@XZ
+; public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void)
 ??1__non_rtti_object@@UAA@XZ
+; public: virtual __cdecl bad_cast::~bad_cast(void)
 ??1bad_cast@@UAA@XZ
+; public: virtual __cdecl bad_typeid::~bad_typeid(void)
 ??1bad_typeid@@UAA@XZ
+; public: virtual __cdecl exception::~exception(void)
 ??1exception@@UAA@XZ
+; public: virtual __cdecl type_info::~type_info(void)
 ??1type_info@@UAA@XZ
+; void *__cdecl operator new(unsigned int)
 ??2@YAPAXI@Z
+; void *__cdecl operator new(unsigned int,int,char const *,int)
 ??2@YAPAXIHPBDH@Z
+; void __cdecl operator delete(void *)
 ??3@YAXPAX@Z
+; public: class __non_rtti_object &__cdecl __non_rtti_object::operator =(class 
__non_rtti_object const &)
 ??4__non_rtti_object@@QV0@ABV0@@Z
+; public: class bad_cast &__cdecl bad_cast::operator =(class bad_cast const &)
 ??4bad_cast@@QV0@ABV0@@Z
+; public: class bad_typeid &__cdecl bad_typeid::operator =(class bad_typeid 
const &)
 ??4bad_typeid@@QV0@ABV0@@Z
+; public: class exception &__cdecl exception::operator =(class exception const 
&)
 ??4exception@@QV0@ABV0@@Z
+; public: int __cdecl type_info::operator ==(class type_info const &)const
 ??8type_info@@QBAHABV0@@Z
+; public: int __cdecl type_info::operator !=(class type_info const &)const
 ??9type_info@@QBAHABV0@@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)
 ??_Fbad_cast@@QAAXXZ
+; public: void __cdecl bad_typeid::__dflt_ctor_closure(void)
 ??_Fbad_typeid@@QAAXXZ
+; void *__cdecl operator new[](unsigned int)
 ??_U@YAPAXI@Z
+; void *__cdecl operator new[](unsigned int,int,char const *,int)
 ??_U@YAPAXIHPBDH@Z
+; void __cdecl operator delete[](void *)
 ??_V@YAXPAX@Z
+; int(__cdecl *)(unsigned int)__cdecl _query_new_handler(void)
 ?_query_new_handler@@YAP6AHI@ZXZ
+; int(__cdecl *)(unsigned int)__cdecl _set_new_handler(int(__cdecl *)(unsigned 
int))
 ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
+; int __cdecl _set_new_mode(int)
 ?_set_new_mode@@YAHH@Z
+; void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *)__cdecl 
_set_se_translator(void(__cdecl *)(unsigned int,struct _EXCEPTION_POINTERS *))
 ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
+; public: int __cdecl type_info::before(class type_info const &)const
 ?before@type_info@@QBAHABV1@@Z
+; public: char const *__cdecl type_info::name(void)const
 ?name@type_info@@QBAPBDXZ
+; public: char const *__cdecl type_info::raw_name(void)const
 ?raw_name@type_info@@QBAPBDXZ
+; void(__cdecl *)(void)__cdecl set_terminate(void(__cdecl *)(void))
 ?set_terminate