g_assert (!mono_debugger_initialized);
InitializeCriticalSection (&debugger_lock_mutex);
+ mono_debugger_initialized = TRUE;
mono_debugger_lock ();
class_info_table = g_hash_table_new (g_direct_hash, g_direct_equal);
mono_debugger_symbol_table = symbol_table;
- mono_debugger_initialized = TRUE;
mono_debugger_unlock ();
}
mono_debugger_unlock ();
return 0;
}
+
+gint32
+mono_debugger_lookup_assembly (const gchar *name)
+{
+ MonoAssembly *assembly;
+ MonoImageOpenStatus status;
+ int i;
+
+ mono_debugger_lock ();
+
+ again:
+ for (i = 0; i < mono_debugger_symbol_table->num_symbol_files; i++) {
+ MonoDebuggerSymbolFile *symfile = mono_debugger_symbol_table->symbol_files [i];
+
+ if (!strcmp (symfile->image_file, name)) {
+ mono_debugger_unlock ();
+ return i;
+ }
+ }
+
+ assembly = mono_assembly_open (name, &status);
+
+ if (status != MONO_IMAGE_OK) {
+ g_warning (G_STRLOC ": Cannot open image `%s'", name);
+ mono_debugger_unlock ();
+ return -1;
+ }
+
+ must_reload_symtabs = TRUE;
+ goto again;
+}