*** empty log message ***
[mono.git] / mono / jit / debug-dwarf2.c
index 718422ca115c23190351f4c55a9351b5952c17fa..fdca0d3d564652202306d9ff8073e329d9ac46e5 100644 (file)
@@ -901,7 +901,7 @@ write_method_lines_dwarf2 (MonoDebugHandle *debug, MonoDebugMethodInfo *minfo)
        DebugMethodInfo *priv = minfo->user_data;
        int i;
 
-       if (!minfo->jit->line_numbers)
+       if (!minfo->jit || !minfo->jit->line_numbers)
                return;
 
        // Start of statement program
@@ -971,10 +971,16 @@ write_method_lines_func (gpointer key, gpointer value, gpointer user_data)
 }
 
 static void
-write_line_numbers (MonoDebugHandle *debug)
+write_method_lines_func_1 (gpointer key, gpointer value, gpointer user_data)
 {
-       GList *tmp;
+       AssemblyDebugInfo *info = (AssemblyDebugInfo *) value;
+
+       g_hash_table_foreach (info->methods, write_method_lines_func, user_data);
+}
 
+static void
+write_line_numbers (MonoDebugHandle *debug)
+{
        /* State machine registers. */
        int i;
        
@@ -1013,11 +1019,7 @@ write_line_numbers (MonoDebugHandle *debug)
        dwarf2_write_byte (debug->f, 0);
        dwarf2_write_label (debug->f, "DL3");
 
-       for (tmp = debug->info; tmp; tmp = tmp->next) {
-               AssemblyDebugInfo *info = (AssemblyDebugInfo*)tmp->data;
-
-               g_hash_table_foreach (info->methods, write_method_lines_func, debug);
-       }
+       g_hash_table_foreach (debug->images, write_method_lines_func_1, debug);
 
        dwarf2_write_label (debug->f, "debug_line_e");
 }
@@ -1142,11 +1144,17 @@ write_method_func (gpointer key, gpointer value, gpointer user_data)
        write_method_dwarf2 (user_data, value);
 }
 
+static void
+write_method_func_1 (gpointer key, gpointer value, gpointer user_data)
+{
+       AssemblyDebugInfo *info = (AssemblyDebugInfo *) value;
+
+       g_hash_table_foreach (info->methods, write_method_func, user_data);
+}
+
 void
 mono_debug_write_dwarf2 (MonoDebugHandle *debug)
 {
-       GList *tmp;
-
        if (!(debug->f = fopen (debug->filename, "w"))) {
                g_warning ("Can't create dwarf file `%s': %s", debug->filename, g_strerror (errno)); 
                return;
@@ -1368,11 +1376,7 @@ mono_debug_write_dwarf2 (MonoDebugHandle *debug)
        dwarf2_write_ref4 (debug->f, "debug_lines_b");
 
        // Methods
-       for (tmp = debug->info; tmp; tmp = tmp->next) {
-               AssemblyDebugInfo *info = (AssemblyDebugInfo*)tmp->data;
-
-               g_hash_table_foreach (info->methods, write_method_func, debug);
-       }
+       g_hash_table_foreach (debug->images, write_method_func_1, debug);
 
        // Derived types
        g_hash_table_foreach (debug->type_hash, write_class, debug);