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
661791cb
Commit
661791cb
authored
Mar 08, 2018
by
Piotr Caban
Committed by
Alexandre Julliard
Mar 08, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcp100: Add _Runtime_object class implementation.
Signed-off-by:
Piotr Caban
<
piotr@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
4fda0463
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
104 additions
and
23 deletions
+104
-23
msvcp100.spec
dlls/msvcp100/msvcp100.spec
+6
-4
misc.c
dlls/msvcp100/tests/misc.c
+35
-1
msvcp110.spec
dlls/msvcp110/msvcp110.spec
+6
-6
msvcp120.spec
dlls/msvcp120/msvcp120.spec
+6
-6
msvcp120_app.spec
dlls/msvcp120_app/msvcp120_app.spec
+6
-6
misc.c
dlls/msvcp90/misc.c
+45
-0
No files found.
dlls/msvcp100/msvcp100.spec
View file @
661791cb
...
...
@@ -203,10 +203,12 @@
@ stub -arch=win64 ??0_Mutex@std@@QEAA@W4_Uninitialized@1@@Z
@ thiscall -arch=win32 ??0_Mutex@std@@QAE@XZ(ptr) mutex_ctor
@ cdecl -arch=win64 ??0_Mutex@std@@QEAA@XZ(ptr) mutex_ctor
@ stub -arch=win32 ??0_Runtime_object@details@Concurrency@@QAE@H@Z
@ stub -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z
@ stub -arch=win32 ??0_Runtime_object@details@Concurrency@@QAE@XZ
@ stub -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ
@ cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@H@Z(ptr long) _Runtime_object_ctor_id
@ thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@H@Z(ptr long) _Runtime_object_ctor_id
@ cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z(ptr long) _Runtime_object_ctor_id
@ cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@XZ(ptr) _Runtime_object_ctor
@ thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@XZ(ptr) _Runtime_object_ctor
@ cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ(ptr) _Runtime_object_ctor
@ thiscall -arch=win32 ??0_Timevec@std@@QAE@ABV01@@Z(ptr ptr) _Timevec_copy_ctor
@ cdecl -arch=win64 ??0_Timevec@std@@QEAA@AEBV01@@Z(ptr ptr) _Timevec_copy_ctor
@ thiscall -arch=win32 ??0_Timevec@std@@QAE@PAX@Z(ptr ptr) _Timevec_ctor_timeptr
...
...
dlls/msvcp100/tests/misc.c
View file @
661791cb
...
...
@@ -38,6 +38,11 @@ typedef struct __Container_proxy {
_Iterator_base12
*
head
;
}
_Container_proxy
;
typedef
struct
{
void
*
vtable
;
int
id
;
}
_Runtime_object
;
#undef __thiscall
#ifdef __i386__
#define __thiscall __stdcall
...
...
@@ -51,6 +56,8 @@ static void (__thiscall *p__Container_base12__Orphan_all)(_Container_base12*);
static
void
(
__thiscall
*
p__Container_base12_dtor
)(
_Container_base12
*
);
static
_Iterator_base12
**
(
__thiscall
*
p__Container_base12__Getpfirst
)(
_Container_base12
*
);
static
void
(
__thiscall
*
p__Container_base12__Swap_all
)(
_Container_base12
*
,
_Container_base12
*
);
static
_Runtime_object
*
(
__thiscall
*
p__Runtime_object_ctor
)(
_Runtime_object
*
);
static
_Runtime_object
*
(
__thiscall
*
p__Runtime_object_ctor_id
)(
_Runtime_object
*
,
int
);
/* Emulate a __thiscall */
#ifdef __i386__
...
...
@@ -111,6 +118,8 @@ static BOOL init(void)
SET
(
p__Container_base12_dtor
,
"??1_Container_base12@std@@QEAA@XZ"
);
SET
(
p__Container_base12__Getpfirst
,
"?_Getpfirst@_Container_base12@std@@QEBAPEAPEAU_Iterator_base12@2@XZ"
);
SET
(
p__Container_base12__Swap_all
,
"?_Swap_all@_Container_base12@std@@QEAAXAEAU12@@Z"
);
SET
(
p__Runtime_object_ctor
,
"??0_Runtime_object@details@Concurrency@@QEAA@XZ"
);
SET
(
p__Runtime_object_ctor_id
,
"??0_Runtime_object@details@Concurrency@@QEAA@H@Z"
);
}
else
{
#ifdef __arm__
SET
(
p__Container_base12_copy_ctor
,
"??0_Container_base12@std@@QAA@ABU01@@Z"
);
...
...
@@ -119,6 +128,8 @@ static BOOL init(void)
SET
(
p__Container_base12_dtor
,
"??1_Container_base12@std@@QAA@XZ"
);
SET
(
p__Container_base12__Getpfirst
,
"?_Getpfirst@_Container_base12@std@@QBAPAPAU_Iterator_base12@2@XZ"
);
SET
(
p__Container_base12__Swap_all
,
"?_Swap_all@_Container_base12@std@@QAAXAAU12@@Z"
);
SET
(
p__Runtime_object_ctor
,
"??0_Runtime_object@details@Concurrency@@QAA@XZ"
);
SET
(
p__Runtime_object_ctor_id
,
"??0_Runtime_object@details@Concurrency@@QAA@H@Z"
);
#else
SET
(
p__Container_base12_copy_ctor
,
"??0_Container_base12@std@@QAE@ABU01@@Z"
);
SET
(
p__Container_base12_ctor
,
"??0_Container_base12@std@@QAE@XZ"
);
...
...
@@ -126,6 +137,8 @@ static BOOL init(void)
SET
(
p__Container_base12_dtor
,
"??1_Container_base12@std@@QAE@XZ"
);
SET
(
p__Container_base12__Getpfirst
,
"?_Getpfirst@_Container_base12@std@@QBEPAPAU_Iterator_base12@2@XZ"
);
SET
(
p__Container_base12__Swap_all
,
"?_Swap_all@_Container_base12@std@@QAEXAAU12@@Z"
);
SET
(
p__Runtime_object_ctor
,
"??0_Runtime_object@details@Concurrency@@QAE@XZ"
);
SET
(
p__Runtime_object_ctor_id
,
"??0_Runtime_object@details@Concurrency@@QAE@H@Z"
);
#endif
/* __arm__ */
}
...
...
@@ -230,14 +243,35 @@ static void test_vbtable_size_exports(void)
}
}
static
void
test__Runtime_object
(
void
)
{
_Runtime_object
ro
;
memset
(
&
ro
,
0
,
sizeof
(
ro
));
call_func1
(
p__Runtime_object_ctor
,
&
ro
);
ok
(
ro
.
id
==
0
,
"ro.id = %d
\n
"
,
ro
.
id
);
call_func1
(
p__Runtime_object_ctor
,
&
ro
);
ok
(
ro
.
id
==
2
,
"ro.id = %d
\n
"
,
ro
.
id
);
call_func1
(
p__Runtime_object_ctor
,
&
ro
);
ok
(
ro
.
id
==
4
,
"ro.id = %d
\n
"
,
ro
.
id
);
call_func2
(
p__Runtime_object_ctor_id
,
&
ro
,
0
);
ok
(
ro
.
id
==
0
,
"ro.id = %d
\n
"
,
ro
.
id
);
call_func2
(
p__Runtime_object_ctor_id
,
&
ro
,
1
);
ok
(
ro
.
id
==
1
,
"ro.id = %d
\n
"
,
ro
.
id
);
call_func2
(
p__Runtime_object_ctor_id
,
&
ro
,
10
);
ok
(
ro
.
id
==
10
,
"ro.id = %d
\n
"
,
ro
.
id
);
call_func1
(
p__Runtime_object_ctor
,
&
ro
);
ok
(
ro
.
id
==
6
,
"ro.id = %d
\n
"
,
ro
.
id
);
}
START_TEST
(
misc
)
{
if
(
!
init
())
return
;
test__Container_base12
();
test_vbtable_size_exports
();
test__Runtime_object
();
FreeLibrary
(
msvcp
);
}
dlls/msvcp110/msvcp110.spec
View file @
661791cb
...
...
@@ -316,12 +316,12 @@
@ cdecl -arch=arm ??0_Pad@std@@QAA@XZ(ptr) _Pad_ctor
@ thiscall -arch=i386 ??0_Pad@std@@QAE@XZ(ptr) _Pad_ctor
@ cdecl -arch=win64 ??0_Pad@std@@QEAA@XZ(ptr) _Pad_ctor
@
stub -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@H@Z
@
stub -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@H@Z
@
stub -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z
@
stub -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@XZ
@
stub -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@XZ
@
stub -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ
@
cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@H@Z(ptr long) _Runtime_object_ctor_id
@
thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@H@Z(ptr long) _Runtime_object_ctor_id
@
cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z(ptr long) _Runtime_object_ctor_id
@
cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@XZ(ptr) _Runtime_object_ctor
@
thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@XZ(ptr) _Runtime_object_ctor
@
cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ(ptr) _Runtime_object_ctor
@ cdecl -arch=arm ??0_Timevec@std@@QAA@ABV01@@Z(ptr ptr) _Timevec_copy_ctor
@ thiscall -arch=i386 ??0_Timevec@std@@QAE@ABV01@@Z(ptr ptr) _Timevec_copy_ctor
@ cdecl -arch=win64 ??0_Timevec@std@@QEAA@AEBV01@@Z(ptr ptr) _Timevec_copy_ctor
...
...
dlls/msvcp120/msvcp120.spec
View file @
661791cb
...
...
@@ -316,12 +316,12 @@
@ cdecl -arch=arm ??0_Pad@std@@QAA@XZ(ptr) _Pad_ctor
@ thiscall -arch=i386 ??0_Pad@std@@QAE@XZ(ptr) _Pad_ctor
@ cdecl -arch=win64 ??0_Pad@std@@QEAA@XZ(ptr) _Pad_ctor
@
stub -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@H@Z
@
stub -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@H@Z
@
stub -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z
@
stub -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@XZ
@
stub -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@XZ
@
stub -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ
@
cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@H@Z(ptr long) _Runtime_object_ctor_id
@
thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@H@Z(ptr long) _Runtime_object_ctor_id
@
cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z(ptr long) _Runtime_object_ctor_id
@
cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@XZ(ptr) _Runtime_object_ctor
@
thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@XZ(ptr) _Runtime_object_ctor
@
cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ(ptr) _Runtime_object_ctor
@ cdecl -arch=arm ??0_Timevec@std@@QAA@ABV01@@Z(ptr ptr) _Timevec_copy_ctor
@ thiscall -arch=i386 ??0_Timevec@std@@QAE@ABV01@@Z(ptr ptr) _Timevec_copy_ctor
@ cdecl -arch=win64 ??0_Timevec@std@@QEAA@AEBV01@@Z(ptr ptr) _Timevec_copy_ctor
...
...
dlls/msvcp120_app/msvcp120_app.spec
View file @
661791cb
...
...
@@ -316,12 +316,12 @@
@ cdecl -arch=arm ??0_Pad@std@@QAA@XZ(ptr) msvcp120.??0_Pad@std@@QAA@XZ
@ thiscall -arch=i386 ??0_Pad@std@@QAE@XZ(ptr) msvcp120.??0_Pad@std@@QAE@XZ
@ cdecl -arch=win64 ??0_Pad@std@@QEAA@XZ(ptr) msvcp120.??0_Pad@std@@QEAA@XZ
@
stub -arch=arm
??0_Runtime_object@details@Concurrency@@QAA@H@Z
@
stub -arch=i386
??0_Runtime_object@details@Concurrency@@QAE@H@Z
@
stub -arch=win64
??0_Runtime_object@details@Concurrency@@QEAA@H@Z
@
stub -arch=arm
??0_Runtime_object@details@Concurrency@@QAA@XZ
@
stub -arch=i386
??0_Runtime_object@details@Concurrency@@QAE@XZ
@
stub -arch=win64
??0_Runtime_object@details@Concurrency@@QEAA@XZ
@
cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@H@Z(ptr long) msvcp120.
??0_Runtime_object@details@Concurrency@@QAA@H@Z
@
thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@H@Z(ptr long) msvcp120.
??0_Runtime_object@details@Concurrency@@QAE@H@Z
@
cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@H@Z(ptr long) msvcp120.
??0_Runtime_object@details@Concurrency@@QEAA@H@Z
@
cdecl -arch=arm ??0_Runtime_object@details@Concurrency@@QAA@XZ(ptr) msvcp120.
??0_Runtime_object@details@Concurrency@@QAA@XZ
@
thiscall -arch=i386 ??0_Runtime_object@details@Concurrency@@QAE@XZ(ptr) msvcp120.
??0_Runtime_object@details@Concurrency@@QAE@XZ
@
cdecl -arch=win64 ??0_Runtime_object@details@Concurrency@@QEAA@XZ(ptr) msvcp120.
??0_Runtime_object@details@Concurrency@@QEAA@XZ
@ cdecl -arch=arm ??0_Timevec@std@@QAA@ABV01@@Z(ptr ptr) msvcp120.??0_Timevec@std@@QAA@ABV01@@Z
@ thiscall -arch=i386 ??0_Timevec@std@@QAE@ABV01@@Z(ptr ptr) msvcp120.??0_Timevec@std@@QAE@ABV01@@Z
@ cdecl -arch=win64 ??0_Timevec@std@@QEAA@AEBV01@@Z(ptr ptr) msvcp120.??0_Timevec@std@@QEAA@AEBV01@@Z
...
...
dlls/msvcp90/misc.c
View file @
661791cb
...
...
@@ -1559,6 +1559,48 @@ void __thiscall _Concurrent_queue_base_v4_dummy(_Concurrent_queue_base_v4 *this)
}
DEFINE_RTTI_DATA0
(
_Concurrent_queue_base_v4
,
0
,
".?AV_Concurrent_queue_base_v4@details@Concurrency@@"
)
static
int
_Runtime_object_id
;
typedef
struct
{
const
vtable_ptr
*
vtable
;
int
id
;
}
_Runtime_object
;
extern
const
vtable_ptr
MSVCP__Runtime_object_vtable
;
/* ??0_Runtime_object@details@Concurrency@@QAE@H@Z */
/* ??0_Runtime_object@details@Concurrency@@QEAA@H@Z */
DEFINE_THISCALL_WRAPPER
(
_Runtime_object_ctor_id
,
8
)
_Runtime_object
*
__thiscall
_Runtime_object_ctor_id
(
_Runtime_object
*
this
,
int
id
)
{
TRACE
(
"(%p %d)
\n
"
,
this
,
id
);
this
->
vtable
=
&
MSVCP__Runtime_object_vtable
;
this
->
id
=
id
;
return
this
;
}
/* ??0_Runtime_object@details@Concurrency@@QAE@XZ */
/* ??0_Runtime_object@details@Concurrency@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER
(
_Runtime_object_ctor
,
4
)
_Runtime_object
*
__thiscall
_Runtime_object_ctor
(
_Runtime_object
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
this
->
vtable
=
&
MSVCP__Runtime_object_vtable
;
this
->
id
=
InterlockedExchangeAdd
(
&
_Runtime_object_id
,
2
);
return
this
;
}
DEFINE_THISCALL_WRAPPER
(
_Runtime_object__GetId
,
4
)
int
__thiscall
_Runtime_object__GetId
(
_Runtime_object
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
this
->
id
;
}
DEFINE_RTTI_DATA0
(
_Runtime_object
,
0
,
".?AV_Runtime_object@details@Concurrency@@"
)
#endif
#ifndef __GNUC__
...
...
@@ -1597,6 +1639,8 @@ void __asm_dummy_vtables(void) {
VTABLE_ADD_FUNC
(
_Concurrent_queue_base_v4_vector_dtor
)
VTABLE_ADD_FUNC
(
_Concurrent_queue_base_v4_dummy
)
VTABLE_ADD_FUNC
(
_Concurrent_queue_base_v4_dummy
));
__ASM_VTABLE
(
_Runtime_object
,
VTABLE_ADD_FUNC
(
_Runtime_object__GetId
));
#endif
#if _MSVCP_VER >= 110
__ASM_VTABLE
(
_Pad
,
...
...
@@ -1756,6 +1800,7 @@ void init_misc(void *base)
#endif
#if _MSVCP_VER >= 100
init__Concurrent_queue_base_v4_rtti
(
base
);
init__Runtime_object_rtti
(
base
);
#endif
#if _MSVCP_VER >= 110
init__Pad_rtti
(
base
);
...
...
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