[1/9] msvcirt: Add stub of class stdiobuf

Iván Matellanes matellanesivan at gmail.com
Fri Oct 2 08:03:19 CDT 2015


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

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index 0b2fadf..cd0e7c5 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -117,6 +117,12 @@ typedef struct {
     freeFunction f_free;
 } strstreambuf;
 
+/* class stdiobuf */
+typedef struct {
+    streambuf base;
+    FILE *file;
+} stdiobuf;
+
 /* class ios */
 struct _ostream;
 typedef struct {
@@ -153,6 +159,8 @@ extern const vtable_ptr MSVCP_streambuf_vtable;
 extern const vtable_ptr MSVCP_filebuf_vtable;
 /* ??_7strstreambuf@@6B@ */
 extern const vtable_ptr MSVCP_strstreambuf_vtable;
+/* ??_7stdiobuf@@6B@ */
+extern const vtable_ptr MSVCP_stdiobuf_vtable;
 /* ??_7ios@@6B@ */
 extern const vtable_ptr MSVCP_ios_vtable;
 
@@ -195,6 +203,18 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(strstreambuf_underflow)
             VTABLE_ADD_FUNC(streambuf_pbackfail)
             VTABLE_ADD_FUNC(strstreambuf_doallocate));
+    __ASM_VTABLE(stdiobuf,
+            VTABLE_ADD_FUNC(stdiobuf_vector_dtor)
+            VTABLE_ADD_FUNC(stdiobuf_sync)
+            VTABLE_ADD_FUNC(streambuf_setbuf)
+            VTABLE_ADD_FUNC(stdiobuf_seekoff)
+            VTABLE_ADD_FUNC(streambuf_seekpos)
+            VTABLE_ADD_FUNC(streambuf_xsputn)
+            VTABLE_ADD_FUNC(streambuf_xsgetn)
+            VTABLE_ADD_FUNC(stdiobuf_overflow)
+            VTABLE_ADD_FUNC(stdiobuf_underflow)
+            VTABLE_ADD_FUNC(stdiobuf_pbackfail)
+            VTABLE_ADD_FUNC(streambuf_doallocate));
     __ASM_VTABLE(ios,
             VTABLE_ADD_FUNC(ios_vector_dtor));
 #ifndef __GNUC__
@@ -204,6 +224,7 @@ void __asm_dummy_vtables(void) {
 DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
 DEFINE_RTTI_DATA1(filebuf, 0, &streambuf_rtti_base_descriptor, ".?AVfilebuf@@")
 DEFINE_RTTI_DATA1(strstreambuf, 0, &streambuf_rtti_base_descriptor, ".?AVstrstreambuf@@")
+DEFINE_RTTI_DATA1(stdiobuf, 0, &streambuf_rtti_base_descriptor, ".?AVstdiobuf@@")
 DEFINE_RTTI_DATA0(ios, 0, ".?AVios@@")
 
 /* ??0streambuf@@IAE at PADH@Z */
@@ -1434,6 +1455,134 @@ int __thiscall strstreambuf_underflow(strstreambuf *this)
     return (this->base.gptr < this->base.egptr) ? *this->base.gptr : EOF;
 }
 
