Hello, here is the patch. Changelog: Replace RtlRaiseException hack for notifying about a .spec file stub entry hit with a more general approach. diff -u cvs/hq/wine/dlls/ntdll/exception.c wine/dlls/ntdll/exception.c --- cvs/hq/wine/dlls/ntdll/exception.c Wed Feb 12 23:03:04 2003 +++ wine/dlls/ntdll/exception.c Mon Feb 17 16:39:52 2003 @@ -190,8 +190,6 @@ TRACE( "code=%lx flags=%lx addr=%p\n", rec->ExceptionCode, rec->ExceptionFlags, rec->ExceptionAddress ); for (c=0; c<rec->NumberParameters; c++) TRACE(" info[%ld]=%08lx\n", c, rec->ExceptionInformation[c]); - if (rec->ExceptionCode == EXCEPTION_WINE_STUB) - FIXME( "call to unimplemented function %s\n", (char*)rec->ExceptionInformation[1] ); if (send_debug_event( rec, TRUE, context ) == DBG_CONTINUE) return; /* continue execution */ diff -u cvs/hq/wine/tools/winebuild/spec16.c wine/tools/winebuild/spec16.c --- cvs/hq/wine/tools/winebuild/spec16.c Sat Oct 19 18:08:57 2002 +++ wine/tools/winebuild/spec16.c Mon Feb 17 16:35:46 2003 @@ -581,6 +581,7 @@ fprintf( outfile, " unsigned int params;\n" ); fprintf( outfile, " const void *info[15];\n" ); fprintf( outfile, " } rec;\n\n" ); + fprintf( outfile, " extern int wine_dbg_printf(const char *format, ...);\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 ); @@ -593,6 +594,7 @@ fprintf( outfile, "#else\n" ); fprintf( outfile, " rec.addr = 0;\n" ); fprintf( outfile, "#endif\n" ); + fprintf( outfile, " wine_dbg_printf(\"fixme:%%s:%%s: .spec empty stub!\\n\", (char *)rec.info[0], func);\n" ); fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n}\n\n" ); break; } diff -u cvs/hq/wine/tools/winebuild/spec32.c wine/tools/winebuild/spec32.c --- cvs/hq/wine/tools/winebuild/spec32.c Sun Dec 15 17:52:11 2002 +++ wine/tools/winebuild/spec32.c Mon Feb 17 16:36:23 2003 @@ -348,6 +348,7 @@ fprintf( outfile, " unsigned int params;\n" ); fprintf( outfile, " const void *info[15];\n" ); fprintf( outfile, "};\n\n" ); + fprintf( outfile, "extern int wine_dbg_printf(const char *format, ...);\n" ); fprintf( outfile, "extern void __stdcall RtlRaiseException( struct exc_record * );\n\n" ); fprintf( outfile, "static void __wine_unimplemented( const char *func )\n{\n" ); fprintf( outfile, " struct exc_record rec;\n" ); @@ -362,6 +363,7 @@ fprintf( outfile, "#else\n" ); fprintf( outfile, " rec.addr = 0;\n" ); fprintf( outfile, "#endif\n" ); + fprintf( outfile, " wine_dbg_printf(\"fixme:%%s:%%s: .spec empty stub!\\n\", (char *)rec.info[0], func);\n" ); fprintf( outfile, " for (;;) RtlRaiseException( &rec );\n}\n\n" ); break; }