[1/4] msvcirt: Add stub for class iostream.

Iván Matellanes matellanesivan at gmail.com
Tue Aug 9 13:16:02 CDT 2016


Signed-off-by: Iván Matellanes <matellanesivan at gmail.com>
---
 dlls/msvcirt/msvcirt.c      | 125 ++++++++++++++++++++++++++++++++++++++++++++
 dlls/msvcirt/msvcirt.spec   |  38 +++++++-------
 dlls/msvcrt20/msvcrt20.spec |  38 +++++++-------
 dlls/msvcrt40/msvcrt40.spec |  38 +++++++-------
 4 files changed, 182 insertions(+), 57 deletions(-)

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index 576c612..c06cf44 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -164,6 +164,12 @@ typedef struct {
     int count;
 } istream;
 
+/* class iostream */
+typedef struct {
+    istream base1;
+    ostream base2;
+} iostream;
+
 /* ??_7streambuf@@6B@ */
 extern const vtable_ptr MSVCP_streambuf_vtable;
 /* ??_7filebuf@@6B@ */
@@ -182,6 +188,8 @@ extern const vtable_ptr MSVCP_ostream_withassign_vtable;
 extern const vtable_ptr MSVCP_istream_vtable;
 /* ??_7istream_withassign@@6B@ */
 extern const vtable_ptr MSVCP_istream_withassign_vtable;
+/* ??_7iostream@@6B@ */
+extern const vtable_ptr MSVCP_iostream_vtable;
 
 #ifndef __GNUC__
 void __asm_dummy_vtables(void) {
@@ -244,6 +252,8 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(istream_vector_dtor));
     __ASM_VTABLE(istream_withassign,
             VTABLE_ADD_FUNC(istream_vector_dtor));
+    __ASM_VTABLE(iostream,
+            VTABLE_ADD_FUNC(iostream_vector_dtor));
 #ifndef __GNUC__
 }
 #endif
