[PATCH v2 1/3] vcomp: Change _vcomp_fork_call_wrapper() args parameter type to void **.
Paul Gofman
pgofman at codeweavers.com
Wed Feb 10 06:01:50 CST 2021
That is assumed in the asm implementation.
Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
v2:
- use a helper function for valist conversion.
dlls/vcomp/main.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c
index 7b97dfc72c8..e5d946dca12 100644
--- a/dlls/vcomp/main.c
+++ b/dlls/vcomp/main.c
@@ -117,9 +117,14 @@ struct vcomp_task_data
unsigned int dynamic_chunksize;
};
+static void **ptr_from_va_list(__ms_va_list valist)
+{
+ return (void **)valist;
+}
+
#if defined(__i386__)
-extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args);
+extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, void **args);
__ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
"pushl %ebp\n\t"
__ASM_CFI(".cfi_adjust_cfa_offset 4\n\t")
@@ -154,7 +159,7 @@ __ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
#elif defined(__x86_64__)
-extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args);
+extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, void **args);
__ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
"pushq %rbp\n\t"
__ASM_SEH(".seh_pushreg %rbp\n\t")
@@ -198,7 +203,7 @@ __ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
#elif defined(__arm__)
-extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args);
+extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, void **args);
__ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
"push {r4, r5, LR}\n\t"
"mov r4, r0\n\t"
@@ -234,7 +239,7 @@ __ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
#elif defined(__aarch64__)
-extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args);
+extern void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, void **args);
__ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
"stp x29, x30, [SP,#-16]!\n\t"
"mov x29, SP\n\t"
@@ -263,7 +268,7 @@ __ASM_GLOBAL_FUNC( _vcomp_fork_call_wrapper,
#else
-static void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, __ms_va_list args)
+static void CDECL _vcomp_fork_call_wrapper(void *wrapper, int nargs, void **args)
{
ERR("Not implemented for this architecture\n");
}
@@ -1406,7 +1411,7 @@ static DWORD WINAPI _vcomp_fork_worker(void *param)
if (team != NULL)
{
LeaveCriticalSection(&vcomp_section);
- _vcomp_fork_call_wrapper(team->wrapper, team->nargs, team->valist);
+ _vcomp_fork_call_wrapper(team->wrapper, team->nargs, ptr_from_va_list(team->valist));
EnterCriticalSection(&vcomp_section);
thread_data->team = NULL;
@@ -1540,7 +1545,7 @@ void WINAPIV _vcomp_fork(BOOL ifval, int nargs, void *wrapper, ...)
}
vcomp_set_thread_data(&thread_data);
- _vcomp_fork_call_wrapper(team_data.wrapper, team_data.nargs, team_data.valist);
+ _vcomp_fork_call_wrapper(team_data.wrapper, team_data.nargs, ptr_from_va_list(team_data.valist));
vcomp_set_thread_data(prev_thread_data);
prev_thread_data->fork_threads = 0;
--
2.29.2
More information about the wine-devel
mailing list