2 * This header is only installed for use by the debugger:
3 * the structures and the API declared here are not supported.
6 #ifndef __MONO_DEBUG_MONO_SYMFILE_H__
7 #define __MONO_DEBUG_MONO_SYMFILE_H__
10 #include <mono/metadata/class.h>
11 #include <mono/metadata/reflection.h>
12 #include <mono/metadata/mono-debug.h>
14 typedef struct MonoSymbolFileOffsetTable MonoSymbolFileOffsetTable;
15 typedef struct MonoSymbolFileLineNumberEntry MonoSymbolFileLineNumberEntry;
16 typedef struct MonoSymbolFileMethodEntry MonoSymbolFileMethodEntry;
17 typedef struct MonoSymbolFileMethodAddress MonoSymbolFileMethodAddress;
18 typedef struct MonoSymbolFileDynamicTable MonoSymbolFileDynamicTable;
19 typedef struct MonoSymbolFileSourceEntry MonoSymbolFileSourceEntry;
20 typedef struct MonoSymbolFileMethodIndexEntry MonoSymbolFileMethodIndexEntry;
21 typedef struct MonoSymbolFileLexicalBlockEntry MonoSymbolFileLexicalBlockEntry;
23 typedef struct MonoDebugMethodInfo MonoDebugMethodInfo;
24 typedef struct MonoDebugLexicalBlockEntry MonoDebugLexicalBlockEntry;
25 typedef struct MonoDebugLineNumberEntry MonoDebugLineNumberEntry;
27 /* Keep in sync with OffsetTable in mcs/class/Mono.CSharp.Debugger/MonoSymbolTable.cs */
28 struct MonoSymbolFileOffsetTable {
29 guint32 _total_file_size;
30 guint32 _data_section_offset;
31 guint32 _data_section_size;
32 guint32 _source_count;
33 guint32 _source_table_offset;
34 guint32 _source_table_size;
35 guint32 _method_count;
36 guint32 _method_table_offset;
37 guint32 _method_table_size;
41 struct MonoSymbolFileMethodEntry {
42 guint32 _source_index;
47 guint32 _num_line_numbers;
49 guint32 _type_index_table_offset;
50 guint32 _local_variable_table_offset;
51 guint32 _line_number_table_offset;
52 guint32 _num_lexical_blocks;
53 guint32 _lexical_block_table_offset;
54 guint32 _namespace_idx;
55 guint32 _local_names_ambiguous;
58 struct MonoSymbolFileSourceEntry {
61 guint32 _num_namespaces;
63 guint32 _method_offset;
64 guint32 _nstable_offset;
67 struct MonoSymbolFileMethodIndexEntry {
72 struct MonoSymbolFileMethodAddress {
74 const guint8 *start_address;
75 const guint8 *end_address;
76 const guint8 *method_start_address;
77 const guint8 *method_end_address;
78 const guint8 *wrapper_address;
81 guint32 variable_table_offset;
82 guint32 type_table_offset;
83 guint32 num_line_numbers;
84 guint32 line_number_offset;
85 guint32 lexical_block_table_offset;
86 guint8 data [MONO_ZERO_LEN_ARRAY];
89 struct MonoSymbolFileLexicalBlockEntry {
90 guint32 _start_offset;
94 struct MonoSymbolFileLineNumberEntry {
99 struct MonoDebugMethodInfo {
101 MonoDebugHandle *handle;
103 guint32 num_il_offsets;
104 MonoSymbolFileLineNumberEntry *il_offsets;
105 MonoSymbolFileMethodEntry *entry;
108 struct MonoDebugLexicalBlockEntry {
109 guint32 start_address;
113 struct MonoDebugLineNumberEntry {
118 struct _MonoSymbolFile {
119 const guint8 *raw_contents;
120 int raw_contents_size;
122 GHashTable *method_hash;
123 MonoSymbolFileOffsetTable *offset_table;
126 #define MONO_SYMBOL_FILE_VERSION 38
127 #define MONO_SYMBOL_FILE_MAGIC 0x45e82623fd7fa614ULL
130 mono_debug_open_mono_symbol_file (MonoDebugHandle *handle,
131 gboolean create_symfile);
134 mono_debug_close_mono_symbol_file (MonoSymbolFile *symfile);
137 mono_debug_find_source_location (MonoSymbolFile *symfile,
140 guint32 *line_number);
143 _mono_debug_address_from_il_offset (MonoDebugMethodJitInfo *jit,
146 MonoDebugMethodInfo *
147 mono_debug_find_method (MonoDebugHandle *handle,
150 #endif /* __MONO_SYMFILE_H__ */