@@ -257,6 +267,10 @@ const int ostream_vbtable[] = {0, VBTABLE_ENTRY(ostream, FIELD_OFFSET(ostream, v
 /* ??_8istream@@7B@ */
 /* ??_8istream_withassign@@7B@ */
 const int istream_vbtable[] = {0, VBTABLE_ENTRY(istream, FIELD_OFFSET(istream, vbtable), ios)};
+/* ??_8iostream@@7Bistream@@@ */
+const int iostream_vbtable_istream[] = {0, VBTABLE_ENTRY(iostream, FIELD_OFFSET(iostream, base1), ios)};
+/* ??_8iostream@@7Bostream@@@ */
+const int iostream_vbtable_ostream[] = {0, VBTABLE_ENTRY(iostream, FIELD_OFFSET(iostream, base2), ios)};
 
 DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
 DEFINE_RTTI_DATA1(filebuf, 0, &streambuf_rtti_base_descriptor, ".?AVfilebuf@@")
@@ -269,6 +283,9 @@ DEFINE_RTTI_DATA2(ostream_withassign, sizeof(ostream),
 DEFINE_RTTI_DATA1(istream, sizeof(istream), &ios_rtti_base_descriptor, ".?AVistream@@")
 DEFINE_RTTI_DATA2(istream_withassign, sizeof(istream),
     &istream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVistream_withassign@@")
+DEFINE_RTTI_DATA4(iostream, sizeof(iostream),
+    &istream_rtti_base_descriptor, &ios_rtti_base_descriptor,
+    &ostream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AViostream@@")
 
 /* ??0streambuf@@IAE at PADH@Z */
 /* ??0streambuf@@IEAA at PEADH@Z */
@@ -3911,6 +3928,113 @@ istream* __thiscall istream_withassign_ctor(istream *this, BOOL virt_init)
     return this;
 }
 
+static inline ios* iostream_to_ios(const iostream *this)
+{
+    return (ios*)((char*)this + iostream_vbtable_istream[1]);
+}
+
+static inline iostream* ios_to_iostream(const ios *base)
+{
+    return (iostream*)((char*)base - iostream_vbtable_istream[1]);
+}
+
+/* ??0iostream@@IAE at XZ */
+/* ??0iostream@@IEAA at XZ */
+DEFINE_THISCALL_WRAPPER(iostream_ctor, 8)
+iostream* __thiscall iostream_ctor(iostream *this, BOOL virt_init)
+{
+    FIXME("(%p %d) stub\n", this, virt_init);
+    return this;
+}
+
+/* ??0iostream@@QAE at PAVstreambuf@@@Z */
+/* ??0iostream@@QEAA at PEAVstreambuf@@@Z */
+DEFINE_THISCALL_WRAPPER(iostream_sb_ctor, 12)
+iostream* __thiscall iostream_sb_ctor(iostream *this, streambuf *sb, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, sb, virt_init);
+    return this;
+}
+
+/* ??0iostream@@IAE at ABV0@@Z */
+/* ??0iostream@@IEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(iostream_copy_ctor, 12)
+iostream* __thiscall iostream_copy_ctor(iostream *this, const iostream *copy, BOOL virt_init)
+{
+    FIXME("(%p %p %d) stub\n", this, copy, virt_init);
+    return this;
+}
+
+/* ??1iostream@@UAE at XZ */
+/* ??1iostream@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(iostream_dtor, 4)
+void __thiscall iostream_dtor(ios *base)
+{
+    FIXME("(%p) stub\n", base);
+}
+
+/* ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z */
+/* ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z */
+DEFINE_THISCALL_WRAPPER(iostream_assign_sb, 8)
+iostream* __thiscall iostream_assign_sb(iostream *this, streambuf *sb)
+{
+    FIXME("(%p %p) stub\n", this, sb);
+    return this;
+}
+
+/* ??4iostream@@IAEAAV0 at AAV0@@Z */
+/* ??4iostream@@IEAAAEAV0 at AEAV0@@Z */
+DEFINE_THISCALL_WRAPPER(iostream_assign, 8)
+iostream* __thiscall iostream_assign(iostream *this, const iostream *rhs)
+{
+    FIXME("(%p %p) stub\n", this, rhs);
+    return this;
+}
+
+/* ??_Diostream@@QAEXXZ */
+/* ??_Diostream@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(iostream_vbase_dtor, 4)
+void __thiscall iostream_vbase_dtor(iostream *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ??_Eiostream@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(iostream_vector_dtor, 8)
+iostream* __thiscall iostream_vector_dtor(ios *base, unsigned int flags)
+{
+    iostream *this = ios_to_iostream(base);
+
+    TRACE("(%p %x)\n", this, flags);
+
+    if (flags & 2) {
+        /* we have an array, with the number of elements stored before the first object */
+        INT_PTR i, *ptr = (INT_PTR *)this-1;
+
+        for (i = *ptr-1; i >= 0; i--)
+            iostream_vbase_dtor(this+i);
+        MSVCRT_operator_delete(ptr);
+    } else {
+        iostream_vbase_dtor(this);
+        if (flags & 1)
+            MSVCRT_operator_delete(this);
+    }
+    return this;
+}
+
+/* ??_Giostream@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(iostream_scalar_dtor, 8)
+iostream* __thiscall iostream_scalar_dtor(ios *base, unsigned int flags)
+{
+    iostream *this = ios_to_iostream(base);
+
+    TRACE("(%p %x)\n", this, flags);
+
+    iostream_vbase_dtor(this);
+    if (flags & 1) MSVCRT_operator_delete(this);
+    return this;
+}
+
 /******************************************************************
  *		 ??0ostrstream@@QAE at XZ (MSVCRTI.@)
  */
@@ -3989,6 +4113,7 @@ static void init_io(void *base)
     init_ostream_withassign_rtti(base);
     init_istream_rtti(base);
     init_istream_withassign_rtti(base);
+    init_iostream_rtti(base);
 #endif
 }
 
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 4438b31..8361896 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -42,12 +42,12 @@
 @ cdecl -arch=win64 ??0ios@@IEAA at XZ(ptr) ios_ctor
 @ thiscall -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z(ptr ptr) ios_sb_ctor
 @ cdecl -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z(ptr ptr) ios_sb_ctor
-@ stub -arch=win32 ??0iostream@@IAE at ABV0@@Z  # __thiscall iostream::iostream(class iostream const &)
-@ stub -arch=win64 ??0iostream@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0iostream@@IAE at XZ  # __thiscall iostream::iostream(void)
-@ stub -arch=win64 ??0iostream@@IEAA at XZ
-@ stub -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z  # __thiscall iostream::iostream(class streambuf *)
-@ stub -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0iostream@@IAE at ABV0@@Z(ptr ptr long) iostream_copy_ctor
+@ cdecl -arch=win64 ??0iostream@@IEAA at AEBV0@@Z(ptr ptr long) iostream_copy_ctor
+@ thiscall -arch=win32 ??0iostream@@IAE at XZ(ptr long) iostream_ctor
+@ cdecl -arch=win64 ??0iostream@@IEAA at XZ(ptr long) iostream_ctor
+@ thiscall -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z(ptr ptr long) iostream_sb_ctor
+@ cdecl -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) iostream_sb_ctor
 @ thiscall -arch=win32 ??0istream@@IAE at ABV0@@Z(ptr ptr long) istream_copy_ctor
 @ cdecl -arch=win64 ??0istream@@IEAA at AEBV0@@Z(ptr ptr long) istream_copy_ctor
 @ thiscall -arch=win32 ??0istream@@IAE at XZ(ptr long) istream_ctor
