move custom_abbrevs enum back into bedwarf.c
[libfirm] / ir / be / bedwarf_t.h
1 #ifndef FIRM_BE_BEDWARF_T_H
2 #define FIRM_BE_BEDWARF_T_H
3
4 /* Tag names and codes.  */
5 typedef enum dwarf_tag {
6         DW_TAG_padding                = 0x00,
7         DW_TAG_array_type             = 0x01,
8         DW_TAG_class_type             = 0x02,
9         DW_TAG_entry_point            = 0x03,
10         DW_TAG_enumeration_type       = 0x04,
11         DW_TAG_formal_parameter       = 0x05,
12         DW_TAG_imported_declaration   = 0x08,
13         DW_TAG_label                  = 0x0A,
14         DW_TAG_lexical_block          = 0x0B,
15         DW_TAG_member                 = 0x0D,
16         DW_TAG_pointer_type           = 0x0F,
17         DW_TAG_reference_type         = 0x10,
18         DW_TAG_compile_unit           = 0x11,
19         DW_TAG_string_type            = 0x12,
20         DW_TAG_structure_type         = 0x13,
21         DW_TAG_subroutine_type        = 0x15,
22         DW_TAG_typedef                = 0x16,
23         DW_TAG_union_type             = 0x17,
24         DW_TAG_unspecified_parameters = 0x18,
25         DW_TAG_variant                = 0x19,
26         DW_TAG_common_block           = 0x1A,
27         DW_TAG_common_inclusion       = 0x1B,
28         DW_TAG_inheritance            = 0x1C,
29         DW_TAG_inlined_subroutine     = 0x1D,
30         DW_TAG_module                 = 0x1E,
31         DW_TAG_ptr_to_member_type     = 0x1F,
32         DW_TAG_set_type               = 0x20,
33         DW_TAG_subrange_type          = 0x21,
34         DW_TAG_with_stmt              = 0x22,
35         DW_TAG_access_declaration     = 0x23,
36         DW_TAG_base_type              = 0x24,
37         DW_TAG_catch_block            = 0x25,
38         DW_TAG_const_type             = 0x26,
39         DW_TAG_constant               = 0x27,
40         DW_TAG_enumerator             = 0x28,
41         DW_TAG_file_type              = 0x29,
42         DW_TAG_friend                 = 0x2A,
43         DW_TAG_namelist               = 0x2B,
44         DW_TAG_namelist_item          = 0x2C,
45         DW_TAG_packed_type            = 0x2D,
46         DW_TAG_subprogram             = 0x2E,
47         DW_TAG_template_type_param    = 0x2F,
48         DW_TAG_template_value_param   = 0x30,
49         DW_TAG_thrown_type            = 0x31,
50         DW_TAG_try_block              = 0x32,
51         DW_TAG_variant_part           = 0x33,
52         DW_TAG_variable               = 0x34,
53         DW_TAG_volatile_type          = 0x35,
54         /* DWARF 3.  */
55         DW_TAG_dwarf_procedure        = 0x36,
56         DW_TAG_restrict_type          = 0x37,
57         DW_TAG_interface_type         = 0x38,
58         DW_TAG_namespace              = 0x39,
59         DW_TAG_imported_module        = 0x3A,
60         DW_TAG_unspecified_type       = 0x3B,
61         DW_TAG_partial_unit           = 0x3C,
62         DW_TAG_imported_unit          = 0x3D,
63         DW_TAG_condition              = 0x3F,
64         DW_TAG_shared_type            = 0x40,
65 } dwarf_tag;
66
67 typedef enum dw_children {
68         DW_CHILDREN_no  = 0x00,
69         DW_CHILDREN_yes = 0x01
70 } dw_children;
71
72 typedef enum dwarf_form {
73         DW_FORM_addr      = 0x01,
74         DW_FORM_block2    = 0x03,
75         DW_FORM_block4    = 0x04,
76         DW_FORM_data2     = 0x05,
77         DW_FORM_data4     = 0x06,
78         DW_FORM_data8     = 0x07,
79         DW_FORM_string    = 0x08,
80         DW_FORM_block     = 0x09,
81         DW_FORM_block1    = 0x0A,
82         DW_FORM_data1     = 0x0B,
83         DW_FORM_flag      = 0x0C,
84         DW_FORM_sdata     = 0x0D,
85         DW_FORM_strp      = 0x0E,
86         DW_FORM_udata     = 0x0F,
87         DW_FORM_ref_addr  = 0x10,
88         DW_FORM_ref1      = 0x11,
89         DW_FORM_ref2      = 0x12,
90         DW_FORM_ref4      = 0x13,
91         DW_FORM_ref8      = 0x14,
92         DW_FORM_ref_udata = 0x15,
93         DW_FORM_indirect  = 0x16
94 } dwarf_form;
95
96 typedef enum dwarf_attribute {
97         DW_AT_sibling              = 0x01,
98         DW_AT_location             = 0x02,
99         DW_AT_name                 = 0x03,
100         DW_AT_ordering             = 0x09,
101         DW_AT_subscr_data          = 0x0A,
102         DW_AT_byte_size            = 0x0B,
103         DW_AT_bit_offset           = 0x0C,
104         DW_AT_bit_size             = 0x0D,
105         DW_AT_element_list         = 0x0F,
106         DW_AT_stmt_list            = 0x10,
107         DW_AT_low_pc               = 0x11,
108         DW_AT_high_pc              = 0x12,
109         DW_AT_language             = 0x13,
110         DW_AT_member               = 0x14,
111         DW_AT_discr                = 0x15,
112         DW_AT_discr_value          = 0x16,
113         DW_AT_visibility           = 0x17,
114         DW_AT_import               = 0x18,
115         DW_AT_string_length        = 0x19,
116         DW_AT_common_reference     = 0x1A,
117         DW_AT_comp_dir             = 0x1B,
118         DW_AT_const_value          = 0x1C,
119         DW_AT_containing_type      = 0x1D,
120         DW_AT_default_value        = 0x1E,
121         DW_AT_inline               = 0x20,
122         DW_AT_is_optional          = 0x21,
123         DW_AT_lower_bound          = 0x22,
124         DW_AT_producer             = 0x25,
125         DW_AT_prototyped           = 0x27,
126         DW_AT_return_addr          = 0x2A,
127         DW_AT_start_scope          = 0x2C,
128         DW_AT_bit_stride           = 0x2E,
129         DW_AT_stride_size          = DW_AT_bit_stride,
130         DW_AT_upper_bound          = 0x2F,
131         DW_AT_abstract_origin      = 0x31,
132         DW_AT_accessibility        = 0x32,
133         DW_AT_address_class        = 0x33,
134         DW_AT_artificial           = 0x34,
135         DW_AT_base_types           = 0x35,
136         DW_AT_calling_convention   = 0x36,
137         DW_AT_count                = 0x37,
138         DW_AT_data_member_location = 0x38,
139         DW_AT_decl_column          = 0x39,
140         DW_AT_decl_file            = 0x3A,
141         DW_AT_decl_line            = 0x3B,
142         DW_AT_declaration          = 0x3C,
143         DW_AT_discr_list           = 0x3D,
144         DW_AT_encoding             = 0x3E,
145         DW_AT_external             = 0x3F,
146         DW_AT_frame_base           = 0x40,
147         DW_AT_friend               = 0x41,
148         DW_AT_identifier_case      = 0x42,
149         DW_AT_macro_info           = 0x43,
150         DW_AT_namelist_items       = 0x44,
151         DW_AT_priority             = 0x45,
152         DW_AT_segment              = 0x46,
153         DW_AT_specification        = 0x47,
154         DW_AT_static_link          = 0x48,
155         DW_AT_type                 = 0x49,
156         DW_AT_use_location         = 0x4A,
157         DW_AT_variable_parameter   = 0x4B,
158         DW_AT_virtuality           = 0x4C,
159         DW_AT_vtable_elem_location = 0x4D,
160         /* DWARF 3 values.  */
161         DW_AT_allocated            = 0x4E,
162         DW_AT_associated           = 0x4F,
163         DW_AT_data_location        = 0x50,
164         DW_AT_byte_stride          = 0x51,
165         DW_AT_stride               = DW_AT_byte_stride,
166         DW_AT_entry_pc             = 0x52,
167         DW_AT_use_UTF8             = 0x53,
168         DW_AT_extension            = 0x54,
169         DW_AT_ranges               = 0x55,
170         DW_AT_trampoline           = 0x56,
171         DW_AT_call_column          = 0x57,
172         DW_AT_call_file            = 0x58,
173         DW_AT_call_line            = 0x59,
174         DW_AT_description          = 0x5A,
175         DW_AT_binary_scale         = 0x5B,
176         DW_AT_decimal_scale        = 0x5C,
177         DW_AT_small                = 0x5D,
178         DW_AT_decimal_sign         = 0x5E,
179         DW_AT_digit_count          = 0x5F,
180         DW_AT_picture_string       = 0x60,
181         DW_AT_mutable              = 0x61,
182         DW_AT_threads_scaled       = 0x62,
183         DW_AT_explicit             = 0x63,
184         DW_AT_object_pointer       = 0x64,
185         DW_AT_endianity            = 0x65,
186         DW_AT_elemental            = 0x66,
187         DW_AT_pure                 = 0x67,
188         DW_AT_recursive            = 0x68,
189 } dwarf_attribute;
190
191 typedef enum dwarf_type {
192         DW_ATE_void            = 0x0,
193         DW_ATE_address         = 0x1,
194         DW_ATE_boolean         = 0x2,
195         DW_ATE_complex_float   = 0x3,
196         DW_ATE_float           = 0x4,
197         DW_ATE_signed          = 0x5,
198         DW_ATE_signed_char     = 0x6,
199         DW_ATE_unsigned        = 0x7,
200         DW_ATE_unsigned_char   = 0x8,
201         /* DWARF 3.  */
202         DW_ATE_imaginary_float = 0x9,
203         DW_ATE_packed_decimal  = 0xA,
204         DW_ATE_numeric_string  = 0xB,
205         DW_ATE_edited          = 0xC,
206         DW_ATE_signed_fixed    = 0xD,
207         DW_ATE_unsigned_fixed  = 0xE,
208         DW_ATE_decimal_float   = 0xF,
209 } dwarf_type;
210
211 typedef enum dwarf_line_number_x_ops {
212         DW_LNE_end_sequence = 1,
213         DW_LNE_set_address  = 2,
214         DW_LNE_define_file  = 3,
215 } dwarf_line_number_x_ops;
216
217 typedef enum dwarf_location_op {
218         DW_OP_addr        = 0x03,
219         DW_OP_deref       = 0x06,
220         DW_OP_const1u     = 0x08,
221         DW_OP_const1s     = 0x09,
222         DW_OP_const2u     = 0x0A,
223         DW_OP_const2s     = 0x0B,
224         DW_OP_const4u     = 0x0C,
225         DW_OP_const4s     = 0x0D,
226         DW_OP_const8u     = 0x0E,
227         DW_OP_const8s     = 0x0F,
228         DW_OP_constu      = 0x10,
229         DW_OP_consts      = 0x11,
230         DW_OP_dup         = 0x12,
231         DW_OP_drop        = 0x13,
232         DW_OP_over        = 0x14,
233         DW_OP_pick        = 0x15,
234         DW_OP_swap        = 0x16,
235         DW_OP_rot         = 0x17,
236         DW_OP_xderef      = 0x18,
237         DW_OP_abs         = 0x19,
238         DW_OP_and         = 0x1A,
239         DW_OP_div         = 0x1B,
240         DW_OP_minus       = 0x1C,
241         DW_OP_mod         = 0x1D,
242         DW_OP_mul         = 0x1E,
243         DW_OP_neg         = 0x1F,
244         DW_OP_not         = 0x20,
245         DW_OP_or          = 0x21,
246         DW_OP_plus        = 0x22,
247         DW_OP_plus_uconst = 0x23,
248         DW_OP_shl         = 0x24,
249         DW_OP_shr         = 0x25,
250         DW_OP_shra        = 0x26,
251         DW_OP_xor         = 0x27,
252         DW_OP_bra         = 0x28,
253         DW_OP_eq          = 0x29,
254         DW_OP_ge          = 0x2A,
255         DW_OP_gt          = 0x2B,
256         DW_OP_le          = 0x2C,
257         DW_OP_lt          = 0x2D,
258         DW_OP_ne          = 0x2E,
259         DW_OP_skip        = 0x2F,
260         DW_OP_lit0        = 0x30,
261         DW_OP_lit1        = 0x31,
262         DW_OP_lit2        = 0x32,
263         DW_OP_lit3        = 0x33,
264         DW_OP_lit4        = 0x34,
265         DW_OP_lit5        = 0x35,
266         DW_OP_lit6        = 0x36,
267         DW_OP_lit7        = 0x37,
268         DW_OP_lit8        = 0x38,
269         DW_OP_lit9        = 0x39,
270         DW_OP_lit10       = 0x3A,
271         DW_OP_lit11       = 0x3B,
272         DW_OP_lit12       = 0x3C,
273         DW_OP_lit13       = 0x3D,
274         DW_OP_lit14       = 0x3E,
275         DW_OP_lit15       = 0x3F,
276         DW_OP_lit16       = 0x40,
277         DW_OP_lit17       = 0x41,
278         DW_OP_lit18       = 0x42,
279         DW_OP_lit19       = 0x43,
280         DW_OP_lit20       = 0x44,
281         DW_OP_lit21       = 0x45,
282         DW_OP_lit22       = 0x46,
283         DW_OP_lit23       = 0x47,
284         DW_OP_lit24       = 0x48,
285         DW_OP_lit25       = 0x49,
286         DW_OP_lit26       = 0x4A,
287         DW_OP_lit27       = 0x4B,
288         DW_OP_lit28       = 0x4C,
289         DW_OP_lit29       = 0x4D,
290         DW_OP_lit30       = 0x4E,
291         DW_OP_lit31       = 0x4F,
292         DW_OP_reg0        = 0x50,
293         DW_OP_reg1        = 0x51,
294         DW_OP_reg2        = 0x52,
295         DW_OP_reg3        = 0x53,
296         DW_OP_reg4        = 0x54,
297         DW_OP_reg5        = 0x55,
298         DW_OP_reg6        = 0x56,
299         DW_OP_reg7        = 0x57,
300         DW_OP_reg8        = 0x58,
301         DW_OP_reg9        = 0x59,
302         DW_OP_reg10       = 0x5A,
303         DW_OP_reg11       = 0x5B,
304         DW_OP_reg12       = 0x5C,
305         DW_OP_reg13       = 0x5D,
306         DW_OP_reg14       = 0x5E,
307         DW_OP_reg15       = 0x5F,
308         DW_OP_reg16       = 0x60,
309         DW_OP_reg17       = 0x61,
310         DW_OP_reg18       = 0x62,
311         DW_OP_reg19       = 0x63,
312         DW_OP_reg20       = 0x64,
313         DW_OP_reg21       = 0x65,
314         DW_OP_reg22       = 0x66,
315         DW_OP_reg23       = 0x67,
316         DW_OP_reg24       = 0x68,
317         DW_OP_reg25       = 0x69,
318         DW_OP_reg26       = 0x6A,
319         DW_OP_reg27       = 0x6B,
320         DW_OP_reg28       = 0x6C,
321         DW_OP_reg29       = 0x6D,
322         DW_OP_reg30       = 0x6E,
323         DW_OP_reg31       = 0x6F,
324         DW_OP_breg0       = 0x70,
325         DW_OP_breg1       = 0x71,
326         DW_OP_breg2       = 0x72,
327         DW_OP_breg3       = 0x73,
328         DW_OP_breg4       = 0x74,
329         DW_OP_breg5       = 0x75,
330         DW_OP_breg6       = 0x76,
331         DW_OP_breg7       = 0x77,
332         DW_OP_breg8       = 0x78,
333         DW_OP_breg9       = 0x79,
334         DW_OP_breg10      = 0x7A,
335         DW_OP_breg11      = 0x7B,
336         DW_OP_breg12      = 0x7C,
337         DW_OP_breg13      = 0x7D,
338         DW_OP_breg14      = 0x7E,
339         DW_OP_breg15      = 0x7F,
340         DW_OP_breg16      = 0x80,
341         DW_OP_breg17      = 0x81,
342         DW_OP_breg18      = 0x82,
343         DW_OP_breg19      = 0x83,
344         DW_OP_breg20      = 0x84,
345         DW_OP_breg21      = 0x85,
346         DW_OP_breg22      = 0x86,
347         DW_OP_breg23      = 0x87,
348         DW_OP_breg24      = 0x88,
349         DW_OP_breg25      = 0x89,
350         DW_OP_breg26      = 0x8A,
351         DW_OP_breg27      = 0x8B,
352         DW_OP_breg28      = 0x8C,
353         DW_OP_breg29      = 0x8D,
354         DW_OP_breg30      = 0x8E,
355         DW_OP_breg31      = 0x8F,
356         DW_OP_regx        = 0x90,
357         DW_OP_fbreg       = 0x91,
358         DW_OP_bregx       = 0x92,
359         DW_OP_piece       = 0x93,
360         DW_OP_deref_size  = 0x94,
361         DW_OP_xderef_size = 0x95,
362         DW_OP_nop         = 0x96,
363 } dwarf_location_op;
364
365 #endif