typedef struct MonoSymbolFileLineNumberEntry MonoSymbolFileLineNumberEntry;
typedef struct MonoSymbolFileMethodEntry MonoSymbolFileMethodEntry;
typedef struct MonoSymbolFileMethodAddress MonoSymbolFileMethodAddress;
+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 {
guint32 method_table_size;
guint32 line_number_table_offset;
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;
- guint32 address_table_size;
};
struct MonoSymbolFileMethodEntry {
guint32 num_locals;
guint32 num_line_numbers;
guint32 type_index_table_offset;
+ guint32 local_variable_table_offset;
guint32 source_file_offset;
guint32 line_number_table_offset;
- guint32 address_table_offset;
- guint32 variable_table_offset;
- guint32 address_table_size;
};
struct MonoSymbolFileMethodAddress {
- guint32 is_valid;
- guint64 start_address;
- guint64 end_address;
- guint32 line_addresses [MONO_ZERO_LEN_ARRAY];
+ guint32 size;
+ 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];
};
struct MonoSymbolFileLineNumberEntry {
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;
};
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;
+ guint64 dynamic_magic;
+ guint32 dynamic_version;
guint32 is_dynamic;
char *image_file;
+ char *symbol_file;
/* Pointer to the mmap()ed contents of the file. */
guint8 *raw_contents;
guint32 raw_contents_size;
- /* Pointer to the malloced address table. */
- char *address_table;
- guint32 address_table_size;
- /* Pointer to the malloced range table. */
- MonoDebugRangeInfo *range_table;
- guint32 range_table_size;
/* Pointer to the malloced string table. */
guint8 *string_table;
guint32 string_table_size;
+ /* Pointer to the malloced range table. */
+ guint32 locked;
+ guint32 generation;
+ 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 24
+#define MONO_SYMBOL_FILE_VERSION 28
#define MONO_SYMBOL_FILE_MAGIC 0x45e82623fd7fa614
+#define MONO_SYMBOL_FILE_DYNAMIC_VERSION 14
+#define MONO_SYMBOL_FILE_DYNAMIC_MAGIC 0x7aff65af4253d427
+
MonoSymbolFile *
mono_debug_open_mono_symbol_file (MonoImage *image,
const char *filename,
gboolean emit_warnings);
void
-mono_debug_update_mono_symbol_file (MonoSymbolFile *symbol_file);
+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);
ves_icall_MonoDebugger_GetMethod (MonoReflectionAssembly *assembly,
guint32 token);
+MonoReflectionType *
+ves_icall_MonoDebugger_GetLocalTypeFromSignature (MonoReflectionAssembly *assembly,
+ MonoArray *signature);
+
+MonoReflectionType *
+ves_icall_MonoDebugger_GetType (MonoReflectionAssembly *assembly,
+ guint32 token);
+
#endif /* __MONO_SYMFILE_H__ */