Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / metadata / debug-internals.h
1 #ifndef __DEBUG_INTERNALS_H__
2 #define __DEBUG_INTERNALS_H__
3
4 #include <glib.h>
5 #include <mono/metadata/debug-helpers.h>
6 #include <mono/metadata/mono-debug.h>
7 #include <mono/utils/mono-compiler.h>
8
9 struct _MonoDebugMethodInfo {
10         MonoMethod *method;
11         MonoDebugHandle *handle;
12         uint32_t index;
13         uint32_t data_offset;
14         uint32_t lnt_offset;
15 };
16
17 typedef struct {
18         int parent;
19         int type;
20         /* IL offsets */
21         int start_offset, end_offset;
22 } MonoDebugCodeBlock;
23
24 typedef struct {
25         char *name;
26         int index;
27         /* Might be null for the main scope */
28         MonoDebugCodeBlock *block;
29 } MonoDebugLocalVar;
30
31 /*
32  * Information about local variables retrieved from a symbol file.
33  */
34 struct _MonoDebugLocalsInfo {
35         int num_locals;
36         MonoDebugLocalVar *locals;
37         int num_blocks;
38         MonoDebugCodeBlock *code_blocks;
39 };
40
41 /*
42 * Information about method await yield and resume offsets retrieved from a symbol file.
43 */
44 struct _MonoDebugMethodAsyncInfo {
45         uint32_t catch_handler_offset;
46         int num_awaits;
47         uint32_t *yield_offsets;
48         uint32_t *resume_offsets;
49         uint32_t *move_next_method_token;
50 };
51
52 struct _MonoDebugLineNumberEntry {
53         uint32_t il_offset;
54         uint32_t native_offset;
55 };
56
57 /*
58  * Information about a source file retrieved from a symbol file.
59  */
60 typedef struct {
61         char *source_file;
62         /* 16 byte long */
63         guint8 *guid, *hash;
64 } MonoDebugSourceInfo;
65
66 typedef struct {
67         int il_offset;
68         int line, column;
69         int end_line, end_column;
70 } MonoSymSeqPoint;
71
72 void            mono_debugger_lock                          (void);
73 void            mono_debugger_unlock                        (void);
74
75 void
76 mono_debug_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points);
77
78 MONO_API void
79 mono_debug_free_locals (MonoDebugLocalsInfo *info);
80
81 void
82 mono_debug_free_method_async_debug_info (MonoDebugMethodAsyncInfo *info);
83
84 gboolean
85 mono_debug_image_has_debug_info (MonoImage *image);
86
87 MonoDebugSourceLocation *
88 mono_debug_lookup_source_location_by_il (MonoMethod *method, guint32 il_offset, MonoDomain *domain);
89
90 #endif /* __DEBUG_INTERNALS_H__ */