From e2d69ad98cc10402e87722d52e940ed53da48869 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 14 Nov 2024 18:36:07 +0200 Subject: [PATCH] [CRT] Split MSVC C++ aliases from cpp.s to cpp_alias.s --- sdk/lib/crt/except/amd64/cpp.s | 58 ------------------- sdk/lib/crt/except/amd64/cpp_alias.s | 64 +++++++++++++++++++++ sdk/lib/crt/except/arm/cpp.s | 52 ----------------- sdk/lib/crt/except/arm/cpp_alias.s | 69 ++++++++++++++++++++++ sdk/lib/crt/except/except.cmake | 9 ++- sdk/lib/crt/except/i386/cpp.s | 79 -------------------------- sdk/lib/crt/except/i386/cpp_alias.s | 85 ++++++++++++++++++++++++++++ 7 files changed, 224 insertions(+), 192 deletions(-) create mode 100644 sdk/lib/crt/except/amd64/cpp_alias.s create mode 100644 sdk/lib/crt/except/arm/cpp_alias.s create mode 100644 sdk/lib/crt/except/i386/cpp_alias.s diff --git a/sdk/lib/crt/except/amd64/cpp.s b/sdk/lib/crt/except/amd64/cpp.s index ad869b8d609..c4f472d65a1 100644 --- a/sdk/lib/crt/except/amd64/cpp.s +++ b/sdk/lib/crt/except/amd64/cpp.s @@ -28,62 +28,4 @@ DEFINE_EXCEPTION_VTABLE bad_typeid, ??_7bad_typeid@@6B@ DEFINE_EXCEPTION_VTABLE bad_cast, ??_7bad_cast@@6B@ DEFINE_EXCEPTION_VTABLE __non_rtti_object, ??_7__non_rtti_object@@6B@ - -MACRO(DEFINE_ALIAS, alias, orig) -EXTERN &orig:ABS -ALIAS <&alias> = <&orig> -ENDM - -DEFINE_ALIAS ??3@YAXPEAX@Z, operator_delete -DEFINE_ALIAS ??_U@YAPEAX_K@Z, operator_new -DEFINE_ALIAS ??_U@YAPEAX_KHPEBDH@Z, operator_new_dbg -DEFINE_ALIAS ??_V@YAXPEAX@Z, operator_delete -DEFINE_ALIAS ??2@YAPEAX_K@Z, operator_new -DEFINE_ALIAS ??2@YAPEAX_KHPEBDH@Z, operator_new_dbg -DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, _query_new_handler -DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, _set_new_handler -DEFINE_ALIAS ?set_new_handler@@YAP6AXXZP6AXXZ@Z, set_new_handler -DEFINE_ALIAS ?_query_new_mode@@YAHXZ, _query_new_mode -DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, _set_new_mode -DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, _set_se_translator -DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, set_terminate -DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, set_unexpected -DEFINE_ALIAS ?terminate@@YAXXZ, terminate -DEFINE_ALIAS ?unexpected@@YAXXZ, unexpected -DEFINE_ALIAS ?what@exception@@UEBAPEBDXZ, exception_what -DEFINE_ALIAS ??0exception@@QEAA@AEBQEBDH@Z, exception_ctor_noalloc -DEFINE_ALIAS ??0exception@@QEAA@AEBV0@@Z, exception_copy_ctor -DEFINE_ALIAS ??0exception@@QEAA@XZ, exception_default_ctor -DEFINE_ALIAS ??1exception@@UEAA@XZ, exception_dtor -DEFINE_ALIAS ??4exception@@QEAAAEAV0@AEBV0@@Z, exception_opequals -DEFINE_ALIAS ??1type_info@@UEAA@XZ, type_info_dtor -DEFINE_ALIAS ??0__non_rtti_object@@QEAA@AEBV0@@Z, __non_rtti_object_copy_ctor -DEFINE_ALIAS ??0__non_rtti_object@@QEAA@PEBD@Z, __non_rtti_object_ctor -DEFINE_ALIAS ??0bad_cast@@AAE@PBQBD@Z, bad_cast_ctor -DEFINE_ALIAS ??0bad_cast@@AEAA@PEBQEBD@Z, bad_cast_ctor -DEFINE_ALIAS ??0bad_cast@@QAE@ABQBD@Z, bad_cast_ctor -DEFINE_ALIAS ??0bad_cast@@QEAA@AEBQEBD@Z, bad_cast_ctor -DEFINE_ALIAS ??0bad_cast@@QEAA@AEBV0@@Z, bad_cast_copy_ctor -DEFINE_ALIAS ??0bad_cast@@QEAA@PEBD@Z, bad_cast_ctor_charptr -DEFINE_ALIAS ??0bad_typeid@@QEAA@AEBV0@@Z, bad_typeid_copy_ctor -DEFINE_ALIAS ??0bad_typeid@@QEAA@PEBD@Z, bad_typeid_ctor -DEFINE_ALIAS ??0exception@@QEAA@AEBQEBD@Z, exception_ctor -DEFINE_ALIAS ??1__non_rtti_object@@UEAA@XZ, __non_rtti_object_dtor -DEFINE_ALIAS ??1bad_cast@@UEAA@XZ, bad_cast_dtor -DEFINE_ALIAS ??1bad_typeid@@UEAA@XZ, bad_typeid_dtor -DEFINE_ALIAS ??4bad_cast@@QEAAAEAV0@AEBV0@@Z, bad_cast_opequals -DEFINE_ALIAS ??4bad_typeid@@QEAAAEAV0@AEBV0@@Z, bad_typeid_opequals -DEFINE_ALIAS ??8type_info@@QEBAHAEBV0@@Z, type_info_opequals_equals -DEFINE_ALIAS ??9type_info@@QEBAHAEBV0@@Z, type_info_opnot_equals -DEFINE_ALIAS ??_Fbad_cast@@QEAAXXZ, bad_cast_default_ctor -DEFINE_ALIAS ??_Fbad_typeid@@QEAAXXZ, bad_typeid_default_ctor -DEFINE_ALIAS ?_query_new_handler@@YAP6AH_K@ZXZ, _query_new_handler -DEFINE_ALIAS ?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z, _set_new_handler -DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, _set_se_translator -DEFINE_ALIAS ?before@type_info@@QEBAHAEBV1@@Z, type_info_before -DEFINE_ALIAS ?name@type_info@@QEBAPEBDXZ, type_info_name -DEFINE_ALIAS ?raw_name@type_info@@QEBAPEBDXZ, type_info_raw_name -DEFINE_ALIAS ??4__non_rtti_object@@QEAAAEAV0@AEBV0@@Z, __non_rtti_object_opequals - END - diff --git a/sdk/lib/crt/except/amd64/cpp_alias.s b/sdk/lib/crt/except/amd64/cpp_alias.s new file mode 100644 index 00000000000..a7da20ad93c --- /dev/null +++ b/sdk/lib/crt/except/amd64/cpp_alias.s @@ -0,0 +1,64 @@ + + +#include + +.code64 +.align 4 + +MACRO(DEFINE_ALIAS, alias, orig) +EXTERN &orig:ABS +ALIAS <&alias> = <&orig> +ENDM + +DEFINE_ALIAS ??3@YAXPEAX@Z, operator_delete +DEFINE_ALIAS ??_U@YAPEAX_K@Z, operator_new +DEFINE_ALIAS ??_U@YAPEAX_KHPEBDH@Z, operator_new_dbg +DEFINE_ALIAS ??_V@YAXPEAX@Z, operator_delete +DEFINE_ALIAS ??2@YAPEAX_K@Z, operator_new +DEFINE_ALIAS ??2@YAPEAX_KHPEBDH@Z, operator_new_dbg +DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, _query_new_handler +DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, _set_new_handler +DEFINE_ALIAS ?set_new_handler@@YAP6AXXZP6AXXZ@Z, set_new_handler +DEFINE_ALIAS ?_query_new_mode@@YAHXZ, _query_new_mode +DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, _set_new_mode +DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, _set_se_translator +DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, set_terminate +DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, set_unexpected +DEFINE_ALIAS ?terminate@@YAXXZ, terminate +DEFINE_ALIAS ?unexpected@@YAXXZ, unexpected +DEFINE_ALIAS ?what@exception@@UEBAPEBDXZ, exception_what +DEFINE_ALIAS ??0exception@@QEAA@AEBQEBDH@Z, exception_ctor_noalloc +DEFINE_ALIAS ??0exception@@QEAA@AEBV0@@Z, exception_copy_ctor +DEFINE_ALIAS ??0exception@@QEAA@XZ, exception_default_ctor +DEFINE_ALIAS ??1exception@@UEAA@XZ, exception_dtor +DEFINE_ALIAS ??4exception@@QEAAAEAV0@AEBV0@@Z, exception_opequals +DEFINE_ALIAS ??1type_info@@UEAA@XZ, type_info_dtor +DEFINE_ALIAS ??0__non_rtti_object@@QEAA@AEBV0@@Z, __non_rtti_object_copy_ctor +DEFINE_ALIAS ??0__non_rtti_object@@QEAA@PEBD@Z, __non_rtti_object_ctor +DEFINE_ALIAS ??0bad_cast@@AAE@PBQBD@Z, bad_cast_ctor +DEFINE_ALIAS ??0bad_cast@@AEAA@PEBQEBD@Z, bad_cast_ctor +DEFINE_ALIAS ??0bad_cast@@QAE@ABQBD@Z, bad_cast_ctor +DEFINE_ALIAS ??0bad_cast@@QEAA@AEBQEBD@Z, bad_cast_ctor +DEFINE_ALIAS ??0bad_cast@@QEAA@AEBV0@@Z, bad_cast_copy_ctor +DEFINE_ALIAS ??0bad_cast@@QEAA@PEBD@Z, bad_cast_ctor_charptr +DEFINE_ALIAS ??0bad_typeid@@QEAA@AEBV0@@Z, bad_typeid_copy_ctor +DEFINE_ALIAS ??0bad_typeid@@QEAA@PEBD@Z, bad_typeid_ctor +DEFINE_ALIAS ??0exception@@QEAA@AEBQEBD@Z, exception_ctor +DEFINE_ALIAS ??1__non_rtti_object@@UEAA@XZ, __non_rtti_object_dtor +DEFINE_ALIAS ??1bad_cast@@UEAA@XZ, bad_cast_dtor +DEFINE_ALIAS ??1bad_typeid@@UEAA@XZ, bad_typeid_dtor +DEFINE_ALIAS ??4bad_cast@@QEAAAEAV0@AEBV0@@Z, bad_cast_opequals +DEFINE_ALIAS ??4bad_typeid@@QEAAAEAV0@AEBV0@@Z, bad_typeid_opequals +DEFINE_ALIAS ??8type_info@@QEBAHAEBV0@@Z, type_info_opequals_equals +DEFINE_ALIAS ??9type_info@@QEBAHAEBV0@@Z, type_info_opnot_equals +DEFINE_ALIAS ??_Fbad_cast@@QEAAXXZ, bad_cast_default_ctor +DEFINE_ALIAS ??_Fbad_typeid@@QEAAXXZ, bad_typeid_default_ctor +DEFINE_ALIAS ?_query_new_handler@@YAP6AH_K@ZXZ, _query_new_handler +DEFINE_ALIAS ?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z, _set_new_handler +DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, _set_se_translator +DEFINE_ALIAS ?before@type_info@@QEBAHAEBV1@@Z, type_info_before +DEFINE_ALIAS ?name@type_info@@QEBAPEBDXZ, type_info_name +DEFINE_ALIAS ?raw_name@type_info@@QEBAPEBDXZ, type_info_raw_name +DEFINE_ALIAS ??4__non_rtti_object@@QEAAAEAV0@AEBV0@@Z, __non_rtti_object_opequals + +END diff --git a/sdk/lib/crt/except/arm/cpp.s b/sdk/lib/crt/except/arm/cpp.s index 5a45e587189..ddc1498896b 100644 --- a/sdk/lib/crt/except/arm/cpp.s +++ b/sdk/lib/crt/except/arm/cpp.s @@ -13,58 +13,6 @@ TEXTAREA - MACRO - DEFINE_ALIAS $FuncName, $Target - LCLS _FuncName - LCLS _Target -_FuncName SETS "|$FuncName|" -_Target SETS "|$Target|" - IMPORT $_FuncName, WEAK $_Target - MEND - - DEFINE_ALIAS ??0__non_rtti_object@@QAA@ABV0@@Z, __non_rtti_object_copy_ctor - DEFINE_ALIAS ??0__non_rtti_object@@QAA@PBD@Z, __non_rtti_object_ctor - DEFINE_ALIAS ??0bad_cast@@AAA@PBQBD@Z, bad_cast_ctor // private: __cdecl bad_cast::bad_cast(char const * const *) - DEFINE_ALIAS ??0bad_cast@@QAA@ABV0@@Z, bad_cast_copy_ctor // public: __cdecl bad_cast::bad_cast(class bad_cast const &) - DEFINE_ALIAS ??0bad_cast@@QAA@PBD@Z, bad_cast_ctor // public: __cdecl bad_cast::bad_cast(char const *) - DEFINE_ALIAS ??0bad_typeid@@QAA@ABV0@@Z, bad_typeid_copy_ctor // public: __cdecl bad_typeid::bad_typeid(class bad_typeid const &) - DEFINE_ALIAS ??0bad_typeid@@QAA@PBD@Z, bad_typeid_ctor // public: __cdecl bad_typeid::bad_typeid(char const *) - DEFINE_ALIAS ??0exception@@QAA@ABQBD@Z, exception_ctor // public: __cdecl exception::exception(char const * const &) - DEFINE_ALIAS ??0exception@@QAA@ABQBDH@Z, exception_ctor_noalloc // public: __cdecl exception::exception(char const * const &,int) - DEFINE_ALIAS ??0exception@@QAA@ABV0@@Z, exception_copy_ctor // public: __cdecl exception::exception(class exception const &) - DEFINE_ALIAS ??0exception@@QAA@XZ, exception_default_ctor // public: __cdecl exception::exception(void) - DEFINE_ALIAS ??1__non_rtti_object@@UAA@XZ, __non_rtti_object_dtor // public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void) - DEFINE_ALIAS ??1bad_cast@@UAA@XZ, bad_cast_dtor // public: virtual __cdecl bad_cast::~bad_cast(void) - DEFINE_ALIAS ??1bad_typeid@@UAA@XZ, bad_typeid_dtor // public: virtual __cdecl bad_typeid::~bad_typeid(void) - DEFINE_ALIAS ??1exception@@UAA@XZ, exception_dtor // public: virtual __cdecl exception::~exception(void) - DEFINE_ALIAS ??1type_info@@UAA@XZ, type_info_dtor // public: virtual __cdecl type_info::~type_info(void) - DEFINE_ALIAS ??2@YAPAXI@Z, operator_new // void * __cdecl operator new(unsigned int) - DEFINE_ALIAS ??2@YAPAXIHPBDH@Z, operator_new_dbg // void * __cdecl operator new(unsigned int,int,char const *,int) - DEFINE_ALIAS ??3@YAXPAX@Z, operator_delete // void __cdecl operator delete(void *) - DEFINE_ALIAS ??4__non_rtti_object@@QAAAAV0@ABV0@@Z, __non_rtti_object_opequals // public: class __non_rtti_object & __cdecl __non_rtti_object::operator=(class __non_rtti_object const &) - DEFINE_ALIAS ??4bad_cast@@QAAAAV0@ABV0@@Z, bad_cast_opequals // public: class bad_cast & __cdecl bad_cast::operator=(class bad_cast const &) - DEFINE_ALIAS ??4bad_typeid@@QAAAAV0@ABV0@@Z, bad_typeid_opequals // public: class bad_typeid & __cdecl bad_typeid::operator=(class bad_typeid const &) - DEFINE_ALIAS ??4exception@@QAAAAV0@ABV0@@Z, exception_opequals // public: class exception & __cdecl exception::operator=(class exception const &) - DEFINE_ALIAS ??8type_info@@QBAHABV0@@Z, type_info_opequals_equals // public: int __cdecl type_info::operator==(class type_info const &)const - DEFINE_ALIAS ??9type_info@@QBAHABV0@@Z, type_info_opnot_equals // public: int __cdecl type_info::operator!=(class type_info const &)const - DEFINE_ALIAS ??_Fbad_cast@@QAAXXZ, bad_cast_default_ctor // public: void __cdecl bad_cast::`default constructor closure'(void) - DEFINE_ALIAS ??_Fbad_typeid@@QAAXXZ, bad_typeid_default_ctor // public: void __cdecl bad_typeid::`default constructor closure'(void) - DEFINE_ALIAS ??_U@YAPAXI@Z, operator_new // void * __cdecl operator new[](unsigned int) - DEFINE_ALIAS ??_U@YAPAXIHPBDH@Z, operator_new_dbg // void * __cdecl operator new[](unsigned int,int,char const *,int) - DEFINE_ALIAS ??_V@YAXPAX@Z, operator_delete // void __cdecl operator delete[](void *) - DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, _query_new_handler // int (__cdecl*__cdecl _query_new_handler(void))(unsigned int) - DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, _set_new_handler // int (__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned int)))(unsigned int) - DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, _set_new_mode // int __cdecl _set_new_mode(int) - DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, _set_se_translator // void (__cdecl*__cdecl _set_se_translator(void (__cdecl*)(unsigned int,struct _EXCEPTION_POINTERS *)))(unsigned int,struct _EXCEPTION_POINTERS *) - DEFINE_ALIAS ?before@type_info@@QBAHABV1@@Z, type_info_before // public: int __cdecl type_info::before(class type_info const &)const - DEFINE_ALIAS ?name@type_info@@QBAPBDXZ, type_info_name // public: char const * __cdecl type_info::name(void)const - DEFINE_ALIAS ?raw_name@type_info@@QBAPBDXZ, type_info_raw_name // public: char const * __cdecl type_info::raw_name(void)const - DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, set_terminate // void (__cdecl*__cdecl set_terminate(void (__cdecl*)(void)))(void) - DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, set_unexpected // void (__cdecl*__cdecl set_unexpected(void (__cdecl*)(void)))(void) - DEFINE_ALIAS ?terminate@@YAXXZ, terminate // void __cdecl terminate(void) - DEFINE_ALIAS ?unexpected@@YAXXZ, unexpected // void __cdecl unexpected(void) - DEFINE_ALIAS ?what@exception@@UBAPBDXZ, exception_what // public: virtual char const * __cdecl exception::what(void)const - #undef _MSVCRT_ MACRO START_VTABLE $ShortName, $CxxName diff --git a/sdk/lib/crt/except/arm/cpp_alias.s b/sdk/lib/crt/except/arm/cpp_alias.s new file mode 100644 index 00000000000..7b6ae45683e --- /dev/null +++ b/sdk/lib/crt/except/arm/cpp_alias.s @@ -0,0 +1,69 @@ +/* + * COPYRIGHT: BSD - See COPYING.ARM in the top level directory + * PROJECT: ReactOS CRT library + * PURPOSE: MSVC wrappers for C++ functions + * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org) + */ + +/* INCLUDES ******************************************************************/ + +#include + +/* CODE **********************************************************************/ + + TEXTAREA + + MACRO + DEFINE_ALIAS $FuncName, $Target + LCLS _FuncName + LCLS _Target +_FuncName SETS "|$FuncName|" +_Target SETS "|$Target|" + IMPORT $_FuncName, WEAK $_Target + MEND + + DEFINE_ALIAS ??0__non_rtti_object@@QAA@ABV0@@Z, __non_rtti_object_copy_ctor + DEFINE_ALIAS ??0__non_rtti_object@@QAA@PBD@Z, __non_rtti_object_ctor + DEFINE_ALIAS ??0bad_cast@@AAA@PBQBD@Z, bad_cast_ctor // private: __cdecl bad_cast::bad_cast(char const * const *) + DEFINE_ALIAS ??0bad_cast@@QAA@ABV0@@Z, bad_cast_copy_ctor // public: __cdecl bad_cast::bad_cast(class bad_cast const &) + DEFINE_ALIAS ??0bad_cast@@QAA@PBD@Z, bad_cast_ctor // public: __cdecl bad_cast::bad_cast(char const *) + DEFINE_ALIAS ??0bad_typeid@@QAA@ABV0@@Z, bad_typeid_copy_ctor // public: __cdecl bad_typeid::bad_typeid(class bad_typeid const &) + DEFINE_ALIAS ??0bad_typeid@@QAA@PBD@Z, bad_typeid_ctor // public: __cdecl bad_typeid::bad_typeid(char const *) + DEFINE_ALIAS ??0exception@@QAA@ABQBD@Z, exception_ctor // public: __cdecl exception::exception(char const * const &) + DEFINE_ALIAS ??0exception@@QAA@ABQBDH@Z, exception_ctor_noalloc // public: __cdecl exception::exception(char const * const &,int) + DEFINE_ALIAS ??0exception@@QAA@ABV0@@Z, exception_copy_ctor // public: __cdecl exception::exception(class exception const &) + DEFINE_ALIAS ??0exception@@QAA@XZ, exception_default_ctor // public: __cdecl exception::exception(void) + DEFINE_ALIAS ??1__non_rtti_object@@UAA@XZ, __non_rtti_object_dtor // public: virtual __cdecl __non_rtti_object::~__non_rtti_object(void) + DEFINE_ALIAS ??1bad_cast@@UAA@XZ, bad_cast_dtor // public: virtual __cdecl bad_cast::~bad_cast(void) + DEFINE_ALIAS ??1bad_typeid@@UAA@XZ, bad_typeid_dtor // public: virtual __cdecl bad_typeid::~bad_typeid(void) + DEFINE_ALIAS ??1exception@@UAA@XZ, exception_dtor // public: virtual __cdecl exception::~exception(void) + DEFINE_ALIAS ??1type_info@@UAA@XZ, type_info_dtor // public: virtual __cdecl type_info::~type_info(void) + DEFINE_ALIAS ??2@YAPAXI@Z, operator_new // void * __cdecl operator new(unsigned int) + DEFINE_ALIAS ??2@YAPAXIHPBDH@Z, operator_new_dbg // void * __cdecl operator new(unsigned int,int,char const *,int) + DEFINE_ALIAS ??3@YAXPAX@Z, operator_delete // void __cdecl operator delete(void *) + DEFINE_ALIAS ??4__non_rtti_object@@QAAAAV0@ABV0@@Z, __non_rtti_object_opequals // public: class __non_rtti_object & __cdecl __non_rtti_object::operator=(class __non_rtti_object const &) + DEFINE_ALIAS ??4bad_cast@@QAAAAV0@ABV0@@Z, bad_cast_opequals // public: class bad_cast & __cdecl bad_cast::operator=(class bad_cast const &) + DEFINE_ALIAS ??4bad_typeid@@QAAAAV0@ABV0@@Z, bad_typeid_opequals // public: class bad_typeid & __cdecl bad_typeid::operator=(class bad_typeid const &) + DEFINE_ALIAS ??4exception@@QAAAAV0@ABV0@@Z, exception_opequals // public: class exception & __cdecl exception::operator=(class exception const &) + DEFINE_ALIAS ??8type_info@@QBAHABV0@@Z, type_info_opequals_equals // public: int __cdecl type_info::operator==(class type_info const &)const + DEFINE_ALIAS ??9type_info@@QBAHABV0@@Z, type_info_opnot_equals // public: int __cdecl type_info::operator!=(class type_info const &)const + DEFINE_ALIAS ??_Fbad_cast@@QAAXXZ, bad_cast_default_ctor // public: void __cdecl bad_cast::`default constructor closure'(void) + DEFINE_ALIAS ??_Fbad_typeid@@QAAXXZ, bad_typeid_default_ctor // public: void __cdecl bad_typeid::`default constructor closure'(void) + DEFINE_ALIAS ??_U@YAPAXI@Z, operator_new // void * __cdecl operator new[](unsigned int) + DEFINE_ALIAS ??_U@YAPAXIHPBDH@Z, operator_new_dbg // void * __cdecl operator new[](unsigned int,int,char const *,int) + DEFINE_ALIAS ??_V@YAXPAX@Z, operator_delete // void __cdecl operator delete[](void *) + DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, _query_new_handler // int (__cdecl*__cdecl _query_new_handler(void))(unsigned int) + DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, _set_new_handler // int (__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned int)))(unsigned int) + DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, _set_new_mode // int __cdecl _set_new_mode(int) + DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, _set_se_translator // void (__cdecl*__cdecl _set_se_translator(void (__cdecl*)(unsigned int,struct _EXCEPTION_POINTERS *)))(unsigned int,struct _EXCEPTION_POINTERS *) + DEFINE_ALIAS ?before@type_info@@QBAHABV1@@Z, type_info_before // public: int __cdecl type_info::before(class type_info const &)const + DEFINE_ALIAS ?name@type_info@@QBAPBDXZ, type_info_name // public: char const * __cdecl type_info::name(void)const + DEFINE_ALIAS ?raw_name@type_info@@QBAPBDXZ, type_info_raw_name // public: char const * __cdecl type_info::raw_name(void)const + DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, set_terminate // void (__cdecl*__cdecl set_terminate(void (__cdecl*)(void)))(void) + DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, set_unexpected // void (__cdecl*__cdecl set_unexpected(void (__cdecl*)(void)))(void) + DEFINE_ALIAS ?terminate@@YAXXZ, terminate // void __cdecl terminate(void) + DEFINE_ALIAS ?unexpected@@YAXXZ, unexpected // void __cdecl unexpected(void) + DEFINE_ALIAS ?what@exception@@UBAPBDXZ, exception_what // public: virtual char const * __cdecl exception::what(void)const + + END +/* EOF */ diff --git a/sdk/lib/crt/except/except.cmake b/sdk/lib/crt/except/except.cmake index 656853c097c..add149de4ec 100644 --- a/sdk/lib/crt/except/except.cmake +++ b/sdk/lib/crt/except/except.cmake @@ -13,7 +13,8 @@ if(ARCH STREQUAL "i386") ) if(MSVC) list(APPEND CRT_EXCEPT_ASM_SOURCE - except/i386/cpp.s) + except/i386/cpp.s + except/i386/cpp_alias.s) endif() elseif(ARCH STREQUAL "amd64") list(APPEND LIBCNTPR_EXCEPT_SOURCE @@ -28,7 +29,8 @@ elseif(ARCH STREQUAL "amd64") ) if(MSVC) list(APPEND CRT_EXCEPT_ASM_SOURCE - except/amd64/cpp.s) + except/amd64/cpp.s + except/amd64/cpp_alias.s) endif() elseif(ARCH STREQUAL "arm") list(APPEND LIBCNTPR_EXCEPT_SOURCE @@ -53,7 +55,8 @@ elseif(ARCH STREQUAL "arm") ) if(MSVC) list(APPEND CRT_EXCEPT_ASM_SOURCE - except/arm/cpp.s) + except/arm/cpp.s + except/arm/cpp_alias.s) endif() endif() diff --git a/sdk/lib/crt/except/i386/cpp.s b/sdk/lib/crt/except/i386/cpp.s index 99e2748edd6..7c524938dd4 100644 --- a/sdk/lib/crt/except/i386/cpp.s +++ b/sdk/lib/crt/except/i386/cpp.s @@ -7,55 +7,6 @@ EXTERN _cxx_frame_handler:PROC -MACRO(DEFINE_THISCALL_ALIAS, cxxname, target) -#ifdef _USE_ML - EXTERN ___thiscall&target:PROC - ALIAS <&cxxname> = <___thiscall&target> -#else - PUBLIC cxxname - .weakref &cxxname, &target -#endif -ENDM - -DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABQBD@Z, _exception_ctor -DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABQBDH@Z, _exception_ctor_noalloc -DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABV0@@Z, _exception_copy_ctor -DEFINE_THISCALL_ALIAS ??0exception@@QAE@XZ, _exception_default_ctor -DEFINE_THISCALL_ALIAS ??1exception@@UAE@XZ, _exception_dtor -DEFINE_THISCALL_ALIAS ??4exception@@QAEAAV0@ABV0@@Z, _exception_opequals -DEFINE_THISCALL_ALIAS ??_Eexception@@UAEPAXI@Z, _exception_vector_dtor -DEFINE_THISCALL_ALIAS ??_Gexception@@UAEPAXI@Z, _exception_scalar_dtor -DEFINE_THISCALL_ALIAS ?what@exception@@UBEPBDXZ, _exception_what -DEFINE_THISCALL_ALIAS ??0bad_typeid@@QAE@ABV0@@Z, _bad_typeid_copy_ctor -DEFINE_THISCALL_ALIAS ??0bad_typeid@@QAE@PBD@Z, _bad_typeid_ctor -DEFINE_THISCALL_ALIAS ??_Fbad_typeid@@QAEXXZ, _bad_typeid_default_ctor -DEFINE_THISCALL_ALIAS ??1bad_typeid@@UAE@XZ, _bad_typeid_dtor -DEFINE_THISCALL_ALIAS ??4bad_typeid@@QAEAAV0@ABV0@@Z, _bad_typeid_opequals -DEFINE_THISCALL_ALIAS ??_Ebad_typeid@@UAEPAXI@Z, _bad_typeid_vector_dtor -DEFINE_THISCALL_ALIAS ??_Gbad_typeid@@UAEPAXI@Z, _bad_typeid_scalar_dtor -DEFINE_THISCALL_ALIAS ??0__non_rtti_object@@QAE@ABV0@@Z, ___non_rtti_object_copy_ctor -DEFINE_THISCALL_ALIAS ??0__non_rtti_object@@QAE@PBD@Z, ___non_rtti_object_ctor -DEFINE_THISCALL_ALIAS ??1__non_rtti_object@@UAE@XZ, ___non_rtti_object_dtor -DEFINE_THISCALL_ALIAS ??4__non_rtti_object@@QAEAAV0@ABV0@@Z, ___non_rtti_object_opequals -DEFINE_THISCALL_ALIAS ??_E__non_rtti_object@@UAEPAXI@Z, ___non_rtti_object_vector_dtor -DEFINE_THISCALL_ALIAS ??_G__non_rtti_object@@UAEPAXI@Z, ___non_rtti_object_scalar_dtor -DEFINE_THISCALL_ALIAS ??0bad_cast@@AAE@PBQBD@Z, _bad_cast_ctor -DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@ABQBD@Z, _bad_cast_ctor -DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@ABV0@@Z, _bad_cast_copy_ctor -DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@PBD@Z, _bad_cast_ctor_charptr -DEFINE_THISCALL_ALIAS ??_Fbad_cast@@QAEXXZ, _bad_cast_default_ctor -DEFINE_THISCALL_ALIAS ??1bad_cast@@UAE@XZ, _bad_cast_dtor -DEFINE_THISCALL_ALIAS ??4bad_cast@@QAEAAV0@ABV0@@Z, _bad_cast_opequals -DEFINE_THISCALL_ALIAS ??_Ebad_cast@@UAEPAXI@Z, _bad_cast_vector_dtor -DEFINE_THISCALL_ALIAS ??_Gbad_cast@@UAEPAXI@Z, _bad_cast_scalar_dtor -DEFINE_THISCALL_ALIAS ??8type_info@@QBEHABV0@@Z, _type_info_opequals_equals -DEFINE_THISCALL_ALIAS ??9type_info@@QBEHABV0@@Z, _type_info_opnot_equals -DEFINE_THISCALL_ALIAS ?before@type_info@@QBEHABV1@@Z, _type_info_before -DEFINE_THISCALL_ALIAS ??1type_info@@UAE@XZ, _type_info_dtor -DEFINE_THISCALL_ALIAS ?name@type_info@@QBEPBDXZ, _type_info_name -DEFINE_THISCALL_ALIAS ?raw_name@type_info@@QBEPBDXZ, _type_info_raw_name - - #undef _MSVCRT_ MACRO(START_VTABLE, shortname, cxxname) EXTERN _&shortname&_rtti:PROC @@ -80,36 +31,6 @@ DEFINE_EXCEPTION_VTABLE bad_typeid, ??_7bad_typeid@@6B@ DEFINE_EXCEPTION_VTABLE bad_cast, ??_7bad_cast@@6B@ DEFINE_EXCEPTION_VTABLE __non_rtti_object, ??_7__non_rtti_object@@6B@ -EXTERN _operator_delete:PROC -PUBLIC ??3@YAXPAX@Z -??3@YAXPAX@Z: - jmp _operator_delete - -EXTERN _operator_new:PROC -PUBLIC ??_U@YAPAXI@Z -??_U@YAPAXI@Z: - jmp _operator_new - - -MACRO(DEFINE_ALIAS, alias, orig, type) -EXTERN &orig:&type -ALIAS <&alias> = <&orig> -ENDM - -DEFINE_ALIAS ??_V@YAXPAX@Z, _operator_delete, PROC -DEFINE_ALIAS ??2@YAPAXI@Z, _operator_new, PROC -DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, __query_new_handler, PROC -DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, __set_new_handler, PROC -DEFINE_ALIAS ?set_new_handler@@YAP6AXXZP6AXXZ@Z, _set_new_handler, PROC -DEFINE_ALIAS ?_query_new_mode@@YAHXZ, __query_new_mode, PROC -DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, __set_new_mode, PROC -DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, __set_se_translator, PROC -DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, _set_terminate, PROC -DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, _set_unexpected, PROC -DEFINE_ALIAS ?terminate@@YAXXZ, _terminate, PROC -DEFINE_ALIAS ?unexpected@@YAXXZ, _unexpected, PROC - - // void call_copy_ctor( void *func, void *this, void *src, int has_vbase ); PUBLIC _call_copy_ctor _call_copy_ctor: diff --git a/sdk/lib/crt/except/i386/cpp_alias.s b/sdk/lib/crt/except/i386/cpp_alias.s new file mode 100644 index 00000000000..384a3ed0f52 --- /dev/null +++ b/sdk/lib/crt/except/i386/cpp_alias.s @@ -0,0 +1,85 @@ + + +#include + +.code +.align 4 + +MACRO(DEFINE_THISCALL_ALIAS, cxxname, target) +#ifdef _USE_ML + EXTERN ___thiscall&target:PROC + ALIAS <&cxxname> = <___thiscall&target> +#else + PUBLIC cxxname + .weakref &cxxname, &target +#endif +ENDM + +DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABQBD@Z, _exception_ctor +DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABQBDH@Z, _exception_ctor_noalloc +DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABV0@@Z, _exception_copy_ctor +DEFINE_THISCALL_ALIAS ??0exception@@QAE@XZ, _exception_default_ctor +DEFINE_THISCALL_ALIAS ??1exception@@UAE@XZ, _exception_dtor +DEFINE_THISCALL_ALIAS ??4exception@@QAEAAV0@ABV0@@Z, _exception_opequals +DEFINE_THISCALL_ALIAS ??_Eexception@@UAEPAXI@Z, _exception_vector_dtor +DEFINE_THISCALL_ALIAS ??_Gexception@@UAEPAXI@Z, _exception_scalar_dtor +DEFINE_THISCALL_ALIAS ?what@exception@@UBEPBDXZ, _exception_what +DEFINE_THISCALL_ALIAS ??0bad_typeid@@QAE@ABV0@@Z, _bad_typeid_copy_ctor +DEFINE_THISCALL_ALIAS ??0bad_typeid@@QAE@PBD@Z, _bad_typeid_ctor +DEFINE_THISCALL_ALIAS ??_Fbad_typeid@@QAEXXZ, _bad_typeid_default_ctor +DEFINE_THISCALL_ALIAS ??1bad_typeid@@UAE@XZ, _bad_typeid_dtor +DEFINE_THISCALL_ALIAS ??4bad_typeid@@QAEAAV0@ABV0@@Z, _bad_typeid_opequals +DEFINE_THISCALL_ALIAS ??_Ebad_typeid@@UAEPAXI@Z, _bad_typeid_vector_dtor +DEFINE_THISCALL_ALIAS ??_Gbad_typeid@@UAEPAXI@Z, _bad_typeid_scalar_dtor +DEFINE_THISCALL_ALIAS ??0__non_rtti_object@@QAE@ABV0@@Z, ___non_rtti_object_copy_ctor +DEFINE_THISCALL_ALIAS ??0__non_rtti_object@@QAE@PBD@Z, ___non_rtti_object_ctor +DEFINE_THISCALL_ALIAS ??1__non_rtti_object@@UAE@XZ, ___non_rtti_object_dtor +DEFINE_THISCALL_ALIAS ??4__non_rtti_object@@QAEAAV0@ABV0@@Z, ___non_rtti_object_opequals +DEFINE_THISCALL_ALIAS ??_E__non_rtti_object@@UAEPAXI@Z, ___non_rtti_object_vector_dtor +DEFINE_THISCALL_ALIAS ??_G__non_rtti_object@@UAEPAXI@Z, ___non_rtti_object_scalar_dtor +DEFINE_THISCALL_ALIAS ??0bad_cast@@AAE@PBQBD@Z, _bad_cast_ctor +DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@ABQBD@Z, _bad_cast_ctor +DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@ABV0@@Z, _bad_cast_copy_ctor +DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@PBD@Z, _bad_cast_ctor_charptr +DEFINE_THISCALL_ALIAS ??_Fbad_cast@@QAEXXZ, _bad_cast_default_ctor +DEFINE_THISCALL_ALIAS ??1bad_cast@@UAE@XZ, _bad_cast_dtor +DEFINE_THISCALL_ALIAS ??4bad_cast@@QAEAAV0@ABV0@@Z, _bad_cast_opequals +DEFINE_THISCALL_ALIAS ??_Ebad_cast@@UAEPAXI@Z, _bad_cast_vector_dtor +DEFINE_THISCALL_ALIAS ??_Gbad_cast@@UAEPAXI@Z, _bad_cast_scalar_dtor +DEFINE_THISCALL_ALIAS ??8type_info@@QBEHABV0@@Z, _type_info_opequals_equals +DEFINE_THISCALL_ALIAS ??9type_info@@QBEHABV0@@Z, _type_info_opnot_equals +DEFINE_THISCALL_ALIAS ?before@type_info@@QBEHABV1@@Z, _type_info_before +DEFINE_THISCALL_ALIAS ??1type_info@@UAE@XZ, _type_info_dtor +DEFINE_THISCALL_ALIAS ?name@type_info@@QBEPBDXZ, _type_info_name +DEFINE_THISCALL_ALIAS ?raw_name@type_info@@QBEPBDXZ, _type_info_raw_name + +EXTERN _operator_delete:PROC +PUBLIC ??3@YAXPAX@Z +??3@YAXPAX@Z: + jmp _operator_delete + +EXTERN _operator_new:PROC +PUBLIC ??_U@YAPAXI@Z +??_U@YAPAXI@Z: + jmp _operator_new + +MACRO(DEFINE_ALIAS, alias, orig, type) +EXTERN &orig:&type +ALIAS <&alias> = <&orig> +ENDM + +DEFINE_ALIAS ??_V@YAXPAX@Z, _operator_delete, PROC +DEFINE_ALIAS ??2@YAPAXI@Z, _operator_new, PROC +DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, __query_new_handler, PROC +DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, __set_new_handler, PROC +DEFINE_ALIAS ?set_new_handler@@YAP6AXXZP6AXXZ@Z, _set_new_handler, PROC +DEFINE_ALIAS ?_query_new_mode@@YAHXZ, __query_new_mode, PROC +DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, __set_new_mode, PROC +DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, __set_se_translator, PROC +DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, _set_terminate, PROC +DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, _set_unexpected, PROC +DEFINE_ALIAS ?terminate@@YAXXZ, _terminate, PROC +DEFINE_ALIAS ?unexpected@@YAXXZ, _unexpected, PROC + +END +