@@ -142,8 +142,8 @@
 @ stub -arch=win64 ??1ifstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1ios@@UAE at XZ(ptr) ios_dtor
 @ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) ios_dtor
-@ stub -arch=win32 ??1iostream@@UAE at XZ  # virtual __thiscall iostream::~iostream(void)
-@ stub -arch=win64 ??1iostream@@UEAA at XZ
+@ thiscall -arch=win32 ??1iostream@@UAE at XZ(ptr) iostream_dtor
+@ cdecl -arch=win64 ??1iostream@@UEAA at XZ(ptr) iostream_dtor
 @ thiscall -arch=win32 ??1istream@@UAE at XZ(ptr) istream_dtor
 @ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) istream_dtor
 @ thiscall -arch=win32 ??1istream_withassign@@UAE at XZ(ptr) istream_dtor
@@ -182,10 +182,10 @@
 @ stub -arch=win64 ??4ifstream@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z(ptr ptr) ios_assign
 @ cdecl -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) ios_assign
-@ stub -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z  # class iostream & __thiscall iostream::operator=(class iostream &)
-@ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
-@ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z  # class iostream & __thiscall iostream::operator=(class streambuf *)
-@ stub -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z(ptr ptr) iostream_assign
+@ cdecl -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z(ptr ptr) iostream_assign
+@ thiscall -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) iostream_assign_sb
+@ cdecl -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z(ptr ptr) iostream_assign_sb
 @ thiscall -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z(ptr ptr) istream_assign
 @ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) istream_assign
 @ thiscall -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) istream_assign_sb
@@ -307,7 +307,7 @@
 # @ extern ??_7fstream@@6B@  # const fstream::`vftable'
 # @ extern ??_7ifstream@@6B@  # const ifstream::`vftable'
 @ extern ??_7ios@@6B@ MSVCP_ios_vtable
-# @ extern ??_7iostream@@6B@  # const iostream::`vftable'
+@ extern ??_7iostream@@6B@ MSVCP_iostream_vtable
 @ extern ??_7istream@@6B@ MSVCP_istream_vtable
 @ extern ??_7istream_withassign@@6B@ MSVCP_istream_vtable
 # @ extern ??_7istrstream@@6B@  # const istrstream::`vftable'
