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