TaxCut and C++ exception handling
Dmitry Timoshkov
dmitry at baikal.ru
Mon Feb 17 03:22:25 CST 2003
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;
}
More information about the wine-patches
mailing list