Ivan Leo Puoti <ivanleo(a)gmail.com> writes:
@@ -469,8 +469,10 @@ /* get the default entry point for a given spec file */ static const char *get_default_entry_point( const DLLSPEC *spec ) { + if (spec->subsystem == IMAGE_SUBSYSTEM_NATIVE && spec->characteristics & IMAGE_FILE_DLL) + return "__wine_spec_drv_entry"; + if (spec->subsystem == IMAGE_SUBSYSTEM_NATIVE) return "__wine_spec_exe_nentry";
Native drivers are not supposed to be dlls.
@@ -322,9 +322,15 @@ ORDDEF *odp = &spec->entry_points[i]; if (odp->type != TYPE_STUB) continue; fprintf( outfile, "#ifdef __GNUC__\n" ); - fprintf( outfile, "extern void __wine_spec_unimplemented_stub( const char *module, const char *func ) __attribute__((noreturn));\n" ); + if(spec->subsystem == IMAGE_SUBSYSTEM_NATIVE) + fprintf( outfile, "extern void __wine_spec_nunimplemented_stub( const char *module, const char *func ) __attribute__((noreturn));\n" ); + else + fprintf( outfile, "extern void __wine_spec_unimplemented_stub( const char *module, const char *func ) __attribute__((noreturn));\n" ); fprintf( outfile, "#else\n" ); - fprintf( outfile, "extern void __wine_spec_unimplemented_stub( const char *module, const char *func );\n" ); + if(spec->subsystem == IMAGE_SUBSYSTEM_NATIVE) + fprintf( outfile, "extern void __wine_spec_nunimplemented_stub( const char *module, const char *func ) __attribute__((noreturn));\n" ); + else + fprintf( outfile, "extern void __wine_spec_unimplemented_stub( const char *module, const char *func );\n" );
You should provide your own handling of stubs inside ntoskrnl, like ntdll does. -- Alexandre Julliard julliard(a)winehq.org