2003-01-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-mono-symfile.h>
5
6 #include "debug.h"
7
8 typedef struct _AssemblyDebugInfo AssemblyDebugInfo;
9
10 typedef enum {
11         MONO_DEBUG_FLAGS_NONE                   = 0,
12         // Don't run the assembler.
13         MONO_DEBUG_FLAGS_DONT_ASSEMBLE          = (1 << 1),
14         // Install the generated *.il files in the assembly dir.
15         MONO_DEBUG_FLAGS_INSTALL_IL_FILES       = (1 << 2),
16         // Don't update the *.il files.
17         MONO_DEBUG_FLAGS_DONT_UPDATE_IL_FILES   = (1 << 3),
18         // Don't create any new *.il files.
19         MONO_DEBUG_FLAGS_DONT_CREATE_IL_FILES   = (1 << 4),
20         // Don't fallback to normal dwarf2.
21         MONO_DEBUG_FLAGS_DONT_FALLBACK          = (1 << 5),
22         // Don't precompile image.
23         MONO_DEBUG_FLAGS_DONT_PRECOMPILE        = (1 << 6),
24         // Update symbol file on exit.
25         MONO_DEBUG_FLAGS_UPDATE_ON_EXIT         = (1 << 7)
26 } MonoDebugFlags;
27
28 typedef struct {
29         AssemblyDebugInfo *info;
30         gchar *name;
31         int source_file;
32         guint32 method_number;
33         guint32 start_line;
34         guint32 first_line;
35         guint32 last_line;
36 } DebugMethodInfo;
37
38 struct _AssemblyDebugInfo {
39         MonoDebugFormat format;
40         MonoDebugHandle *handle;
41         MonoSymbolFile *symfile;
42         char *name;
43         char *ilfile;
44         char *filename;
45         char *objfile;
46         int always_create_il;
47         int source_file;
48         int total_lines;
49         int *mlines;
50         int *moffsets;
51         int nmethods;
52         GHashTable *methods;
53         MonoImage *image;
54         gpointer _priv;
55 };
56
57 struct _MonoDebugHandle {
58         MonoDebugFormat format;
59         MonoDebugFlags flags;
60         char *name;
61         char *filename;
62         char *objfile;
63         char *producer_name;
64         GHashTable *type_hash;
65         GPtrArray *source_files;
66         int next_idx;
67         int next_klass_idx;
68         int dirty;
69         GHashTable *images;
70         FILE *f;
71 };
72
73 guint32        mono_debug_get_type                   (MonoDebugHandle* debug, MonoClass *klass);
74
75 void           mono_debug_write_stabs                (MonoDebugHandle *debug);
76
77 void           mono_debug_write_dwarf2               (MonoDebugHandle *debug);
78
79 #endif /* __MONO_JIT_DEBUG_PRIVATE_H__ */