Add more DWARF 5 language constants.
[oota-llvm.git] / include / llvm / Support / Dwarf.def
1 //===- llvm/Support/Dwarf.def - Dwarf definitions ---------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // Macros for running through Dwarf enumerators.
11 //
12 //===----------------------------------------------------------------------===//
13
14 // TODO: Add other DW-based macros.
15 #if !(defined HANDLE_DW_TAG || defined HANDLE_DW_LANG ||                       \
16       defined HANDLE_DW_ATE || defined HANDLE_DW_VIRTUALITY)
17 #error "Missing macro definition of HANDLE_DW*"
18 #endif
19
20 #ifndef HANDLE_DW_TAG
21 #define HANDLE_DW_TAG(ID, NAME)
22 #endif
23
24 #ifndef HANDLE_DW_LANG
25 #define HANDLE_DW_LANG(ID, NAME)
26 #endif
27
28 #ifndef HANDLE_DW_ATE
29 #define HANDLE_DW_ATE(ID, NAME)
30 #endif
31
32 #ifndef HANDLE_DW_VIRTUALITY
33 #define HANDLE_DW_VIRTUALITY(ID, NAME)
34 #endif
35
36 HANDLE_DW_TAG(0x0001, array_type)
37 HANDLE_DW_TAG(0x0002, class_type)
38 HANDLE_DW_TAG(0x0003, entry_point)
39 HANDLE_DW_TAG(0x0004, enumeration_type)
40 HANDLE_DW_TAG(0x0005, formal_parameter)
41 HANDLE_DW_TAG(0x0008, imported_declaration)
42 HANDLE_DW_TAG(0x000a, label)
43 HANDLE_DW_TAG(0x000b, lexical_block)
44 HANDLE_DW_TAG(0x000d, member)
45 HANDLE_DW_TAG(0x000f, pointer_type)
46 HANDLE_DW_TAG(0x0010, reference_type)
47 HANDLE_DW_TAG(0x0011, compile_unit)
48 HANDLE_DW_TAG(0x0012, string_type)
49 HANDLE_DW_TAG(0x0013, structure_type)
50 HANDLE_DW_TAG(0x0015, subroutine_type)
51 HANDLE_DW_TAG(0x0016, typedef)
52 HANDLE_DW_TAG(0x0017, union_type)
53 HANDLE_DW_TAG(0x0018, unspecified_parameters)
54 HANDLE_DW_TAG(0x0019, variant)
55 HANDLE_DW_TAG(0x001a, common_block)
56 HANDLE_DW_TAG(0x001b, common_inclusion)
57 HANDLE_DW_TAG(0x001c, inheritance)
58 HANDLE_DW_TAG(0x001d, inlined_subroutine)
59 HANDLE_DW_TAG(0x001e, module)
60 HANDLE_DW_TAG(0x001f, ptr_to_member_type)
61 HANDLE_DW_TAG(0x0020, set_type)
62 HANDLE_DW_TAG(0x0021, subrange_type)
63 HANDLE_DW_TAG(0x0022, with_stmt)
64 HANDLE_DW_TAG(0x0023, access_declaration)
65 HANDLE_DW_TAG(0x0024, base_type)
66 HANDLE_DW_TAG(0x0025, catch_block)
67 HANDLE_DW_TAG(0x0026, const_type)
68 HANDLE_DW_TAG(0x0027, constant)
69 HANDLE_DW_TAG(0x0028, enumerator)
70 HANDLE_DW_TAG(0x0029, file_type)
71 HANDLE_DW_TAG(0x002a, friend)
72 HANDLE_DW_TAG(0x002b, namelist)
73 HANDLE_DW_TAG(0x002c, namelist_item)
74 HANDLE_DW_TAG(0x002d, packed_type)
75 HANDLE_DW_TAG(0x002e, subprogram)
76 HANDLE_DW_TAG(0x002f, template_type_parameter)
77 HANDLE_DW_TAG(0x0030, template_value_parameter)
78 HANDLE_DW_TAG(0x0031, thrown_type)
79 HANDLE_DW_TAG(0x0032, try_block)
80 HANDLE_DW_TAG(0x0033, variant_part)
81 HANDLE_DW_TAG(0x0034, variable)
82 HANDLE_DW_TAG(0x0035, volatile_type)
83 HANDLE_DW_TAG(0x0036, dwarf_procedure)
84 HANDLE_DW_TAG(0x0037, restrict_type)
85 HANDLE_DW_TAG(0x0038, interface_type)
86 HANDLE_DW_TAG(0x0039, namespace)
87 HANDLE_DW_TAG(0x003a, imported_module)
88 HANDLE_DW_TAG(0x003b, unspecified_type)
89 HANDLE_DW_TAG(0x003c, partial_unit)
90 HANDLE_DW_TAG(0x003d, imported_unit)
91 HANDLE_DW_TAG(0x003f, condition)
92 HANDLE_DW_TAG(0x0040, shared_type)
93 HANDLE_DW_TAG(0x0041, type_unit)
94 HANDLE_DW_TAG(0x0042, rvalue_reference_type)
95 HANDLE_DW_TAG(0x0043, template_alias)
96
97 // Mock tags we use as discriminators.
98 HANDLE_DW_TAG(0x0100, auto_variable) // Tag for local (auto) variables.
99 HANDLE_DW_TAG(0x0101, arg_variable)  // Tag for argument variables.
100 HANDLE_DW_TAG(0x0102, expression)    // Tag for complex address expressions.
101
102 // New in DWARF v5.
103 HANDLE_DW_TAG(0x0044, coarray_type)
104 HANDLE_DW_TAG(0x0045, generic_subrange)
105 HANDLE_DW_TAG(0x0046, dynamic_type)
106
107 // User-defined tags.
108 HANDLE_DW_TAG(0x4081, MIPS_loop)
109 HANDLE_DW_TAG(0x4101, format_label)
110 HANDLE_DW_TAG(0x4102, function_template)
111 HANDLE_DW_TAG(0x4103, class_template)
112 HANDLE_DW_TAG(0x4106, GNU_template_template_param)
113 HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack)
114 HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack)
115 HANDLE_DW_TAG(0x4200, APPLE_property)
116
117 // DWARF languages.
118 HANDLE_DW_LANG(0x0001, C89)
119 HANDLE_DW_LANG(0x0002, C)
120 HANDLE_DW_LANG(0x0003, Ada83)
121 HANDLE_DW_LANG(0x0004, C_plus_plus)
122 HANDLE_DW_LANG(0x0005, Cobol74)
123 HANDLE_DW_LANG(0x0006, Cobol85)
124 HANDLE_DW_LANG(0x0007, Fortran77)
125 HANDLE_DW_LANG(0x0008, Fortran90)
126 HANDLE_DW_LANG(0x0009, Pascal83)
127 HANDLE_DW_LANG(0x000a, Modula2)
128 HANDLE_DW_LANG(0x000b, Java)
129 HANDLE_DW_LANG(0x000c, C99)
130 HANDLE_DW_LANG(0x000d, Ada95)
131 HANDLE_DW_LANG(0x000e, Fortran95)
132 HANDLE_DW_LANG(0x000f, PLI)
133 HANDLE_DW_LANG(0x0010, ObjC)
134 HANDLE_DW_LANG(0x0011, ObjC_plus_plus)
135 HANDLE_DW_LANG(0x0012, UPC)
136 HANDLE_DW_LANG(0x0013, D)
137
138 // New in DWARF 5:
139 HANDLE_DW_LANG(0x0014, Python)
140 HANDLE_DW_LANG(0x0015, OpenCL)
141 HANDLE_DW_LANG(0x0016, Go)
142 HANDLE_DW_LANG(0x0017, Modula3)
143 HANDLE_DW_LANG(0x0018, Haskell)
144 HANDLE_DW_LANG(0x0019, C_plus_plus_03)
145 HANDLE_DW_LANG(0x001a, C_plus_plus_11)
146 HANDLE_DW_LANG(0x001b, OCaml)
147 HANDLE_DW_LANG(0x001c, Rust)
148 HANDLE_DW_LANG(0x001d, C11)
149 HANDLE_DW_LANG(0x001e, Swift)
150 HANDLE_DW_LANG(0x001f, Julia)
151 HANDLE_DW_LANG(0x0020, Dylan)
152 HANDLE_DW_LANG(0x0021, C_plus_plus_14)
153 HANDLE_DW_LANG(0x0022, Fortran03)
154 HANDLE_DW_LANG(0x0023, Fortran08)
155 HANDLE_DW_LANG(0x8001, Mips_Assembler)
156
157 // DWARF attribute type encodings.
158 HANDLE_DW_ATE(0x01, address)
159 HANDLE_DW_ATE(0x02, boolean)
160 HANDLE_DW_ATE(0x03, complex_float)
161 HANDLE_DW_ATE(0x04, float)
162 HANDLE_DW_ATE(0x05, signed)
163 HANDLE_DW_ATE(0x06, signed_char)
164 HANDLE_DW_ATE(0x07, unsigned)
165 HANDLE_DW_ATE(0x08, unsigned_char)
166 HANDLE_DW_ATE(0x09, imaginary_float)
167 HANDLE_DW_ATE(0x0a, packed_decimal)
168 HANDLE_DW_ATE(0x0b, numeric_string)
169 HANDLE_DW_ATE(0x0c, edited)
170 HANDLE_DW_ATE(0x0d, signed_fixed)
171 HANDLE_DW_ATE(0x0e, unsigned_fixed)
172 HANDLE_DW_ATE(0x0f, decimal_float)
173 HANDLE_DW_ATE(0x10, UTF)
174
175 // DWARF virtuality codes.
176 HANDLE_DW_VIRTUALITY(0x00, none)
177 HANDLE_DW_VIRTUALITY(0x01, virtual)
178 HANDLE_DW_VIRTUALITY(0x02, pure_virtual)
179
180 #undef HANDLE_DW_TAG
181 #undef HANDLE_DW_LANG
182 #undef HANDLE_DW_ATE
183 #undef HANDLE_DW_VIRTUALITY