|
26 | 26 | #endif
|
27 | 27 |
|
28 | 28 | #ifndef HANDLE_DW_TAG
|
29 |
| -#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR) |
| 29 | +#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) |
| 30 | +#endif |
| 31 | + |
| 32 | +// Note that DW_KIND is not a DWARF concept, but rather a way for us to |
| 33 | +// generate a list of tags that belong together. |
| 34 | +#ifndef DW_KIND_NONE |
| 35 | +#define DW_KIND_NONE 0 |
| 36 | +#endif |
| 37 | + |
| 38 | +#ifndef DW_KIND_TYPE |
| 39 | +#define DW_KIND_TYPE 1 |
30 | 40 | #endif
|
31 | 41 |
|
32 | 42 | #ifndef HANDLE_DW_AT
|
|
109 | 119 | #define HANDLE_DW_END(ID, NAME)
|
110 | 120 | #endif
|
111 | 121 |
|
112 |
| -HANDLE_DW_TAG(0x0000, null, 2, DWARF) |
113 |
| -HANDLE_DW_TAG(0x0001, array_type, 2, DWARF) |
114 |
| -HANDLE_DW_TAG(0x0002, class_type, 2, DWARF) |
115 |
| -HANDLE_DW_TAG(0x0003, entry_point, 2, DWARF) |
116 |
| -HANDLE_DW_TAG(0x0004, enumeration_type, 2, DWARF) |
117 |
| -HANDLE_DW_TAG(0x0005, formal_parameter, 2, DWARF) |
118 |
| -HANDLE_DW_TAG(0x0008, imported_declaration, 2, DWARF) |
119 |
| -HANDLE_DW_TAG(0x000a, label, 2, DWARF) |
120 |
| -HANDLE_DW_TAG(0x000b, lexical_block, 2, DWARF) |
121 |
| -HANDLE_DW_TAG(0x000d, member, 2, DWARF) |
122 |
| -HANDLE_DW_TAG(0x000f, pointer_type, 2, DWARF) |
123 |
| -HANDLE_DW_TAG(0x0010, reference_type, 2, DWARF) |
124 |
| -HANDLE_DW_TAG(0x0011, compile_unit, 2, DWARF) |
125 |
| -HANDLE_DW_TAG(0x0012, string_type, 2, DWARF) |
126 |
| -HANDLE_DW_TAG(0x0013, structure_type, 2, DWARF) |
127 |
| -HANDLE_DW_TAG(0x0015, subroutine_type, 2, DWARF) |
128 |
| -HANDLE_DW_TAG(0x0016, typedef, 2, DWARF) |
129 |
| -HANDLE_DW_TAG(0x0017, union_type, 2, DWARF) |
130 |
| -HANDLE_DW_TAG(0x0018, unspecified_parameters, 2, DWARF) |
131 |
| -HANDLE_DW_TAG(0x0019, variant, 2, DWARF) |
132 |
| -HANDLE_DW_TAG(0x001a, common_block, 2, DWARF) |
133 |
| -HANDLE_DW_TAG(0x001b, common_inclusion, 2, DWARF) |
134 |
| -HANDLE_DW_TAG(0x001c, inheritance, 2, DWARF) |
135 |
| -HANDLE_DW_TAG(0x001d, inlined_subroutine, 2, DWARF) |
136 |
| -HANDLE_DW_TAG(0x001e, module, 2, DWARF) |
137 |
| -HANDLE_DW_TAG(0x001f, ptr_to_member_type, 2, DWARF) |
138 |
| -HANDLE_DW_TAG(0x0020, set_type, 2, DWARF) |
139 |
| -HANDLE_DW_TAG(0x0021, subrange_type, 2, DWARF) |
140 |
| -HANDLE_DW_TAG(0x0022, with_stmt, 2, DWARF) |
141 |
| -HANDLE_DW_TAG(0x0023, access_declaration, 2, DWARF) |
142 |
| -HANDLE_DW_TAG(0x0024, base_type, 2, DWARF) |
143 |
| -HANDLE_DW_TAG(0x0025, catch_block, 2, DWARF) |
144 |
| -HANDLE_DW_TAG(0x0026, const_type, 2, DWARF) |
145 |
| -HANDLE_DW_TAG(0x0027, constant, 2, DWARF) |
146 |
| -HANDLE_DW_TAG(0x0028, enumerator, 2, DWARF) |
147 |
| -HANDLE_DW_TAG(0x0029, file_type, 2, DWARF) |
148 |
| -HANDLE_DW_TAG(0x002a, friend, 2, DWARF) |
149 |
| -HANDLE_DW_TAG(0x002b, namelist, 2, DWARF) |
150 |
| -HANDLE_DW_TAG(0x002c, namelist_item, 2, DWARF) |
151 |
| -HANDLE_DW_TAG(0x002d, packed_type, 2, DWARF) |
152 |
| -HANDLE_DW_TAG(0x002e, subprogram, 2, DWARF) |
153 |
| -HANDLE_DW_TAG(0x002f, template_type_parameter, 2, DWARF) |
154 |
| -HANDLE_DW_TAG(0x0030, template_value_parameter, 2, DWARF) |
155 |
| -HANDLE_DW_TAG(0x0031, thrown_type, 2, DWARF) |
156 |
| -HANDLE_DW_TAG(0x0032, try_block, 2, DWARF) |
157 |
| -HANDLE_DW_TAG(0x0033, variant_part, 2, DWARF) |
158 |
| -HANDLE_DW_TAG(0x0034, variable, 2, DWARF) |
159 |
| -HANDLE_DW_TAG(0x0035, volatile_type, 2, DWARF) |
| 122 | +HANDLE_DW_TAG(0x0000, null, 2, DWARF, DW_KIND_NONE) |
| 123 | +HANDLE_DW_TAG(0x0001, array_type, 2, DWARF, DW_KIND_TYPE) |
| 124 | +HANDLE_DW_TAG(0x0002, class_type, 2, DWARF, DW_KIND_TYPE) |
| 125 | +HANDLE_DW_TAG(0x0003, entry_point, 2, DWARF, DW_KIND_NONE) |
| 126 | +HANDLE_DW_TAG(0x0004, enumeration_type, 2, DWARF, DW_KIND_TYPE) |
| 127 | +HANDLE_DW_TAG(0x0005, formal_parameter, 2, DWARF, DW_KIND_NONE) |
| 128 | +HANDLE_DW_TAG(0x0008, imported_declaration, 2, DWARF, DW_KIND_NONE) |
| 129 | +HANDLE_DW_TAG(0x000a, label, 2, DWARF, DW_KIND_NONE) |
| 130 | +HANDLE_DW_TAG(0x000b, lexical_block, 2, DWARF, DW_KIND_NONE) |
| 131 | +HANDLE_DW_TAG(0x000d, member, 2, DWARF, DW_KIND_NONE) |
| 132 | +HANDLE_DW_TAG(0x000f, pointer_type, 2, DWARF, DW_KIND_TYPE) |
| 133 | +HANDLE_DW_TAG(0x0010, reference_type, 2, DWARF, DW_KIND_TYPE) |
| 134 | +HANDLE_DW_TAG(0x0011, compile_unit, 2, DWARF, DW_KIND_NONE) |
| 135 | +HANDLE_DW_TAG(0x0012, string_type, 2, DWARF, DW_KIND_TYPE) |
| 136 | +HANDLE_DW_TAG(0x0013, structure_type, 2, DWARF, DW_KIND_TYPE) |
| 137 | +HANDLE_DW_TAG(0x0015, subroutine_type, 2, DWARF, DW_KIND_TYPE) |
| 138 | +HANDLE_DW_TAG(0x0016, typedef, 2, DWARF, DW_KIND_TYPE) |
| 139 | +HANDLE_DW_TAG(0x0017, union_type, 2, DWARF, DW_KIND_TYPE) |
| 140 | +HANDLE_DW_TAG(0x0018, unspecified_parameters, 2, DWARF, DW_KIND_NONE) |
| 141 | +HANDLE_DW_TAG(0x0019, variant, 2, DWARF, DW_KIND_NONE) |
| 142 | +HANDLE_DW_TAG(0x001a, common_block, 2, DWARF, DW_KIND_NONE) |
| 143 | +HANDLE_DW_TAG(0x001b, common_inclusion, 2, DWARF, DW_KIND_NONE) |
| 144 | +HANDLE_DW_TAG(0x001c, inheritance, 2, DWARF, DW_KIND_NONE) |
| 145 | +HANDLE_DW_TAG(0x001d, inlined_subroutine, 2, DWARF, DW_KIND_NONE) |
| 146 | +HANDLE_DW_TAG(0x001e, module, 2, DWARF, DW_KIND_NONE) |
| 147 | +HANDLE_DW_TAG(0x001f, ptr_to_member_type, 2, DWARF, DW_KIND_TYPE) |
| 148 | +HANDLE_DW_TAG(0x0020, set_type, 2, DWARF, DW_KIND_NONE) |
| 149 | +HANDLE_DW_TAG(0x0021, subrange_type, 2, DWARF, DW_KIND_TYPE) |
| 150 | +HANDLE_DW_TAG(0x0022, with_stmt, 2, DWARF, DW_KIND_NONE) |
| 151 | +HANDLE_DW_TAG(0x0023, access_declaration, 2, DWARF, DW_KIND_NONE) |
| 152 | +HANDLE_DW_TAG(0x0024, base_type, 2, DWARF, DW_KIND_TYPE) |
| 153 | +HANDLE_DW_TAG(0x0025, catch_block, 2, DWARF, DW_KIND_NONE) |
| 154 | +HANDLE_DW_TAG(0x0026, const_type, 2, DWARF, DW_KIND_TYPE) |
| 155 | +HANDLE_DW_TAG(0x0027, constant, 2, DWARF, DW_KIND_NONE) |
| 156 | +HANDLE_DW_TAG(0x0028, enumerator, 2, DWARF, DW_KIND_NONE) |
| 157 | +HANDLE_DW_TAG(0x0029, file_type, 2, DWARF, DW_KIND_TYPE) |
| 158 | +HANDLE_DW_TAG(0x002a, friend, 2, DWARF, DW_KIND_NONE) |
| 159 | +HANDLE_DW_TAG(0x002b, namelist, 2, DWARF, DW_KIND_NONE) |
| 160 | +HANDLE_DW_TAG(0x002c, namelist_item, 2, DWARF, DW_KIND_NONE) |
| 161 | +HANDLE_DW_TAG(0x002d, packed_type, 2, DWARF, DW_KIND_TYPE) |
| 162 | +HANDLE_DW_TAG(0x002e, subprogram, 2, DWARF, DW_KIND_NONE) |
| 163 | +HANDLE_DW_TAG(0x002f, template_type_parameter, 2, DWARF, DW_KIND_NONE) |
| 164 | +HANDLE_DW_TAG(0x0030, template_value_parameter, 2, DWARF, DW_KIND_NONE) |
| 165 | +HANDLE_DW_TAG(0x0031, thrown_type, 2, DWARF, DW_KIND_TYPE) |
| 166 | +HANDLE_DW_TAG(0x0032, try_block, 2, DWARF, DW_KIND_NONE) |
| 167 | +HANDLE_DW_TAG(0x0033, variant_part, 2, DWARF, DW_KIND_NONE) |
| 168 | +HANDLE_DW_TAG(0x0034, variable, 2, DWARF, DW_KIND_NONE) |
| 169 | +HANDLE_DW_TAG(0x0035, volatile_type, 2, DWARF, DW_KIND_TYPE) |
160 | 170 | // New in DWARF v3:
|
161 |
| -HANDLE_DW_TAG(0x0036, dwarf_procedure, 3, DWARF) |
162 |
| -HANDLE_DW_TAG(0x0037, restrict_type, 3, DWARF) |
163 |
| -HANDLE_DW_TAG(0x0038, interface_type, 3, DWARF) |
164 |
| -HANDLE_DW_TAG(0x0039, namespace, 3, DWARF) |
165 |
| -HANDLE_DW_TAG(0x003a, imported_module, 3, DWARF) |
166 |
| -HANDLE_DW_TAG(0x003b, unspecified_type, 3, DWARF) |
167 |
| -HANDLE_DW_TAG(0x003c, partial_unit, 3, DWARF) |
168 |
| -HANDLE_DW_TAG(0x003d, imported_unit, 3, DWARF) |
169 |
| -HANDLE_DW_TAG(0x003f, condition, 3, DWARF) |
170 |
| -HANDLE_DW_TAG(0x0040, shared_type, 3, DWARF) |
| 171 | +HANDLE_DW_TAG(0x0036, dwarf_procedure, 3, DWARF, DW_KIND_NONE) |
| 172 | +HANDLE_DW_TAG(0x0037, restrict_type, 3, DWARF, DW_KIND_TYPE) |
| 173 | +HANDLE_DW_TAG(0x0038, interface_type, 3, DWARF, DW_KIND_TYPE) |
| 174 | +HANDLE_DW_TAG(0x0039, namespace, 3, DWARF, DW_KIND_NONE) |
| 175 | +HANDLE_DW_TAG(0x003a, imported_module, 3, DWARF, DW_KIND_NONE) |
| 176 | +HANDLE_DW_TAG(0x003b, unspecified_type, 3, DWARF, DW_KIND_TYPE) |
| 177 | +HANDLE_DW_TAG(0x003c, partial_unit, 3, DWARF, DW_KIND_NONE) |
| 178 | +HANDLE_DW_TAG(0x003d, imported_unit, 3, DWARF, DW_KIND_NONE) |
| 179 | +HANDLE_DW_TAG(0x003f, condition, 3, DWARF, DW_KIND_NONE) |
| 180 | +HANDLE_DW_TAG(0x0040, shared_type, 3, DWARF, DW_KIND_TYPE) |
171 | 181 | // New in DWARF v4:
|
172 |
| -HANDLE_DW_TAG(0x0041, type_unit, 4, DWARF) |
173 |
| -HANDLE_DW_TAG(0x0042, rvalue_reference_type, 4, DWARF) |
174 |
| -HANDLE_DW_TAG(0x0043, template_alias, 4, DWARF) |
| 182 | +HANDLE_DW_TAG(0x0041, type_unit, 4, DWARF, DW_KIND_NONE) |
| 183 | +HANDLE_DW_TAG(0x0042, rvalue_reference_type, 4, DWARF, DW_KIND_TYPE) |
| 184 | +HANDLE_DW_TAG(0x0043, template_alias, 4, DWARF, DW_KIND_NONE) |
175 | 185 | // New in DWARF v5:
|
176 |
| -HANDLE_DW_TAG(0x0044, coarray_type, 5, DWARF) |
177 |
| -HANDLE_DW_TAG(0x0045, generic_subrange, 5, DWARF) |
178 |
| -HANDLE_DW_TAG(0x0046, dynamic_type, 5, DWARF) |
179 |
| -HANDLE_DW_TAG(0x0047, atomic_type, 5, DWARF) |
180 |
| -HANDLE_DW_TAG(0x0048, call_site, 5, DWARF) |
181 |
| -HANDLE_DW_TAG(0x0049, call_site_parameter, 5, DWARF) |
182 |
| -HANDLE_DW_TAG(0x004a, skeleton_unit, 5, DWARF) |
183 |
| -HANDLE_DW_TAG(0x004b, immutable_type, 5, DWARF) |
| 186 | +HANDLE_DW_TAG(0x0044, coarray_type, 5, DWARF, DW_KIND_TYPE) |
| 187 | +HANDLE_DW_TAG(0x0045, generic_subrange, 5, DWARF, DW_KIND_NONE) |
| 188 | +HANDLE_DW_TAG(0x0046, dynamic_type, 5, DWARF, DW_KIND_TYPE) |
| 189 | +HANDLE_DW_TAG(0x0047, atomic_type, 5, DWARF, DW_KIND_TYPE) |
| 190 | +HANDLE_DW_TAG(0x0048, call_site, 5, DWARF, DW_KIND_NONE) |
| 191 | +HANDLE_DW_TAG(0x0049, call_site_parameter, 5, DWARF, DW_KIND_NONE) |
| 192 | +HANDLE_DW_TAG(0x004a, skeleton_unit, 5, DWARF, DW_KIND_NONE) |
| 193 | +HANDLE_DW_TAG(0x004b, immutable_type, 5, DWARF, DW_KIND_TYPE) |
184 | 194 | // Vendor extensions:
|
185 |
| -HANDLE_DW_TAG(0x4081, MIPS_loop, 0, MIPS) |
186 |
| -HANDLE_DW_TAG(0x4101, format_label, 0, GNU) |
187 |
| -HANDLE_DW_TAG(0x4102, function_template, 0, GNU) |
188 |
| -HANDLE_DW_TAG(0x4103, class_template, 0, GNU) |
189 |
| -HANDLE_DW_TAG(0x4106, GNU_template_template_param, 0, GNU) |
190 |
| -HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack, 0, GNU) |
191 |
| -HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack, 0, GNU) |
192 |
| -HANDLE_DW_TAG(0x4109, GNU_call_site, 0, GNU) |
193 |
| -HANDLE_DW_TAG(0x410a, GNU_call_site_parameter, 0, GNU) |
194 |
| -HANDLE_DW_TAG(0x4200, APPLE_property, 0, APPLE) |
195 |
| -HANDLE_DW_TAG(0xb000, BORLAND_property, 0, BORLAND) |
196 |
| -HANDLE_DW_TAG(0xb001, BORLAND_Delphi_string, 0, BORLAND) |
197 |
| -HANDLE_DW_TAG(0xb002, BORLAND_Delphi_dynamic_array, 0, BORLAND) |
198 |
| -HANDLE_DW_TAG(0xb003, BORLAND_Delphi_set, 0, BORLAND) |
199 |
| -HANDLE_DW_TAG(0xb004, BORLAND_Delphi_variant, 0, BORLAND) |
| 195 | +HANDLE_DW_TAG(0x4081, MIPS_loop, 0, MIPS, DW_KIND_NONE) |
| 196 | +HANDLE_DW_TAG(0x4101, format_label, 0, GNU, DW_KIND_NONE) |
| 197 | +HANDLE_DW_TAG(0x4102, function_template, 0, GNU, DW_KIND_NONE) |
| 198 | +HANDLE_DW_TAG(0x4103, class_template, 0, GNU, DW_KIND_NONE) |
| 199 | +HANDLE_DW_TAG(0x4106, GNU_template_template_param, 0, GNU, DW_KIND_NONE) |
| 200 | +HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack, 0, GNU, DW_KIND_NONE) |
| 201 | +HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack, 0, GNU, DW_KIND_NONE) |
| 202 | +HANDLE_DW_TAG(0x4109, GNU_call_site, 0, GNU, DW_KIND_NONE) |
| 203 | +HANDLE_DW_TAG(0x410a, GNU_call_site_parameter, 0, GNU, DW_KIND_NONE) |
| 204 | +HANDLE_DW_TAG(0x4200, APPLE_property, 0, APPLE, DW_KIND_NONE) |
| 205 | +HANDLE_DW_TAG(0xb000, BORLAND_property, 0, BORLAND, DW_KIND_NONE) |
| 206 | +HANDLE_DW_TAG(0xb001, BORLAND_Delphi_string, 0, BORLAND, DW_KIND_TYPE) |
| 207 | +HANDLE_DW_TAG(0xb002, BORLAND_Delphi_dynamic_array, 0, BORLAND, DW_KIND_TYPE) |
| 208 | +HANDLE_DW_TAG(0xb003, BORLAND_Delphi_set, 0, BORLAND, DW_KIND_TYPE) |
| 209 | +HANDLE_DW_TAG(0xb004, BORLAND_Delphi_variant, 0, BORLAND, DW_KIND_TYPE) |
200 | 210 |
|
201 | 211 | // Attributes.
|
202 | 212 | HANDLE_DW_AT(0x01, sibling, 2, DWARF)
|
|
0 commit comments