+/* ??0stdiobuf@@QAE at ABV0@@Z */
+/* ??0stdiobuf@@QEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_copy_ctor, 8)
+stdiobuf* __thiscall stdiobuf_copy_ctor(stdiobuf *this, const stdiobuf *copy)
+{
+    FIXME("(%p %p) stub\n", this, copy);
+    return this;
+}
+
+/* ??0stdiobuf@@QAE at PAU_iobuf@@@Z */
+/* ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_file_ctor, 8)
+stdiobuf* __thiscall stdiobuf_file_ctor(stdiobuf *this, FILE *file)
+{
+    FIXME("(%p %p) stub\n", this, file);
+    return this;
+}
+
+/* ??1stdiobuf@@UAE at XZ */
+/* ??1stdiobuf@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(stdiobuf_dtor, 4)
+void __thiscall stdiobuf_dtor(stdiobuf *this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ??4stdiobuf@@QAEAAV0 at ABV0@@Z */
+/* ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_assign, 8)
+stdiobuf* __thiscall stdiobuf_assign(stdiobuf *this, const stdiobuf *rhs)
+{
+    stdiobuf_dtor(this);
+    return stdiobuf_copy_ctor(this, rhs);
+}
+
+/* ??_Estdiobuf@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_vector_dtor, 8)
+stdiobuf* __thiscall stdiobuf_vector_dtor(stdiobuf *this, unsigned int flags)
+{
+    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--)
+            stdiobuf_dtor(this+i);
+        MSVCRT_operator_delete(ptr);
+    } else {
+        stdiobuf_dtor(this);
+        if (flags & 1)
+            MSVCRT_operator_delete(this);
+    }
+    return this;
+}
+
+/* ??_Gstdiobuf@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_scalar_dtor, 8)
+stdiobuf* __thiscall stdiobuf_scalar_dtor(stdiobuf *this, unsigned int flags)
+{
+    TRACE("(%p %x)\n", this, flags);
+    stdiobuf_dtor(this);
+    if (flags & 1) MSVCRT_operator_delete(this);
+    return this;
+}
+
+/* ?overflow at stdiobuf@@UAEHH at Z */
+/* ?overflow at stdiobuf@@UEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_overflow, 8)
+int __thiscall stdiobuf_overflow(stdiobuf *this, int c)
+{
+    FIXME("(%p %d) stub\n", this, c);
+    return EOF;
+}
+
+/* ?pbackfail at stdiobuf@@UAEHH at Z */
+/* ?pbackfail at stdiobuf@@UEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_pbackfail, 8)
+int __thiscall stdiobuf_pbackfail(stdiobuf *this, int c)
+{
+    FIXME("(%p %d) stub\n", this, c);
+    return EOF;
+}
+
+/* ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z */
+/* ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_seekoff, 16)
+streampos __thiscall stdiobuf_seekoff(stdiobuf *this, streamoff offset, ios_seek_dir dir, int mode)
+{
+    FIXME("(%p %d %d %d) stub\n", this, offset, dir, mode);
+    return EOF;
+}
+
+/* ?setrwbuf at stdiobuf@@QAEHHH at Z */
+/* ?setrwbuf at stdiobuf@@QEAAHHH at Z */
+DEFINE_THISCALL_WRAPPER(stdiobuf_setrwbuf, 12)
+int __thiscall stdiobuf_setrwbuf(stdiobuf *this, int read_size, int write_size)
+{
+    FIXME("(%p %d %d) stub\n", this, read_size, write_size);
+    return EOF;
+}
+
+/* ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ */
+/* ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ */
+DEFINE_THISCALL_WRAPPER(stdiobuf_stdiofile, 4)
+FILE* __thiscall stdiobuf_stdiofile(stdiobuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return NULL;
+}
+
+/* ?sync at stdiobuf@@UAEHXZ */
+/* ?sync at stdiobuf@@UEAAHXZ */
+DEFINE_THISCALL_WRAPPER(stdiobuf_sync, 4)
+int __thiscall stdiobuf_sync(stdiobuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return EOF;
+}
+
+/* ?underflow at stdiobuf@@UAEHXZ */
+/* ?underflow at stdiobuf@@UEAAHXZ */
+DEFINE_THISCALL_WRAPPER(stdiobuf_underflow, 4)
+int __thiscall stdiobuf_underflow(stdiobuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return EOF;
+}
+
 /* ??0ios@@IAE at ABV0@@Z */
 /* ??0ios@@IEAA at AEBV0@@Z */
 DEFINE_THISCALL_WRAPPER(ios_copy_ctor, 8)
@@ -2098,6 +2247,7 @@ static void init_io(void *base)
     init_streambuf_rtti(base);
     init_filebuf_rtti(base);
     init_strstreambuf_rtti(base);
+    init_stdiobuf_rtti(base);
     init_ios_rtti(base);
 #endif
 }
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 4b448ba..0326672 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -98,10 +98,10 @@
 @ stub -arch=win64 ??0ostrstream@@QEAA at PEADHH@Z
 @ thiscall -arch=win32 ??0ostrstream@@QAE at XZ(ptr long) MSVCIRT_ostrstream_ctor
 @ cdecl -arch=win64 ??0ostrstream@@QEAA at XZ(ptr long) MSVCIRT_ostrstream_ctor
-@ stub -arch=win32 ??0stdiobuf@@QAE at ABV0@@Z  # __thiscall stdiobuf::stdiobuf(class stdiobuf const &)
-@ stub -arch=win64 ??0stdiobuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0stdiobuf@@QAE at PAU_iobuf@@@Z  # __thiscall stdiobuf::stdiobuf(struct _iobuf *)
-@ stub -arch=win64 ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z
+@ thiscall -arch=win32 ??0stdiobuf@@QAE at ABV0@@Z(ptr ptr) stdiobuf_copy_ctor
+@ cdecl -arch=win64 ??0stdiobuf@@QEAA at AEBV0@@Z(ptr ptr) stdiobuf_copy_ctor
+@ thiscall -arch=win32 ??0stdiobuf@@QAE at PAU_iobuf@@@Z(ptr ptr) stdiobuf_file_ctor
+@ cdecl -arch=win64 ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z(ptr ptr) stdiobuf_file_ctor
 @ stub -arch=win32 ??0stdiostream@@QAE at ABV0@@Z  # __thiscall stdiostream::stdiostream(class stdiostream const &)
 @ stub -arch=win64 ??0stdiostream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0stdiostream@@QAE at PAU_iobuf@@@Z  # __thiscall stdiostream::stdiostream(struct _iobuf *)
@@ -160,8 +160,8 @@
 @ stub -arch=win64 ??1ostream_withassign@@UEAA at XZ
 @ thiscall -arch=win32 ??1ostrstream@@UAE at XZ(ptr) MSVCIRT_ostrstream_dtor
 @ cdecl -arch=win64 ??1ostrstream@@UEAA at XZ(ptr) MSVCIRT_ostrstream_dtor
-@ stub -arch=win32 ??1stdiobuf@@UAE at XZ  # virtual __thiscall stdiobuf::~stdiobuf(void)
-@ stub -arch=win64 ??1stdiobuf@@UEAA at XZ
+@ thiscall -arch=win32 ??1stdiobuf@@UAE at XZ(ptr) stdiobuf_dtor
+@ cdecl -arch=win64 ??1stdiobuf@@UEAA at XZ(ptr) stdiobuf_dtor
 @ stub -arch=win32 ??1stdiostream@@UAE at XZ  # virtual __thiscall stdiostream::~stdiostream(void)
 @ stub -arch=win64 ??1stdiostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1streambuf@@UAE at XZ(ptr) streambuf_dtor
