* list :
[mono.git] / mono / metadata / debug-mono-symfile.h
index dee88d0e1eadedf6a281c912f0c2a89c333f7087..3fa985afbdc9976a5b3266dbc8f4e0466777a1a9 100644 (file)
@@ -16,7 +16,9 @@ typedef struct MonoSymbolFileDynamicTable     MonoSymbolFileDynamicTable;
 typedef struct MonoDebugMethodInfo             MonoDebugMethodInfo;
 typedef struct MonoDebugMethodJitInfo          MonoDebugMethodJitInfo;
 typedef struct MonoDebugVarInfo                        MonoDebugVarInfo;
+typedef struct MonoDebugLineNumberEntry                MonoDebugLineNumberEntry;
 typedef struct MonoDebugRangeInfo              MonoDebugRangeInfo;
+typedef struct MonoDebugTypeInfo               MonoDebugTypeInfo;
 
 /* Keep in sync with OffsetTable in mcs/class/Mono.CSharp.Debugger/MonoSymbolTable.cs */
 struct MonoSymbolFileOffsetTable {
@@ -30,6 +32,9 @@ struct MonoSymbolFileOffsetTable {
        guint32 line_number_table_size;
        guint32 local_variable_table_offset;
        guint32 local_variable_table_size;
+       guint32 source_file_table_offset;
+       guint32 source_file_table_size;
+       guint32 source_file_count;
        guint32 type_count;
        guint32 type_index_table_offset;
        guint32 type_index_table_size;
@@ -51,11 +56,15 @@ struct MonoSymbolFileMethodEntry {
 
 struct MonoSymbolFileMethodAddress {
        guint32 size;
-       guint64 start_address;
-       guint64 end_address;
-       guint32 line_table_offset;
+       const guint8 *start_address;
+       const guint8 *end_address;
+       const guint8 *method_start_address;
+       const guint8 *method_end_address;
        guint32 variable_table_offset;
        guint32 type_table_offset;
+       guint32 num_line_numbers;
+       guint32 line_number_size;
+       MonoDebugLineNumberEntry *line_numbers;
        guint8 data [MONO_ZERO_LEN_ARRAY];
 };
 
@@ -69,17 +78,26 @@ struct MonoDebugMethodInfo {
        MonoSymbolFile *symfile;
        guint32 file_offset;
        guint32 num_il_offsets;
+       guint32 start_line;
+       guint32 end_line;
        MonoSymbolFileLineNumberEntry *il_offsets;
        MonoDebugMethodJitInfo *jit;
        gpointer user_data;
 };
 
+struct MonoDebugLineNumberEntry {
+       guint32 line;
+       guint32 offset;
+       guint32 address;
+};
+
 struct MonoDebugMethodJitInfo {
        const guint8 *code_start;
        guint32 code_size;
        guint32 prologue_end;
        guint32 epilogue_begin;
-       guint32 *il_addresses;
+       // Array of MonoDebugLineNumberEntry
+       GArray *line_numbers;
        guint32 num_params;
        MonoDebugVarInfo *this_var;
        MonoDebugVarInfo *params;
@@ -117,13 +135,20 @@ struct MonoDebugVarInfo {
 };
 
 struct MonoDebugRangeInfo {
-       guint64 start_address;
-       guint64 end_address;
+       const guint8 *start_address;
+       const guint8 *end_address;
        guint32 file_offset;
        gpointer dynamic_data;
        guint32 dynamic_size;
 };
 
+struct MonoDebugTypeInfo {
+       MonoClass *klass;
+       guint32 rank;
+       guint32 token;
+       gpointer type_info;
+};
+
 struct MonoSymbolFile {
        guint64 magic;
        guint32 version;
@@ -144,14 +169,18 @@ struct MonoSymbolFile {
        MonoDebugRangeInfo *range_table;
        guint32 range_entry_size;
        guint32 num_range_entries;
+       /* Pointer to the malloced class table. */
+       MonoDebugTypeInfo *type_table;
+       guint32 type_entry_size;
+       guint32 num_type_entries;
        /* Private. */
        MonoSymbolFilePriv *_priv;
 };
 
-#define MONO_SYMBOL_FILE_VERSION               26
+#define MONO_SYMBOL_FILE_VERSION               28
 #define MONO_SYMBOL_FILE_MAGIC                 0x45e82623fd7fa614
 
-#define MONO_SYMBOL_FILE_DYNAMIC_VERSION       2
+#define MONO_SYMBOL_FILE_DYNAMIC_VERSION       14
 #define MONO_SYMBOL_FILE_DYNAMIC_MAGIC         0x7aff65af4253d427
 
 MonoSymbolFile *
@@ -163,6 +192,10 @@ void
 mono_debug_symfile_add_method      (MonoSymbolFile           *symfile,
                                    MonoMethod               *method);
 
+void
+mono_debug_symfile_add_type        (MonoSymbolFile           *symfile,
+                                   MonoClass                *klass);
+
 void
 mono_debug_close_mono_symbol_file  (MonoSymbolFile           *symfile);
 
@@ -187,6 +220,9 @@ MonoReflectionType *
 ves_icall_MonoDebugger_GetLocalTypeFromSignature (MonoReflectionAssembly *assembly,
                                                  MonoArray              *signature);
 
+MonoReflectionType *
+ves_icall_MonoDebugger_GetType     (MonoReflectionAssembly   *assembly,
+                                   guint32                   token);
 
 #endif /* __MONO_SYMFILE_H__ */