@@ -324,8 +324,8 @@
 # @ extern ??_8fstream@@7Bistream@@@  # const fstream::`vbtable'{for `istream'}
 # @ extern ??_8fstream@@7Bostream@@@  # const fstream::`vbtable'{for `ostream'}
 # @ extern ??_8ifstream@@7B@  # const ifstream::`vbtable'
-# @ extern ??_8iostream@@7Bistream@@@  # const iostream::`vbtable'{for `istream'}
-# @ extern ??_8iostream@@7Bostream@@@  # const iostream::`vbtable'{for `ostream'}
+@ extern ??_8iostream@@7Bistream@@@ iostream_vbtable_istream
+@ extern ??_8iostream@@7Bostream@@@ iostream_vbtable_ostream
 @ extern ??_8istream@@7B@ istream_vbtable
 @ extern ??_8istream_withassign@@7B@ istream_vbtable
 # @ extern ??_8istrstream@@7B@  # const istrstream::`vbtable'
@@ -341,8 +341,8 @@
 @ stub -arch=win64 ??_Dfstream@@QEAAXXZ
 @ stub -arch=win32 ??_Difstream@@QAEXXZ  # void __thiscall ifstream::`vbase destructor'(void)
 @ stub -arch=win64 ??_Difstream@@QEAAXXZ
-@ stub -arch=win32 ??_Diostream@@QAEXXZ  # void __thiscall iostream::`vbase destructor'(void)
-@ stub -arch=win64 ??_Diostream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Diostream@@QAEXXZ(ptr) iostream_vbase_dtor
+@ cdecl -arch=win64 ??_Diostream@@QEAAXXZ(ptr) iostream_vbase_dtor
 @ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) istream_vbase_dtor
 @ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) istream_vbase_dtor
 @ thiscall -arch=win32 ??_Distream_withassign@@QAEXXZ(ptr) istream_vbase_dtor
@@ -366,7 +366,7 @@
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) ios_vector_dtor
-@ stub -arch=win32 ??_Eiostream@@UAEPAXI at Z  # virtual void * __thiscall iostream::`vector deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Eiostream@@UAEPAXI at Z(ptr long) iostream_vector_dtor
 @ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) istream_vector_dtor
 @ thiscall -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z(ptr long) istream_vector_dtor
 @ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z  # virtual void * __thiscall istrstream::`vector deleting destructor'(unsigned int)
@@ -385,7 +385,7 @@
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`scalar deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) ios_scalar_dtor
-@ stub -arch=win32 ??_Giostream@@UAEPAXI at Z  # virtual void * __thiscall iostream::`scalar deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Giostream@@UAEPAXI at Z(ptr long) iostream_scalar_dtor
 @ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) istream_scalar_dtor
 @ thiscall -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z(ptr long) istream_scalar_dtor
 @ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z  # virtual void * __thiscall istrstream::`scalar deleting destructor'(unsigned int)
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index a5070f4..86d1120 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -36,12 +36,12 @@
 @ cdecl -arch=win64 ??0ios@@IEAA at XZ(ptr) msvcirt.??0ios@@IEAA at XZ
 @ thiscall -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QAE at PAVstreambuf@@@Z
 @ cdecl -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QEAA at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??0iostream@@IAE at ABV0@@Z
-@ stub -arch=win64 ??0iostream@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0iostream@@IAE at XZ
-@ stub -arch=win64 ??0iostream@@IEAA at XZ
-@ stub -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z
-@ stub -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0iostream@@IAE at ABV0@@Z(ptr ptr long) msvcirt.??0iostream@@IAE at ABV0@@Z
+@ cdecl -arch=win64 ??0iostream@@IEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0iostream@@IEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0iostream@@IAE at XZ(ptr long) msvcirt.??0iostream@@IAE at XZ
+@ cdecl -arch=win64 ??0iostream@@IEAA at XZ(ptr long) msvcirt.??0iostream@@IEAA at XZ
+@ thiscall -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z(ptr ptr long) msvcirt.??0iostream@@QAE at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) msvcirt.??0iostream@@QEAA at PEAVstreambuf@@@Z
 @ thiscall -arch=win32 ??0istream@@IAE at ABV0@@Z(ptr ptr long) msvcirt.??0istream@@IAE at ABV0@@Z
 @ cdecl -arch=win64 ??0istream@@IEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0istream@@IEAA at AEBV0@@Z
 @ thiscall -arch=win32 ??0istream@@IAE at XZ(ptr long) msvcirt.??0istream@@IAE at XZ
