2009-02-04 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / mono-debug.h
index 2495b6942d9781b1d9ad24c0fcbeaa311f02136e..7a801f41e8a48ee1bce977ac90d1fcc6ce11e256 100644 (file)
@@ -18,7 +18,6 @@ typedef struct _MonoSymbolFile                        MonoSymbolFile;
 typedef struct _MonoDebugHandle                        MonoDebugHandle;
 
 typedef struct _MonoDebugLineNumberEntry       MonoDebugLineNumberEntry;
-typedef struct _MonoDebugLexicalBlockEntry     MonoDebugLexicalBlockEntry;
 
 typedef struct _MonoDebugVarInfo               MonoDebugVarInfo;
 typedef struct _MonoDebugMethodJitInfo         MonoDebugMethodJitInfo;
@@ -37,21 +36,6 @@ typedef enum {
        MONO_DEBUG_FORMAT_DEBUGGER
 } MonoDebugFormat;
 
-typedef enum {
-       MONO_DEBUGGER_TYPE_KIND_UNKNOWN = 1,
-       MONO_DEBUGGER_TYPE_KIND_FUNDAMENTAL,
-       MONO_DEBUGGER_TYPE_KIND_STRING,
-       MONO_DEBUGGER_TYPE_KIND_SZARRAY,
-       MONO_DEBUGGER_TYPE_KIND_ARRAY,
-       MONO_DEBUGGER_TYPE_KIND_POINTER,
-       MONO_DEBUGGER_TYPE_KIND_ENUM,
-       MONO_DEBUGGER_TYPE_KIND_OBJECT,
-       MONO_DEBUGGER_TYPE_KIND_STRUCT,
-       MONO_DEBUGGER_TYPE_KIND_CLASS,
-       MONO_DEBUGGER_TYPE_KIND_CLASS_INFO,
-       MONO_DEBUGGER_TYPE_KIND_REFERENCE
-} MonoDebuggerTypeKind;
-
 /*
  * NOTE:
  * We intentionally do not use GList here since the debugger needs to know about
@@ -71,9 +55,8 @@ struct _MonoSymbolTable {
         * Corlib and metadata info.
         */
        MonoDebugHandle *corlib;
-
+       MonoDebugDataTable *global_data_table;
        MonoDebugList *data_tables;
-       MonoDebugDataTable *type_table;
 
        /*
         * The symbol files.
@@ -85,6 +68,7 @@ struct _MonoDebugHandle {
        guint32 index;
        char *image_file;
        MonoImage *image;
+       MonoDebugDataTable *type_table;
        MonoSymbolFile *symfile;
 };
 
@@ -96,8 +80,6 @@ struct _MonoDebugMethodJitInfo {
        const guint8 *wrapper_addr;
        guint32 num_line_numbers;
        MonoDebugLineNumberEntry *line_numbers;
-       guint32 num_lexical_blocks;
-       MonoDebugLexicalBlockEntry *lexical_blocks;
        guint32 num_params;
        MonoDebugVarInfo *this_var;
        MonoDebugVarInfo *params;
@@ -111,12 +93,6 @@ struct _MonoDebugMethodAddressList {
        guint8 data [MONO_ZERO_LEN_ARRAY];
 };
 
-struct _MonoDebugClassEntry {
-       guint32 size;
-       guint32 symfile_id;
-       guint8 data [MONO_ZERO_LEN_ARRAY];
-};
-
 struct _MonoDebugSourceLocation {
        gchar *source_file;
        guint32 row, column;
@@ -140,22 +116,27 @@ struct _MonoDebugSourceLocation {
 /* The variable is in the two registers "offset" and "index". */
 #define MONO_DEBUG_VAR_ADDRESS_MODE_TWO_REGISTERS      0x20000000
 
+/* The variable is dead. */
+#define MONO_DEBUG_VAR_ADDRESS_MODE_DEAD               0x30000000
+
 struct _MonoDebugVarInfo {
        guint32 index;
        guint32 offset;
        guint32 size;
        guint32 begin_scope;
        guint32 end_scope;
-       MonoClass *klass;
+       MonoType *type;
 };
 
-#define MONO_DEBUGGER_VERSION                          60
+#define MONO_DEBUGGER_MAJOR_VERSION                    80
+#define MONO_DEBUGGER_MINOR_VERSION                    0
 #define MONO_DEBUGGER_MAGIC                            0x7aff65af4253d427ULL
 
 extern MonoSymbolTable *mono_symbol_table;
 extern MonoDebugFormat mono_debug_format;
 extern GHashTable *mono_debug_handles;
 extern gint32 mono_debug_debugger_version;
+extern gint32 _mono_debug_using_mono_debugger;
 
 void mono_debug_list_add (MonoDebugList **list, gconstpointer data);
 void mono_debug_list_remove (MonoDebugList **list, gconstpointer data);
@@ -183,6 +164,16 @@ mono_debug_lookup_method_addresses (MonoMethod *method);
 MonoDebugMethodJitInfo*
 mono_debug_find_method (MonoMethod *method, MonoDomain *domain);
 
+void
+mono_debug_free_method_jit_info (MonoDebugMethodJitInfo *jit);
+
+
+void
+mono_debug_add_delegate_trampoline (gpointer code, int size);
+
+int
+mono_debug_lookup_locals (MonoMethod *method, char ***names, int **indexes);
+
 /*
  * Line number support.
  */