2002-08-07 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mono / jit / debug-private.h
1 #ifndef __MONO_JIT_DEBUG_PRIVATE_H__
2 #define __MONO_JIT_DEBUG_PRIVATE_H__
3
4 #include <mono/metadata/debug-symfile.h>
5
6 #include "debug.h"
7
8 typedef struct {
9         gpointer address;
10         guint32 line;
11         int is_basic_block;
12         int source_file;
13 } DebugLineNumberInfo;
14
15 typedef struct _AssemblyDebugInfo AssemblyDebugInfo;
16
17 typedef enum {
18         MONO_DEBUG_FLAGS_NONE                   = 0,
19         // Don't run the assembler.
20         MONO_DEBUG_FLAGS_DONT_ASSEMBLE          = (1 << 1),
21         // Install the generated *.il files in the assembly dir.
22         MONO_DEBUG_FLAGS_INSTALL_IL_FILES       = (1 << 2),
23         // Don't update the *.il files.
24         MONO_DEBUG_FLAGS_DONT_UPDATE_IL_FILES   = (1 << 3),
25         // Don't create any new *.il files.
26         MONO_DEBUG_FLAGS_DONT_CREATE_IL_FILES   = (1 << 4),
27         // Don't fallback to normal dwarf2.
28         MONO_DEBUG_FLAGS_DONT_FALLBACK          = (1 << 5),
29         // Don't precompile image.
30         MONO_DEBUG_FLAGS_DONT_PRECOMPILE        = (1 << 6),
31         // Update symbol file on exit.
32         MONO_DEBUG_FLAGS_UPDATE_ON_EXIT         = (1 << 7)
33 } MonoDebugFlags;
34
35 typedef struct {
36         MonoDebugMethodInfo method_info;
37         AssemblyDebugInfo *info;
38         gchar *name;
39         int source_file;
40         guint32 method_number;
41         guint32 start_line;
42         guint32 first_line;
43         guint32 last_line;
44         GPtrArray *line_numbers;
45 } DebugMethodInfo;
46
47 struct _AssemblyDebugInfo {
48         MonoDebugFormat format;
49         MonoDebugHandle *handle;
50         MonoDebugSymbolFile *symfile;
51         char *name;
52         char *ilfile;
53         char *filename;
54         char *objfile;
55         int source_file;
56         int total_lines;
57         int *mlines;
58         int *moffsets;
59         int nmethods;
60         MonoImage *image;
61         gpointer _priv;
62 };
63
64 struct _MonoDebugHandle {
65         MonoDebugHandle *next;
66         MonoDebugFormat format;
67         MonoDebugFlags flags;
68         char *name;
69         char *filename;
70         char *objfile;
71         char *producer_name;
72         GHashTable *type_hash;
73         GHashTable *methods;
74         GPtrArray *source_files;
75         int next_idx;
76         int next_klass_idx;
77         int dirty;
78         GList *info;
79         FILE *f;
80 };
81
82 guint32        mono_debug_get_type                   (MonoDebugHandle* debug, MonoClass *klass);
83
84 void           mono_debug_open_assembly_dwarf2_plus  (AssemblyDebugInfo *info);
85
86 void           mono_debug_write_assembly_dwarf2_plus (AssemblyDebugInfo *info);
87
88 void           mono_debug_close_assembly_dwarf2_plus (AssemblyDebugInfo *info);
89
90 void           mono_debug_write_stabs                (MonoDebugHandle *debug);
91
92 void           mono_debug_write_dwarf2               (MonoDebugHandle *debug);
93
94 #endif /* __MONO_JIT_DEBUG_PRIVATE_H__ */