Vincent Povirk : mscoree: Send Mono's debug output to Unix stderr.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Sep 7 09:20:13 CDT 2015
Module: wine
Branch: master
Commit: 2ecd3772e3805992f48bb806fd6a595048441011
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ecd3772e3805992f48bb806fd6a595048441011
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Fri Sep 4 14:05:00 2015 -0500
mscoree: Send Mono's debug output to Unix stderr.
---
dlls/mscoree/metahost.c | 18 ++++++++++++++++++
dlls/mscoree/mscoree_private.h | 4 ++++
2 files changed, 22 insertions(+)
diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c
index 5e32ecb..6b53cde 100644
--- a/dlls/mscoree/metahost.c
+++ b/dlls/mscoree/metahost.c
@@ -102,6 +102,8 @@ static char* (CDECL *mono_stringify_assembly_name)(MonoAssemblyName *aname);
MonoThread* (CDECL *mono_thread_attach)(MonoDomain *domain);
void (CDECL *mono_thread_manage)(void);
void (CDECL *mono_trace_set_assembly)(MonoAssembly *assembly);
+void (CDECL *mono_trace_set_print_handler)(MonoPrintCallback callback);
+void (CDECL *mono_trace_set_printerr_handler)(MonoPrintCallback callback);
static BOOL get_mono_path(LPWSTR path);
@@ -111,12 +113,18 @@ static MonoAssembly* mono_assembly_preload_hook_fn(MonoAssemblyName *aname, char
static void mono_shutdown_callback_fn(MonoProfiler *prof);
+static void mono_print_handler_fn(const char *string, INT is_stdout);
+
static MonoImage* CDECL image_open_module_handle_dummy(HMODULE module_handle,
char* fname, UINT has_entry_point, MonoImageOpenStatus* status)
{
return mono_image_open(fname, status);
}
+static void CDECL set_print_handler_dummy(MonoPrintCallback callback)
+{
+}
+
static void missing_runtime_message(void)
{
MESSAGE("wine: Install Mono for Windows to run .NET applications.\n");
@@ -204,11 +212,16 @@ static HRESULT load_mono(LPCWSTR mono_path)
} while (0);
LOAD_OPT_MONO_FUNCTION(mono_image_open_from_module_handle, image_open_module_handle_dummy);
+ LOAD_OPT_MONO_FUNCTION(mono_trace_set_print_handler, set_print_handler_dummy);
+ LOAD_OPT_MONO_FUNCTION(mono_trace_set_printerr_handler, set_print_handler_dummy);
#undef LOAD_OPT_MONO_FUNCTION
mono_profiler_install(NULL, mono_shutdown_callback_fn);
+ mono_trace_set_print_handler(mono_print_handler_fn);
+ mono_trace_set_printerr_handler(mono_print_handler_fn);
+
mono_set_dirs(mono_lib_path_a, mono_etc_path_a);
mono_config_parse(NULL);
@@ -244,6 +257,11 @@ static void mono_shutdown_callback_fn(MonoProfiler *prof)
is_mono_shutdown = TRUE;
}
+static void mono_print_handler_fn(const char *string, INT is_stdout)
+{
+ wine_dbg_printf("%s", string);
+}
+
static HRESULT CLRRuntimeInfo_GetRuntimeHost(CLRRuntimeInfo *This, RuntimeHost **result)
{
HRESULT hr = S_OK;
diff --git a/dlls/mscoree/mscoree_private.h b/dlls/mscoree/mscoree_private.h
index 0fbbff6..9a7678d 100644
--- a/dlls/mscoree/mscoree_private.h
+++ b/dlls/mscoree/mscoree_private.h
@@ -132,6 +132,8 @@ typedef MonoAssembly* (*MonoAssemblyPreLoadFunc)(MonoAssemblyName *aname, char *
typedef void (*MonoProfileFunc)(MonoProfiler *prof);
+typedef void (*MonoPrintCallback) (const char *string, INT is_stdout);
+
extern BOOL is_mono_started DECLSPEC_HIDDEN;
extern MonoImage* (CDECL *mono_assembly_get_image)(MonoAssembly *assembly) DECLSPEC_HIDDEN;
@@ -156,6 +158,8 @@ extern MonoString* (CDECL *mono_string_new)(MonoDomain *domain, const char *str)
extern MonoThread* (CDECL *mono_thread_attach)(MonoDomain *domain) DECLSPEC_HIDDEN;
extern void (CDECL *mono_thread_manage)(void) DECLSPEC_HIDDEN;
extern void (CDECL *mono_trace_set_assembly)(MonoAssembly *assembly) DECLSPEC_HIDDEN;
+extern void (CDECL *mono_trace_set_print_handler)(MonoPrintCallback callback) DECLSPEC_HIDDEN;
+extern void (CDECL *mono_trace_set_printerr_handler)(MonoPrintCallback callback) DECLSPEC_HIDDEN;
/* loaded runtime interfaces */
extern void expect_no_runtimes(void) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list