[PATCH 1/5] msvcr120/tests: Add missing newlines to messages.
Signed-off-by: Torge Matthies <tmatthies(a)codeweavers.com> --- dlls/msvcr120/tests/msvcr120.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/msvcr120/tests/msvcr120.c b/dlls/msvcr120/tests/msvcr120.c index 88a32b382ef..ac35076af03 100644 --- a/dlls/msvcr120/tests/msvcr120.c +++ b/dlls/msvcr120/tests/msvcr120.c @@ -1375,7 +1375,7 @@ static void __cdecl chore_proc(_UnrealizedChore *_this) MSVCRT_bool canceling = call_func1( p__StructuredTaskCollection__IsCanceling, chore->chore.task_collection); - ok(!canceling, "Task is already canceling"); + ok(!canceling, "Task is already canceling\n"); } if (!chore->wait_event) @@ -1399,7 +1399,7 @@ static void __cdecl chore_proc(_UnrealizedChore *_this) MSVCRT_bool canceling = call_func1( p__StructuredTaskCollection__IsCanceling, chore->chore.task_collection); - ok(canceling, "Task is not canceling"); + ok(canceling, "Task is not canceling\n"); } } -- 2.37.0
The pointer is needed for Crazy Machines 3 to not crash. Signed-off-by: Torge Matthies <tmatthies(a)codeweavers.com> --- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcrt/concurrency.c | 19 +++++++++++++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 24e7630194c..a1da7d8eb0e 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -19,7 +19,7 @@ @ stub -arch=win64 ??0_CancellationTokenState(a)details@Concurrency@@AEAA(a)XZ @ stub -arch=arm ??0_Cancellation_beacon(a)details@Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0_Cancellation_beacon(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=win64 ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ(ptr) _Cancellation_beacon_ctor @ cdecl -arch=arm ??0_Condition_variable(a)details@Concurrency@@QAA(a)XZ(ptr) _Condition_variable_ctor @ thiscall -arch=i386 ??0_Condition_variable(a)details@Concurrency@@QAE(a)XZ(ptr) _Condition_variable_ctor @ cdecl -arch=win64 ??0_Condition_variable(a)details@Concurrency@@QEAA(a)XZ(ptr) _Condition_variable_ctor diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index b1258dad5de..a95a254bc7e 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -16,7 +16,7 @@ @ cdecl -arch=win64 ??0SchedulerPolicy(a)Concurrency@@QEAA(a)XZ(ptr) SchedulerPolicy_ctor @ stub -arch=arm ??0_Cancellation_beacon(a)details@Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0_Cancellation_beacon(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=win64 ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ(ptr) _Cancellation_beacon_ctor @ cdecl -arch=arm ??0_Condition_variable(a)details@Concurrency@@QAA(a)XZ(ptr) _Condition_variable_ctor @ thiscall -arch=i386 ??0_Condition_variable(a)details@Concurrency@@QAE(a)XZ(ptr) _Condition_variable_ctor @ cdecl -arch=win64 ??0_Condition_variable(a)details@Concurrency@@QEAA(a)XZ(ptr) _Condition_variable_ctor diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 93ce779ea69..c2ce2b11811 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -14,7 +14,7 @@ @ cdecl -arch=win64 ??0SchedulerPolicy(a)Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0SchedulerPolicy(a)Concurrency@@QEAA(a)XZ @ stub -arch=arm ??0_Cancellation_beacon(a)details@Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0_Cancellation_beacon(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=win64 ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ @ cdecl -arch=arm ??0_Condition_variable(a)details@Concurrency@@QAA(a)XZ(ptr) msvcr120.??0_Condition_variable(a)details@Concurrency@@QAA(a)XZ @ thiscall -arch=i386 ??0_Condition_variable(a)details@Concurrency@@QAE(a)XZ(ptr) msvcr120.??0_Condition_variable(a)details@Concurrency@@QAE(a)XZ @ cdecl -arch=win64 ??0_Condition_variable(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0_Condition_variable(a)details@Concurrency@@QEAA(a)XZ diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index c982e367749..5fd8b8547dd 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -277,6 +277,10 @@ typedef struct cv_queue { LONG expired; } cv_queue; +typedef struct { + void *unknown; +} _Cancellation_beacon; + typedef struct { /* cv_queue structure is not binary compatible */ cv_queue *queue; @@ -2395,6 +2399,21 @@ int __cdecl event_wait_for_multiple(event **events, size_t count, bool wait_all, #if _MSVCR_VER >= 110 +struct { + void *unk; +} _Cancellation_beacon_unknown = { + 0x0 +}; + +/* ??0_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ */ +DEFINE_THISCALL_WRAPPER(_Cancellation_beacon_ctor, 4) +_Cancellation_beacon* __thiscall _Cancellation_beacon_ctor(_Cancellation_beacon *this) +{ + FIXME("(%p): stub!\n", this); + this->unknown = &_Cancellation_beacon_unknown; + return this; +} + /* ??0_Condition_variable(a)details@Concurrency@@QAE(a)XZ */ /* ??0_Condition_variable(a)details@Concurrency@@QEAA(a)XZ */ DEFINE_THISCALL_WRAPPER(_Condition_variable_ctor, 4) -- 2.37.0
Hi Torge, Please focus on implementing _StructuredTaskCollection first. I think it should be quite easy to implement the class correctly after it's done. It's another case when incorrect implementation may cause hard to debug bugs. Thanks, Piotr
On 7/13/22 12:20, Piotr Caban wrote:
Hi Torge,
Please focus on implementing _StructuredTaskCollection first. I think it should be quite easy to implement the class correctly after it's done. It's another case when incorrect implementation may cause hard to debug bugs.
I sent these first to get these out of the way before I send out the batch of patches that implement _StructuredTaskCollection::_Schedule/_Schedule_loc. But I can move the _Cancellation_beacon and _Context patches to the back again. Those are required for crazy machines to work btw, so I can't leave out the _IsSynchronouslyBlocked function. I could try to implement it, but I'm not sure if that's necessary for anything, CM3 doesn't seem to mind the stub.
Thanks, Piotr
Signed-off-by: Torge Matthies <tmatthies(a)codeweavers.com> --- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcrt/concurrency.c | 7 +++++++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index a1da7d8eb0e..92704561c23 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -277,7 +277,7 @@ @ stub -arch=win64 ??1_CancellationTokenState(a)details@Concurrency@@UEAA(a)XZ @ stub -arch=arm ??1_Cancellation_beacon(a)details@Concurrency@@QAA(a)XZ @ stub -arch=i386 ??1_Cancellation_beacon(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=win64 ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ(ptr) _Cancellation_beacon_dtor @ cdecl -arch=arm ??1_Condition_variable(a)details@Concurrency@@QAA(a)XZ(ptr) _Condition_variable_dtor @ thiscall -arch=i386 ??1_Condition_variable(a)details@Concurrency@@QAE(a)XZ(ptr) _Condition_variable_dtor @ cdecl -arch=win64 ??1_Condition_variable(a)details@Concurrency@@QEAA(a)XZ(ptr) _Condition_variable_dtor diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index a95a254bc7e..e880bd170f6 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -271,7 +271,7 @@ @ cdecl -arch=win64 ??1SchedulerPolicy(a)Concurrency@@QEAA(a)XZ(ptr) SchedulerPolicy_dtor @ stub -arch=arm ??1_Cancellation_beacon(a)details@Concurrency@@QAA(a)XZ @ stub -arch=i386 ??1_Cancellation_beacon(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=win64 ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ(ptr) _Cancellation_beacon_dtor @ cdecl -arch=arm ??1_Condition_variable(a)details@Concurrency@@QAA(a)XZ(ptr) _Condition_variable_dtor @ thiscall -arch=i386 ??1_Condition_variable(a)details@Concurrency@@QAE(a)XZ(ptr) _Condition_variable_dtor @ cdecl -arch=win64 ??1_Condition_variable(a)details@Concurrency@@QEAA(a)XZ(ptr) _Condition_variable_dtor diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index c2ce2b11811..3aa4b51d2a9 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -269,7 +269,7 @@ @ cdecl -arch=win64 ??1SchedulerPolicy(a)Concurrency@@QEAA(a)XZ(ptr) msvcr120.??1SchedulerPolicy(a)Concurrency@@QEAA(a)XZ @ stub -arch=arm ??1_Cancellation_beacon(a)details@Concurrency@@QAA(a)XZ @ stub -arch=i386 ??1_Cancellation_beacon(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=win64 ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ @ cdecl -arch=arm ??1_Condition_variable(a)details@Concurrency@@QAA(a)XZ(ptr) msvcr120.??1_Condition_variable(a)details@Concurrency@@QAA(a)XZ @ thiscall -arch=i386 ??1_Condition_variable(a)details@Concurrency@@QAE(a)XZ(ptr) msvcr120.??1_Condition_variable(a)details@Concurrency@@QAE(a)XZ @ cdecl -arch=win64 ??1_Condition_variable(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??1_Condition_variable(a)details@Concurrency@@QEAA(a)XZ diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index 5fd8b8547dd..ef97950f416 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -2414,6 +2414,13 @@ _Cancellation_beacon* __thiscall _Cancellation_beacon_ctor(_Cancellation_beacon return this; } +/* ??1_Cancellation_beacon(a)details@Concurrency@@QEAA(a)XZ */ +DEFINE_THISCALL_WRAPPER(_Cancellation_beacon_dtor, 4) +void __thiscall _Cancellation_beacon_dtor(_Cancellation_beacon *this) +{ + FIXME("(%p): stub!\n", this); +} + /* ??0_Condition_variable(a)details@Concurrency@@QAE(a)XZ */ /* ??0_Condition_variable(a)details@Concurrency@@QEAA(a)XZ */ DEFINE_THISCALL_WRAPPER(_Condition_variable_ctor, 4) -- 2.37.0
Signed-off-by: Torge Matthies <tmatthies(a)codeweavers.com> --- dlls/msvcr110/msvcr110.spec | 6 +++--- dlls/msvcr120/msvcr120.spec | 6 +++--- dlls/msvcr120_app/msvcr120_app.spec | 6 +++--- dlls/msvcrt/concurrency.c | 7 +++++++ 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 92704561c23..b867cbf69fb 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -550,9 +550,9 @@ @ stub -arch=arm ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QAA_NXZ @ stub -arch=i386 ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QAE_NXZ @ stub -arch=win64 ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QEAA_NXZ -@ stub -arch=arm ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ -@ stub -arch=i386 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ -@ stub -arch=win64 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ +@ cdecl -arch=arm ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ(ptr) _Context_IsSynchronouslyBlocked +@ thiscall -arch=i386 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ(ptr) _Context_IsSynchronouslyBlocked +@ cdecl -arch=win64 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ(ptr) _Context_IsSynchronouslyBlocked @ stub -arch=win32 ?_Name_base(a)type_info@@CAPBDPBV1(a)PAU__type_info_node@@@Z @ stub -arch=win64 ?_Name_base(a)type_info@@CAPEBDPEBV1(a)PEAU__type_info_node@@@Z @ stub -arch=win32 ?_Name_base_internal(a)type_info@@CAPBDPBV1(a)PAU__type_info_node@@@Z diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index e880bd170f6..e39b2e76aa1 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -541,9 +541,9 @@ @ stub -arch=arm ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QAA_NXZ @ stub -arch=i386 ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QAE_NXZ @ stub -arch=win64 ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QEAA_NXZ -@ stub -arch=arm ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ -@ stub -arch=i386 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ -@ stub -arch=win64 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ +@ cdecl -arch=arm ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ(ptr) _Context_IsSynchronouslyBlocked +@ thiscall -arch=i386 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ(ptr) _Context_IsSynchronouslyBlocked +@ cdecl -arch=win64 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ(ptr) _Context_IsSynchronouslyBlocked @ stub -arch=win32 ?_Name_base(a)type_info@@CAPBDPBV1(a)PAU__type_info_node@@@Z @ stub -arch=win64 ?_Name_base(a)type_info@@CAPEBDPEBV1(a)PEAU__type_info_node@@@Z @ stub -arch=win32 ?_Name_base_internal(a)type_info@@CAPBDPBV1(a)PAU__type_info_node@@@Z diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 3aa4b51d2a9..89165b204f9 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -538,9 +538,9 @@ @ stub -arch=arm ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QAA_NXZ @ stub -arch=i386 ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QAE_NXZ @ stub -arch=win64 ?_IsCanceling(a)_TaskCollection@details(a)Concurrency@@QEAA_NXZ -@ stub -arch=arm ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ -@ stub -arch=i386 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ -@ stub -arch=win64 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ +@ cdecl -arch=arm ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ(ptr) msvcr120.?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBA_NXZ +@ thiscall -arch=i386 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ(ptr) msvcr120.?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QBE_NXZ +@ cdecl -arch=win64 ?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ(ptr) msvcr120.?_IsSynchronouslyBlocked(a)_Context@details(a)Concurrency@@QEBA_NXZ @ stub -arch=win32 ?_Name_base(a)type_info@@CAPBDPBV1(a)PAU__type_info_node@@@Z @ stub -arch=win64 ?_Name_base(a)type_info@@CAPEBDPEBV1(a)PEAU__type_info_node@@@Z @ stub -arch=win32 ?_Name_base_internal(a)type_info@@CAPBDPBV1(a)PAU__type_info_node@@@Z diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index ef97950f416..473f978bd61 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -761,6 +761,13 @@ _Context *__cdecl _Context__CurrentContext(_Context *ret) ret->context = Context_CurrentContext(); return ret; } + +DEFINE_THISCALL_WRAPPER(_Context_IsSynchronouslyBlocked, 4) +BOOL __thiscall _Context_IsSynchronouslyBlocked(const _Context *this) +{ + TRACE("(%p)\n", this); + return FALSE; +} #endif DEFINE_THISCALL_WRAPPER(ExternalContextBase_GetId, 4) -- 2.37.0
Hi Torge, I think it's better to not implement functions related to synchronisation/code execution over having stubs. I'm also afraid that in this case it's a lot of work to get it done properly (it e.g. involves rewriting some synchronization primitives to use Context for blocking). Thanks, Piotr
Signed-off-by: Torge Matthies <tmatthies(a)codeweavers.com> --- dlls/concrt140/concrt140.spec | 12 ++++----- dlls/msvcr100/msvcr100.spec | 8 +++--- dlls/msvcr110/msvcr110.spec | 12 ++++----- dlls/msvcr120/msvcr120.spec | 12 ++++----- dlls/msvcr120_app/msvcr120_app.spec | 12 ++++----- dlls/msvcrt/concurrency.c | 40 +++++++++++++++++++++++++++++ 6 files changed, 68 insertions(+), 28 deletions(-) diff --git a/dlls/concrt140/concrt140.spec b/dlls/concrt140/concrt140.spec index 9370566bb2c..64da684f415 100644 --- a/dlls/concrt140/concrt140.spec +++ b/dlls/concrt140/concrt140.spec @@ -144,12 +144,12 @@ @ stub -arch=arm ??0invalid_link_target(a)Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0invalid_link_target(a)Concurrency@@QAE(a)XZ @ stub -arch=win64 ??0invalid_link_target(a)Concurrency@@QEAA(a)XZ -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ(ptr) invalid_multiple_scheduling_ctor @ stub -arch=arm ??0invalid_oversubscribe_operation(a)Concurrency@@QAA(a)PBD@Z @ stub -arch=i386 ??0invalid_oversubscribe_operation(a)Concurrency@@QAE(a)PBD@Z @ stub -arch=win64 ??0invalid_oversubscribe_operation(a)Concurrency@@QEAA(a)PEBD@Z diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 0d38005c13a..c0bbbc5b86d 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -94,10 +94,10 @@ @ stub -arch=win64 ??0invalid_link_target(a)Concurrency@@QEAA(a)PEBD@Z @ stub -arch=win32 ??0invalid_link_target(a)Concurrency@@QAE(a)XZ @ stub -arch=win64 ??0invalid_link_target(a)Concurrency@@QEAA(a)XZ -@ stub -arch=win32 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z -@ stub -arch=win32 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ +@ thiscall -arch=win32 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ thiscall -arch=win32 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ(ptr) invalid_multiple_scheduling_ctor @ stub -arch=win32 ??0invalid_operation(a)Concurrency@@QAE(a)PBD@Z @ stub -arch=win64 ??0invalid_operation(a)Concurrency@@QEAA(a)PEBD@Z @ stub -arch=win32 ??0invalid_operation(a)Concurrency@@QAE(a)XZ diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index b867cbf69fb..740b7d69920 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -167,12 +167,12 @@ @ stub -arch=arm ??0invalid_link_target(a)Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0invalid_link_target(a)Concurrency@@QAE(a)XZ @ stub -arch=win64 ??0invalid_link_target(a)Concurrency@@QEAA(a)XZ -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ(ptr) invalid_multiple_scheduling_ctor @ stub -arch=arm ??0invalid_operation(a)Concurrency@@QAA(a)PBD@Z @ stub -arch=i386 ??0invalid_operation(a)Concurrency@@QAE(a)PBD@Z @ stub -arch=win64 ??0invalid_operation(a)Concurrency@@QEAA(a)PEBD@Z diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index e39b2e76aa1..2bdf71fbe0d 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -164,12 +164,12 @@ @ stub -arch=arm ??0invalid_link_target(a)Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0invalid_link_target(a)Concurrency@@QAE(a)XZ @ stub -arch=win64 ??0invalid_link_target(a)Concurrency@@QEAA(a)XZ -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z(ptr ptr) invalid_multiple_scheduling_ctor_str +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ(ptr) invalid_multiple_scheduling_ctor +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ(ptr) invalid_multiple_scheduling_ctor @ stub -arch=arm ??0invalid_operation(a)Concurrency@@QAA(a)PBD@Z @ stub -arch=i386 ??0invalid_operation(a)Concurrency@@QAE(a)PBD@Z @ stub -arch=win64 ??0invalid_operation(a)Concurrency@@QEAA(a)PEBD@Z diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 89165b204f9..47ac265ea18 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -162,12 +162,12 @@ @ stub -arch=arm ??0invalid_link_target(a)Concurrency@@QAA(a)XZ @ stub -arch=i386 ??0invalid_link_target(a)Concurrency@@QAE(a)XZ @ stub -arch=win64 ??0invalid_link_target(a)Concurrency@@QEAA(a)XZ -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z -@ stub -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z(ptr ptr) msvcr120.??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z(ptr ptr) msvcr120.??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z(ptr ptr) msvcr120.??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z +@ cdecl -arch=arm ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ(ptr) msvcr120.??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ +@ thiscall -arch=i386 ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ(ptr) msvcr120.??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ +@ cdecl -arch=win64 ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ @ stub -arch=arm ??0invalid_operation(a)Concurrency@@QAA(a)PBD@Z @ stub -arch=i386 ??0invalid_operation(a)Concurrency@@QAE(a)PBD@Z @ stub -arch=win64 ??0invalid_operation(a)Concurrency@@QEAA(a)PEBD@Z diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index 473f978bd61..f2e40e633a3 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -333,6 +333,9 @@ extern const vtable_ptr improper_scheduler_attach_vtable; typedef exception improper_scheduler_detach; extern const vtable_ptr improper_scheduler_detach_vtable; +typedef exception invalid_multiple_scheduling; +extern const vtable_ptr invalid_multiple_scheduling_vtable; + typedef exception invalid_scheduler_policy_key; extern const vtable_ptr invalid_scheduler_policy_key_vtable; @@ -455,6 +458,35 @@ improper_scheduler_detach * __thiscall improper_scheduler_detach_copy_ctor( return __exception_copy_ctor(_this, rhs, &improper_scheduler_detach_vtable); } +/* ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)PBD@Z */ +/* ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)PBD@Z */ +/* ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)PEBD@Z */ +DEFINE_THISCALL_WRAPPER(invalid_multiple_scheduling_ctor_str, 8) +invalid_multiple_scheduling* __thiscall invalid_multiple_scheduling_ctor_str( + invalid_multiple_scheduling *this, const char *str) +{ + TRACE("(%p %p)\n", this, str); + return __exception_ctor(this, str, &invalid_multiple_scheduling_vtable); +} + +/* ??0invalid_multiple_scheduling(a)Concurrency@@QAA(a)XZ */ +/* ??0invalid_multiple_scheduling(a)Concurrency@@QAE(a)XZ */ +/* ??0invalid_multiple_scheduling(a)Concurrency@@QEAA(a)XZ */ +DEFINE_THISCALL_WRAPPER(invalid_multiple_scheduling_ctor, 4) +invalid_multiple_scheduling* __thiscall invalid_multiple_scheduling_ctor( + invalid_multiple_scheduling *this) +{ + return invalid_multiple_scheduling_ctor_str(this, NULL); +} + +DEFINE_THISCALL_WRAPPER(invalid_multiple_scheduling_copy_ctor,8) +invalid_multiple_scheduling * __thiscall invalid_multiple_scheduling_copy_ctor( + invalid_multiple_scheduling * _this, const invalid_multiple_scheduling * rhs) +{ + TRACE("(%p %p)\n", _this, rhs); + return __exception_copy_ctor(_this, rhs, &invalid_multiple_scheduling_vtable); +} + /* ??0invalid_scheduler_policy_key(a)Concurrency@@QAE(a)PBD@Z */ /* ??0invalid_scheduler_policy_key(a)Concurrency@@QEAA(a)PEBD@Z */ DEFINE_THISCALL_WRAPPER(invalid_scheduler_policy_key_ctor_str, 8) @@ -587,6 +619,8 @@ DEFINE_RTTI_DATA1(improper_scheduler_attach, 0, &cexception_rtti_base_descriptor ".?AVimproper_scheduler_attach(a)Concurrency@@") DEFINE_RTTI_DATA1(improper_scheduler_detach, 0, &cexception_rtti_base_descriptor, ".?AVimproper_scheduler_detach(a)Concurrency@@") +DEFINE_RTTI_DATA1(invalid_multiple_scheduling, 0, &cexception_rtti_base_descriptor, + ".?AVinvalid_multiple_scheduling(a)Concurrency@@") DEFINE_RTTI_DATA1(invalid_scheduler_policy_key, 0, &cexception_rtti_base_descriptor, ".?AVinvalid_scheduler_policy_key(a)Concurrency@@") DEFINE_RTTI_DATA1(invalid_scheduler_policy_thread_specification, 0, &cexception_rtti_base_descriptor, @@ -599,6 +633,7 @@ DEFINE_RTTI_DATA1(scheduler_resource_allocation_error, 0, &cexception_rtti_base_ DEFINE_CXX_DATA1(improper_lock, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(improper_scheduler_attach, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(improper_scheduler_detach, &cexception_cxx_type_info, cexception_dtor) +DEFINE_CXX_DATA1(invalid_multiple_scheduling, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_key, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_thread_specification, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_value, &cexception_cxx_type_info, cexception_dtor) @@ -614,6 +649,9 @@ __ASM_BLOCK_BEGIN(concurrency_exception_vtables) __ASM_VTABLE(improper_scheduler_detach, VTABLE_ADD_FUNC(cexception_vector_dtor) VTABLE_ADD_FUNC(cexception_what)); + __ASM_VTABLE(invalid_multiple_scheduling, + VTABLE_ADD_FUNC(cexception_vector_dtor) + VTABLE_ADD_FUNC(cexception_what)); __ASM_VTABLE(invalid_scheduler_policy_key, VTABLE_ADD_FUNC(cexception_vector_dtor) VTABLE_ADD_FUNC(cexception_what)); @@ -3075,6 +3113,7 @@ void msvcrt_init_concurrency(void *base) init_improper_lock_rtti(base); init_improper_scheduler_attach_rtti(base); init_improper_scheduler_detach_rtti(base); + init_invalid_multiple_scheduling_rtti(base); init_invalid_scheduler_policy_key_rtti(base); init_invalid_scheduler_policy_thread_specification_rtti(base); init_invalid_scheduler_policy_value_rtti(base); @@ -3091,6 +3130,7 @@ void msvcrt_init_concurrency(void *base) init_improper_lock_cxx(base); init_improper_scheduler_attach_cxx(base); init_improper_scheduler_detach_cxx(base); + init_invalid_multiple_scheduling_cxx(base); init_invalid_scheduler_policy_key_cxx(base); init_invalid_scheduler_policy_thread_specification_cxx(base); init_invalid_scheduler_policy_value_cxx(base); -- 2.37.0
The patch is causing compilation warning in i386 case: In file included from ../wine_src/dlls/msvcrt/cxx.h:19, from ../wine_src/dlls/msvcrt/concurrency.c:28: ../wine_src/dlls/msvcrt/concurrency.c:632:18: error: ‘invalid_multiple_scheduling_exception_type’ defined but not used [-Werror=unused-const-variable=] 632 | DEFINE_CXX_DATA1(invalid_multiple_scheduling, &cexception_cxx_type_info, cexception_dtor) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../wine_src/dlls/msvcrt/cppexcept.h:178:33: note: in definition of macro ‘DEFINE_CXX_EXCEPTION’ 178 | static const cxx_exception_type type ## _exception_type = { \ | ^~~~ ../wine_src/dlls/msvcrt/cppexcept.h:241:5: note: in expansion of macro ‘DEFINE_CXX_DATA’ 241 | DEFINE_CXX_DATA(name, 1, cl1, NULL, dtor) | ^~~~~~~~~~~~~~~ ../wine_src/dlls/msvcrt/concurrency.c:632:1: note: in expansion of macro ‘DEFINE_CXX_DATA1’ 632 | DEFINE_CXX_DATA1(invalid_multiple_scheduling, &cexception_cxx_type_info, cexception_dtor) | ^~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors Thanks, Piotr
participants (3)
-
Piotr Caban -
Piotr Caban -
Torge Matthies