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 /* 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
;
37 struct MonoSymbolFileMethodEntry
{
38 guint32 _source_index
;
43 guint32 _num_line_numbers
;
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
{
57 guint32 _num_namespaces
;
59 guint32 _method_offset
;
60 guint32 _nstable_offset
;
63 struct MonoSymbolFileMethodIndexEntry
{
68 struct MonoSymbolFileMethodAddress
{
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
;
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
;
91 struct MonoSymbolFileLineNumberEntry
{
96 struct _MonoDebugMethodInfo
{
98 MonoDebugHandle
*handle
;
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
{
116 guint32 native_offset
;
119 struct _MonoSymbolFile
{
120 const guint8
*raw_contents
;
121 int raw_contents_size
;
123 GHashTable
*method_hash
;
124 MonoSymbolFileOffsetTable
*offset_table
;
127 #define MONO_SYMBOL_FILE_VERSION 39
128 #define MONO_SYMBOL_FILE_MAGIC 0x45e82623fd7fa614ULL
133 mono_debug_open_mono_symbols (MonoDebugHandle
*handle
,
134 const guint8
*raw_contents
,
136 gboolean in_the_debugger
);
139 mono_debug_close_mono_symbol_file (MonoSymbolFile
*symfile
);
141 MonoDebugSourceLocation
*
142 mono_debug_symfile_lookup_location (MonoDebugMethodInfo
*minfo
,
146 _mono_debug_address_from_il_offset (MonoDebugMethodJitInfo
*jit
,
149 MonoDebugMethodInfo
*
150 mono_debug_symfile_lookup_method (MonoDebugHandle
*handle
,
154 #endif /* __MONO_SYMFILE_H__ */