|
| 1 | +/* |
| 2 | + * PROJECT: ReactOS msvcrt.dll |
| 3 | + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) |
| 4 | + * PURPOSE: x86 C++ MSVC aliases for cpp.c |
| 5 | + * COPYRIGHT: Copyright 2014-2024 Wine team |
| 6 | + * Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org> |
| 7 | + */ |
| 8 | + |
| 9 | +#include <asm.inc> |
| 10 | + |
| 11 | +// See msvcrt/cpp.c |
| 12 | + |
| 13 | +.code |
| 14 | + |
| 15 | +MACRO(DEFINE_THISCALL_ALIAS, cxxname, target) |
| 16 | +#ifdef _USE_ML |
| 17 | + EXTERN ___thiscall&target:PROC |
| 18 | + ALIAS <&cxxname> = <___thiscall&target> |
| 19 | +#else |
| 20 | + PUBLIC cxxname |
| 21 | + .weakref &cxxname, &target |
| 22 | +#endif |
| 23 | +ENDM |
| 24 | + |
| 25 | +DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABQBD@Z, _exception_ctor |
| 26 | +DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABQBDH@Z, _exception_ctor_noalloc |
| 27 | +DEFINE_THISCALL_ALIAS ??0exception@@QAE@ABV0@@Z, _exception_copy_ctor |
| 28 | +DEFINE_THISCALL_ALIAS ??0exception@@QAE@XZ, _exception_default_ctor |
| 29 | +DEFINE_THISCALL_ALIAS ??1exception@@UAE@XZ, _exception_dtor |
| 30 | +DEFINE_THISCALL_ALIAS ??4exception@@QAEAAV0@ABV0@@Z, _exception_opequals |
| 31 | +DEFINE_THISCALL_ALIAS ??_Eexception@@UAEPAXI@Z, _exception_vector_dtor |
| 32 | +DEFINE_THISCALL_ALIAS ??_Gexception@@UAEPAXI@Z, _exception_scalar_dtor |
| 33 | +DEFINE_THISCALL_ALIAS ?what@exception@@UBEPBDXZ, _exception_what |
| 34 | +DEFINE_THISCALL_ALIAS ??0bad_typeid@@QAE@ABV0@@Z, _bad_typeid_copy_ctor |
| 35 | +DEFINE_THISCALL_ALIAS ??0bad_typeid@@QAE@PBD@Z, _bad_typeid_ctor |
| 36 | +DEFINE_THISCALL_ALIAS ??_Fbad_typeid@@QAEXXZ, _bad_typeid_default_ctor |
| 37 | +DEFINE_THISCALL_ALIAS ??1bad_typeid@@UAE@XZ, _bad_typeid_dtor |
| 38 | +DEFINE_THISCALL_ALIAS ??4bad_typeid@@QAEAAV0@ABV0@@Z, _bad_typeid_opequals |
| 39 | +DEFINE_THISCALL_ALIAS ??_Ebad_typeid@@UAEPAXI@Z, _bad_typeid_vector_dtor |
| 40 | +DEFINE_THISCALL_ALIAS ??_Gbad_typeid@@UAEPAXI@Z, _bad_typeid_scalar_dtor |
| 41 | +DEFINE_THISCALL_ALIAS ??0__non_rtti_object@@QAE@ABV0@@Z, ___non_rtti_object_copy_ctor |
| 42 | +DEFINE_THISCALL_ALIAS ??0__non_rtti_object@@QAE@PBD@Z, ___non_rtti_object_ctor |
| 43 | +DEFINE_THISCALL_ALIAS ??1__non_rtti_object@@UAE@XZ, ___non_rtti_object_dtor |
| 44 | +DEFINE_THISCALL_ALIAS ??4__non_rtti_object@@QAEAAV0@ABV0@@Z, ___non_rtti_object_opequals |
| 45 | +DEFINE_THISCALL_ALIAS ??_E__non_rtti_object@@UAEPAXI@Z, ___non_rtti_object_vector_dtor |
| 46 | +DEFINE_THISCALL_ALIAS ??_G__non_rtti_object@@UAEPAXI@Z, ___non_rtti_object_scalar_dtor |
| 47 | +DEFINE_THISCALL_ALIAS ??0bad_cast@@AAE@PBQBD@Z, _bad_cast_ctor |
| 48 | +DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@ABQBD@Z, _bad_cast_ctor |
| 49 | +DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@ABV0@@Z, _bad_cast_copy_ctor |
| 50 | +DEFINE_THISCALL_ALIAS ??0bad_cast@@QAE@PBD@Z, _bad_cast_ctor_charptr |
| 51 | +DEFINE_THISCALL_ALIAS ??_Fbad_cast@@QAEXXZ, _bad_cast_default_ctor |
| 52 | +DEFINE_THISCALL_ALIAS ??1bad_cast@@UAE@XZ, _bad_cast_dtor |
| 53 | +DEFINE_THISCALL_ALIAS ??4bad_cast@@QAEAAV0@ABV0@@Z, _bad_cast_opequals |
| 54 | +DEFINE_THISCALL_ALIAS ??_Ebad_cast@@UAEPAXI@Z, _bad_cast_vector_dtor |
| 55 | +DEFINE_THISCALL_ALIAS ??_Gbad_cast@@UAEPAXI@Z, _bad_cast_scalar_dtor |
| 56 | +DEFINE_THISCALL_ALIAS ??8type_info@@QBEHABV0@@Z, _type_info_opequals_equals |
| 57 | +DEFINE_THISCALL_ALIAS ??9type_info@@QBEHABV0@@Z, _type_info_opnot_equals |
| 58 | +DEFINE_THISCALL_ALIAS ?before@type_info@@QBEHABV1@@Z, _type_info_before |
| 59 | +DEFINE_THISCALL_ALIAS ??1type_info@@UAE@XZ, _type_info_dtor |
| 60 | +DEFINE_THISCALL_ALIAS ?name@type_info@@QBEPBDXZ, _type_info_name |
| 61 | +DEFINE_THISCALL_ALIAS ?raw_name@type_info@@QBEPBDXZ, _type_info_raw_name |
| 62 | + |
| 63 | +EXTERN _operator_delete:PROC |
| 64 | +PUBLIC ??3@YAXPAX@Z |
| 65 | +??3@YAXPAX@Z: |
| 66 | + jmp _operator_delete |
| 67 | + |
| 68 | +EXTERN _operator_new:PROC |
| 69 | +PUBLIC ??_U@YAPAXI@Z |
| 70 | +??_U@YAPAXI@Z: |
| 71 | + jmp _operator_new |
| 72 | + |
| 73 | +MACRO(DEFINE_ALIAS, alias, orig, type) |
| 74 | +EXTERN &orig:&type |
| 75 | +ALIAS <&alias> = <&orig> |
| 76 | +ENDM |
| 77 | + |
| 78 | +DEFINE_ALIAS ??_V@YAXPAX@Z, _operator_delete, PROC |
| 79 | +DEFINE_ALIAS ??2@YAPAXI@Z, _operator_new, PROC |
| 80 | +DEFINE_ALIAS ??2@YAPAXIHPBDH@Z, _operator_new, PROC |
| 81 | +DEFINE_ALIAS ??_U@YAPAXIHPBDH@Z, _operator_new_dbg, PROC |
| 82 | +DEFINE_ALIAS ?_query_new_handler@@YAP6AHI@ZXZ, __query_new_handler, PROC |
| 83 | +DEFINE_ALIAS ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z, __set_new_handler, PROC |
| 84 | +DEFINE_ALIAS ?set_new_handler@@YAP6AXXZP6AXXZ@Z, _set_new_handler, PROC |
| 85 | +DEFINE_ALIAS ?_query_new_mode@@YAHXZ, __query_new_mode, PROC |
| 86 | +DEFINE_ALIAS ?_set_new_mode@@YAHH@Z, __set_new_mode, PROC |
| 87 | +DEFINE_ALIAS ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z, __set_se_translator, PROC |
| 88 | +DEFINE_ALIAS ?set_terminate@@YAP6AXXZP6AXXZ@Z, _set_terminate, PROC |
| 89 | +DEFINE_ALIAS ?set_unexpected@@YAP6AXXZP6AXXZ@Z, _set_unexpected, PROC |
| 90 | +DEFINE_ALIAS ?terminate@@YAXXZ, _terminate, PROC |
| 91 | +DEFINE_ALIAS ?unexpected@@YAXXZ, _unexpected, PROC |
| 92 | + |
| 93 | +END |
0 commit comments