@@ -214,8 +214,8 @@
 @ stub -arch=win64 ??4ostream_withassign@@QEAAAEAVostream@@PEAVstreambuf@@@Z
 @ stub -arch=win32 ??4ostrstream@@QAEAAV0 at ABV0@@Z  # class ostrstream & __thiscall ostrstream::operator=(class ostrstream const &)
 @ stub -arch=win64 ??4ostrstream@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4stdiobuf@@QAEAAV0 at ABV0@@Z  # class stdiobuf & __thiscall stdiobuf::operator=(class stdiobuf const &)
-@ stub -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4stdiobuf@@QAEAAV0 at ABV0@@Z(ptr ptr) stdiobuf_assign
+@ cdecl -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) stdiobuf_assign
 @ stub -arch=win32 ??4stdiostream@@QAEAAV0 at AAV0@@Z  # class stdiostream & __thiscall stdiostream::operator=(class stdiostream &)
 @ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) streambuf_assign
@@ -316,7 +316,7 @@
 # @ extern ??_7ostream@@6B@  # const ostream::`vftable'
 # @ extern ??_7ostream_withassign@@6B@  # const ostream_withassign::`vftable'
 # @ extern ??_7ostrstream@@6B@  # const ostrstream::`vftable'
-# @ extern ??_7stdiobuf@@6B@  # const stdiobuf::`vftable'
+@ extern ??_7stdiobuf@@6B@ MSVCP_stdiobuf_vtable
 # @ extern ??_7stdiostream@@6B@  # const stdiostream::`vftable'
 @ extern ??_7streambuf@@6B@ MSVCP_streambuf_vtable
 # @ extern ??_7strstream@@6B@  # const strstream::`vftable'
@@ -375,7 +375,7 @@
 @ stub -arch=win32 ??_Eostream@@UAEPAXI at Z  # virtual void * __thiscall ostream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eostream_withassign@@UAEPAXI at Z  # virtual void * __thiscall ostream_withassign::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eostrstream@@UAEPAXI at Z  # virtual void * __thiscall ostrstream::`vector deleting destructor'(unsigned int)
-@ stub -arch=win32 ??_Estdiobuf@@UAEPAXI at Z  # virtual void * __thiscall stdiobuf::`vector deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Estdiobuf@@UAEPAXI at Z(ptr long) stdiobuf_vector_dtor
 @ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z  # virtual void * __thiscall stdiostream::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) streambuf_vector_dtor
 @ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z  # virtual void * __thiscall strstream::`vector deleting destructor'(unsigned int)
@@ -394,7 +394,7 @@
 @ stub -arch=win32 ??_Gostream@@UAEPAXI at Z  # virtual void * __thiscall ostream::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gostream_withassign@@UAEPAXI at Z  # virtual void * __thiscall ostream_withassign::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gostrstream@@UAEPAXI at Z  # virtual void * __thiscall ostrstream::`scalar deleting destructor'(unsigned int)
-@ stub -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z  # virtual void * __thiscall stdiobuf::`scalar deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z(ptr long) stdiobuf_scalar_dtor
 @ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z  # virtual void * __thiscall stdiostream::`scalar deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) streambuf_scalar_dtor
 @ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z  # virtual void * __thiscall strstream::`scalar deleting destructor'(unsigned int)
@@ -579,12 +579,12 @@
 @ cdecl -arch=win64 ?out_waiting at streambuf@@QEBAHXZ(ptr) streambuf_out_waiting
 @ thiscall -arch=win32 ?overflow at filebuf@@UAEHH at Z(ptr long) filebuf_overflow
 @ cdecl -arch=win64 ?overflow at filebuf@@UEAAHH at Z(ptr long) filebuf_overflow
-@ stub -arch=win32 ?overflow at stdiobuf@@UAEHH at Z  # virtual int __thiscall stdiobuf::overflow(int)
-@ stub -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?overflow at stdiobuf@@UAEHH at Z(ptr long) stdiobuf_overflow
+@ cdecl -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z(ptr long) stdiobuf_overflow
 @ thiscall -arch=win32 ?overflow at strstreambuf@@UAEHH at Z(ptr long) strstreambuf_overflow
 @ cdecl -arch=win64 ?overflow at strstreambuf@@UEAAHH at Z(ptr long) strstreambuf_overflow
-@ stub -arch=win32 ?pbackfail at stdiobuf@@UAEHH at Z  # virtual int __thiscall stdiobuf::pbackfail(int)
-@ stub -arch=win64 ?pbackfail at stdiobuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?pbackfail at stdiobuf@@UAEHH at Z(ptr long) stdiobuf_pbackfail
+@ cdecl -arch=win64 ?pbackfail at stdiobuf@@UEAAHH at Z(ptr long) stdiobuf_pbackfail
 @ thiscall -arch=win32 ?pbackfail at streambuf@@UAEHH at Z(ptr long) streambuf_pbackfail
 @ cdecl -arch=win64 ?pbackfail at streambuf@@UEAAHH at Z(ptr long) streambuf_pbackfail
 @ thiscall -arch=win32 ?pbase at streambuf@@IBEPADXZ(ptr) streambuf_pbase
@@ -645,8 +645,8 @@
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
 @ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) filebuf_seekoff
 @ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) filebuf_seekoff
