From c0d237756521d077bd7afd3c3b7ee5fabfffabee Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sat, 7 May 2005 18:47:22 +0000 Subject: [PATCH] Removed no longer used support for 32-bit register entry points. --- tools/winebuild/import.c | 5 +-- tools/winebuild/parser.c | 6 ++++ tools/winebuild/spec32.c | 52 +++----------------------------- tools/winebuild/winebuild.man.in | 2 +- 4 files changed, 13 insertions(+), 52 deletions(-) diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c index 3bfc089fb30..b04eb81ccdb 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -504,7 +504,7 @@ static int add_extra_symbol( const char **extras, int *count, const char *name, static void add_extra_undef_symbols( const DLLSPEC *spec ) { const char *extras[10]; - int i, count = 0, nb_stubs = 0, nb_regs = 0; + int i, count = 0, nb_stubs = 0; int kernel_imports = 0, ntdll_imports = 0; sort_symbols( undef_symbols, nb_undef_symbols ); @@ -513,7 +513,6 @@ static void add_extra_undef_symbols( const DLLSPEC *spec ) { ORDDEF *odp = &spec->entry_points[i]; if (odp->type == TYPE_STUB) nb_stubs++; - if (odp->flags & FLAG_REGISTER) nb_regs++; } /* add symbols that will be contained in the spec file itself */ @@ -536,8 +535,6 @@ static void add_extra_undef_symbols( const DLLSPEC *spec ) kernel_imports += add_extra_symbol( extras, &count, "GetProcAddress", spec ); kernel_imports += add_extra_symbol( extras, &count, "RaiseException", spec ); } - if (nb_regs) - ntdll_imports += add_extra_symbol( extras, &count, "__wine_call_from_32_regs", spec ); if (nb_stubs) ntdll_imports += add_extra_symbol( extras, &count, "RtlRaiseException", spec ); diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c index 4452b6cb100..f0a5b77ac39 100644 --- a/tools/winebuild/parser.c +++ b/tools/winebuild/parser.c @@ -513,6 +513,12 @@ static int parse_spec_ordinal( int ordinal, DLLSPEC *spec ) odp->ordinal = ordinal; } + if (spec->type == SPEC_WIN32 && odp->flags & FLAG_REGISTER) + { + error( "-register flag not supported for Win32 entry points\n" ); + goto error; + } + if (odp->type == TYPE_STDCALL && !(odp->flags & FLAG_PRIVATE)) { if (!strcmp( odp->name, "DllRegisterServer" ) || diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c index 24e3d5008f3..4bd2f6c3f69 100644 --- a/tools/winebuild/spec32.c +++ b/tools/winebuild/spec32.c @@ -175,9 +175,7 @@ static int output_exports( FILE *outfile, int nr_exports, DLLSPEC *spec ) case TYPE_CDECL: if (!(odp->flags & FLAG_FORWARD)) { - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", - (odp->flags & FLAG_REGISTER) ? make_internal_name( odp, spec, "regs" ) - : odp->link_name ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") "\\n\"\n", odp->link_name ); } else { @@ -260,7 +258,6 @@ static int output_exports( FILE *outfile, int nr_exports, DLLSPEC *spec ) { ORDDEF *odp = spec->ordinals[i]; unsigned int j, args, mask = 0; - const char *name; /* skip nonexistent entry points */ if (!odp) goto ignore; @@ -276,22 +273,20 @@ static int output_exports( FILE *outfile, int nr_exports, DLLSPEC *spec ) } if ((odp->flags & FLAG_RET64) && (j < 16)) mask |= 0x80000000; - name = odp->link_name; args = strlen(odp->u.func.arg_types) * sizeof(int); - if (odp->flags & FLAG_REGISTER) name = make_internal_name( odp, spec, "regs" ); switch(odp->type) { case TYPE_STDCALL: - fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name ); + fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", odp->link_name ); fprintf( outfile, " \"\\tret $%d\\n\"\n", args ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", odp->link_name, mask ); break; case TYPE_CDECL: - fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", name ); + fprintf( outfile, " \"\\tjmp " __ASM_NAME("%s") "\\n\"\n", odp->link_name ); fprintf( outfile, " \"\\tret\\n\"\n" ); fprintf( outfile, " \"\\t" __ASM_SHORT " %d\\n\"\n", args ); - fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", name, mask ); + fprintf( outfile, " \"\\t.long " __ASM_NAME("%s") ",0x%08x\\n\"\n", odp->link_name, mask ); break; default: assert(0); @@ -366,38 +361,6 @@ static void output_stub_funcs( FILE *outfile, DLLSPEC *spec ) } -/******************************************************************* - * output_register_funcs - * - * Output the functions for register entry points - */ -static void output_register_funcs( FILE *outfile, DLLSPEC *spec ) -{ - const char *name; - int i; - - for (i = 0; i < spec->nb_entry_points; i++) - { - const ORDDEF *odp = &spec->entry_points[i]; - if (odp->type != TYPE_STDCALL && odp->type != TYPE_CDECL) continue; - if (!(odp->flags & FLAG_REGISTER)) continue; - if (odp->flags & FLAG_FORWARD) continue; - name = make_internal_name( odp, spec, "regs" ); - fprintf( outfile, - "asm(\".align %d\\n\\t\"\n" - " \"" __ASM_FUNC("%s") "\\n\\t\"\n" - " \"" __ASM_NAME("%s") ":\\n\\t\"\n" - " \"call " __ASM_NAME("__wine_call_from_32_regs") "\\n\\t\"\n" - " \".long " __ASM_NAME("%s") "\\n\\t\"\n" - " \".byte %d,%d\");\n", - get_alignment(4), - name, name, odp->link_name, - strlen(odp->u.func.arg_types) * sizeof(int), - (odp->type == TYPE_CDECL) ? 0 : (strlen(odp->u.func.arg_types) * sizeof(int)) ); - } -} - - /******************************************************************* * output_dll_init * @@ -560,10 +523,6 @@ void BuildSpec32File( FILE *outfile, DLLSPEC *spec ) fprintf( outfile, "static void __asm__dummy(void) {\n" ); fprintf( outfile, "#endif /* !defined(__GNUC__) */\n" ); - /* Output code for all register functions */ - - output_register_funcs( outfile, spec ); - /* Output the exports and relay entry points */ exports_size = output_exports( outfile, nr_exports, spec ); @@ -863,7 +822,6 @@ void BuildDef32File( FILE *outfile, DLLSPEC *spec ) int is_data = 0; if (!odp) continue; - if (odp->flags & FLAG_REGISTER) continue; if (odp->type == TYPE_STUB) continue; if (odp->name) name = odp->name; diff --git a/tools/winebuild/winebuild.man.in b/tools/winebuild/winebuild.man.in index 108a8798f88..19fddf5a648 100644 --- a/tools/winebuild/winebuild.man.in +++ b/tools/winebuild/winebuild.man.in @@ -250,7 +250,7 @@ The function returns a 64-bit value (Win32 only). The entry point is only available on i386 platforms. .TP .B -register -The function uses CPU register to pass arguments. +The function uses CPU register to pass arguments (Win16 only). .TP .B -private The function cannot be imported from other dlls, it can only be