Index: mono/jit/mono.c
===================================================================
RCS file: /mono/mono/mono/jit/mono.c,v
retrieving revision 1.50
diff -u -r1.50 mono.c
--- mono/jit/mono.c	21 Feb 2003 22:04:49 -0000	1.50
+++ mono/jit/mono.c	2 Mar 2003 16:07:15 -0000
@@ -17,6 +17,7 @@
 #include "mono/metadata/mono-config.h"
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/environment.h>
+#include <mono/utils/mono-logger.h>
 #include <mono/os/util.h>
 #include <locale.h>
 
@@ -156,6 +157,7 @@
 		 "                         @imagename              compile the given image\n"
 		 "    --ncompile NUM     compile methods NUM times (default: 1000)\n"
 		 "    --noboundcheck     Disables bound checks\n"
+		 "    --log-level=LEVEL  Sets the logging level (Default: 5, Message)\n"
 		 "\n"
 		 "Development:\n"
 		 "    --debug[=FORMAT]   write a debugging file.  FORMAT is one of:\n"
@@ -269,6 +271,9 @@
 	setlocale(LC_ALL, "");
 	g_log_set_always_fatal (G_LOG_LEVEL_ERROR);
 	g_log_set_fatal_mask (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR);
+
+	mono_trace_init ();
+	mono_trace_push (G_LOG_LEVEL_MESSAGE, MONO_TRACE_ALL);
 	
 	if (argc < 2)
 		usage (argv [0]);
@@ -351,6 +356,24 @@
 			precompile_classes = g_list_append (precompile_classes, argv [++i]);
 		} else if (strcmp (argv [i], "--verbose") == 0) {
 			verbose = TRUE;;
+		} else if (strncmp (argv [i], "--log-level=", 12) == 0) {
+			const char *levelstr = &argv [i][12];
+			int level = G_LOG_LEVEL_MESSAGE;
+
+			if(levelstr) {
+				if(sscanf (levelstr, "%d", &level)) {
+					mono_trace_set_level ((1<<level));
+				}
+			}
+		} else if (strncmp (argv [i], "--log-mask=", 11) == 0) {
+			const char *maskstr = &argv [i][11];
+			int mask = MONO_TRACE_ALL;
+
+			if(maskstr) {
+				if(sscanf (maskstr, "%d", &mask)) {
+					mono_trace_set_mask (mask);
+				}
+			}
 		} else if (strcmp (argv [i], "--fast-iconv") == 0) {
 			mono_use_fast_iconv = TRUE;
 		} else
@@ -394,6 +417,8 @@
 
 	/* Look up return value from System.Environment.ExitCode */
 	retval=mono_environment_exitcode_get ();
-	
+
+	mono_trace_cleanup ();
+
 	return retval;
 }
Index: mono/metadata/loader.c
===================================================================
RCS file: /mono/mono/mono/metadata/loader.c,v
retrieving revision 1.89
diff -u -r1.89 loader.c
--- mono/metadata/loader.c	9 Feb 2003 17:45:09 -0000	1.89
+++ mono/metadata/loader.c	2 Mar 2003 16:07:16 -0000
@@ -32,6 +32,7 @@
 #include <mono/metadata/class.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/reflection.h>
+#include <mono/utils/mono-logger.h>
 
 static gboolean dummy_icall = TRUE;
 
@@ -68,11 +69,11 @@
 		return ves_icall_dummy;
 
 	if (!method) {
-		g_warning ("can't resolve internal call, method is null");
+		mono_trace_warning (MONO_TRACE_TYPE, "can't resolve internal call, method is null");
 	}
 
 	if (!icall_hash) {
-		g_warning ("icall_hash not initialized");
+		mono_trace_warning (MONO_TRACE_TYPE, "icall_hash not initialized");
 		g_assert_not_reached ();
 	}
 