-@ stub -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z  # virtual long __thiscall stdiobuf::seekoff(long,enum ios::seek_dir,int)
-@ stub -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
+@ thiscall -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) stdiobuf_seekoff
+@ cdecl -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) stdiobuf_seekoff
 @ thiscall -arch=win32 ?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) streambuf_seekoff
 @ cdecl -arch=win64 ?seekoff at streambuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) streambuf_seekoff
 @ thiscall -arch=win32 ?seekoff at strstreambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) strstreambuf_seekoff
@@ -691,8 +691,8 @@
 @ stub -arch=win64 ?setmode at ofstream@@QEAAHH at Z
 @ thiscall -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z(ptr ptr ptr) streambuf_setp
 @ cdecl -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z(ptr ptr ptr) streambuf_setp
-@ stub -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z  # int __thiscall stdiobuf::setrwbuf(int,int)
-@ stub -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z
+@ thiscall -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z(ptr long long) stdiobuf_setrwbuf
+@ cdecl -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z(ptr long long) stdiobuf_setrwbuf
 @ thiscall -arch=win32 ?sgetc at streambuf@@QAEHXZ(ptr) streambuf_sgetc
 @ cdecl -arch=win64 ?sgetc at streambuf@@QEAAHXZ(ptr) streambuf_sgetc
 @ thiscall -arch=win32 ?sgetn at streambuf@@QAEHPADH at Z(ptr ptr long) streambuf_sgetn
@@ -708,8 +708,8 @@
 @ cdecl -arch=win64 ?sputc at streambuf@@QEAAHH at Z(ptr long) streambuf_sputc
 @ thiscall -arch=win32 ?sputn at streambuf@@QAEHPBDH at Z(ptr str long) streambuf_sputn
 @ cdecl -arch=win64 ?sputn at streambuf@@QEAAHPEBDH at Z(ptr str long) streambuf_sputn
-@ stub -arch=win32 ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ  # struct _iobuf * __thiscall stdiobuf::stdiofile(void)
-@ stub -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
+@ thiscall -arch=win32 ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ(ptr) stdiobuf_stdiofile
+@ cdecl -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ(ptr) stdiobuf_stdiofile
 @ thiscall -arch=win32 ?stossc at streambuf@@QAEXXZ(ptr) streambuf_stossc
 @ cdecl -arch=win64 ?stossc at streambuf@@QEAAXXZ(ptr) streambuf_stossc
 @ stub -arch=win32 ?str at istrstream@@QAEPADXZ  # char * __thiscall istrstream::str(void)
@@ -725,8 +725,8 @@
 @ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) filebuf_sync
 @ stub -arch=win32 ?sync at istream@@QAEHXZ  # int __thiscall istream::sync(void)
 @ stub -arch=win64 ?sync at istream@@QEAAHXZ
-@ stub -arch=win32 ?sync at stdiobuf@@UAEHXZ  # virtual int __thiscall stdiobuf::sync(void)
-@ stub -arch=win64 ?sync at stdiobuf@@UEAAHXZ
+@ thiscall -arch=win32 ?sync at stdiobuf@@UAEHXZ(ptr) stdiobuf_sync
+@ cdecl -arch=win64 ?sync at stdiobuf@@UEAAHXZ(ptr) stdiobuf_sync
 @ thiscall -arch=win32 ?sync at streambuf@@UAEHXZ(ptr) streambuf_sync
 @ cdecl -arch=win64 ?sync at streambuf@@UEAAHXZ(ptr) streambuf_sync
 @ thiscall -arch=win32 ?sync at strstreambuf@@UAEHXZ(ptr) strstreambuf_sync
@@ -747,8 +747,8 @@
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEBAHXZ(ptr) streambuf_unbuffered_get
 @ thiscall -arch=win32 ?underflow at filebuf@@UAEHXZ(ptr) filebuf_underflow
 @ cdecl -arch=win64 ?underflow at filebuf@@UEAAHXZ(ptr) filebuf_underflow
-@ stub -arch=win32 ?underflow at stdiobuf@@UAEHXZ  # virtual int __thiscall stdiobuf::underflow(void)
-@ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
+@ thiscall -arch=win32 ?underflow at stdiobuf@@UAEHXZ(ptr) stdiobuf_underflow
+@ cdecl -arch=win64 ?underflow at stdiobuf@@UEAAHXZ(ptr) stdiobuf_underflow
 @ thiscall -arch=win32 ?underflow at strstreambuf@@UAEHXZ(ptr) strstreambuf_underflow
 @ cdecl -arch=win64 ?underflow at strstreambuf@@UEAAHXZ(ptr) strstreambuf_underflow
 @ cdecl -arch=win32 ?unlock at ios@@QAAXXZ(ptr) ios_unlock
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index 53ef34c..368e8a1 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -88,10 +88,10 @@
 @ stub -arch=win64 ??0ostrstream@@QEAA at PEADHH@Z
 @ thiscall -arch=win32 ??0ostrstream@@QAE at XZ(ptr long) msvcirt.??0ostrstream@@QAE at XZ
 @ cdecl -arch=win64 ??0ostrstream@@QEAA at XZ(ptr long) msvcirt.??0ostrstream@@QEAA at XZ
