Hi Uwe / Alexander,
I've been trying to get the 'thiscall' issue sorted out, but its proving
slightly interesting :-)
The issue is as follows: Post-change I have a routine like:
void MSVCRT___non_rtti_object_copy_ctor(const __non_rtti_object * rhs,
CONTEXT86* context)
{
__non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
MSVCRT_bad_typeid_copy_ctor(&_this->base,&rhs->base); <<--- Type
errors during compile
}
This will not compile, because I have ALSO changed
MSVCRT_bad_typeid_copy_ctor as it too suffers from the _thiscall issue.
(Even if I switch the parms around to account for moving the this to the
last parm).
void MSVCRT_bad_typeid_copy_ctor(const bad_typeid * rhs, CONTEXT86*
context)
{
bad_typeid *_this = (bad_typeid *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
}
Ie it now expects a context86 structure with ecx pointing to 'this'
(this I guess is &_this->base). (And note it suffers from the same
problem in the call to MSVCRT_exception_copy_ctor!)
Now I can change the routines to say for example:
context->Ecx = (DWORD)&_this->base;
MSVCRT_bad_typeid_copy_ctor(&rhs->base, context);
But I feel this is making a hack even worse, as the context isnt really
anymore as other registers would have changed. Is this acceptable?
If so, how does this patch look (I havent tried it against the original
culprit just yet, but will do assuming the idea is right).
Jason
Index: dlls/msvcrt/cpp.c
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/cpp.c,v
retrieving revision 1.12
diff -u -r1.12 cpp.c
--- dlls/msvcrt/cpp.c 19 Jul 2002 03:24:50 -0000 1.12
+++ dlls/msvcrt/cpp.c 24 May 2003 19:40:48 -0000
@@ -97,8 +97,9 @@
/******************************************************************
* ??0exception@@QAE@ABQBD@Z (MSVCRT.@)
*/
-void MSVCRT_exception_ctor(exception * _this, const char ** name)
+void MSVCRT_exception_ctor(const char ** name, CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p %s)\n",_this,*name);
_this->vtable = exception_vtable;
_this->name = *name;
@@ -109,8 +110,9 @@
/******************************************************************
* ??0exception@@QAE@ABV0@@Z (MSVCRT.@)
*/
-void MSVCRT_exception_copy_ctor(exception * _this, const exception * rhs)
+void MSVCRT_exception_copy_ctor(const exception * rhs, CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
if (_this != rhs)
memcpy (_this, rhs, sizeof (*_this));
@@ -120,8 +122,9 @@
/******************************************************************
* ??0exception@@QAE@XZ (MSVCRT.@)
*/
-void MSVCRT_exception_default_ctor(exception * _this)
+void MSVCRT_exception_default_ctor(CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p)\n",_this);
_this->vtable = exception_vtable;
_this->name = "";
@@ -131,16 +134,18 @@
/******************************************************************
* ??1exception@@UAE@XZ (MSVCRT.@)
*/
-void MSVCRT_exception_dtor(exception * _this)
+void MSVCRT_exception_dtor(CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p)\n",_this);
}
/******************************************************************
* ??4exception@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
-exception * MSVCRT_exception_opequals(exception * _this, const exception * rhs)
+exception * MSVCRT_exception_opequals(const exception * rhs, CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
memcpy (_this, rhs, sizeof (*_this));
TRACE("name = %s\n",_this->name);
@@ -150,8 +155,9 @@
/******************************************************************
* ??_Eexception@@UAEPAXI@Z (MSVCRT.@)
*/
-void * MSVCRT_exception__unknown_E(exception * _this, unsigned int arg1)
+void * MSVCRT_exception__unknown_E(unsigned int arg1, CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p %d)\n",_this,arg1);
_purecall();
return NULL;
@@ -160,8 +166,9 @@
/******************************************************************
* ??_Gexception@@UAEPAXI@Z (MSVCRT.@)
*/
-void * MSVCRT_exception__unknown_G(exception * _this, unsigned int arg1)
+void * MSVCRT_exception__unknown_G(unsigned int arg1, CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p %d)\n",_this,arg1);
_purecall();
return NULL;
@@ -170,8 +177,9 @@
/******************************************************************
* ?what@exception@@UBEPBDXZ (MSVCRT.@)
*/
-const char * MSVCRT_what_exception(exception * _this)
+const char * MSVCRT_what_exception(CONTEXT86* context)
{
+ exception *_this = (exception *)context->Ecx;
TRACE("(%p) returning %s\n",_this,_this->name);
return _this->name;
}
@@ -237,77 +245,89 @@
/******************************************************************
* ??0bad_typeid@@QAE@ABV0@@Z (MSVCRT.@)
*/
-void MSVCRT_bad_typeid_copy_ctor(bad_typeid * _this, const bad_typeid * rhs)
+void MSVCRT_bad_typeid_copy_ctor(const bad_typeid * rhs, CONTEXT86* context)
{
+ bad_typeid *_this = (bad_typeid *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
- MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_copy_ctor(&rhs->base, context);
}
/******************************************************************
* ??0bad_typeid@@QAE@PBD@Z (MSVCRT.@)
*/
-void MSVCRT_bad_typeid_ctor(bad_typeid * _this, const char * name)
+void MSVCRT_bad_typeid_ctor(const char * name, CONTEXT86* context)
{
+ bad_typeid *_this = (bad_typeid *)context->Ecx;
TRACE("(%p %s)\n",_this,name);
- MSVCRT_exception_ctor(&_this->base, &name);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_ctor(&name, context);
_this->base.vtable = bad_typeid_vtable;
}
/******************************************************************
* ??1bad_typeid@@UAE@XZ (MSVCRT.@)
*/
-void MSVCRT_bad_typeid_dtor(bad_typeid * _this)
+void MSVCRT_bad_typeid_dtor(CONTEXT86* context)
{
+ bad_typeid *_this = (bad_typeid *)context->Ecx;
TRACE("(%p)\n",_this);
- MSVCRT_exception_dtor(&_this->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_dtor(context);
}
/******************************************************************
* ??4bad_typeid@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
-bad_typeid * MSVCRT_bad_typeid_opequals(bad_typeid * _this, const bad_typeid * rhs)
+bad_typeid * MSVCRT_bad_typeid_opequals(const bad_typeid * rhs, CONTEXT86* context)
{
+ bad_typeid *_this = (bad_typeid *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
- MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_copy_ctor(&rhs->base, context);
return _this;
}
/******************************************************************
* ??0__non_rtti_object@@QAE@ABV0@@Z (MSVCRT.@)
*/
-void MSVCRT___non_rtti_object_copy_ctor(__non_rtti_object * _this,
- const __non_rtti_object * rhs)
+void MSVCRT___non_rtti_object_copy_ctor(const __non_rtti_object * rhs, CONTEXT86* context)
{
+ __non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
- MSVCRT_bad_typeid_copy_ctor(&_this->base,&rhs->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_bad_typeid_copy_ctor(&rhs->base, context);
}
/******************************************************************
* ??0__non_rtti_object@@QAE@PBD@Z (MSVCRT.@)
*/
-void MSVCRT___non_rtti_object_ctor(__non_rtti_object * _this,
- const char * name)
+void MSVCRT___non_rtti_object_ctor(const char * name, CONTEXT86* context)
{
+ __non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p %s)\n",_this,name);
- MSVCRT_bad_typeid_ctor(&_this->base,name);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_bad_typeid_ctor(name, context);
_this->base.base.vtable = __non_rtti_object_vtable;
}
/******************************************************************
* ??1__non_rtti_object@@UAE@XZ (MSVCRT.@)
*/
-void MSVCRT___non_rtti_object_dtor(__non_rtti_object * _this)
+void MSVCRT___non_rtti_object_dtor(CONTEXT86* context)
{
+ __non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p)\n",_this);
- MSVCRT_bad_typeid_dtor(&_this->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_bad_typeid_dtor(context);
}
/******************************************************************
* ??4__non_rtti_object@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
-__non_rtti_object * MSVCRT___non_rtti_object_opequals(__non_rtti_object * _this,
- const __non_rtti_object *rhs)
+__non_rtti_object * MSVCRT___non_rtti_object_opequals(const __non_rtti_object *rhs, CONTEXT86* context)
{
+ __non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
memcpy (_this, rhs, sizeof (*_this));
TRACE("name = %s\n",_this->base.base.name);
@@ -317,8 +337,9 @@
/******************************************************************
* ??_E__non_rtti_object@@UAEPAXI@Z (MSVCRT.@)
*/
-void * MSVCRT___non_rtti_object__unknown_E(__non_rtti_object * _this, unsigned int arg1)
+void * MSVCRT___non_rtti_object__unknown_E(unsigned int arg1, CONTEXT86* context)
{
+ __non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p %d)\n",_this,arg1);
_purecall();
return NULL;
@@ -327,8 +348,9 @@
/******************************************************************
* ??_G__non_rtti_object@@UAEPAXI@Z (MSVCRT.@)
*/
-void * MSVCRT___non_rtti_object__unknown_G(__non_rtti_object * _this, unsigned int arg1)
+void * MSVCRT___non_rtti_object__unknown_G(unsigned int arg1, CONTEXT86* context)
{
+ __non_rtti_object *_this = (__non_rtti_object *)context->Ecx;
TRACE("(%p %d)\n",_this,arg1);
_purecall();
return NULL;
@@ -337,46 +359,55 @@
/******************************************************************
* ??0bad_cast@@QAE@ABQBD@Z (MSVCRT.@)
*/
-void MSVCRT_bad_cast_ctor(bad_cast * _this, const char ** name)
+void MSVCRT_bad_cast_ctor(const char ** name, CONTEXT86* context)
{
+ bad_cast *_this = (bad_cast *)context->Ecx;
TRACE("(%p %s)\n",_this,*name);
- MSVCRT_exception_ctor(&_this->base, name);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_ctor(name, context);
_this->base.vtable = bad_cast_vtable;
}
/******************************************************************
* ??0bad_cast@@QAE@ABV0@@Z (MSVCRT.@)
*/
-void MSVCRT_bad_cast_copy_ctor(bad_cast * _this, const bad_cast * rhs)
+void MSVCRT_bad_cast_copy_ctor(const bad_cast * rhs, CONTEXT86* context)
{
+ bad_cast *_this = (bad_cast *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
- MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_copy_ctor(&rhs->base, context);
}
/******************************************************************
* ??1bad_cast@@UAE@XZ (MSVCRT.@)
*/
-void MSVCRT_bad_cast_dtor(bad_cast * _this)
+void MSVCRT_bad_cast_dtor(CONTEXT86* context)
{
+ bad_cast *_this = (bad_cast *)context->Ecx;
TRACE("(%p)\n",_this);
- MSVCRT_exception_dtor(&_this->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_dtor(context);
}
/******************************************************************
* ??4bad_cast@@QAEAAV0@ABV0@@Z (MSVCRT.@)
*/
-bad_cast * MSVCRT_bad_cast_opequals(bad_cast * _this, const bad_cast * rhs)
+bad_cast * MSVCRT_bad_cast_opequals(const bad_cast * rhs, CONTEXT86* context)
{
+ bad_cast *_this = (bad_cast *)context->Ecx;
TRACE("(%p %p)\n",_this,rhs);
- MSVCRT_exception_copy_ctor(&_this->base,&rhs->base);
+ context->Ecx = (DWORD)&_this->base;
+ MSVCRT_exception_copy_ctor(&rhs->base, context);
return _this;
}
/******************************************************************
* ??8type_info@@QBEHABV0@@Z (MSVCRT.@)
*/
-int __stdcall MSVCRT_type_info_opequals_equals(type_info * _this, const type_info * rhs)
+int __stdcall MSVCRT_type_info_opequals_equals(const type_info * rhs, CONTEXT86* context)
{
+ type_info *_this = (type_info *)context->Ecx;
TRACE("(%p %p) returning %d\n",_this,rhs,_this->name == rhs->name);
return _this->name == rhs->name;
}
@@ -384,8 +415,9 @@
/******************************************************************
* ??9type_info@@QBEHABV0@@Z (MSVCRT.@)
*/
-int __stdcall MSVCRT_type_info_opnot_equals(type_info * _this, const type_info * rhs)
+int __stdcall MSVCRT_type_info_opnot_equals(const type_info * rhs, CONTEXT86* context)
{
+ type_info *_this = (type_info *)context->Ecx;
TRACE("(%p %p) returning %d\n",_this,rhs,_this->name == rhs->name);
return _this->name != rhs->name;
}
@@ -393,8 +425,9 @@
/******************************************************************
* ??1type_info@@UAE@XZ (MSVCRT.@)
*/
-void MSVCRT_type_info_dtor(type_info * _this)
+void MSVCRT_type_info_dtor(CONTEXT86* context)
{
+ type_info *_this = (type_info *)context->Ecx;
TRACE("(%p)\n",_this);
if (_this->data)
MSVCRT_free(_this->data);
@@ -403,8 +436,9 @@
/******************************************************************
* ?name@type_info@@QBEPBDXZ (MSVCRT.@)
*/
-const char * __stdcall MSVCRT_type_info_name(type_info * _this)
+const char * __stdcall MSVCRT_type_info_name(CONTEXT86* context)
{
+ type_info *_this = (type_info *)context->Ecx;
TRACE("(%p) returning %s\n",_this,_this->name);
return _this->name;
}
@@ -412,8 +446,9 @@
/******************************************************************
* ?raw_name@type_info@@QBEPBDXZ (MSVCRT.@)
*/
-const char * __stdcall MSVCRT_type_info_raw_name(type_info * _this)
+const char * __stdcall MSVCRT_type_info_raw_name(CONTEXT86* context)
{
+ type_info *_this = (type_info *)context->Ecx;
TRACE("(%p) returning %s\n",_this,_this->name);
return _this->name;
}
Index: dlls/msvcrt/msvcrt.spec
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/msvcrt.spec,v
retrieving revision 1.72
diff -u -r1.72 msvcrt.spec
--- dlls/msvcrt/msvcrt.spec 12 May 2003 03:31:16 -0000 1.72
+++ dlls/msvcrt/msvcrt.spec 24 May 2003 19:40:49 -0000
@@ -1,56 +1,56 @@
# msvcrt.dll - MS VC++ Run Time Library
@ cdecl $I10_OUTPUT() MSVCRT_I10_OUTPUT
-@ cdecl ??0__non_rtti_object@@QAE@ABV0@@Z(ptr ptr) MSVCRT___non_rtti_object_copy_ctor
-@ cdecl ??0__non_rtti_object@@QAE@PBD@Z(ptr ptr) MSVCRT___non_rtti_object_ctor
-@ cdecl ??0bad_cast@@QAE@ABQBD@Z(ptr ptr) MSVCRT_bad_cast_ctor
-@ cdecl ??0bad_cast@@QAE@ABV0@@Z(ptr ptr) MSVCRT_bad_cast_copy_ctor
-@ cdecl ??0bad_typeid@@QAE@ABV0@@Z(ptr ptr) MSVCRT_bad_typeid_copy_ctor
-@ cdecl ??0bad_typeid@@QAE@PBD@Z(ptr ptr) MSVCRT_bad_typeid_ctor
-@ cdecl ??0exception@@QAE@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor
-@ cdecl ??0exception@@QAE@ABV0@@Z(ptr ptr) MSVCRT_exception_copy_ctor
-@ cdecl ??0exception@@QAE@XZ(ptr) MSVCRT_exception_default_ctor
-@ cdecl ??1__non_rtti_object@@UAE@XZ(ptr) MSVCRT___non_rtti_object_dtor
-@ cdecl ??1bad_cast@@UAE@XZ(ptr) MSVCRT_bad_cast_dtor
-@ cdecl ??1bad_typeid@@UAE@XZ(ptr) MSVCRT_bad_typeid_dtor
-@ cdecl ??1exception@@UAE@XZ(ptr) MSVCRT_exception_dtor
-@ cdecl ??1type_info@@UAE@XZ(ptr) MSVCRT_type_info_dtor
+@ cdecl -register ??0__non_rtti_object@@QAE@ABV0@@Z(ptr) MSVCRT___non_rtti_object_copy_ctor
+@ cdecl -register ??0__non_rtti_object@@QAE@PBD@Z(ptr) MSVCRT___non_rtti_object_ctor
+@ cdecl -register ??0bad_cast@@QAE@ABQBD@Z(ptr) MSVCRT_bad_cast_ctor
+@ cdecl -register ??0bad_cast@@QAE@ABV0@@Z(ptr) MSVCRT_bad_cast_copy_ctor
+@ cdecl -register ??0bad_typeid@@QAE@ABV0@@Z(ptr) MSVCRT_bad_typeid_copy_ctor
+@ cdecl -register ??0bad_typeid@@QAE@PBD@Z(ptr) MSVCRT_bad_typeid_ctor
+@ cdecl -register ??0exception@@QAE@ABQBD@Z(ptr) MSVCRT_exception_ctor
+@ cdecl -register ??0exception@@QAE@ABV0@@Z(ptr) MSVCRT_exception_copy_ctor
+@ cdecl -register ??0exception@@QAE@XZ() MSVCRT_exception_default_ctor
+@ cdecl -register ??1__non_rtti_object@@UAE@XZ() MSVCRT___non_rtti_object_dtor
+@ cdecl -register ??1bad_cast@@UAE@XZ() MSVCRT_bad_cast_dtor
+@ cdecl -register ??1bad_typeid@@UAE@XZ() MSVCRT_bad_typeid_dtor
+@ cdecl -register ??1exception@@UAE@XZ() MSVCRT_exception_dtor
+@ cdecl -register ??1type_info@@UAE@XZ() MSVCRT_type_info_dtor
@ cdecl ??2@YAPAXI@Z(long) MSVCRT_operator_new
@ cdecl ??_U@YAPAXI@Z(long) MSVCRT_operator_new
@ cdecl ??3@YAXPAX@Z(ptr) MSVCRT_operator_delete
@ cdecl ??_V@YAXPAX@Z(ptr) MSVCRT_operator_delete
-@ cdecl ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) MSVCRT___non_rtti_object_opequals
-@ cdecl ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr ptr) MSVCRT_bad_cast_opequals
-@ cdecl ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr ptr)MSVCRT_bad_typeid_opequals
-@ cdecl ??4exception@@QAEAAV0@ABV0@@Z(ptr ptr) MSVCRT_exception_opequals
-@ stdcall ??8type_info@@QBEHABV0@@Z(ptr ptr) MSVCRT_type_info_opequals_equals
-@ stdcall ??9type_info@@QBEHABV0@@Z(ptr ptr) MSVCRT_type_info_opnot_equals
+@ cdecl -register ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr) MSVCRT___non_rtti_object_opequals
+@ cdecl -register ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr) MSVCRT_bad_cast_opequals
+@ cdecl -register ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr)MSVCRT_bad_typeid_opequals
+@ cdecl -register ??4exception@@QAEAAV0@ABV0@@Z(ptr) MSVCRT_exception_opequals
+@ stdcall -register ??8type_info@@QBEHABV0@@Z(ptr) MSVCRT_type_info_opequals_equals
+@ stdcall -register ??9type_info@@QBEHABV0@@Z(ptr) MSVCRT_type_info_opnot_equals
@ stub ??_7__non_rtti_object@@6B@
@ stub ??_7bad_cast@@6B@
@ stub ??_7bad_typeid@@6B@
@ stub ??_7exception@@6B@
-@ cdecl ??_E__non_rtti_object@@UAEPAXI@Z(ptr long) MSVCRT___non_rtti_object__unknown_E
+@ cdecl -register ??_E__non_rtti_object@@UAEPAXI@Z(long) MSVCRT___non_rtti_object__unknown_E
@ stub ??_Ebad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Ebad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Eexception@@UAEPAXI@Z(ptr long) MSVCRT_exception__unknown_E
-@ cdecl ??_G__non_rtti_object@@UAEPAXI@Z(ptr long) MSVCRT___non_rtti_object__unknown_G
+@ cdecl -register ??_Eexception@@UAEPAXI@Z(long) MSVCRT_exception__unknown_E
+@ cdecl -register ??_G__non_rtti_object@@UAEPAXI@Z(long) MSVCRT___non_rtti_object__unknown_G
@ stub ??_Gbad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Gbad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Gexception@@UAEPAXI@Z(ptr long) MSVCRT_exception__unknown_G
+@ cdecl -register ??_Gexception@@UAEPAXI@Z(long) MSVCRT_exception__unknown_G
@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() MSVCRT__query_new_handler
@ cdecl ?_query_new_mode@@YAHXZ() MSVCRT__query_new_mode
@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) MSVCRT__set_new_handler
@ cdecl ?_set_new_mode@@YAHH@Z(long) MSVCRT__set_new_mode
@ cdecl ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z(ptr) MSVCRT__set_se_translator
@ stub ?before@type_info@@QBEHABV1@@Z #(ptr ptr) stdcall
-@ stdcall ?name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_name
-@ stdcall ?raw_name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_raw_name
+@ stdcall -register ?name@type_info@@QBEPBDXZ() MSVCRT_type_info_name
+@ stdcall -register ?raw_name@type_info@@QBEPBDXZ() MSVCRT_type_info_raw_name
@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT__set_new_handler
@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_terminate
@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_unexpected
@ cdecl ?terminate@@YAXXZ() MSVCRT_terminate
@ cdecl ?unexpected@@YAXXZ() MSVCRT_unexpected
-@ cdecl ?what@exception@@UBEPBDXZ(ptr) MSVCRT_what_exception
+@ cdecl -register ?what@exception@@UBEPBDXZ() MSVCRT_what_exception
@ cdecl _CIacos()
@ cdecl _CIasin()
@ cdecl _CIatan()
Index: dlls/msvcrtd/msvcrtd.spec
===================================================================
RCS file: /home/wine/wine/dlls/msvcrtd/msvcrtd.spec,v
retrieving revision 1.2
diff -u -r1.2 msvcrtd.spec
--- dlls/msvcrtd/msvcrtd.spec 7 Apr 2003 23:30:20 -0000 1.2
+++ dlls/msvcrtd/msvcrtd.spec 24 May 2003 19:40:49 -0000
@@ -1,55 +1,55 @@
# msvcrtd.dll - MS VC++ Run Time Library
@ cdecl $I10_OUTPUT() msvcrt.$I10_OUTPUT
-@ cdecl ??0__non_rtti_object@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0__non_rtti_object@@QAE@ABV0@@Z
-@ cdecl ??0__non_rtti_object@@QAE@PBD@Z(ptr ptr) msvcrt.??0__non_rtti_object@@QAE@PBD@Z
-@ cdecl ??0bad_cast@@QAE@ABQBD@Z(ptr ptr) msvcrt.??0bad_cast@@QAE@ABQBD@Z
-@ cdecl ??0bad_cast@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0bad_cast@@QAE@ABV0@@Z
-@ cdecl ??0bad_typeid@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0bad_typeid@@QAE@ABV0@@Z
-@ cdecl ??0bad_typeid@@QAE@PBD@Z(ptr ptr) msvcrt.??0bad_typeid@@QAE@PBD@Z
-@ cdecl ??0exception@@QAE@ABQBD@Z(ptr ptr) msvcrt.??0exception@@QAE@ABQBD@Z
-@ cdecl ??0exception@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0exception@@QAE@ABV0@@Z
-@ cdecl ??0exception@@QAE@XZ(ptr) msvcrt.??0exception@@QAE@XZ
-@ cdecl ??1__non_rtti_object@@UAE@XZ(ptr) msvcrt.??1__non_rtti_object@@UAE@XZ
-@ cdecl ??1bad_cast@@UAE@XZ(ptr) msvcrt.??1bad_cast@@UAE@XZ
-@ cdecl ??1bad_typeid@@UAE@XZ(ptr) msvcrt.??1bad_typeid@@UAE@XZ
-@ cdecl ??1exception@@UAE@XZ(ptr) msvcrt.??1exception@@UAE@XZ
-@ cdecl ??1type_info@@UAE@XZ(ptr) msvcrt.??1type_info@@UAE@XZ
+@ cdecl -register ??0__non_rtti_object@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0__non_rtti_object@@QAE@ABV0@@Z
+@ cdecl -register ??0__non_rtti_object@@QAE@PBD@Z(ptr ptr) msvcrt.??0__non_rtti_object@@QAE@PBD@Z
+@ cdecl -register ??0bad_cast@@QAE@ABQBD@Z(ptr ptr) msvcrt.??0bad_cast@@QAE@ABQBD@Z
+@ cdecl -register ??0bad_cast@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0bad_cast@@QAE@ABV0@@Z
+@ cdecl -register ??0bad_typeid@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0bad_typeid@@QAE@ABV0@@Z
+@ cdecl -register ??0bad_typeid@@QAE@PBD@Z(ptr ptr) msvcrt.??0bad_typeid@@QAE@PBD@Z
+@ cdecl -register ??0exception@@QAE@ABQBD@Z(ptr ptr) msvcrt.??0exception@@QAE@ABQBD@Z
+@ cdecl -register ??0exception@@QAE@ABV0@@Z(ptr ptr) msvcrt.??0exception@@QAE@ABV0@@Z
+@ cdecl -register ??0exception@@QAE@XZ(ptr) msvcrt.??0exception@@QAE@XZ
+@ cdecl -register ??1__non_rtti_object@@UAE@XZ(ptr) msvcrt.??1__non_rtti_object@@UAE@XZ
+@ cdecl -register ??1bad_cast@@UAE@XZ(ptr) msvcrt.??1bad_cast@@UAE@XZ
+@ cdecl -register ??1bad_typeid@@UAE@XZ(ptr) msvcrt.??1bad_typeid@@UAE@XZ
+@ cdecl -register ??1exception@@UAE@XZ(ptr) msvcrt.??1exception@@UAE@XZ
+@ cdecl -register ??1type_info@@UAE@XZ(ptr) msvcrt.??1type_info@@UAE@XZ
@ cdecl ??2@YAPAXI@Z(long) msvcrt.??2@YAPAXI@Z
@ cdecl ??2@YAPAXIHPBDH@Z(long) msvcrt.??2@YAPAXIHPBDH@Z
@ cdecl ??3@YAXPAX@Z(ptr) msvcrt.??3@YAXPAX@Z
-@ cdecl ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z
-@ cdecl ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4bad_cast@@QAEAAV0@ABV0@@Z
-@ cdecl ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4bad_typeid@@QAEAAV0@ABV0@@Z
-@ cdecl ??4exception@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4exception@@QAEAAV0@ABV0@@Z
-@ stdcall ??8type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??8type_info@@QBEHABV0@@Z
-@ stdcall ??9type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??9type_info@@QBEHABV0@@Z
+@ cdecl -register ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z
+@ cdecl -register ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4bad_cast@@QAEAAV0@ABV0@@Z
+@ cdecl -register ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4bad_typeid@@QAEAAV0@ABV0@@Z
+@ cdecl -register ??4exception@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4exception@@QAEAAV0@ABV0@@Z
+@ stdcall -register ??8type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??8type_info@@QBEHABV0@@Z
+@ stdcall -register ??9type_info@@QBEHABV0@@Z(ptr ptr) msvcrt.??9type_info@@QBEHABV0@@Z
@ stub ??_7__non_rtti_object@@6B@
@ stub ??_7bad_cast@@6B@
@ stub ??_7bad_typeid@@6B@
@ stub ??_7exception@@6B@
-@ cdecl ??_E__non_rtti_object@@UAEPAXI@Z(ptr long) msvcrt.??_E__non_rtti_object@@UAEPAXI@Z
+@ cdecl -register ??_E__non_rtti_object@@UAEPAXI@Z(ptr long) msvcrt.??_E__non_rtti_object@@UAEPAXI@Z
@ stub ??_Ebad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Ebad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Eexception@@UAEPAXI@Z(ptr long) msvcrt.??_Eexception@@UAEPAXI@Z
-@ cdecl ??_G__non_rtti_object@@UAEPAXI@Z(ptr long) msvcrt.??_G__non_rtti_object@@UAEPAXI@Z
+@ cdecl -register ??_Eexception@@UAEPAXI@Z(ptr long) msvcrt.??_Eexception@@UAEPAXI@Z
+@ cdecl -register ??_G__non_rtti_object@@UAEPAXI@Z(ptr long) msvcrt.??_G__non_rtti_object@@UAEPAXI@Z
@ stub ??_Gbad_cast@@UAEPAXI@Z #(ptr long)
@ stub ??_Gbad_typeid@@UAEPAXI@Z #(ptr long)
-@ cdecl ??_Gexception@@UAEPAXI@Z(ptr long) msvcrt.??_Gexception@@UAEPAXI@Z
+@ cdecl -register ??_Gexception@@UAEPAXI@Z(ptr long) msvcrt.??_Gexception@@UAEPAXI@Z
@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() msvcrt.?_query_new_handler@@YAP6AHI@ZXZ
@ cdecl ?_query_new_mode@@YAHXZ() msvcrt.?_query_new_mode@@YAHXZ
@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) msvcrt.?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
@ cdecl ?_set_new_mode@@YAHH@Z(long) msvcrt.?_set_new_mode@@YAHH@Z
@ cdecl ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z(ptr) msvcrt.?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z
@ stub ?before@type_info@@QBEHABV1@@Z #(ptr ptr) stdcall
-@ stdcall ?name@type_info@@QBEPBDXZ(ptr) msvcrt.?name@type_info@@QBEPBDXZ
-@ stdcall ?raw_name@type_info@@QBEPBDXZ(ptr) msvcrt.?raw_name@type_info@@QBEPBDXZ
+@ stdcall -register ?name@type_info@@QBEPBDXZ(ptr) msvcrt.?name@type_info@@QBEPBDXZ
+@ stdcall -register ?raw_name@type_info@@QBEPBDXZ(ptr) msvcrt.?raw_name@type_info@@QBEPBDXZ
@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_new_handler@@YAP6AXXZP6AXXZ@Z
@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_terminate@@YAP6AXXZP6AXXZ@Z
@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ@Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ@Z
@ cdecl ?terminate@@YAXXZ() msvcrt.?terminate@@YAXXZ
@ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
-@ cdecl ?what@exception@@UBEPBDXZ(ptr) msvcrt.?what@exception@@UBEPBDXZ
+@ cdecl -register ?what@exception@@UBEPBDXZ(ptr) msvcrt.?what@exception@@UBEPBDXZ
@ cdecl _CIacos() msvcrt._CIacos
@ cdecl _CIasin() msvcrt._CIasin
@ cdecl _CIatan() msvcrt._CIatan