Fixed some issues.
diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h
index c0ef04a..0687ec5 100644
--- a/tools/winebuild/build.h
+++ b/tools/winebuild/build.h
@@ -137,7 +137,7 @@
extern void add_import_dll( const char *name, int delay );
extern void add_ignore_symbol( const char *name );
-extern int resolve_imports( FILE *outfile );
+extern int resolve_imports( void );
extern int output_imports( FILE *outfile );
extern void load_res32_file( const char *name );
extern int output_resources( FILE *outfile );
diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
index 1373599..6c497f5 100644
--- a/tools/winebuild/import.c
+++ b/tools/winebuild/import.c
@@ -317,7 +317,7 @@
}
/* resolve the imports for a Win32 module */
-int resolve_imports( FILE *outfile )
+int resolve_imports( void )
{
int i, j;
diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
index b9d4e3c..f129ba9 100644
--- a/tools/winebuild/main.c
+++ b/tools/winebuild/main.c
@@ -244,7 +244,10 @@
do_usage();
break;
}
- fclose( output_file );
- output_file_name = NULL;
+ if (output_file_name)
+ {
+ fclose( output_file );
+ output_file_name = NULL;
+ }
return 0;
}
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index f0e30ec..3d43e32 100644
--- a/tools/winebuild/parser.c
+++ b/tools/winebuild/parser.c
@@ -264,8 +264,6 @@
fatal_error( "Too many arguments\n" );
odp->u.func.arg_types[i] = '\0';
- if ((odp->type == TYPE_STDCALL) && !i)
- odp->type = TYPE_CDECL; /* stdcall is the same as cdecl for 0 args */
if (odp->type == TYPE_VARARGS)
odp->flags |= FLAG_NORELAY; /* no relay debug possible for varags entry point */
odp->link_name = xstrdup( GetToken(0) );
diff --git a/tools/winebuild/spec16.c b/tools/winebuild/spec16.c
index 2187beb..e345dcc 100644
--- a/tools/winebuild/spec16.c
+++ b/tools/winebuild/spec16.c
@@ -519,8 +519,8 @@
fprintf( outfile, " void *rec, *addr;\n" );
fprintf( outfile, " unsigned int params;\n" );
fprintf( outfile, " const void *info[15];\n" );
- fprintf( outfile, " } rec;\n" );
- fprintf( outfile, " extern void RtlRaiseException( struct exc_record * );\n\n" );
+ fprintf( outfile, " } rec;\n\n" );
+ fprintf( outfile, " extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" );
fprintf( outfile, " rec.code = 0x%08x;\n", EXCEPTION_WINE_STUB );
fprintf( outfile, " rec.flags = %d;\n", EH_NONCONTINUABLE );
fprintf( outfile, " rec.rec = 0;\n" );
@@ -582,6 +582,13 @@
strupper( DLLName );
fprintf( outfile, "static const char dllname[] = \"%s\";\n\n", DLLName );
+
+#ifdef __i386__
+ fprintf( outfile, "#define __stdcall __attribute__((__stdcall__))\n\n" );
+#else
+ fprintf( outfile, "#define __stdcall\n\n" );
+#endif
+
output_stub_funcs( outfile );
/* Build sorted list of all argument types, without duplicates */
diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c
index d550960..4c81edc 100644
--- a/tools/winebuild/spec32.c
+++ b/tools/winebuild/spec32.c
@@ -441,7 +441,7 @@
AssignOrdinals();
nr_exports = Base <= Limit ? Limit - Base + 1 : 0;
- resolve_imports( outfile );
+ resolve_imports();
fprintf( outfile, "/* File generated automatically from %s; do not edit! */\n\n",
input_file_name );
@@ -451,7 +451,7 @@
fprintf( outfile, "extern char pe_header[];\n" );
fprintf( outfile, "asm(\".section .text\\n\\t\"\n" );
fprintf( outfile, " \".align %d\\n\"\n", get_alignment(page_size) );
- fprintf( outfile, " \"pe_header:\\t.fill %ld,1,0\\n\\t\");\n", page_size );
+ fprintf( outfile, " \"" PREFIX "pe_header:\\t.fill %ld,1,0\\n\\t\");\n", page_size );
fprintf( outfile, "static const char dllname[] = \"%s\";\n\n", DLLName );
fprintf( outfile, "extern int __wine_spec_exports[];\n\n" );