-@ stub -arch=win32 ??0stdiobuf@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0stdiobuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0stdiobuf@@QAE at PAU_iobuf@@@Z
-@ stub -arch=win64 ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z
+@ thiscall -arch=win32 ??0stdiobuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0stdiobuf@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0stdiobuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0stdiobuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0stdiobuf@@QAE at PAU_iobuf@@@Z(ptr ptr) msvcirt.??0stdiobuf@@QAE at PAU_iobuf@@@Z
+@ cdecl -arch=win64 ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z(ptr ptr) msvcirt.??0stdiobuf@@QEAA at PEAU_iobuf@@@Z
 @ stub -arch=win32 ??0stdiostream@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0stdiostream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0stdiostream@@QAE at PAU_iobuf@@@Z
@@ -144,8 +144,8 @@
 @ stub -arch=win64 ??1ostream_withassign@@UEAA at XZ
 @ thiscall -arch=win32 ??1ostrstream@@UAE at XZ(ptr) msvcirt.??1ostrstream@@UAE at XZ
 @ cdecl -arch=win64 ??1ostrstream@@UEAA at XZ(ptr) msvcirt.??1ostrstream@@UEAA at XZ
-@ stub -arch=win32 ??1stdiobuf@@UAE at XZ
-@ stub -arch=win64 ??1stdiobuf@@UEAA at XZ
+@ thiscall -arch=win32 ??1stdiobuf@@UAE at XZ(ptr) msvcirt.??1stdiobuf@@UAE at XZ
+@ cdecl -arch=win64 ??1stdiobuf@@UEAA at XZ(ptr) msvcirt.??1stdiobuf@@UEAA at XZ
 @ stub -arch=win32 ??1stdiostream@@UAE at XZ
 @ stub -arch=win64 ??1stdiostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1streambuf@@UAE at XZ(ptr) msvcirt.??1streambuf@@UAE at XZ
@@ -198,8 +198,8 @@
 @ stub -arch=win64 ??4ostream_withassign@@QEAAAEAVostream@@PEAVstreambuf@@@Z
 @ stub -arch=win32 ??4ostrstream@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4ostrstream@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4stdiobuf@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4stdiobuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4stdiobuf@@QAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4stdiostream@@QAEAAV0 at AAV0@@Z
 @ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4streambuf@@QAEAAV0 at ABV0@@Z
@@ -298,7 +298,7 @@
 # @ extern ??_7ostream@@6B@
 # @ extern ??_7ostream_withassign@@6B@
 # @ extern ??_7ostrstream@@6B@
-# @ extern ??_7stdiobuf@@6B@
+@ extern ??_7stdiobuf@@6B@ msvcirt.??_7stdiobuf@@6B@
 # @ extern ??_7stdiostream@@6B@
 @ extern ??_7streambuf@@6B@ msvcirt.??_7streambuf@@6B@
 # @ extern ??_7strstream@@6B@
@@ -356,7 +356,7 @@
 @ stub -arch=win32 ??_Eostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eostream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eostrstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Estdiobuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Estdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
@@ -374,7 +374,7 @@
 @ stub -arch=win32 ??_Gostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gostream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gostrstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z
@@ -565,12 +565,12 @@
 @ cdecl -arch=win64 ?out_waiting at streambuf@@QEBAHXZ(ptr) msvcirt.?out_waiting at streambuf@@QEBAHXZ
 @ thiscall -arch=win32 ?overflow at filebuf@@UAEHH at Z(ptr long) msvcirt.?overflow at filebuf@@UAEHH at Z
 @ cdecl -arch=win64 ?overflow at filebuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at filebuf@@UEAAHH at Z
-@ stub -arch=win32 ?overflow at stdiobuf@@UAEHH at Z
-@ stub -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?overflow at stdiobuf@@UAEHH at Z(ptr long) msvcirt.?overflow at stdiobuf@@UAEHH at Z
+@ cdecl -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at stdiobuf@@UEAAHH at Z
 @ thiscall -arch=win32 ?overflow at strstreambuf@@UAEHH at Z(ptr long) msvcirt.?overflow at strstreambuf@@UAEHH at Z
 @ cdecl -arch=win64 ?overflow at strstreambuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at strstreambuf@@UEAAHH at Z
-@ stub -arch=win32 ?pbackfail at stdiobuf@@UAEHH at Z
-@ stub -arch=win64 ?pbackfail at stdiobuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?pbackfail at stdiobuf@@UAEHH at Z(ptr long) msvcirt.?pbackfail at stdiobuf@@UAEHH at Z
+@ cdecl -arch=win64 ?pbackfail at stdiobuf@@UEAAHH at Z(ptr long) msvcirt.?pbackfail at stdiobuf@@UEAAHH at Z
 @ thiscall -arch=win32 ?pbackfail at streambuf@@UAEHH at Z(ptr long) msvcirt.?pbackfail at streambuf@@UAEHH at Z
 @ cdecl -arch=win64 ?pbackfail at streambuf@@UEAAHH at Z(ptr long) msvcirt.?pbackfail at streambuf@@UEAAHH at Z
 @ thiscall -arch=win32 ?pbase at streambuf@@IBEPADXZ(ptr) msvcirt.?pbase at streambuf@@IBEPADXZ
@@ -631,8 +631,8 @@
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
 @ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
 @ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
-@ stub -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
-@ stub -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
+@ thiscall -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
+@ cdecl -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z
 @ cdecl -arch=win64 ?seekoff at streambuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at streambuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at strstreambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at strstreambuf@@UAEJJW4seek_dir at ios@@H at Z