@@ -128,8 +128,8 @@
 @ stub -arch=win64 ??1ifstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1ios@@UAE at XZ(ptr) msvcirt.??1ios@@UAE at XZ
 @ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) msvcirt.??1ios@@UEAA at XZ
-@ stub -arch=win32 ??1iostream@@UAE at XZ
-@ stub -arch=win64 ??1iostream@@UEAA at XZ
+@ thiscall -arch=win32 ??1iostream@@UAE at XZ(ptr) msvcirt.??1iostream@@UAE at XZ
+@ cdecl -arch=win64 ??1iostream@@UEAA at XZ(ptr) msvcirt.??1iostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1istream@@UAE at XZ(ptr) msvcirt.??1istream@@UAE at XZ
 @ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) msvcirt.??1istream@@UEAA at XZ
 @ thiscall -arch=win32 ??1istream_withassign@@UAE at XZ(ptr) msvcirt.??1istream_withassign@@UAE at XZ
@@ -168,10 +168,10 @@
 @ stub -arch=win64 ??4ifstream@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4ios@@IAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4ios@@IEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z
-@ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
-@ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
-@ stub -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z(ptr ptr) msvcirt.??4iostream@@IAEAAV0 at AAV0@@Z
+@ cdecl -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z(ptr ptr) msvcirt.??4iostream@@IEAAAEAV0 at AEAV0@@Z
+@ thiscall -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) msvcirt.??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
 @ thiscall -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4istream@@IEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at PAVstreambuf@@@Z
@@ -290,7 +290,7 @@
 # @ extern ??_7fstream@@6B@
 # @ extern ??_7ifstream@@6B@
 @ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
-# @ extern ??_7iostream@@6B@
+@ extern ??_7iostream@@6B@ msvcirt.??_7iostream@@6B@
 @ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
 @ extern ??_7istream_withassign@@6B@ msvcirt.??_7istream_withassign@@6B@
 # @ extern ??_7istrstream@@6B@
@@ -306,8 +306,8 @@
 # @ extern ??_8fstream@@7Bistream@@@
 # @ extern ??_8fstream@@7Bostream@@@
 # @ extern ??_8ifstream@@7B@
-# @ extern ??_8iostream@@7Bistream@@@
-# @ extern ??_8iostream@@7Bostream@@@
+@ extern ??_8iostream@@7Bistream@@@ msvcirt.??_8iostream@@7Bistream@@@
+@ extern ??_8iostream@@7Bostream@@@ msvcirt.??_8iostream@@7Bostream@@@
 @ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
 @ extern ??_8istream_withassign@@7B@ msvcirt.??_8istream_withassign@@7B@
 # @ extern ??_8istrstream@@7B@
@@ -323,8 +323,8 @@
 @ stub -arch=win64 ??_Dfstream@@QEAAXXZ
 @ stub -arch=win32 ??_Difstream@@QAEXXZ
 @ stub -arch=win64 ??_Difstream@@QEAAXXZ
-@ stub -arch=win32 ??_Diostream@@QAEXXZ
-@ stub -arch=win64 ??_Diostream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Diostream@@QAEXXZ(ptr) msvcirt.??_Diostream@@QAEXXZ
+@ cdecl -arch=win64 ??_Diostream@@QEAAXXZ(ptr) msvcirt.??_Diostream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) msvcirt.??_Distream@@QAEXXZ
 @ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) msvcirt.??_Distream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Distream_withassign@@QAEXXZ(ptr) msvcirt.??_Distream_withassign@@QAEXXZ
