- We need to invalidate the selection area when we replace the
[mono-project.git] / mono / metadata / debug-mono-symfile.h
blob67a125133d5475dbaa2b97bb32aa0f8f96e80181
1 /*
2 * This header is only installed for use by the debugger:
3 * the structures and the API declared here are not supported.
4 */
6 #ifndef __MONO_DEBUG_MONO_SYMFILE_H__
7 #define __MONO_DEBUG_MONO_SYMFILE_H__
9 #include <glib.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 /* Keep in sync with OffsetTable in mcs/class/Mono.CSharp.Debugger/MonoSymbolTable.cs */
24 struct MonoSymbolFileOffsetTable {
25 guint32 _total_file_size;
26 guint32 _data_section_offset;
27 guint32 _data_section_size;
28 guint32 _source_count;
29 guint32 _source_table_offset;
30 guint32 _source_table_size;
31 guint32 _method_count;
32 guint32 _method_table_offset;
33 guint32 _method_table_size;
34 guint32 _type_count;
37 struct MonoSymbolFileMethodEntry {
38 guint32 _source_index;
39 guint32 _token;
40 guint32 _start_row;
41 guint32 _end_row;
42 guint32 _num_locals;
43 guint32 _num_line_numbers;
44 guint32 _name_offset;
45 guint32 _type_index_table_offset;
46 guint32 _local_variable_table_offset;
47 guint32 _line_number_table_offset;
48 guint32 _num_lexical_blocks;
49 guint32 _lexical_block_table_offset;
50 guint32 _namespace_idx;
51 guint32 _local_names_ambiguous;
54 struct MonoSymbolFileSourceEntry {
55 guint32 _index;
56 guint32 _num_methods;
57 guint32 _num_namespaces;
58 guint32 _name_offset;
59 guint32 _method_offset;
60 guint32 _nstable_offset;
63 struct MonoSymbolFileMethodIndexEntry {
64 guint32 _file_offset;
65 guint32 _token;
68 struct MonoSymbolFileMethodAddress {
69 guint32 size;
70 const guint8 *start_address;
71 const guint8 *end_address;
72 const guint8 *method_start_address;
73 const guint8 *method_end_address;
74 const guint8 *wrapper_address;
75 guint32 has_this;
76 guint32 num_params;
77 guint32 variable_table_offset;
78 guint32 type_table_offset;
79 guint32 num_line_numbers;
80 guint32 line_number_offset;
81 guint32 num_lexical_blocks;
82 guint32 lexical_block_table_offset;
83 guint8 data [MONO_ZERO_LEN_ARRAY];
86 struct MonoSymbolFileLexicalBlockEntry {
87 guint32 _start_offset;
88 guint32 _end_offset;
91 struct MonoSymbolFileLineNumberEntry {
92 guint32 _row;
93 guint32 _offset;
96 struct _MonoDebugMethodInfo {
97 MonoMethod *method;
98 MonoDebugHandle *handle;
99 guint32 index;
100 guint32 num_il_offsets;
101 MonoSymbolFileLineNumberEntry *il_offsets;
102 guint32 num_lexical_blocks;
103 MonoSymbolFileLexicalBlockEntry *lexical_blocks;
104 MonoSymbolFileMethodEntry *entry;
107 struct _MonoDebugLexicalBlockEntry {
108 guint32 il_start_offset;
109 guint32 native_start_offset;
110 guint32 il_end_offset;
111 guint32 native_end_offset;
114 struct _MonoDebugLineNumberEntry {
115 guint32 il_offset;
116 guint32 native_offset;
119 struct _MonoSymbolFile {
120 const guint8 *raw_contents;
121 int raw_contents_size;
122 gchar *filename;
123 GHashTable *method_hash;
124 MonoSymbolFileOffsetTable *offset_table;
127 #define MONO_SYMBOL_FILE_VERSION 39
128 #define MONO_SYMBOL_FILE_MAGIC 0x45e82623fd7fa614ULL
130 G_BEGIN_DECLS
132 MonoSymbolFile *
133 mono_debug_open_mono_symbols (MonoDebugHandle *handle,
134 const guint8 *raw_contents,
135 int size,
136 gboolean in_the_debugger);
138 void
139 mono_debug_close_mono_symbol_file (MonoSymbolFile *symfile);
141 MonoDebugSourceLocation *
142 mono_debug_symfile_lookup_location (MonoDebugMethodInfo *minfo,
143 guint32 offset);
145 gint32
146 _mono_debug_address_from_il_offset (MonoDebugMethodJitInfo *jit,
147 guint32 il_offset);
149 MonoDebugMethodInfo *
150 mono_debug_symfile_lookup_method (MonoDebugHandle *handle,
151 MonoMethod *method);
152 G_END_DECLS
154 #endif /* __MONO_SYMFILE_H__ */