@@ -679,8 +679,8 @@
 @ stub -arch=win64 ?setmode at ofstream@@QEAAHH at Z
 @ thiscall -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IAEXPAD0 at Z
 @ cdecl -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IEAAXPEAD0 at Z
-@ stub -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z
-@ stub -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z
+@ thiscall -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z(ptr long long) msvcirt.?setrwbuf at stdiobuf@@QAEHHH at Z
+@ cdecl -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z(ptr long long) msvcirt.?setrwbuf at stdiobuf@@QEAAHHH at Z
 @ thiscall -arch=win32 ?sgetc at streambuf@@QAEHXZ(ptr) msvcirt.?sgetc at streambuf@@QAEHXZ
 @ cdecl -arch=win64 ?sgetc at streambuf@@QEAAHXZ(ptr) msvcirt.?sgetc at streambuf@@QEAAHXZ
 @ thiscall -arch=win32 ?sgetn at streambuf@@QAEHPADH at Z(ptr ptr long) msvcirt.?sgetn at streambuf@@QAEHPADH at Z
@@ -696,8 +696,8 @@
 @ cdecl -arch=win64 ?sputc at streambuf@@QEAAHH at Z(ptr long) msvcirt.?sputc at streambuf@@QEAAHH at Z
 @ thiscall -arch=win32 ?sputn at streambuf@@QAEHPBDH at Z(ptr str long) msvcirt.?sputn at streambuf@@QAEHPBDH at Z
 @ cdecl -arch=win64 ?sputn at streambuf@@QEAAHPEBDH at Z(ptr str long) msvcirt.?sputn at streambuf@@QEAAHPEBDH at Z
-@ stub -arch=win32 ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ
-@ stub -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
+@ thiscall -arch=win32 ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ(ptr) msvcirt.?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ
+@ cdecl -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ(ptr) msvcirt.?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
 @ thiscall -arch=win32 ?stossc at streambuf@@QAEXXZ(ptr) msvcirt.?stossc at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?stossc at streambuf@@QEAAXXZ(ptr) msvcirt.?stossc at streambuf@@QEAAXXZ
 @ stub -arch=win32 ?str at istrstream@@QAEPADXZ
@@ -713,8 +713,8 @@
 @ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) msvcirt.?sync at filebuf@@UEAAHXZ
 @ stub -arch=win32 ?sync at istream@@QAEHXZ
 @ stub -arch=win64 ?sync at istream@@QEAAHXZ
-@ stub -arch=win32 ?sync at stdiobuf@@UAEHXZ
-@ stub -arch=win64 ?sync at stdiobuf@@UEAAHXZ
+@ thiscall -arch=win32 ?sync at stdiobuf@@UAEHXZ(ptr) msvcirt.?sync at stdiobuf@@UAEHXZ
+@ cdecl -arch=win64 ?sync at stdiobuf@@UEAAHXZ(ptr) msvcirt.?sync at stdiobuf@@UEAAHXZ
 @ thiscall -arch=win32 ?sync at streambuf@@UAEHXZ(ptr) msvcirt.?sync at streambuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at streambuf@@UEAAHXZ(ptr) msvcirt.?sync at streambuf@@UEAAHXZ
 @ thiscall -arch=win32 ?sync at strstreambuf@@UAEHXZ(ptr) msvcirt.?sync at strstreambuf@@UAEHXZ
@@ -736,8 +736,8 @@
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEBAHXZ(ptr) msvcirt.?unbuffered at streambuf@@IEBAHXZ
 @ thiscall -arch=win32 ?underflow at filebuf@@UAEHXZ(ptr) msvcirt.?underflow at filebuf@@UAEHXZ
 @ cdecl -arch=win64 ?underflow at filebuf@@UEAAHXZ(ptr) msvcirt.?underflow at filebuf@@UEAAHXZ
-@ stub -arch=win32 ?underflow at stdiobuf@@UAEHXZ
-@ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
+@ thiscall -arch=win32 ?underflow at stdiobuf@@UAEHXZ(ptr) msvcirt.?underflow at stdiobuf@@UAEHXZ
+@ cdecl -arch=win64 ?underflow at stdiobuf@@UEAAHXZ(ptr) msvcirt.?underflow at stdiobuf@@UEAAHXZ
 @ thiscall -arch=win32 ?underflow at strstreambuf@@UAEHXZ(ptr) msvcirt.?underflow at strstreambuf@@UAEHXZ
 @ cdecl -arch=win64 ?underflow at strstreambuf@@UEAAHXZ(ptr) msvcirt.?underflow at strstreambuf@@UEAAHXZ
 @ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index 4a220ba..828165c 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -110,10 +110,10 @@
 @ stub -arch=win64 ??0ostrstream@@QEAA at PEADHH@Z
 @ thiscall -arch=win32 ??0ostrstream@@QAE at XZ(ptr long) msvcirt.??0ostrstream@@QAE at XZ
 @ cdecl -arch=win64 ??0ostrstream@@QEAA at XZ(ptr long) msvcirt.??0ostrstream@@QEAA at XZ
-@ stub -arch=win32 ??0stdiobuf@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0stdiobuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0stdiobuf@@QAE at PAU_iobuf@@@Z
-@ stub -arch=win64 ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z
+@ thiscall -arch=win32 ??0stdiobuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0stdiobuf@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0stdiobuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0stdiobuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0stdiobuf@@QAE at PAU_iobuf@@@Z(ptr ptr) msvcirt.??0stdiobuf@@QAE at PAU_iobuf@@@Z
+@ cdecl -arch=win64 ??0stdiobuf@@QEAA at PEAU_iobuf@@@Z(ptr ptr) msvcirt.??0stdiobuf@@QEAA at PEAU_iobuf@@@Z
 @ stub -arch=win32 ??0stdiostream@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0stdiostream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0stdiostream@@QAE at PAU_iobuf@@@Z