@@ -348,7 +348,7 @@
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) msvcirt.??_Eios@@UAEPAXI at Z
-@ stub -arch=win32 ??_Eiostream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Eiostream@@UAEPAXI at Z(ptr long) msvcirt.??_Eiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z
@@ -366,7 +366,7 @@
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) msvcirt.??_Gios@@UAEPAXI at Z
-@ stub -arch=win32 ??_Giostream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Giostream@@UAEPAXI at Z(ptr long) msvcirt.??_Giostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 935e48c..e78f085 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -54,12 +54,12 @@
 @ cdecl -arch=win64 ??0ios@@IEAA at XZ(ptr) msvcirt.??0ios@@IEAA at XZ
 @ thiscall -arch=win32 ??0ios@@QAE at PAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QAE at PAVstreambuf@@@Z
 @ cdecl -arch=win64 ??0ios@@QEAA at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??0ios@@QEAA at PEAVstreambuf@@@Z
-@ stub -arch=win32 ??0iostream@@IAE at ABV0@@Z
-@ stub -arch=win64 ??0iostream@@IEAA at AEBV0@@Z
-@ stub -arch=win32 ??0iostream@@IAE at XZ
-@ stub -arch=win64 ??0iostream@@IEAA at XZ
-@ stub -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z
-@ stub -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??0iostream@@IAE at ABV0@@Z(ptr ptr long) msvcirt.??0iostream@@IAE at ABV0@@Z
+@ cdecl -arch=win64 ??0iostream@@IEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0iostream@@IEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0iostream@@IAE at XZ(ptr long) msvcirt.??0iostream@@IAE at XZ
+@ cdecl -arch=win64 ??0iostream@@IEAA at XZ(ptr long) msvcirt.??0iostream@@IEAA at XZ
+@ thiscall -arch=win32 ??0iostream@@QAE at PAVstreambuf@@@Z(ptr ptr long) msvcirt.??0iostream@@QAE at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??0iostream@@QEAA at PEAVstreambuf@@@Z(ptr ptr long) msvcirt.??0iostream@@QEAA at PEAVstreambuf@@@Z
 @ thiscall -arch=win32 ??0istream@@IAE at ABV0@@Z(ptr ptr long) msvcirt.??0istream@@IAE at ABV0@@Z
 @ cdecl -arch=win64 ??0istream@@IEAA at AEBV0@@Z(ptr ptr long) msvcirt.??0istream@@IEAA at AEBV0@@Z
 @ thiscall -arch=win32 ??0istream@@IAE at XZ(ptr long) msvcirt.??0istream@@IAE at XZ
@@ -158,8 +158,8 @@
 @ stub -arch=win64 ??1ifstream@@UEAA at XZ
 @ thiscall -arch=win32 ??1ios@@UAE at XZ(ptr) msvcirt.??1ios@@UAE at XZ
 @ cdecl -arch=win64 ??1ios@@UEAA at XZ(ptr) msvcirt.??1ios@@UEAA at XZ
-@ stub -arch=win32 ??1iostream@@UAE at XZ
-@ stub -arch=win64 ??1iostream@@UEAA at XZ
+@ thiscall -arch=win32 ??1iostream@@UAE at XZ(ptr) msvcirt.??1iostream@@UAE at XZ
+@ cdecl -arch=win64 ??1iostream@@UEAA at XZ(ptr) msvcirt.??1iostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1istream@@UAE at XZ(ptr) msvcirt.??1istream@@UAE at XZ
 @ cdecl -arch=win64 ??1istream@@UEAA at XZ(ptr) msvcirt.??1istream@@UEAA at XZ
 @ thiscall -arch=win32 ??1istream_withassign@@UAE at XZ(ptr) msvcirt.??1istream_withassign@@UAE at XZ
@@ -210,10 +210,10 @@
 @ stub -arch=win64 ??4ifstream@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4ios@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4ios@@IAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4ios@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4ios@@IEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z
