Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / mini / dwarfwriter.c
index b53661e519b4d18cdcf1534dfd45191dc0a0511e..9f2c405b68360afdf129e789ed284a382f25fe3a 100644 (file)
@@ -1,5 +1,6 @@
-/*
- * dwarfwriter.c: Creation of DWARF debug information
+/**
+ * \file
+ * Creation of DWARF debug information
  *
  * Author:
  *   Zoltan Varga (vargaz@gmail.com)
@@ -8,6 +9,7 @@
  */
 
 #include "config.h"
+#include <mono/utils/mono-compiler.h>
 
 #if !defined(DISABLE_AOT) && !defined(DISABLE_JIT)
 #include "dwarfwriter.h"
@@ -20,9 +22,7 @@
 #endif
 
 #include <mono/metadata/mono-endian.h>
-#include <mono/metadata/debug-mono-symfile.h>
-#include <mono/metadata/mono-debug-debugger.h>
-#include <mono/utils/mono-compiler.h>
+#include <mono/metadata/debug-internals.h>
 
 #ifndef HOST_WIN32
 #include <mono/utils/freebsd-elf32.h>
@@ -572,71 +572,6 @@ static DwarfBasicType basic_types [] = {
 #define LINE_BASE -5
 #define LINE_RANGE 14
 
-/* Subsections of the .debug_line section */
-#define LINE_SUBSECTION_HEADER 1
-#define LINE_SUBSECTION_INCLUDES 2
-#define LINE_SUBSECTION_FILES 3
-#define LINE_SUBSECTION_DATA 4
-#define LINE_SUBSECTION_END 5
-
-static int
-emit_line_number_file_name (MonoDwarfWriter *w, const char *name,
-                                                       gint64 last_mod_time, gint64 file_size)
-{
-       int index;
-       int dir_index;
-       char *basename = NULL;
-
-       if (!w->file_to_index)
-               w->file_to_index = g_hash_table_new (g_str_hash, g_str_equal);
-
-       index = GPOINTER_TO_UINT (g_hash_table_lookup (w->file_to_index, name));
-       if (index > 0)
-               return index;
-
-       if (g_path_is_absolute (name)) {
-               char *dir = g_path_get_dirname (name);
-
-               if (!w->dir_to_index)
-                       w->dir_to_index = g_hash_table_new (g_str_hash, g_str_equal);
-
-               dir_index = GPOINTER_TO_UINT (g_hash_table_lookup (w->dir_to_index, dir));
-               if (dir_index == 0) {
-                       emit_section_change (w, ".debug_line", LINE_SUBSECTION_INCLUDES);
-                       emit_string (w, dir);
-
-                       dir_index = ++ w->line_number_dir_index;
-                       g_hash_table_insert (w->dir_to_index, g_strdup (dir), GUINT_TO_POINTER (dir_index));
-               }
-
-               g_free (dir);
-
-               basename = g_path_get_basename (name);
-       } else {
-               dir_index = 0;
-       }
-
-       emit_section_change (w, ".debug_line", LINE_SUBSECTION_FILES);
-
-       if (basename)
-               emit_string (w, basename);
-       else
-               emit_string (w, name);
-       emit_uleb128 (w, dir_index);
-       emit_byte (w, 0);
-       emit_byte (w, 0);
-
-       emit_section_change (w, ".debug_line", LINE_SUBSECTION_DATA);
-
-       if (basename)
-               g_free (basename);
-
-       index = ++ w->line_number_file_index;
-       g_hash_table_insert (w->file_to_index, g_strdup (name), GUINT_TO_POINTER (index));
-
-       return index;
-}
-
 static int
 get_line_number_file_name (MonoDwarfWriter *w, const char *name)
 {
@@ -1646,11 +1581,11 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
 
                prev_il_offset = il_offset;
 
-               loc = mono_debug_symfile_lookup_location (minfo, il_offset);
+               loc = mono_debug_method_lookup_location (minfo, il_offset);
                if (!loc)
                        continue;
                if (!loc->source_file) {
-                       mono_debug_symfile_free_location (loc);
+                       mono_debug_free_source_location (loc);
                        continue;
                }
 
@@ -1658,7 +1593,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
                addr_diff = i - prev_native_offset;
 
                if (first) {    
-                       emit_section_change (w, ".debug_line", LINE_SUBSECTION_DATA);
+                       emit_section_change (w, ".debug_line", 0);
 
                        emit_byte (w, 0);
                        emit_byte (w, sizeof (gpointer) + 1);
@@ -1698,7 +1633,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
                        prev_native_offset = i;
                }
 
-               mono_debug_symfile_free_location (loc);
+               mono_debug_free_source_location (loc);
                first = FALSE;
        }
 
@@ -1732,7 +1667,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
 
                il_to_line = g_new0 (int, header->code_size);
 
-               emit_section_change (w, ".debug_line", LINE_SUBSECTION_DATA);
+               emit_section_change (w, ".debug_line", 0);
                emit_byte (w, 0);
                emit_byte (w, sizeof (gpointer) + 1);
                emit_byte (w, DW_LNE_set_address);
@@ -1862,7 +1797,7 @@ mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod
 
        minfo = mono_debug_lookup_method (method);
        if (minfo)
-               loc = mono_debug_symfile_lookup_location (minfo, 0);
+               loc = mono_debug_method_lookup_location (minfo, 0);
 
        /* Subprogram */
        names = g_new0 (char *, sig->param_count);
@@ -1883,7 +1818,7 @@ mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod
                emit_uleb128 (w, file_index + 1);
                emit_uleb128 (w, loc->row);
 
-               mono_debug_symfile_free_location (loc);
+               mono_debug_free_source_location (loc);
                loc = NULL;
        } else {
                emit_uleb128 (w, 0);
@@ -2067,4 +2002,9 @@ mono_dwarf_writer_emit_trampoline (MonoDwarfWriter *w, const char *tramp_name, c
        emit_fde (w, w->fde_index, start_symbol, end_symbol, code, code_size, unwind_info, FALSE);
        w->fde_index ++;
 }
+
+#else /* !defined(DISABLE_AOT) && !defined(DISABLE_JIT) */
+
+MONO_EMPTY_SOURCE_FILE (dwarfwriter);
+
 #endif /* End of: !defined(DISABLE_AOT) && !defined(DISABLE_JIT) */