@@ -176,8 +176,8 @@
 @ stub -arch=win64 ??1ostream_withassign@@UEAA at XZ
 @ thiscall -arch=win32 ??1ostrstream@@UAE at XZ(ptr) msvcirt.??1ostrstream@@UAE at XZ
 @ cdecl -arch=win64 ??1ostrstream@@UEAA at XZ(ptr) msvcirt.??1ostrstream@@UEAA at XZ
-@ stub -arch=win32 ??1stdiobuf@@UAE at XZ
-@ stub -arch=win64 ??1stdiobuf@@UEAA at XZ
+@ thiscall -arch=win32 ??1stdiobuf@@UAE at XZ(ptr) msvcirt.??1stdiobuf@@UAE at XZ
+@ cdecl -arch=win64 ??1stdiobuf@@UEAA at XZ(ptr) msvcirt.??1stdiobuf@@UEAA at XZ
 @ stub -arch=win32 ??1stdiostream@@UAE at XZ
 @ stub -arch=win64 ??1stdiostream@@UEAA at XZ
 @ thiscall -arch=win32 ??1streambuf@@UAE at XZ(ptr) msvcirt.??1streambuf@@UAE at XZ
@@ -242,8 +242,8 @@
 @ stub -arch=win64 ??4ostream_withassign@@QEAAAEAVostream@@PEAVstreambuf@@@Z
 @ stub -arch=win32 ??4ostrstream@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4ostrstream@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4stdiobuf@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4stdiobuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4stdiobuf@@QAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4stdiobuf@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4stdiostream@@QAEAAV0 at AAV0@@Z
 @ stub -arch=win64 ??4stdiostream@@QEAAAEAV0 at AEAV0@@Z
 @ thiscall -arch=win32 ??4streambuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4streambuf@@QAEAAV0 at ABV0@@Z
@@ -351,7 +351,7 @@
 # @ extern ??_7ostream@@6B@
 # @ extern ??_7ostream_withassign@@6B@
 # @ extern ??_7ostrstream@@6B@
-# @ extern ??_7stdiobuf@@6B@
+@ extern ??_7stdiobuf@@6B@ msvcirt.??_7stdiobuf@@6B@
 # @ extern ??_7stdiostream@@6B@
 @ extern ??_7streambuf@@6B@ msvcirt.??_7streambuf@@6B@
 # @ extern ??_7strstream@@6B@
@@ -414,7 +414,7 @@
 @ stub -arch=win32 ??_Eostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eostream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eostrstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Estdiobuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Estdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Estreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Estreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
@@ -437,7 +437,7 @@
 @ stub -arch=win32 ??_Gostream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gostream_withassign@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gostrstream@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gstdiobuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstdiobuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gstdiostream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gstreambuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gstreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gstrstream@@UAEPAXI at Z
@@ -634,12 +634,12 @@
 @ cdecl -arch=win64 ?out_waiting at streambuf@@QEBAHXZ(ptr) msvcirt.?out_waiting at streambuf@@QEBAHXZ
 @ thiscall -arch=win32 ?overflow at filebuf@@UAEHH at Z(ptr long) msvcirt.?overflow at filebuf@@UAEHH at Z
 @ cdecl -arch=win64 ?overflow at filebuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at filebuf@@UEAAHH at Z
-@ stub -arch=win32 ?overflow at stdiobuf@@UAEHH at Z
-@ stub -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?overflow at stdiobuf@@UAEHH at Z(ptr long) msvcirt.?overflow at stdiobuf@@UAEHH at Z
+@ cdecl -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at stdiobuf@@UEAAHH at Z
 @ thiscall -arch=win32 ?overflow at strstreambuf@@UAEHH at Z(ptr long) msvcirt.?overflow at strstreambuf@@UAEHH at Z
 @ cdecl -arch=win64 ?overflow at strstreambuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at strstreambuf@@UEAAHH at Z
-@ stub -arch=win32 ?pbackfail at stdiobuf@@UAEHH at Z
-@ stub -arch=win64 ?pbackfail at stdiobuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?pbackfail at stdiobuf@@UAEHH at Z(ptr long) msvcirt.?pbackfail at stdiobuf@@UAEHH at Z
+@ cdecl -arch=win64 ?pbackfail at stdiobuf@@UEAAHH at Z(ptr long) msvcirt.?pbackfail at stdiobuf@@UEAAHH at Z
 @ thiscall -arch=win32 ?pbackfail at streambuf@@UAEHH at Z(ptr long) msvcirt.?pbackfail at streambuf@@UAEHH at Z
 @ cdecl -arch=win64 ?pbackfail at streambuf@@UEAAHH at Z(ptr long) msvcirt.?pbackfail at streambuf@@UEAAHH at Z
 @ thiscall -arch=win32 ?pbase at streambuf@@IBEPADXZ(ptr) msvcirt.?pbase at streambuf@@IBEPADXZ
@@ -702,8 +702,8 @@
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
 @ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
 @ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
