Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
70b447d0
Commit
70b447d0
authored
Jun 08, 2015
by
Iván Matellanes
Committed by
Alexandre Julliard
Jun 09, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcirt: Add implementation of streambuf locking.
parent
2e880fea
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
189 additions
and
34 deletions
+189
-34
msvcirt.c
dlls/msvcirt/msvcirt.c
+50
-2
msvcirt.spec
dlls/msvcirt/msvcirt.spec
+10
-10
msvcirt.c
dlls/msvcirt/tests/msvcirt.c
+109
-2
msvcrt20.spec
dlls/msvcrt20/msvcrt20.spec
+10
-10
msvcrt40.spec
dlls/msvcrt40/msvcrt40.spec
+10
-10
No files found.
dlls/msvcirt/msvcirt.c
View file @
70b447d0
...
...
@@ -45,7 +45,7 @@ typedef struct {
char
*
eback
;
char
*
gptr
;
char
*
egptr
;
int
unknown2
;
int
do_lock
;
CRITICAL_SECTION
lock
;
}
streambuf
;
...
...
@@ -99,7 +99,7 @@ streambuf* __thiscall streambuf_reserve_ctor(streambuf *this, char *buffer, int
this
->
vtable
=
&
MSVCP_streambuf_vtable
;
this
->
allocated
=
0
;
this
->
unknown
=
-
1
;
this
->
unknown2
=
-
1
;
this
->
do_lock
=
-
1
;
this
->
base
=
NULL
;
streambuf_setbuf
(
this
,
buffer
,
length
);
streambuf_setg
(
this
,
NULL
,
NULL
,
NULL
);
...
...
@@ -288,6 +288,35 @@ char* __thiscall streambuf_pptr(const streambuf *this)
return
this
->
pptr
;
}
/* ?clrlock@streambuf@@QAEXXZ */
/* ?clrlock@streambuf@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER
(
streambuf_clrlock
,
4
)
void
__thiscall
streambuf_clrlock
(
streambuf
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
if
(
this
->
do_lock
<=
0
)
this
->
do_lock
++
;
}
/* ?lock@streambuf@@QAEXXZ */
/* ?lock@streambuf@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER
(
streambuf_lock
,
4
)
void
__thiscall
streambuf_lock
(
streambuf
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
if
(
this
->
do_lock
<
0
)
EnterCriticalSection
(
&
this
->
lock
);
}
/* ?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ */
/* ?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ */
DEFINE_THISCALL_WRAPPER
(
streambuf_lockptr
,
4
)
CRITICAL_SECTION
*
__thiscall
streambuf_lockptr
(
streambuf
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
&
this
->
lock
;
}
/* Unexported */
DEFINE_THISCALL_WRAPPER
(
streambuf_overflow
,
8
)
int
__thiscall
streambuf_overflow
(
streambuf
*
this
,
int
c
)
...
...
@@ -366,6 +395,15 @@ void __thiscall streambuf_setg(streambuf *this, char *ek, char *gp, char *eg)
this
->
egptr
=
eg
;
}
/* ?setlock@streambuf@@QAEXXZ */
/* ?setlock@streambuf@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER
(
streambuf_setlock
,
4
)
void
__thiscall
streambuf_setlock
(
streambuf
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
this
->
do_lock
--
;
}
/* ?setp@streambuf@@IAEXPAD0@Z */
/* ?setp@streambuf@@IEAAXPEAD0@Z */
DEFINE_THISCALL_WRAPPER
(
streambuf_setp
,
12
)
...
...
@@ -410,6 +448,16 @@ int __thiscall streambuf_underflow(streambuf *this)
return
EOF
;
}
/* ?unlock@streambuf@@QAEXXZ */
/* ?unlock@streambuf@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER
(
streambuf_unlock
,
4
)
void
__thiscall
streambuf_unlock
(
streambuf
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
if
(
this
->
do_lock
<
0
)
LeaveCriticalSection
(
&
this
->
lock
);
}
/* ?xsgetn@streambuf@@UAEHPADH@Z */
/* ?xsgetn@streambuf@@UEAAHPEADH@Z */
DEFINE_THISCALL_WRAPPER
(
streambuf_xsgetn
,
12
)
...
...
dlls/msvcirt/msvcirt.spec
View file @
70b447d0
...
...
@@ -434,8 +434,8 @@
@ stub -arch=win64 ?close@ofstream@@QEAAXXZ
@ stub -arch=win32 ?clrlock@ios@@QAAXXZ # void __cdecl ios::clrlock(void)
@ stub -arch=win64 ?clrlock@ios@@QEAAXXZ
@
stub -arch=win32 ?clrlock@streambuf@@QAEXXZ # void __thiscall streambuf::clrlock(void)
@
stub -arch=win64 ?clrlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?clrlock@streambuf@@QAEXXZ(ptr) streambuf_clrlock
@
cdecl -arch=win64 ?clrlock@streambuf@@QEAAXXZ(ptr) streambuf_clrlock
@ stub ?cout@@3Vostream_withassign@@A # class ostream_withassign cout
@ stub -arch=win32 ?dbp@streambuf@@QAEXXZ # void __thiscall streambuf::dbp(void)
@ stub -arch=win64 ?dbp@streambuf@@QEAAXXZ
...
...
@@ -551,15 +551,15 @@
@ stub -arch=win64 ?iword@ios@@QEBAAEAJH@Z
@ stub -arch=win32 ?lock@ios@@QAAXXZ # void __cdecl ios::lock(void)
@ stub -arch=win64 ?lock@ios@@QEAAXXZ
@
stub -arch=win32 ?lock@streambuf@@QAEXXZ # void __thiscall streambuf::lock(void)
@
stub -arch=win64 ?lock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?lock@streambuf@@QAEXXZ(ptr) streambuf_lock
@
cdecl -arch=win64 ?lock@streambuf@@QEAAXXZ(ptr) streambuf_lock
@ stub -arch=win32 ?lockbuf@ios@@QAAXXZ # void __cdecl ios::lockbuf(void)
@ stub -arch=win64 ?lockbuf@ios@@QEAAXXZ
@ stub ?lockc@ios@@KAXXZ # static void __cdecl ios::lockc(void)
@ stub -arch=win32 ?lockptr@ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ # struct _CRT_CRITICAL_SECTION * __thiscall ios::lockptr(void)
@ stub -arch=win64 ?lockptr@ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@
stub -arch=win32 ?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ # struct _CRT_CRITICAL_SECTION * __thiscall streambuf::lockptr(void)
@
stub -arch=win64 ?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@
thiscall -arch=win32 ?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) streambuf_lockptr
@
cdecl -arch=win64 ?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) streambuf_lockptr
@ stub -arch=win32 ?oct@@YAAAVios@@AAV1@@Z # class ios & __cdecl oct(class ios &)
@ stub -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z
@ stub -arch=win32 ?open@filebuf@@QAEPAV1@PBDHH@Z # class filebuf * __thiscall filebuf::open(char const *,int,int)
...
...
@@ -679,8 +679,8 @@
@ cdecl -arch=win64 ?setg@streambuf@@IEAAXPEAD00@Z(ptr ptr ptr ptr) streambuf_setg
@ stub -arch=win32 ?setlock@ios@@QAAXXZ # void __cdecl ios::setlock(void)
@ stub -arch=win64 ?setlock@ios@@QEAAXXZ
@
stub -arch=win32 ?setlock@streambuf@@QAEXXZ # void __thiscall streambuf::setlock(void)
@
stub -arch=win64 ?setlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?setlock@streambuf@@QAEXXZ(ptr) streambuf_setlock
@
cdecl -arch=win64 ?setlock@streambuf@@QEAAXXZ(ptr) streambuf_setlock
@ stub -arch=win32 ?setmode@filebuf@@QAEHH@Z # int __thiscall filebuf::setmode(int)
@ stub -arch=win64 ?setmode@filebuf@@QEAAHH@Z
@ stub -arch=win32 ?setmode@fstream@@QAEHH@Z # int __thiscall fstream::setmode(int)
...
...
@@ -753,8 +753,8 @@
@ stub -arch=win64 ?underflow@strstreambuf@@UEAAHXZ
@ stub -arch=win32 ?unlock@ios@@QAAXXZ # void __cdecl ios::unlock(void)
@ stub -arch=win64 ?unlock@ios@@QEAAXXZ
@
stub -arch=win32 ?unlock@streambuf@@QAEXXZ # void __thiscall streambuf::unlock(void)
@
stub -arch=win64 ?unlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?unlock@streambuf@@QAEXXZ(ptr) streambuf_unlock
@
cdecl -arch=win64 ?unlock@streambuf@@QEAAXXZ(ptr) streambuf_unlock
@ stub -arch=win32 ?unlockbuf@ios@@QAAXXZ # void __cdecl ios::unlockbuf(void)
@ stub -arch=win64 ?unlockbuf@ios@@QEAAXXZ
@ stub ?unlockc@ios@@KAXXZ # static void __cdecl ios::unlockc(void)
...
...
dlls/msvcirt/tests/msvcirt.c
View file @
70b447d0
...
...
@@ -37,7 +37,7 @@ typedef struct {
char
*
eback
;
char
*
gptr
;
char
*
egptr
;
int
unknown2
;
int
do_lock
;
CRITICAL_SECTION
lock
;
}
streambuf
;
...
...
@@ -53,9 +53,13 @@ static streambuf* (*__thiscall p_streambuf_reserve_ctor)(streambuf*, char*, int)
static
streambuf
*
(
*
__thiscall
p_streambuf_ctor
)(
streambuf
*
);
static
void
(
*
__thiscall
p_streambuf_dtor
)(
streambuf
*
);
static
int
(
*
__thiscall
p_streambuf_allocate
)(
streambuf
*
);
static
void
(
*
__thiscall
p_streambuf_clrclock
)(
streambuf
*
);
static
int
(
*
__thiscall
p_streambuf_doallocate
)(
streambuf
*
);
static
void
(
*
__thiscall
p_streambuf_lock
)(
streambuf
*
);
static
void
(
*
__thiscall
p_streambuf_setb
)(
streambuf
*
,
char
*
,
char
*
,
int
);
static
void
(
*
__thiscall
p_streambuf_setlock
)(
streambuf
*
);
static
streambuf
*
(
*
__thiscall
p_streambuf_setbuf
)(
streambuf
*
,
char
*
,
int
);
static
void
(
*
__thiscall
p_streambuf_unlock
)(
streambuf
*
);
/* Emulate a __thiscall */
#ifdef __i386__
...
...
@@ -130,28 +134,65 @@ static BOOL init(void)
SET
(
p_streambuf_ctor
,
"??0streambuf@@IEAA@XZ"
);
SET
(
p_streambuf_dtor
,
"??1streambuf@@UEAA@XZ"
);
SET
(
p_streambuf_allocate
,
"?allocate@streambuf@@IEAAHXZ"
);
SET
(
p_streambuf_clrclock
,
"?clrlock@streambuf@@QEAAXXZ"
);
SET
(
p_streambuf_doallocate
,
"?doallocate@streambuf@@MEAAHXZ"
);
SET
(
p_streambuf_lock
,
"?lock@streambuf@@QEAAXXZ"
);
SET
(
p_streambuf_setb
,
"?setb@streambuf@@IEAAXPEAD0H@Z"
);
SET
(
p_streambuf_setbuf
,
"?setbuf@streambuf@@UEAAPEAV1@PEADH@Z"
);
SET
(
p_streambuf_setlock
,
"?setlock@streambuf@@QEAAXXZ"
);
SET
(
p_streambuf_unlock
,
"?unlock@streambuf@@QEAAXXZ"
);
}
else
{
SET
(
p_streambuf_reserve_ctor
,
"??0streambuf@@IAE@PADH@Z"
);
SET
(
p_streambuf_ctor
,
"??0streambuf@@IAE@XZ"
);
SET
(
p_streambuf_dtor
,
"??1streambuf@@UAE@XZ"
);
SET
(
p_streambuf_allocate
,
"?allocate@streambuf@@IAEHXZ"
);
SET
(
p_streambuf_clrclock
,
"?clrlock@streambuf@@QAEXXZ"
);
SET
(
p_streambuf_doallocate
,
"?doallocate@streambuf@@MAEHXZ"
);
SET
(
p_streambuf_lock
,
"?lock@streambuf@@QAEXXZ"
);
SET
(
p_streambuf_setb
,
"?setb@streambuf@@IAEXPAD0H@Z"
);
SET
(
p_streambuf_setbuf
,
"?setbuf@streambuf@@UAEPAV1@PADH@Z"
);
SET
(
p_streambuf_setlock
,
"?setlock@streambuf@@QAEXXZ"
);
SET
(
p_streambuf_unlock
,
"?unlock@streambuf@@QAEXXZ"
);
}
init_thiscall_thunk
();
return
TRUE
;
}
struct
streambuf_lock_arg
{
streambuf
*
sb
;
HANDLE
lock
[
4
];
HANDLE
test
[
4
];
};
static
DWORD
WINAPI
lock_streambuf
(
void
*
arg
)
{
struct
streambuf_lock_arg
*
lock_arg
=
arg
;
call_func1
(
p_streambuf_lock
,
lock_arg
->
sb
);
SetEvent
(
lock_arg
->
lock
[
0
]);
WaitForSingleObject
(
lock_arg
->
test
[
0
],
INFINITE
);
call_func1
(
p_streambuf_lock
,
lock_arg
->
sb
);
SetEvent
(
lock_arg
->
lock
[
1
]);
WaitForSingleObject
(
lock_arg
->
test
[
1
],
INFINITE
);
call_func1
(
p_streambuf_lock
,
lock_arg
->
sb
);
SetEvent
(
lock_arg
->
lock
[
2
]);
WaitForSingleObject
(
lock_arg
->
test
[
2
],
INFINITE
);
call_func1
(
p_streambuf_unlock
,
lock_arg
->
sb
);
SetEvent
(
lock_arg
->
lock
[
3
]);
WaitForSingleObject
(
lock_arg
->
test
[
3
],
INFINITE
);
call_func1
(
p_streambuf_unlock
,
lock_arg
->
sb
);
return
0
;
}
static
void
test_streambuf
(
void
)
{
streambuf
sb
,
sb2
,
*
psb
;
struct
streambuf_lock_arg
lock_arg
;
HANDLE
thread
;
char
reserve
[
16
];
int
ret
;
int
ret
,
i
;
BOOL
locked
;
memset
(
&
sb
,
0xab
,
sizeof
(
streambuf
));
memset
(
&
sb2
,
0xab
,
sizeof
(
streambuf
));
...
...
@@ -170,6 +211,64 @@ static void test_streambuf(void)
ok
(
sb2
.
ebuf
==
reserve
+
16
,
"wrong ebuf pointer, expected %p got %p
\n
"
,
reserve
+
16
,
sb2
.
ebuf
);
ok
(
sb
.
lock
.
LockCount
==
-
1
,
"wrong critical section state, expected -1 got %d
\n
"
,
sb
.
lock
.
LockCount
);
/* setlock */
ok
(
sb
.
do_lock
==
-
1
,
"expected do_lock value -1, got %d
\n
"
,
sb
.
do_lock
);
call_func1
(
p_streambuf_setlock
,
&
sb
);
ok
(
sb
.
do_lock
==
-
2
,
"expected do_lock value -2, got %d
\n
"
,
sb
.
do_lock
);
call_func1
(
p_streambuf_setlock
,
&
sb
);
ok
(
sb
.
do_lock
==
-
3
,
"expected do_lock value -3, got %d
\n
"
,
sb
.
do_lock
);
sb
.
do_lock
=
3
;
call_func1
(
p_streambuf_setlock
,
&
sb
);
ok
(
sb
.
do_lock
==
2
,
"expected do_lock value 2, got %d
\n
"
,
sb
.
do_lock
);
/* clrlock */
sb
.
do_lock
=
-
2
;
call_func1
(
p_streambuf_clrclock
,
&
sb
);
ok
(
sb
.
do_lock
==
-
1
,
"expected do_lock value -1, got %d
\n
"
,
sb
.
do_lock
);
call_func1
(
p_streambuf_clrclock
,
&
sb
);
ok
(
sb
.
do_lock
==
0
,
"expected do_lock value 0, got %d
\n
"
,
sb
.
do_lock
);
call_func1
(
p_streambuf_clrclock
,
&
sb
);
ok
(
sb
.
do_lock
==
1
,
"expected do_lock value 1, got %d
\n
"
,
sb
.
do_lock
);
call_func1
(
p_streambuf_clrclock
,
&
sb
);
ok
(
sb
.
do_lock
==
1
,
"expected do_lock value 1, got %d
\n
"
,
sb
.
do_lock
);
/* lock/unlock */
lock_arg
.
sb
=
&
sb
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
lock_arg
.
lock
[
i
]
=
CreateEventW
(
NULL
,
FALSE
,
FALSE
,
NULL
);
ok
(
lock_arg
.
lock
[
i
]
!=
NULL
,
"CreateEventW failed
\n
"
);
lock_arg
.
test
[
i
]
=
CreateEventW
(
NULL
,
FALSE
,
FALSE
,
NULL
);
ok
(
lock_arg
.
test
[
i
]
!=
NULL
,
"CreateEventW failed
\n
"
);
}
sb
.
do_lock
=
0
;
thread
=
CreateThread
(
NULL
,
0
,
lock_streambuf
,
(
void
*
)
&
lock_arg
,
0
,
NULL
);
ok
(
thread
!=
NULL
,
"CreateThread failed
\n
"
);
WaitForSingleObject
(
lock_arg
.
lock
[
0
],
INFINITE
);
locked
=
TryEnterCriticalSection
(
&
sb
.
lock
);
ok
(
locked
!=
0
,
"could not lock the streambuf
\n
"
);
LeaveCriticalSection
(
&
sb
.
lock
);
sb
.
do_lock
=
1
;
SetEvent
(
lock_arg
.
test
[
0
]);
WaitForSingleObject
(
lock_arg
.
lock
[
1
],
INFINITE
);
locked
=
TryEnterCriticalSection
(
&
sb
.
lock
);
ok
(
locked
!=
0
,
"could not lock the streambuf
\n
"
);
LeaveCriticalSection
(
&
sb
.
lock
);
sb
.
do_lock
=
-
1
;
SetEvent
(
lock_arg
.
test
[
1
]);
WaitForSingleObject
(
lock_arg
.
lock
[
2
],
INFINITE
);
locked
=
TryEnterCriticalSection
(
&
sb
.
lock
);
ok
(
locked
==
0
,
"the streambuf was not locked before
\n
"
);
sb
.
do_lock
=
0
;
SetEvent
(
lock_arg
.
test
[
2
]);
WaitForSingleObject
(
lock_arg
.
lock
[
3
],
INFINITE
);
locked
=
TryEnterCriticalSection
(
&
sb
.
lock
);
ok
(
locked
==
0
,
"the streambuf was not locked before
\n
"
);
sb
.
do_lock
=
-
1
;
/* setb */
call_func4
(
p_streambuf_setb
,
&
sb
,
reserve
,
reserve
+
16
,
0
);
ok
(
sb
.
base
==
reserve
,
"wrong base pointer, expected %p got %p
\n
"
,
reserve
,
sb
.
base
);
...
...
@@ -219,8 +318,16 @@ static void test_streambuf(void)
ok
(
sb2
.
allocated
==
1
,
"wrong allocate value, expected 1 got %d
\n
"
,
sb2
.
allocated
);
ok
(
sb2
.
ebuf
-
sb2
.
base
==
512
,
"wrong reserve area size, expected 512 got %p-%p
\n
"
,
sb2
.
ebuf
,
sb2
.
base
);
SetEvent
(
lock_arg
.
test
[
3
]);
WaitForSingleObject
(
thread
,
INFINITE
);
call_func1
(
p_streambuf_dtor
,
&
sb
);
call_func1
(
p_streambuf_dtor
,
&
sb2
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
CloseHandle
(
lock_arg
.
lock
[
i
]);
CloseHandle
(
lock_arg
.
test
[
i
]);
}
CloseHandle
(
thread
);
}
START_TEST
(
msvcirt
)
...
...
dlls/msvcrt20/msvcrt20.spec
View file @
70b447d0
...
...
@@ -422,8 +422,8 @@
@ stub -arch=win64 ?close@ofstream@@QEAAXXZ
@ stub -arch=win32 ?clrlock@ios@@QAAXXZ
@ stub -arch=win64 ?clrlock@ios@@QEAAXXZ
@
stub -arch=win32
?clrlock@streambuf@@QAEXXZ
@
stub -arch=win64
?clrlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?clrlock@streambuf@@QAEXXZ(ptr) msvcirt.
?clrlock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?clrlock@streambuf@@QEAAXXZ(ptr) msvcirt.
?clrlock@streambuf@@QEAAXXZ
@ stub ?cout@@3Vostream_withassign@@A
@ stub -arch=win32 ?dbp@streambuf@@QAEXXZ
@ stub -arch=win64 ?dbp@streambuf@@QEAAXXZ
...
...
@@ -537,15 +537,15 @@
@ stub -arch=win64 ?iword@ios@@QEBAAEAJH@Z
@ stub -arch=win32 ?lock@ios@@QAAXXZ
@ stub -arch=win64 ?lock@ios@@QEAAXXZ
@
stub -arch=win32
?lock@streambuf@@QAEXXZ
@
stub -arch=win64
?lock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?lock@streambuf@@QAEXXZ(ptr) msvcirt.
?lock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?lock@streambuf@@QEAAXXZ(ptr) msvcirt.
?lock@streambuf@@QEAAXXZ
@ stub -arch=win32 ?lockbuf@ios@@QAAXXZ
@ stub -arch=win64 ?lockbuf@ios@@QEAAXXZ
@ stub ?lockc@ios@@KAXXZ
@ stub -arch=win32 ?lockptr@ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
@ stub -arch=win64 ?lockptr@ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@
stub -arch=win32
?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
@
stub -arch=win64
?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@
thiscall -arch=win32 ?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.
?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
@
cdecl -arch=win64 ?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.
?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@ stub -arch=win32 ?oct@@YAAAVios@@AAV1@@Z
@ stub -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z
@ stub -arch=win32 ?open@filebuf@@QAEPAV1@PBDHH@Z
...
...
@@ -667,8 +667,8 @@
@ cdecl -arch=win64 ?setg@streambuf@@IEAAXPEAD00@Z(ptr ptr ptr ptr) msvcirt.?setg@streambuf@@IEAAXPEAD00@Z
@ stub -arch=win32 ?setlock@ios@@QAAXXZ
@ stub -arch=win64 ?setlock@ios@@QEAAXXZ
@
stub -arch=win32
?setlock@streambuf@@QAEXXZ
@
stub -arch=win64
?setlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?setlock@streambuf@@QAEXXZ(ptr) msvcirt.
?setlock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?setlock@streambuf@@QEAAXXZ(ptr) msvcirt.
?setlock@streambuf@@QEAAXXZ
@ stub -arch=win32 ?setmode@filebuf@@QAEHH@Z
@ stub -arch=win64 ?setmode@filebuf@@QEAAHH@Z
@ stub -arch=win32 ?setmode@fstream@@QAEHH@Z
...
...
@@ -743,8 +743,8 @@
@ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
@ stub -arch=win32 ?unlock@ios@@QAAXXZ
@ stub -arch=win64 ?unlock@ios@@QEAAXXZ
@
stub -arch=win32
?unlock@streambuf@@QAEXXZ
@
stub -arch=win64
?unlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?unlock@streambuf@@QAEXXZ(ptr) msvcirt.
?unlock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?unlock@streambuf@@QEAAXXZ(ptr) msvcirt.
?unlock@streambuf@@QEAAXXZ
@ stub -arch=win32 ?unlockbuf@ios@@QAAXXZ
@ stub -arch=win64 ?unlockbuf@ios@@QEAAXXZ
@ stub ?unlockc@ios@@KAXXZ
...
...
dlls/msvcrt40/msvcrt40.spec
View file @
70b447d0
...
...
@@ -487,8 +487,8 @@
@ stub -arch=win64 ?close@ofstream@@QEAAXXZ
@ stub -arch=win32 ?clrlock@ios@@QAAXXZ
@ stub -arch=win64 ?clrlock@ios@@QEAAXXZ
@
stub -arch=win32
?clrlock@streambuf@@QAEXXZ
@
stub -arch=win64
?clrlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?clrlock@streambuf@@QAEXXZ(ptr) msvcirt.
?clrlock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?clrlock@streambuf@@QEAAXXZ(ptr) msvcirt.
?clrlock@streambuf@@QEAAXXZ
@ stub ?cout@@3Vostream_withassign@@A
@ stub -arch=win32 ?dbp@streambuf@@QAEXXZ
@ stub -arch=win64 ?dbp@streambuf@@QEAAXXZ
...
...
@@ -604,15 +604,15 @@
@ stub -arch=win64 ?iword@ios@@QEBAAEAJH@Z
@ stub -arch=win32 ?lock@ios@@QAAXXZ
@ stub -arch=win64 ?lock@ios@@QEAAXXZ
@
stub -arch=win32
?lock@streambuf@@QAEXXZ
@
stub -arch=win64
?lock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?lock@streambuf@@QAEXXZ(ptr) msvcirt.
?lock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?lock@streambuf@@QEAAXXZ(ptr) msvcirt.
?lock@streambuf@@QEAAXXZ
@ stub -arch=win32 ?lockbuf@ios@@QAAXXZ
@ stub -arch=win64 ?lockbuf@ios@@QEAAXXZ
@ stub ?lockc@ios@@KAXXZ
@ stub -arch=win32 ?lockptr@ios@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
@ stub -arch=win64 ?lockptr@ios@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@
stub -arch=win32
?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
@
stub -arch=win64
?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@
thiscall -arch=win32 ?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.
?lockptr@streambuf@@IAEPAU_CRT_CRITICAL_SECTION@@XZ
@
cdecl -arch=win64 ?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.
?lockptr@streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
@ thiscall -arch=win32 ?name@type_info@@QBEPBDXZ(ptr) msvcrt.?name@type_info@@QBEPBDXZ
@ cdecl -arch=win64 ?name@type_info@@QEBAPEBDXZ(ptr) msvcrt.?name@type_info@@QEBAPEBDXZ
@ stub -arch=win32 ?oct@@YAAAVios@@AAV1@@Z
...
...
@@ -739,8 +739,8 @@
@ cdecl -arch=win64 ?setg@streambuf@@IEAAXPEAD00@Z(ptr ptr ptr ptr) msvcirt.?setg@streambuf@@IEAAXPEAD00@Z
@ stub -arch=win32 ?setlock@ios@@QAAXXZ
@ stub -arch=win64 ?setlock@ios@@QEAAXXZ
@
stub -arch=win32
?setlock@streambuf@@QAEXXZ
@
stub -arch=win64
?setlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?setlock@streambuf@@QAEXXZ(ptr) msvcirt.
?setlock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?setlock@streambuf@@QEAAXXZ(ptr) msvcirt.
?setlock@streambuf@@QEAAXXZ
@ stub -arch=win32 ?setmode@filebuf@@QAEHH@Z
@ stub -arch=win64 ?setmode@filebuf@@QEAAHH@Z
@ stub -arch=win32 ?setmode@fstream@@QAEHH@Z
...
...
@@ -815,8 +815,8 @@
@ cdecl ?unexpected@@YAXXZ() msvcrt.?unexpected@@YAXXZ
@ stub -arch=win32 ?unlock@ios@@QAAXXZ
@ stub -arch=win64 ?unlock@ios@@QEAAXXZ
@
stub -arch=win32
?unlock@streambuf@@QAEXXZ
@
stub -arch=win64
?unlock@streambuf@@QEAAXXZ
@
thiscall -arch=win32 ?unlock@streambuf@@QAEXXZ(ptr) msvcirt.
?unlock@streambuf@@QAEXXZ
@
cdecl -arch=win64 ?unlock@streambuf@@QEAAXXZ(ptr) msvcirt.
?unlock@streambuf@@QEAAXXZ
@ stub -arch=win32 ?unlockbuf@ios@@QAAXXZ
@ stub -arch=win64 ?unlockbuf@ios@@QEAAXXZ
@ stub ?unlockc@ios@@KAXXZ
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment