Alexandre Julliard : winebuild: Allow syscalls to use the cdecl convention.
Alexandre Julliard
julliard at winehq.org
Tue Aug 25 16:16:57 CDT 2020
Module: wine
Branch: master
Commit: 0e7f6e0ed32ffe5fe09ae429037fc28dcbebe6ea
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0e7f6e0ed32ffe5fe09ae429037fc28dcbebe6ea
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Aug 25 13:51:37 2020 +0200
winebuild: Allow syscalls to use the cdecl convention.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tools/winebuild/import.c | 2 +-
tools/winebuild/parser.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
index 751335f36f..adb1a3dafe 100644
--- a/tools/winebuild/import.c
+++ b/tools/winebuild/import.c
@@ -1700,7 +1700,7 @@ void output_syscalls( DLLSPEC *spec )
output( "\tmovl $%s,%%edx\n", asm_name("__wine_syscall") );
}
output( "\tcall *%%edx\n" );
- output( "\tret $%u\n", get_args_size( odp ));
+ output( "\tret $%u\n", odp->type == TYPE_STDCALL ? get_args_size( odp ) : 0 );
break;
case CPU_x86_64:
/* Chromium depends on syscall thunks having the same form as on
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index 54fffd8a1b..2e6424fe76 100644
--- a/tools/winebuild/parser.c
+++ b/tools/winebuild/parser.c
@@ -323,9 +323,9 @@ static int parse_spec_arguments( ORDDEF *odp, DLLSPEC *spec, int optional )
}
if (odp->flags & FLAG_SYSCALL)
{
- if (odp->type != TYPE_STDCALL)
+ if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL)
{
- error( "A syscall function must use the stdcall convention\n" );
+ error( "A syscall function must use either the stdcall or the cdecl convention\n" );
return 0;
}
}
More information about the wine-cvs
mailing list