* list :
[mono.git] / mono / metadata / debug-mono-symfile.h
index 6c373e689ccc81ce2f28d685d1e9e99c2825b317..3fa985afbdc9976a5b3266dbc8f4e0466777a1a9 100644 (file)
@@ -16,6 +16,7 @@ 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;
 
@@ -31,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;
@@ -52,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];
 };
 
@@ -70,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;
@@ -118,8 +135,8 @@ 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;
@@ -160,10 +177,10 @@ struct MonoSymbolFile {
        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       6
+#define MONO_SYMBOL_FILE_DYNAMIC_VERSION       14
 #define MONO_SYMBOL_FILE_DYNAMIC_MAGIC         0x7aff65af4253d427
 
 MonoSymbolFile *