-@ stub -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z
-@ stub -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
-@ stub -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
+@ thiscall -arch=win32 ??4iostream@@IAEAAV0 at AAV0@@Z(ptr ptr) msvcirt.??4iostream@@IAEAAV0 at AAV0@@Z
+@ cdecl -arch=win64 ??4iostream@@IEAAAEAV0 at AEAV0@@Z(ptr ptr) msvcirt.??4iostream@@IEAAAEAV0 at AEAV0@@Z
+@ thiscall -arch=win32 ??4iostream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) msvcirt.??4iostream@@IAEAAV0 at PAVstreambuf@@@Z
+@ cdecl -arch=win64 ??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z(ptr ptr) msvcirt.??4iostream@@IEAAAEAV0 at PEAVstreambuf@@@Z
 @ thiscall -arch=win32 ??4istream@@IAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4istream@@IEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4istream@@IEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=win32 ??4istream@@IAEAAV0 at PAVstreambuf@@@Z(ptr ptr) msvcirt.??4istream@@IAEAAV0 at PAVstreambuf@@@Z
@@ -342,7 +342,7 @@
 # @ extern ??_7fstream@@6B@
 # @ extern ??_7ifstream@@6B@
 @ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
-# @ extern ??_7iostream@@6B@
+@ extern ??_7iostream@@6B@ msvcirt.??_7iostream@@6B@
 @ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
 @ extern ??_7istream_withassign@@6B@ msvcirt.??_7istream_withassign@@6B@
 # @ extern ??_7istrstream@@6B@
@@ -359,8 +359,8 @@
 # @ extern ??_8fstream@@7Bistream@@@
 # @ extern ??_8fstream@@7Bostream@@@
 # @ extern ??_8ifstream@@7B@
-# @ extern ??_8iostream@@7Bistream@@@
-# @ extern ??_8iostream@@7Bostream@@@
+@ extern ??_8iostream@@7Bistream@@@ msvcirt.??_8iostream@@7Bistream@@@
+@ extern ??_8iostream@@7Bostream@@@ msvcirt.??_8iostream@@7Bostream@@@
 @ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
 @ extern ??_8istream_withassign@@7B@ msvcirt.??_8istream_withassign@@7B@
 # @ extern ??_8istrstream@@7B@
@@ -376,8 +376,8 @@
 @ stub -arch=win64 ??_Dfstream@@QEAAXXZ
 @ stub -arch=win32 ??_Difstream@@QAEXXZ
 @ stub -arch=win64 ??_Difstream@@QEAAXXZ
-@ stub -arch=win32 ??_Diostream@@QAEXXZ
-@ stub -arch=win64 ??_Diostream@@QEAAXXZ
+@ thiscall -arch=win32 ??_Diostream@@QAEXXZ(ptr) msvcirt.??_Diostream@@QAEXXZ
+@ cdecl -arch=win64 ??_Diostream@@QEAAXXZ(ptr) msvcirt.??_Diostream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) msvcirt.??_Distream@@QAEXXZ
 @ cdecl -arch=win64 ??_Distream@@QEAAXXZ(ptr) msvcirt.??_Distream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Distream_withassign@@QAEXXZ(ptr) msvcirt.??_Distream_withassign@@QAEXXZ
@@ -405,7 +405,7 @@
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) msvcirt.??_Eios@@UAEPAXI at Z
-@ stub -arch=win32 ??_Eiostream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Eiostream@@UAEPAXI at Z(ptr long) msvcirt.??_Eiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Eistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eistrstream@@UAEPAXI at Z
@@ -428,7 +428,7 @@
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) msvcirt.??_Gios@@UAEPAXI at Z
-@ stub -arch=win32 ??_Giostream@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Giostream@@UAEPAXI at Z(ptr long) msvcirt.??_Giostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gistream_withassign@@UAEPAXI at Z(ptr long) msvcirt.??_Gistream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gistrstream@@UAEPAXI at Z
-- 
2.7.4




More information about the wine-patches mailing list