X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fdebug-mono-symfile.h;h=9bf2a4f7dbc384311042e9d131e33368113e7b3e;hb=dcc01356ae5eb56e34d67cc439ea16ee2171e792;hp=bafdbffd0d8b58d22e7511587989d5d13017e1b9;hpb=0a09faca2e4c3d910ebd40d205b9308a33b5f474;p=mono.git diff --git a/mono/metadata/debug-mono-symfile.h b/mono/metadata/debug-mono-symfile.h index bafdbffd0d8..9bf2a4f7dbc 100644 --- a/mono/metadata/debug-mono-symfile.h +++ b/mono/metadata/debug-mono-symfile.h @@ -13,22 +13,19 @@ typedef struct MonoSymbolFileOffsetTable MonoSymbolFileOffsetTable; typedef struct MonoSymbolFileLineNumberEntry MonoSymbolFileLineNumberEntry; -typedef struct MonoSymbolFileMethodEntry MonoSymbolFileMethodEntry; typedef struct MonoSymbolFileMethodAddress MonoSymbolFileMethodAddress; typedef struct MonoSymbolFileDynamicTable MonoSymbolFileDynamicTable; typedef struct MonoSymbolFileSourceEntry MonoSymbolFileSourceEntry; -typedef struct MonoSymbolFileMethodIndexEntry MonoSymbolFileMethodIndexEntry; -typedef struct MonoSymbolFileLexicalBlockEntry MonoSymbolFileLexicalBlockEntry; - -typedef struct MonoDebugMethodInfo MonoDebugMethodInfo; -typedef struct MonoDebugLexicalBlockEntry MonoDebugLexicalBlockEntry; -typedef struct MonoDebugLineNumberEntry MonoDebugLineNumberEntry; +typedef struct MonoSymbolFileMethodEntry MonoSymbolFileMethodEntry; /* Keep in sync with OffsetTable in mcs/class/Mono.CSharp.Debugger/MonoSymbolTable.cs */ struct MonoSymbolFileOffsetTable { guint32 _total_file_size; guint32 _data_section_offset; guint32 _data_section_size; + guint32 _compile_unit_count; + guint32 _compile_unit_table_offset; + guint32 _compile_unit_table_size; guint32 _source_count; guint32 _source_table_offset; guint32 _source_table_size; @@ -36,39 +33,24 @@ struct MonoSymbolFileOffsetTable { guint32 _method_table_offset; guint32 _method_table_size; guint32 _type_count; -}; - -struct MonoSymbolFileMethodEntry { - guint32 _source_index; - guint32 _token; - guint32 _start_row; - guint32 _end_row; - guint32 _class_type_index; - guint32 _num_parameters; - guint32 _num_locals; - guint32 _num_line_numbers; - guint32 _name_offset; - guint32 _type_index_table_offset; - guint32 _local_variable_table_offset; - guint32 _line_number_table_offset; - guint32 _num_lexical_blocks; - guint32 _lexical_block_table_offset; - guint32 _namespace_idx; - guint32 _local_names_ambiguous; + guint32 _anonymous_scope_count; + guint32 _anonymous_scope_table_offset; + guint32 _anonymous_scope_table_size; + guint32 _line_number_table_line_base; + guint32 _line_number_table_line_range; + guint32 _line_number_table_opcode_base; + guint32 _is_aspx_source; }; struct MonoSymbolFileSourceEntry { guint32 _index; - guint32 _num_methods; - guint32 _num_namespaces; - guint32 _name_offset; - guint32 _method_offset; - guint32 _nstable_offset; + guint32 _data_offset; }; -struct MonoSymbolFileMethodIndexEntry { - guint32 _file_offset; +struct MonoSymbolFileMethodEntry { guint32 _token; + guint32 _data_offset; + guint32 _line_number_table; }; struct MonoSymbolFileMethodAddress { @@ -79,73 +61,73 @@ struct MonoSymbolFileMethodAddress { const guint8 *method_end_address; const guint8 *wrapper_address; guint32 has_this; + guint32 num_params; guint32 variable_table_offset; guint32 type_table_offset; guint32 num_line_numbers; guint32 line_number_offset; - guint32 lexical_block_table_offset; guint8 data [MONO_ZERO_LEN_ARRAY]; }; -struct MonoSymbolFileLexicalBlockEntry { - guint32 _start_offset; - guint32 _end_offset; -}; - -struct MonoSymbolFileLineNumberEntry { - guint32 _row; - guint32 _offset; -}; - -struct MonoDebugMethodInfo { +struct _MonoDebugMethodInfo { MonoMethod *method; MonoDebugHandle *handle; guint32 index; - guint32 num_il_offsets; - MonoSymbolFileLineNumberEntry *il_offsets; - MonoSymbolFileMethodEntry *entry; + guint32 data_offset; + guint32 lnt_offset; }; -struct MonoDebugLexicalBlockEntry { - guint32 start_address; - guint32 end_address; -}; - -struct MonoDebugLineNumberEntry { - guint32 offset; - guint32 address; +struct _MonoDebugLineNumberEntry { + guint32 il_offset; + guint32 native_offset; }; struct _MonoSymbolFile { const guint8 *raw_contents; int raw_contents_size; + void *raw_contents_handle; + int major_version; + int minor_version; + gchar *filename; GHashTable *method_hash; MonoSymbolFileOffsetTable *offset_table; }; -#define MONO_SYMBOL_FILE_VERSION 37 +#define MONO_SYMBOL_FILE_MAJOR_VERSION 50 +#define MONO_SYMBOL_FILE_MINOR_VERSION 0 #define MONO_SYMBOL_FILE_MAGIC 0x45e82623fd7fa614ULL +G_BEGIN_DECLS + MonoSymbolFile * -mono_debug_open_mono_symbol_file (MonoDebugHandle *handle, - gboolean create_symfile); +mono_debug_open_mono_symbols (MonoDebugHandle *handle, + const guint8 *raw_contents, + int size, + gboolean in_the_debugger); void mono_debug_close_mono_symbol_file (MonoSymbolFile *symfile); -gchar * -mono_debug_find_source_location (MonoSymbolFile *symfile, - MonoMethod *method, - guint32 offset, - guint32 *line_number); +MonoDebugSourceLocation * +mono_debug_symfile_lookup_location (MonoDebugMethodInfo *minfo, + guint32 offset); gint32 _mono_debug_address_from_il_offset (MonoDebugMethodJitInfo *jit, guint32 il_offset); MonoDebugMethodInfo * -mono_debug_find_method (MonoDebugHandle *handle, +mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method); +int +mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo, char ***names, + int **indexes); + +void +mono_debug_symfile_get_line_numbers (MonoDebugMethodInfo *minfo, char **source_file, int *n_il_offsets, int **il_offsets, int **line_numbers); + +G_END_DECLS + #endif /* __MONO_SYMFILE_H__ */