Mercurial > hg > CbC > CbC_gcc
comparison gcc/debug.h @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 855418dad1a3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Debug hooks for GCC. | |
2 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008 | |
3 Free Software Foundation, Inc. | |
4 | |
5 This program is free software; you can redistribute it and/or modify it | |
6 under the terms of the GNU General Public License as published by the | |
7 Free Software Foundation; either version 3, or (at your option) any | |
8 later version. | |
9 | |
10 This program is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
16 along with this program; see the file COPYING3. If not see | |
17 <http://www.gnu.org/licenses/>. */ | |
18 | |
19 #ifndef GCC_DEBUG_H | |
20 #define GCC_DEBUG_H | |
21 | |
22 /* This structure contains hooks for the debug information output | |
23 functions, accessed through the global instance debug_hooks set in | |
24 toplev.c according to command line options. */ | |
25 struct gcc_debug_hooks | |
26 { | |
27 /* Initialize debug output. MAIN_FILENAME is the name of the main | |
28 input file. */ | |
29 void (* init) (const char *main_filename); | |
30 | |
31 /* Output debug symbols. */ | |
32 void (* finish) (const char *main_filename); | |
33 | |
34 /* Macro defined on line LINE with name and expansion TEXT. */ | |
35 void (* define) (unsigned int line, const char *text); | |
36 | |
37 /* MACRO undefined on line LINE. */ | |
38 void (* undef) (unsigned int line, const char *macro); | |
39 | |
40 /* Record the beginning of a new source file FILE from LINE number | |
41 in the previous one. */ | |
42 void (* start_source_file) (unsigned int line, const char *file); | |
43 | |
44 /* Record the resumption of a source file. LINE is the line number | |
45 in the source file we are returning to. */ | |
46 void (* end_source_file) (unsigned int line); | |
47 | |
48 /* Record the beginning of block N, counting from 1 and not | |
49 including the function-scope block, at LINE. */ | |
50 void (* begin_block) (unsigned int line, unsigned int n); | |
51 | |
52 /* Record the end of a block. Arguments as for begin_block. */ | |
53 void (* end_block) (unsigned int line, unsigned int n); | |
54 | |
55 /* Returns nonzero if it is appropriate not to emit any debugging | |
56 information for BLOCK, because it doesn't contain any | |
57 instructions. This may not be the case for blocks containing | |
58 nested functions, since we may actually call such a function even | |
59 though the BLOCK information is messed up. Defaults to true. */ | |
60 bool (* ignore_block) (const_tree); | |
61 | |
62 /* Record a source file location at (FILE, LINE). */ | |
63 void (* source_line) (unsigned int line, const char *file); | |
64 | |
65 /* Called at start of prologue code. LINE is the first line in the | |
66 function. This has been given the same prototype as source_line, | |
67 so that the source_line hook can be substituted if appropriate. */ | |
68 void (* begin_prologue) (unsigned int line, const char *file); | |
69 | |
70 /* Called at end of prologue code. LINE is the first line in the | |
71 function. */ | |
72 void (* end_prologue) (unsigned int line, const char *file); | |
73 | |
74 /* Record end of epilogue code. */ | |
75 void (* end_epilogue) (unsigned int line, const char *file); | |
76 | |
77 /* Called at start of function DECL, before it is declared. */ | |
78 void (* begin_function) (tree decl); | |
79 | |
80 /* Record end of function. LINE is highest line number in function. */ | |
81 void (* end_function) (unsigned int line); | |
82 | |
83 /* Debug information for a function DECL. This might include the | |
84 function name (a symbol), its parameters, and the block that | |
85 makes up the function's body, and the local variables of the | |
86 function. */ | |
87 void (* function_decl) (tree decl); | |
88 | |
89 /* Debug information for a global DECL. Called from toplev.c after | |
90 compilation proper has finished. */ | |
91 void (* global_decl) (tree decl); | |
92 | |
93 /* Debug information for a type DECL. Called from toplev.c after | |
94 compilation proper, also from various language front ends to | |
95 record built-in types. The second argument is properly a | |
96 boolean, which indicates whether or not the type is a "local" | |
97 type as determined by the language. (It's not a boolean for | |
98 legacy reasons.) */ | |
99 void (* type_decl) (tree decl, int local); | |
100 | |
101 /* Debug information for imported modules and declarations. */ | |
102 void (* imported_module_or_decl) (tree decl, tree name, | |
103 tree context, bool child); | |
104 | |
105 /* DECL is an inline function, whose body is present, but which is | |
106 not being output at this point. */ | |
107 void (* deferred_inline_function) (tree decl); | |
108 | |
109 /* DECL is an inline function which is about to be emitted out of | |
110 line. The hook is useful to, e.g., emit abstract debug info for | |
111 the inline before it gets mangled by optimization. */ | |
112 void (* outlining_inline_function) (tree decl); | |
113 | |
114 /* Called from final_scan_insn for any CODE_LABEL insn whose | |
115 LABEL_NAME is non-null. */ | |
116 void (* label) (rtx); | |
117 | |
118 /* Called after the start and before the end of writing a PCH file. | |
119 The parameter is 0 if after the start, 1 if before the end. */ | |
120 void (* handle_pch) (unsigned int); | |
121 | |
122 /* Called from final_scan_insn for any NOTE_INSN_VAR_LOCATION note. */ | |
123 void (* var_location) (rtx); | |
124 | |
125 /* Called from final_scan_insn if there is a switch between hot and cold | |
126 text sections. */ | |
127 void (* switch_text_section) (void); | |
128 | |
129 /* This is 1 if the debug writer wants to see start and end commands for the | |
130 main source files, and 0 otherwise. */ | |
131 int start_end_main_source_file; | |
132 }; | |
133 | |
134 extern const struct gcc_debug_hooks *debug_hooks; | |
135 | |
136 /* The do-nothing hooks. */ | |
137 extern void debug_nothing_void (void); | |
138 extern void debug_nothing_charstar (const char *); | |
139 extern void debug_nothing_int_charstar (unsigned int, const char *); | |
140 extern void debug_nothing_int (unsigned int); | |
141 extern void debug_nothing_int_int (unsigned int, unsigned int); | |
142 extern void debug_nothing_tree (tree); | |
143 extern void debug_nothing_tree_int (tree, int); | |
144 extern void debug_nothing_tree_tree_tree_bool (tree, tree, tree, bool); | |
145 extern bool debug_true_const_tree (const_tree); | |
146 extern void debug_nothing_rtx (rtx); | |
147 | |
148 /* Hooks for various debug formats. */ | |
149 extern const struct gcc_debug_hooks do_nothing_debug_hooks; | |
150 extern const struct gcc_debug_hooks dbx_debug_hooks; | |
151 extern const struct gcc_debug_hooks sdb_debug_hooks; | |
152 extern const struct gcc_debug_hooks xcoff_debug_hooks; | |
153 extern const struct gcc_debug_hooks dwarf2_debug_hooks; | |
154 extern const struct gcc_debug_hooks vmsdbg_debug_hooks; | |
155 | |
156 /* Dwarf2 frame information. */ | |
157 | |
158 extern void dwarf2out_begin_prologue (unsigned int, const char *); | |
159 extern void dwarf2out_end_epilogue (unsigned int, const char *); | |
160 extern void dwarf2out_frame_init (void); | |
161 extern void dwarf2out_frame_finish (void); | |
162 /* Decide whether we want to emit frame unwind information for the current | |
163 translation unit. */ | |
164 extern int dwarf2out_do_frame (void); | |
165 extern int dwarf2out_do_cfi_asm (void); | |
166 extern void dwarf2out_switch_text_section (void); | |
167 | |
168 extern void debug_flush_symbol_queue (void); | |
169 extern void debug_queue_symbol (tree); | |
170 extern void debug_free_queue (void); | |
171 extern int debug_nesting; | |
172 extern int symbol_queue_index; | |
173 | |
174 const char *remap_debug_filename (const char *); | |
175 void add_debug_prefix_map (const char *); | |
176 | |
177 #endif /* !GCC_DEBUG_H */ |