@@ -90,12 +91,13 @@
 		else
 			name = g_strconcat (method->klass->name, "::", method->name, "(", tmpsig, ")", NULL);
 		if (!(res = g_hash_table_lookup (icall_hash, name))) {
-			g_warning ("cant resolve internal call to \"%s\" (tested without signature also)", name);
-			g_print ("\nYour mono runtime and corlib are out of sync.\n");
-			g_print ("When you update one from cvs you need to update, compile and install\nthe other too.\n");
-			g_print ("Do not report this as a bug unless you're sure you have updated correctly:\nyou probably have a broken mono install.\n");
-			g_print ("If you see other errors or faults after this message they are probably related\n");
-			g_print ("and you need to fix your mono install first.\n");
+			mono_trace_warning (MONO_TRACE_TYPE, "cant resolve internal call to \"%s\" (tested without signature also)", name);
+			mono_trace_message (MONO_TRACE_TYPE, 
+				"\nYour mono runtime and corlib are out of sync.\n"
+				"When you update one from cvs you need to update, compile and install\nthe other too.\n"
+				"Do not report this as a bug unless you're sure you have updated correctly:\nyou probably have a broken mono install.\n"
+				"If you see other errors or faults after this message they are probably related\n"
+				"and you need to fix your mono install first.\n");
 
 			g_free (name);
 			g_free (tmpsig);
@@ -142,7 +144,7 @@
 	case MEMBERREF_PARENT_TYPEREF:
 		klass = mono_class_from_typeref (image, MONO_TOKEN_TYPE_REF | nindex);
 		if (!klass) {
-			g_warning ("Missing field %s in typeref index %d", fname, nindex);
+			mono_trace_warning (MONO_TRACE_TYPE, "Missing field %s in typeref index %d", fname, nindex);
 			return NULL;
 		}
 		mono_class_init (klass);
@@ -228,14 +230,14 @@
 	case MEMBERREF_PARENT_TYPEREF:
 		klass = mono_class_from_typeref (image, MONO_TOKEN_TYPE_REF | nindex);
 		if (!klass) {
-			g_warning ("Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
+			mono_trace_warning (MONO_TRACE_TYPE, "Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
 			mono_metadata_free_method_signature (sig);
 			return NULL;
 		}
 		mono_class_init (klass);
 		method = find_method (klass, mname, sig);
 		if (!method)
-			g_warning ("Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
+			mono_trace_warning (MONO_TRACE_TYPE, "Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
 		mono_metadata_free_method_signature (sig);
 		return method;
 	case MEMBERREF_PARENT_TYPESPEC: {
@@ -255,7 +257,7 @@
 			mono_class_init (klass);
 			method = find_method (klass, mname, sig);
 			if (!method)
-				g_warning ("Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
+				mono_trace_warning (MONO_TRACE_TYPE, "Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
 			mono_metadata_free_method_signature (sig);
 			return method;
 		}
@@ -302,14 +304,14 @@
 	case MEMBERREF_PARENT_TYPEDEF:
 		klass = mono_class_get (image, MONO_TOKEN_TYPE_DEF | nindex);
 		if (!klass) {
-			g_warning ("Missing method %s in assembly %s typedef index %d", mname, image->name, nindex);
+			mono_trace_warning (MONO_TRACE_TYPE, "Missing method %s in assembly %s typedef index %d", mname, image->name, nindex);
 			mono_metadata_free_method_signature (sig);
 			return NULL;
 		}
 		mono_class_init (klass);
 		method = find_method (klass, mname, sig);
 		if (!method)
-			g_warning ("Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
+			mono_trace_warning (MONO_TRACE_TYPE, "Missing method %s in assembly %s typeref index %d", mname, image->name, nindex);
 		mono_metadata_free_method_signature (sig);
 		return method;
 	default:
@@ -418,7 +420,7 @@
 	if (!gmodule) {
 		gchar *error = g_strdup (g_module_error ());
 		if (!(gmodule=g_module_open (scope, G_MODULE_BIND_LAZY))) {
-			g_warning ("Failed to load library %s (%s): %s", full_name, scope, error);
+			mono_trace_warning (MONO_TRACE_DLLIMPORT, "Failed to load library %s (%s): %s", full_name, scope, error);
 			g_free (error);
 			g_free (full_name);
 			return NULL;
@@ -430,7 +432,7 @@
 	g_module_symbol (gmodule, import, &method->addr); 
 
 	if (!method->addr) {
-		g_warning ("Failed to load function %s from %s", import, scope);
+		mono_trace_warning (MONO_TRACE_DLLIMPORT, "Failed to load function %s from %s", import, scope);
 		return NULL;
 	}
 	return method->addr;
Index: mono/metadata/object.h
===================================================================
RCS file: /mono/mono/mono/metadata/object.h,v
retrieving revision 1.87
diff -u -r1.87 object.h
--- mono/metadata/object.h	21 Feb 2003 22:42:16 -0000	1.87
+++ mono/metadata/object.h	2 Mar 2003 16:07:17 -0000
@@ -368,13 +368,13 @@
 mono_load_remote_field (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, gpointer *res);
 
 MonoObject *
-mono_load_remote_field_new (MonoObject *this, MonoClass *klass, MonoClassField *field);
+mono_load_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassField *field);
 
 void
 mono_store_remote_field (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, gpointer val);
 
 void
-mono_store_remote_field_new (MonoObject *this, MonoClass *klass, MonoClassField *field, MonoObject *arg);
+mono_store_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoObject *arg);
 
 void
 mono_method_return_message_restore (MonoMethod *method, gpointer *params, MonoArray *out_args);
Index: mono/metadata/threads.h
===================================================================
RCS file: /mono/mono/mono/metadata/threads.h,v
retrieving revision 1.29
diff -u -r1.29 threads.h
--- mono/metadata/threads.h	21 Feb 2003 23:45:03 -0000	1.29
+++ mono/metadata/threads.h	2 Mar 2003 16:07:17 -0000
@@ -52,11 +52,11 @@
 				       gpointer arg);
 extern MonoThread *mono_thread_attach (MonoDomain *domain);
 
-extern HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this, MonoObject *start);
-extern void ves_icall_System_Threading_Thread_Thread_free_internal(MonoThread *this, HANDLE thread);
-extern void ves_icall_System_Threading_Thread_Start_internal(MonoThread *this, HANDLE thread);
+extern HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this_obj, MonoObject *start);
+extern void ves_icall_System_Threading_Thread_Thread_free_internal(MonoThread *this_obj, HANDLE thread);
+extern void ves_icall_System_Threading_Thread_Start_internal(MonoThread *this_obj, HANDLE thread);
 extern void ves_icall_System_Threading_Thread_Sleep_internal(int ms);
-extern gboolean ves_icall_System_Threading_Thread_Join_internal(MonoThread *this, int ms, HANDLE thread);
+extern gboolean ves_icall_System_Threading_Thread_Join_internal(MonoThread *this_obj, int ms, HANDLE thread);
 extern gint32 ves_icall_System_Threading_Thread_GetDomainID (void);
 extern void ves_icall_System_Threading_Thread_SlotHash_store(MonoObject *data);
 extern MonoObject *ves_icall_System_Threading_Thread_SlotHash_lookup(void);
@@ -69,7 +69,7 @@
 
 extern gboolean ves_icall_System_Threading_WaitHandle_WaitAll_internal(MonoArray *mono_handles, gint32 ms, gboolean exitContext);
 extern gint32 ves_icall_System_Threading_WaitHandle_WaitAny_internal(MonoArray *mono_handles, gint32 ms, gboolean exitContext);
-extern gboolean ves_icall_System_Threading_WaitHandle_WaitOne_internal(MonoObject *this, HANDLE handle, gint32 ms, gboolean exitContext);
+extern gboolean ves_icall_System_Threading_WaitHandle_WaitOne_internal(MonoObject *this_obj, HANDLE handle, gint32 ms, gboolean exitContext);
 
 extern gint32 ves_icall_System_Threading_Interlocked_Increment_Int(gint32 *location);
 extern gint64 ves_icall_System_Threading_Interlocked_Increment_Long(gint64 *location);
Index: mono/utils/Makefile.am
===================================================================
RCS file: /mono/mono/mono/utils/Makefile.am,v
retrieving revision 1.7
diff -u -r1.7 Makefile.am
--- mono/utils/Makefile.am	25 Jul 2002 12:02:04 -0000	1.7
+++ mono/utils/Makefile.am	2 Mar 2003 16:07:18 -0000
@@ -3,19 +3,21 @@
 INCLUDES = $(GLIB_CFLAGS) $(GMODULE_CFLAGS) -I$(top_srcdir)	-I$(top_srcdir)/mono 
 
 libmonoutils_la_SOURCES = \
-	mono-hash.c	\
-	mono-md5.c	\
-	mono-sha1.c	\
+	mono-hash.c		\
+	mono-md5.c		\
+	mono-sha1.c		\
 	monobitset.c	\
-	strtod.h	\
-	strtod.c
+	strtod.h		\
+	strtod.c		\
+	mono-logger.c
 
 libmonoutilsincludedir = $(includedir)/mono/utils
 
 libmonoutilsinclude_HEADERS = \
 	monobitset.h	\
 	mono-digest.h	\
-	mono-hash.h
+	mono-hash.h		\
+	mono-logger.h
 
 EXTRA_DIST = ChangeLog
 