-@ stub -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
-@ stub -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
+@ thiscall -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
+@ cdecl -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z
 @ cdecl -arch=win64 ?seekoff at streambuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at streambuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at strstreambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at strstreambuf@@UAEJJW4seek_dir at ios@@H at Z
@@ -751,8 +751,8 @@
 @ stub -arch=win64 ?setmode at ofstream@@QEAAHH at Z
 @ thiscall -arch=win32 ?setp at streambuf@@IAEXPAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IAEXPAD0 at Z
 @ cdecl -arch=win64 ?setp at streambuf@@IEAAXPEAD0 at Z(ptr ptr ptr) msvcirt.?setp at streambuf@@IEAAXPEAD0 at Z
-@ stub -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z
-@ stub -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z
+@ thiscall -arch=win32 ?setrwbuf at stdiobuf@@QAEHHH at Z(ptr long long) msvcirt.?setrwbuf at stdiobuf@@QAEHHH at Z
+@ cdecl -arch=win64 ?setrwbuf at stdiobuf@@QEAAHHH at Z(ptr long long) msvcirt.?setrwbuf at stdiobuf@@QEAAHHH at Z
 @ thiscall -arch=win32 ?sgetc at streambuf@@QAEHXZ(ptr) msvcirt.?sgetc at streambuf@@QAEHXZ
 @ cdecl -arch=win64 ?sgetc at streambuf@@QEAAHXZ(ptr) msvcirt.?sgetc at streambuf@@QEAAHXZ
 @ thiscall -arch=win32 ?sgetn at streambuf@@QAEHPADH at Z(ptr ptr long) msvcirt.?sgetn at streambuf@@QAEHPADH at Z
@@ -768,8 +768,8 @@
 @ cdecl -arch=win64 ?sputc at streambuf@@QEAAHH at Z(ptr long) msvcirt.?sputc at streambuf@@QEAAHH at Z
 @ thiscall -arch=win32 ?sputn at streambuf@@QAEHPBDH at Z(ptr str long) msvcirt.?sputn at streambuf@@QAEHPBDH at Z
 @ cdecl -arch=win64 ?sputn at streambuf@@QEAAHPEBDH at Z(ptr str long) msvcirt.?sputn at streambuf@@QEAAHPEBDH at Z
-@ stub -arch=win32 ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ
-@ stub -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
+@ thiscall -arch=win32 ?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ(ptr) msvcirt.?stdiofile at stdiobuf@@QAEPAU_iobuf@@XZ
+@ cdecl -arch=win64 ?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ(ptr) msvcirt.?stdiofile at stdiobuf@@QEAAPEAU_iobuf@@XZ
 @ thiscall -arch=win32 ?stossc at streambuf@@QAEXXZ(ptr) msvcirt.?stossc at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?stossc at streambuf@@QEAAXXZ(ptr) msvcirt.?stossc at streambuf@@QEAAXXZ
 @ stub -arch=win32 ?str at istrstream@@QAEPADXZ
@@ -785,8 +785,8 @@
 @ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) msvcirt.?sync at filebuf@@UEAAHXZ
 @ stub -arch=win32 ?sync at istream@@QAEHXZ
 @ stub -arch=win64 ?sync at istream@@QEAAHXZ
-@ stub -arch=win32 ?sync at stdiobuf@@UAEHXZ
-@ stub -arch=win64 ?sync at stdiobuf@@UEAAHXZ
+@ thiscall -arch=win32 ?sync at stdiobuf@@UAEHXZ(ptr) msvcirt.?sync at stdiobuf@@UAEHXZ
+@ cdecl -arch=win64 ?sync at stdiobuf@@UEAAHXZ(ptr) msvcirt.?sync at stdiobuf@@UEAAHXZ
 @ thiscall -arch=win32 ?sync at streambuf@@UAEHXZ(ptr) msvcirt.?sync at streambuf@@UAEHXZ
 @ cdecl -arch=win64 ?sync at streambuf@@UEAAHXZ(ptr) msvcirt.?sync at streambuf@@UEAAHXZ
 @ thiscall -arch=win32 ?sync at strstreambuf@@UAEHXZ(ptr) msvcirt.?sync at strstreambuf@@UAEHXZ
@@ -808,8 +808,8 @@
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEBAHXZ(ptr) msvcirt.?unbuffered at streambuf@@IEBAHXZ
 @ thiscall -arch=win32 ?underflow at filebuf@@UAEHXZ(ptr) msvcirt.?underflow at filebuf@@UAEHXZ
 @ cdecl -arch=win64 ?underflow at filebuf@@UEAAHXZ(ptr) msvcirt.?underflow at filebuf@@UEAAHXZ
-@ stub -arch=win32 ?underflow at stdiobuf@@UAEHXZ
-@ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
+@ thiscall -arch=win32 ?underflow at stdiobuf@@UAEHXZ(ptr) msvcirt.?underflow at stdiobuf@@UAEHXZ
+@ cdecl -arch=win64 ?underflow at stdiobuf@@UEAAHXZ(ptr) msvcirt.?underflow at stdiobuf@@UEAAHXZ
 @ thiscall -arch=win32 ?underflow at strstreambuf@@UAEHXZ(ptr) msvcirt.?underflow at strstreambuf@@UAEHXZ
 @ cdecl -arch=win64 ?underflow at strstreambuf@@UEAAHXZ(ptr) msvcirt.?underflow at strstreambuf@@UEAAHXZ
 @ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
-- 
2.1.4




More information about the wine-patches mailing list