Update my e-mail address.
[binutils-gdb.git] / include / dwarf2.def
blob8e731a3b87a6c87c7aa39ef92a206274abe5f0ad
1 /* -*- c -*-
2 Declarations and definitions of codes relating to the DWARF2 and
3 DWARF3 symbolic debugging information formats.
4 Copyright (C) 1992-2017 Free Software Foundation, Inc.
6 Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
7 Office (AJPO), Florida State University and Silicon Graphics Inc.
8 provided support for this effort -- June 21, 1995.
10 Derived from the DWARF 1 implementation written by Ron Guilmette
11 (rfg@netcom.com), November 1990.
13 This file is part of GCC.
15 GCC is free software; you can redistribute it and/or modify it under
16 the terms of the GNU General Public License as published by the Free
17 Software Foundation; either version 3, or (at your option) any later
18 version.
20 GCC is distributed in the hope that it will be useful, but WITHOUT
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
22 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23 License for more details.
25 Under Section 7 of GPL version 3, you are granted additional
26 permissions described in the GCC Runtime Library Exception, version
27 3.1, as published by the Free Software Foundation.
29 You should have received a copy of the GNU General Public License and
30 a copy of the GCC Runtime Library Exception along with this program;
31 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
32 <http://www.gnu.org/licenses/>. */
34 /* This file is derived from the DWARF specification (a public document)
35 Revision 2.0.0 (July 27, 1993) developed by the UNIX International
36 Programming Languages Special Interest Group (UI/PLSIG) and distributed
37 by UNIX International. Copies of this specification are available from
38 UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
40 This file also now contains definitions from the DWARF 3 specification
41 published Dec 20, 2005, available from: http://dwarf.freestandards.org.
43 This file also now contains definitions from the DWARF 4
44 specification, available from: http://dwarfstd.org/ */
46 /* This file declares various DWARF-related constants using a set of
47 macros which can be redefined by the including file.
49 The macros are in sections. Each section corresponds to a single
50 set of DWARF constants and has a corresponding key. The key is
51 used in all the macro names.
53 The sections are TAG (for DW_TAG_ constants), FORM (DW_FORM_), AT
54 (DW_AT_), OP (DW_OP_), ATE (DW_ATE_), and CFA (DW_CFA_).
56 Using TAG as an example, the following macros may be used for each
57 key:
59 DW_FIRST_TAG(name, value) - Introduce the first DW_TAG constant.
61 DW_TAG(name, value) - Define a subsequent constant.
63 DW_TAG_DUP(name, value) - Define a subsequent constant whose value
64 is a duplicate of some other constant. Not all keys use the _DUP
65 macro form. If more than one name shares a value, then the base
66 (DW_TAG) form will be the preferred name and DW_TAG_DUP will hold
67 any alternate names.
69 DW_END_TAG - Invoked at the end of the DW_TAG constants. */
71 DW_FIRST_TAG (DW_TAG_padding, 0x00)
72 DW_TAG (DW_TAG_array_type, 0x01)
73 DW_TAG (DW_TAG_class_type, 0x02)
74 DW_TAG (DW_TAG_entry_point, 0x03)
75 DW_TAG (DW_TAG_enumeration_type, 0x04)
76 DW_TAG (DW_TAG_formal_parameter, 0x05)
77 DW_TAG (DW_TAG_imported_declaration, 0x08)
78 DW_TAG (DW_TAG_label, 0x0a)
79 DW_TAG (DW_TAG_lexical_block, 0x0b)
80 DW_TAG (DW_TAG_member, 0x0d)
81 DW_TAG (DW_TAG_pointer_type, 0x0f)
82 DW_TAG (DW_TAG_reference_type, 0x10)
83 DW_TAG (DW_TAG_compile_unit, 0x11)
84 DW_TAG (DW_TAG_string_type, 0x12)
85 DW_TAG (DW_TAG_structure_type, 0x13)
86 DW_TAG (DW_TAG_subroutine_type, 0x15)
87 DW_TAG (DW_TAG_typedef, 0x16)
88 DW_TAG (DW_TAG_union_type, 0x17)
89 DW_TAG (DW_TAG_unspecified_parameters, 0x18)
90 DW_TAG (DW_TAG_variant, 0x19)
91 DW_TAG (DW_TAG_common_block, 0x1a)
92 DW_TAG (DW_TAG_common_inclusion, 0x1b)
93 DW_TAG (DW_TAG_inheritance, 0x1c)
94 DW_TAG (DW_TAG_inlined_subroutine, 0x1d)
95 DW_TAG (DW_TAG_module, 0x1e)
96 DW_TAG (DW_TAG_ptr_to_member_type, 0x1f)
97 DW_TAG (DW_TAG_set_type, 0x20)
98 DW_TAG (DW_TAG_subrange_type, 0x21)
99 DW_TAG (DW_TAG_with_stmt, 0x22)
100 DW_TAG (DW_TAG_access_declaration, 0x23)
101 DW_TAG (DW_TAG_base_type, 0x24)
102 DW_TAG (DW_TAG_catch_block, 0x25)
103 DW_TAG (DW_TAG_const_type, 0x26)
104 DW_TAG (DW_TAG_constant, 0x27)
105 DW_TAG (DW_TAG_enumerator, 0x28)
106 DW_TAG (DW_TAG_file_type, 0x29)
107 DW_TAG (DW_TAG_friend, 0x2a)
108 DW_TAG (DW_TAG_namelist, 0x2b)
109 DW_TAG (DW_TAG_namelist_item, 0x2c)
110 DW_TAG (DW_TAG_packed_type, 0x2d)
111 DW_TAG (DW_TAG_subprogram, 0x2e)
112 DW_TAG (DW_TAG_template_type_param, 0x2f)
113 DW_TAG (DW_TAG_template_value_param, 0x30)
114 DW_TAG (DW_TAG_thrown_type, 0x31)
115 DW_TAG (DW_TAG_try_block, 0x32)
116 DW_TAG (DW_TAG_variant_part, 0x33)
117 DW_TAG (DW_TAG_variable, 0x34)
118 DW_TAG (DW_TAG_volatile_type, 0x35)
119 /* DWARF 3. */
120 DW_TAG (DW_TAG_dwarf_procedure, 0x36)
121 DW_TAG (DW_TAG_restrict_type, 0x37)
122 DW_TAG (DW_TAG_interface_type, 0x38)
123 DW_TAG (DW_TAG_namespace, 0x39)
124 DW_TAG (DW_TAG_imported_module, 0x3a)
125 DW_TAG (DW_TAG_unspecified_type, 0x3b)
126 DW_TAG (DW_TAG_partial_unit, 0x3c)
127 DW_TAG (DW_TAG_imported_unit, 0x3d)
128 DW_TAG (DW_TAG_condition, 0x3f)
129 DW_TAG (DW_TAG_shared_type, 0x40)
130 /* DWARF 4. */
131 DW_TAG (DW_TAG_type_unit, 0x41)
132 DW_TAG (DW_TAG_rvalue_reference_type, 0x42)
133 DW_TAG (DW_TAG_template_alias, 0x43)
134 /* DWARF 5. */
135 DW_TAG (DW_TAG_coarray_type, 0x44)
136 DW_TAG (DW_TAG_generic_subrange, 0x45)
137 DW_TAG (DW_TAG_dynamic_type, 0x46)
138 DW_TAG (DW_TAG_atomic_type, 0x47)
139 DW_TAG (DW_TAG_call_site, 0x48)
140 DW_TAG (DW_TAG_call_site_parameter, 0x49)
141 DW_TAG (DW_TAG_skeleton_unit, 0x4a)
142 DW_TAG (DW_TAG_immutable_type, 0x4b)
144 DW_TAG_DUP (DW_TAG_lo_user, 0x4080)
145 DW_TAG_DUP (DW_TAG_hi_user, 0xffff)
147 /* SGI/MIPS Extensions. */
148 DW_TAG (DW_TAG_MIPS_loop, 0x4081)
150 /* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */
151 DW_TAG (DW_TAG_HP_array_descriptor, 0x4090)
152 DW_TAG (DW_TAG_HP_Bliss_field, 0x4091)
153 DW_TAG (DW_TAG_HP_Bliss_field_set, 0x4092)
155 /* GNU extensions. */
156 DW_TAG (DW_TAG_format_label, 0x4101) /* For FORTRAN 77 and Fortran 90. */
157 DW_TAG (DW_TAG_function_template, 0x4102) /* For C++. */
158 DW_TAG (DW_TAG_class_template, 0x4103) /* For C++. */
159 DW_TAG (DW_TAG_GNU_BINCL, 0x4104)
160 DW_TAG (DW_TAG_GNU_EINCL, 0x4105)
161 /* Template template parameter.
162 See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */
163 DW_TAG (DW_TAG_GNU_template_template_param, 0x4106)
165 /* Template parameter pack extension, specified at
166 http://wiki.dwarfstd.org/index.php?title=C%2B%2B0x:_Variadic_templates
167 The values of these two TAGS are in the DW_TAG_GNU_* space until the tags
168 are properly part of DWARF 5. */
169 DW_TAG (DW_TAG_GNU_template_parameter_pack, 0x4107)
170 DW_TAG (DW_TAG_GNU_formal_parameter_pack, 0x4108)
171 /* The GNU call site extension, specified at
172 http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open .
173 The values of these two TAGS are in the DW_TAG_GNU_* space until the tags
174 are properly part of DWARF 5. */
175 DW_TAG (DW_TAG_GNU_call_site, 0x4109)
176 DW_TAG (DW_TAG_GNU_call_site_parameter, 0x410a)
177 /* Extensions for UPC. See: http://dwarfstd.org/doc/DWARF4.pdf. */
178 DW_TAG (DW_TAG_upc_shared_type, 0x8765)
179 DW_TAG (DW_TAG_upc_strict_type, 0x8766)
180 DW_TAG (DW_TAG_upc_relaxed_type, 0x8767)
181 /* PGI (STMicroelectronics) extensions. No documentation available. */
182 DW_TAG (DW_TAG_PGI_kanji_type, 0xA000)
183 DW_TAG (DW_TAG_PGI_interface_block, 0xA020)
184 DW_END_TAG
186 DW_FIRST_FORM (DW_FORM_addr, 0x01)
187 DW_FORM (DW_FORM_block2, 0x03)
188 DW_FORM (DW_FORM_block4, 0x04)
189 DW_FORM (DW_FORM_data2, 0x05)
190 DW_FORM (DW_FORM_data4, 0x06)
191 DW_FORM (DW_FORM_data8, 0x07)
192 DW_FORM (DW_FORM_string, 0x08)
193 DW_FORM (DW_FORM_block, 0x09)
194 DW_FORM (DW_FORM_block1, 0x0a)
195 DW_FORM (DW_FORM_data1, 0x0b)
196 DW_FORM (DW_FORM_flag, 0x0c)
197 DW_FORM (DW_FORM_sdata, 0x0d)
198 DW_FORM (DW_FORM_strp, 0x0e)
199 DW_FORM (DW_FORM_udata, 0x0f)
200 DW_FORM (DW_FORM_ref_addr, 0x10)
201 DW_FORM (DW_FORM_ref1, 0x11)
202 DW_FORM (DW_FORM_ref2, 0x12)
203 DW_FORM (DW_FORM_ref4, 0x13)
204 DW_FORM (DW_FORM_ref8, 0x14)
205 DW_FORM (DW_FORM_ref_udata, 0x15)
206 DW_FORM (DW_FORM_indirect, 0x16)
207 /* DWARF 4. */
208 DW_FORM (DW_FORM_sec_offset, 0x17)
209 DW_FORM (DW_FORM_exprloc, 0x18)
210 DW_FORM (DW_FORM_flag_present, 0x19)
211 DW_FORM (DW_FORM_ref_sig8, 0x20)
212 /* DWARF 5. */
213 DW_FORM (DW_FORM_strx, 0x1a)
214 DW_FORM (DW_FORM_addrx, 0x1b)
215 DW_FORM (DW_FORM_ref_sup4, 0x1c)
216 DW_FORM (DW_FORM_strp_sup, 0x1d)
217 DW_FORM (DW_FORM_data16, 0x1e)
218 DW_FORM (DW_FORM_line_strp, 0x1f)
219 DW_FORM (DW_FORM_implicit_const, 0x21)
220 DW_FORM (DW_FORM_loclistx, 0x22)
221 DW_FORM (DW_FORM_rnglistx, 0x23)
222 DW_FORM (DW_FORM_ref_sup8, 0x24)
223 /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
224 DW_FORM (DW_FORM_GNU_addr_index, 0x1f01)
225 DW_FORM (DW_FORM_GNU_str_index, 0x1f02)
226 /* Extensions for DWZ multifile.
227 See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open . */
228 DW_FORM (DW_FORM_GNU_ref_alt, 0x1f20)
229 DW_FORM (DW_FORM_GNU_strp_alt, 0x1f21)
230 DW_END_FORM
232 DW_FIRST_AT (DW_AT_sibling, 0x01)
233 DW_AT (DW_AT_location, 0x02)
234 DW_AT (DW_AT_name, 0x03)
235 DW_AT (DW_AT_ordering, 0x09)
236 DW_AT (DW_AT_subscr_data, 0x0a)
237 DW_AT (DW_AT_byte_size, 0x0b)
238 DW_AT (DW_AT_bit_offset, 0x0c)
239 DW_AT (DW_AT_bit_size, 0x0d)
240 DW_AT (DW_AT_element_list, 0x0f)
241 DW_AT (DW_AT_stmt_list, 0x10)
242 DW_AT (DW_AT_low_pc, 0x11)
243 DW_AT (DW_AT_high_pc, 0x12)
244 DW_AT (DW_AT_language, 0x13)
245 DW_AT (DW_AT_member, 0x14)
246 DW_AT (DW_AT_discr, 0x15)
247 DW_AT (DW_AT_discr_value, 0x16)
248 DW_AT (DW_AT_visibility, 0x17)
249 DW_AT (DW_AT_import, 0x18)
250 DW_AT (DW_AT_string_length, 0x19)
251 DW_AT (DW_AT_common_reference, 0x1a)
252 DW_AT (DW_AT_comp_dir, 0x1b)
253 DW_AT (DW_AT_const_value, 0x1c)
254 DW_AT (DW_AT_containing_type, 0x1d)
255 DW_AT (DW_AT_default_value, 0x1e)
256 DW_AT (DW_AT_inline, 0x20)
257 DW_AT (DW_AT_is_optional, 0x21)
258 DW_AT (DW_AT_lower_bound, 0x22)
259 DW_AT (DW_AT_producer, 0x25)
260 DW_AT (DW_AT_prototyped, 0x27)
261 DW_AT (DW_AT_return_addr, 0x2a)
262 DW_AT (DW_AT_start_scope, 0x2c)
263 DW_AT (DW_AT_bit_stride, 0x2e)
264 DW_AT (DW_AT_upper_bound, 0x2f)
265 DW_AT (DW_AT_abstract_origin, 0x31)
266 DW_AT (DW_AT_accessibility, 0x32)
267 DW_AT (DW_AT_address_class, 0x33)
268 DW_AT (DW_AT_artificial, 0x34)
269 DW_AT (DW_AT_base_types, 0x35)
270 DW_AT (DW_AT_calling_convention, 0x36)
271 DW_AT (DW_AT_count, 0x37)
272 DW_AT (DW_AT_data_member_location, 0x38)
273 DW_AT (DW_AT_decl_column, 0x39)
274 DW_AT (DW_AT_decl_file, 0x3a)
275 DW_AT (DW_AT_decl_line, 0x3b)
276 DW_AT (DW_AT_declaration, 0x3c)
277 DW_AT (DW_AT_discr_list, 0x3d)
278 DW_AT (DW_AT_encoding, 0x3e)
279 DW_AT (DW_AT_external, 0x3f)
280 DW_AT (DW_AT_frame_base, 0x40)
281 DW_AT (DW_AT_friend, 0x41)
282 DW_AT (DW_AT_identifier_case, 0x42)
283 DW_AT (DW_AT_macro_info, 0x43)
284 DW_AT (DW_AT_namelist_items, 0x44)
285 DW_AT (DW_AT_priority, 0x45)
286 DW_AT (DW_AT_segment, 0x46)
287 DW_AT (DW_AT_specification, 0x47)
288 DW_AT (DW_AT_static_link, 0x48)
289 DW_AT (DW_AT_type, 0x49)
290 DW_AT (DW_AT_use_location, 0x4a)
291 DW_AT (DW_AT_variable_parameter, 0x4b)
292 DW_AT (DW_AT_virtuality, 0x4c)
293 DW_AT (DW_AT_vtable_elem_location, 0x4d)
294 /* DWARF 3 values. */
295 DW_AT (DW_AT_allocated, 0x4e)
296 DW_AT (DW_AT_associated, 0x4f)
297 DW_AT (DW_AT_data_location, 0x50)
298 DW_AT (DW_AT_byte_stride, 0x51)
299 DW_AT (DW_AT_entry_pc, 0x52)
300 DW_AT (DW_AT_use_UTF8, 0x53)
301 DW_AT (DW_AT_extension, 0x54)
302 DW_AT (DW_AT_ranges, 0x55)
303 DW_AT (DW_AT_trampoline, 0x56)
304 DW_AT (DW_AT_call_column, 0x57)
305 DW_AT (DW_AT_call_file, 0x58)
306 DW_AT (DW_AT_call_line, 0x59)
307 DW_AT (DW_AT_description, 0x5a)
308 DW_AT (DW_AT_binary_scale, 0x5b)
309 DW_AT (DW_AT_decimal_scale, 0x5c)
310 DW_AT (DW_AT_small, 0x5d)
311 DW_AT (DW_AT_decimal_sign, 0x5e)
312 DW_AT (DW_AT_digit_count, 0x5f)
313 DW_AT (DW_AT_picture_string, 0x60)
314 DW_AT (DW_AT_mutable, 0x61)
315 DW_AT (DW_AT_threads_scaled, 0x62)
316 DW_AT (DW_AT_explicit, 0x63)
317 DW_AT (DW_AT_object_pointer, 0x64)
318 DW_AT (DW_AT_endianity, 0x65)
319 DW_AT (DW_AT_elemental, 0x66)
320 DW_AT (DW_AT_pure, 0x67)
321 DW_AT (DW_AT_recursive, 0x68)
322 /* DWARF 4. */
323 DW_AT (DW_AT_signature, 0x69)
324 DW_AT (DW_AT_main_subprogram, 0x6a)
325 DW_AT (DW_AT_data_bit_offset, 0x6b)
326 DW_AT (DW_AT_const_expr, 0x6c)
327 DW_AT (DW_AT_enum_class, 0x6d)
328 DW_AT (DW_AT_linkage_name, 0x6e)
329 /* DWARF 5. */
330 DW_AT (DW_AT_string_length_bit_size, 0x6f)
331 DW_AT (DW_AT_string_length_byte_size, 0x70)
332 DW_AT (DW_AT_rank, 0x71)
333 DW_AT (DW_AT_str_offsets_base, 0x72)
334 DW_AT (DW_AT_addr_base, 0x73)
335 DW_AT (DW_AT_rnglists_base, 0x74)
336 DW_AT (DW_AT_dwo_name, 0x76)
337 DW_AT (DW_AT_reference, 0x77)
338 DW_AT (DW_AT_rvalue_reference, 0x78)
339 DW_AT (DW_AT_macros, 0x79)
340 DW_AT (DW_AT_call_all_calls, 0x7a)
341 DW_AT (DW_AT_call_all_source_calls, 0x7b)
342 DW_AT (DW_AT_call_all_tail_calls, 0x7c)
343 DW_AT (DW_AT_call_return_pc, 0x7d)
344 DW_AT (DW_AT_call_value, 0x7e)
345 DW_AT (DW_AT_call_origin, 0x7f)
346 DW_AT (DW_AT_call_parameter, 0x80)
347 DW_AT (DW_AT_call_pc, 0x81)
348 DW_AT (DW_AT_call_tail_call, 0x82)
349 DW_AT (DW_AT_call_target, 0x83)
350 DW_AT (DW_AT_call_target_clobbered, 0x84)
351 DW_AT (DW_AT_call_data_location, 0x85)
352 DW_AT (DW_AT_call_data_value, 0x86)
353 DW_AT (DW_AT_noreturn, 0x87)
354 DW_AT (DW_AT_alignment, 0x88)
355 DW_AT (DW_AT_export_symbols, 0x89)
356 DW_AT (DW_AT_deleted, 0x8a)
357 DW_AT (DW_AT_defaulted, 0x8b)
358 DW_AT (DW_AT_loclists_base, 0x8c)
360 DW_AT_DUP (DW_AT_lo_user, 0x2000) /* Implementation-defined range start. */
361 DW_AT_DUP (DW_AT_hi_user, 0x3fff) /* Implementation-defined range end. */
363 /* SGI/MIPS extensions. */
364 DW_AT (DW_AT_MIPS_fde, 0x2001)
365 DW_AT (DW_AT_MIPS_loop_begin, 0x2002)
366 DW_AT (DW_AT_MIPS_tail_loop_begin, 0x2003)
367 DW_AT (DW_AT_MIPS_epilog_begin, 0x2004)
368 DW_AT (DW_AT_MIPS_loop_unroll_factor, 0x2005)
369 DW_AT (DW_AT_MIPS_software_pipeline_depth, 0x2006)
370 DW_AT (DW_AT_MIPS_linkage_name, 0x2007)
371 DW_AT (DW_AT_MIPS_stride, 0x2008)
372 DW_AT (DW_AT_MIPS_abstract_name, 0x2009)
373 DW_AT (DW_AT_MIPS_clone_origin, 0x200a)
374 DW_AT (DW_AT_MIPS_has_inlines, 0x200b)
375 /* HP extensions. */
376 DW_AT (DW_AT_HP_block_index, 0x2000)
377 DW_AT_DUP (DW_AT_HP_unmodifiable, 0x2001) /* Same as DW_AT_MIPS_fde. */
378 DW_AT_DUP (DW_AT_HP_prologue, 0x2005) /* Same as DW_AT_MIPS_loop_unroll. */
379 DW_AT_DUP (DW_AT_HP_epilogue, 0x2008) /* Same as DW_AT_MIPS_stride. */
380 DW_AT (DW_AT_HP_actuals_stmt_list, 0x2010)
381 DW_AT (DW_AT_HP_proc_per_section, 0x2011)
382 DW_AT (DW_AT_HP_raw_data_ptr, 0x2012)
383 DW_AT (DW_AT_HP_pass_by_reference, 0x2013)
384 DW_AT (DW_AT_HP_opt_level, 0x2014)
385 DW_AT (DW_AT_HP_prof_version_id, 0x2015)
386 DW_AT (DW_AT_HP_opt_flags, 0x2016)
387 DW_AT (DW_AT_HP_cold_region_low_pc, 0x2017)
388 DW_AT (DW_AT_HP_cold_region_high_pc, 0x2018)
389 DW_AT (DW_AT_HP_all_variables_modifiable, 0x2019)
390 DW_AT (DW_AT_HP_linkage_name, 0x201a)
391 DW_AT (DW_AT_HP_prof_flags, 0x201b) /* In comp unit of procs_info for -g. */
392 DW_AT (DW_AT_HP_unit_name, 0x201f)
393 DW_AT (DW_AT_HP_unit_size, 0x2020)
394 DW_AT (DW_AT_HP_widened_byte_size, 0x2021)
395 DW_AT (DW_AT_HP_definition_points, 0x2022)
396 DW_AT (DW_AT_HP_default_location, 0x2023)
397 DW_AT (DW_AT_HP_is_result_param, 0x2029)
399 /* GNU extensions. */
400 DW_AT (DW_AT_sf_names, 0x2101)
401 DW_AT (DW_AT_src_info, 0x2102)
402 DW_AT (DW_AT_mac_info, 0x2103)
403 DW_AT (DW_AT_src_coords, 0x2104)
404 DW_AT (DW_AT_body_begin, 0x2105)
405 DW_AT (DW_AT_body_end, 0x2106)
406 DW_AT (DW_AT_GNU_vector, 0x2107)
407 /* Thread-safety annotations.
408 See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */
409 DW_AT (DW_AT_GNU_guarded_by, 0x2108)
410 DW_AT (DW_AT_GNU_pt_guarded_by, 0x2109)
411 DW_AT (DW_AT_GNU_guarded, 0x210a)
412 DW_AT (DW_AT_GNU_pt_guarded, 0x210b)
413 DW_AT (DW_AT_GNU_locks_excluded, 0x210c)
414 DW_AT (DW_AT_GNU_exclusive_locks_required, 0x210d)
415 DW_AT (DW_AT_GNU_shared_locks_required, 0x210e)
416 /* One-definition rule violation detection.
417 See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */
418 DW_AT (DW_AT_GNU_odr_signature, 0x210f)
419 /* Template template argument name.
420 See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */
421 DW_AT (DW_AT_GNU_template_name, 0x2110)
422 /* The GNU call site extension.
423 See http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . */
424 DW_AT (DW_AT_GNU_call_site_value, 0x2111)
425 DW_AT (DW_AT_GNU_call_site_data_value, 0x2112)
426 DW_AT (DW_AT_GNU_call_site_target, 0x2113)
427 DW_AT (DW_AT_GNU_call_site_target_clobbered, 0x2114)
428 DW_AT (DW_AT_GNU_tail_call, 0x2115)
429 DW_AT (DW_AT_GNU_all_tail_call_sites, 0x2116)
430 DW_AT (DW_AT_GNU_all_call_sites, 0x2117)
431 DW_AT (DW_AT_GNU_all_source_call_sites, 0x2118)
432 /* Section offset into .debug_macro section. */
433 DW_AT (DW_AT_GNU_macros, 0x2119)
434 /* Attribute for C++ deleted special member functions (= delete;). */
435 DW_AT (DW_AT_GNU_deleted, 0x211a)
436 /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
437 DW_AT (DW_AT_GNU_dwo_name, 0x2130)
438 DW_AT (DW_AT_GNU_dwo_id, 0x2131)
439 DW_AT (DW_AT_GNU_ranges_base, 0x2132)
440 DW_AT (DW_AT_GNU_addr_base, 0x2133)
441 DW_AT (DW_AT_GNU_pubnames, 0x2134)
442 DW_AT (DW_AT_GNU_pubtypes, 0x2135)
443 /* Attribute for discriminator.
444 See http://gcc.gnu.org/wiki/Discriminator */
445 DW_AT (DW_AT_GNU_discriminator, 0x2136)
446 DW_AT (DW_AT_GNU_locviews, 0x2137)
447 DW_AT (DW_AT_GNU_entry_view, 0x2138)
448 /* VMS extensions. */
449 DW_AT (DW_AT_VMS_rtnbeg_pd_address, 0x2201)
450 /* GNAT extensions. */
451 /* GNAT descriptive type.
452 See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */
453 DW_AT (DW_AT_use_GNAT_descriptive_type, 0x2301)
454 DW_AT (DW_AT_GNAT_descriptive_type, 0x2302)
455 /* Rational constant extension.
456 See https://gcc.gnu.org/wiki/DW_AT_GNU_numerator_denominator . */
457 DW_TAG (DW_AT_GNU_numerator, 0x2303)
458 DW_TAG (DW_AT_GNU_denominator, 0x2304)
459 /* Biased integer extension.
460 See https://gcc.gnu.org/wiki/DW_AT_GNU_bias . */
461 DW_TAG (DW_AT_GNU_bias, 0x2305)
462 /* UPC extension. */
463 DW_AT (DW_AT_upc_threads_scaled, 0x3210)
464 /* PGI (STMicroelectronics) extensions. */
465 DW_AT (DW_AT_PGI_lbase, 0x3a00)
466 DW_AT (DW_AT_PGI_soffset, 0x3a01)
467 DW_AT (DW_AT_PGI_lstride, 0x3a02)
468 /* Apple extensions. */
469 DW_AT (DW_AT_APPLE_optimized, 0x3fe1)
470 DW_AT (DW_AT_APPLE_flags, 0x3fe2)
471 DW_AT (DW_AT_APPLE_isa, 0x3fe3)
472 DW_AT (DW_AT_APPLE_block, 0x3fe4)
473 DW_AT (DW_AT_APPLE_major_runtime_vers, 0x3fe5)
474 DW_AT (DW_AT_APPLE_runtime_class, 0x3fe6)
475 DW_AT (DW_AT_APPLE_omit_frame_ptr, 0x3fe7)
476 DW_AT (DW_AT_APPLE_property_name, 0x3fe8)
477 DW_AT (DW_AT_APPLE_property_getter, 0x3fe9)
478 DW_AT (DW_AT_APPLE_property_setter, 0x3fea)
479 DW_AT (DW_AT_APPLE_property_attribute, 0x3feb)
480 DW_AT (DW_AT_APPLE_objc_complete_type, 0x3fec)
481 DW_AT (DW_AT_APPLE_property, 0x3fed)
482 DW_END_AT
484 DW_FIRST_OP (DW_OP_addr, 0x03)
485 DW_OP (DW_OP_deref, 0x06)
486 DW_OP (DW_OP_const1u, 0x08)
487 DW_OP (DW_OP_const1s, 0x09)
488 DW_OP (DW_OP_const2u, 0x0a)
489 DW_OP (DW_OP_const2s, 0x0b)
490 DW_OP (DW_OP_const4u, 0x0c)
491 DW_OP (DW_OP_const4s, 0x0d)
492 DW_OP (DW_OP_const8u, 0x0e)
493 DW_OP (DW_OP_const8s, 0x0f)
494 DW_OP (DW_OP_constu, 0x10)
495 DW_OP (DW_OP_consts, 0x11)
496 DW_OP (DW_OP_dup, 0x12)
497 DW_OP (DW_OP_drop, 0x13)
498 DW_OP (DW_OP_over, 0x14)
499 DW_OP (DW_OP_pick, 0x15)
500 DW_OP (DW_OP_swap, 0x16)
501 DW_OP (DW_OP_rot, 0x17)
502 DW_OP (DW_OP_xderef, 0x18)
503 DW_OP (DW_OP_abs, 0x19)
504 DW_OP (DW_OP_and, 0x1a)
505 DW_OP (DW_OP_div, 0x1b)
506 DW_OP (DW_OP_minus, 0x1c)
507 DW_OP (DW_OP_mod, 0x1d)
508 DW_OP (DW_OP_mul, 0x1e)
509 DW_OP (DW_OP_neg, 0x1f)
510 DW_OP (DW_OP_not, 0x20)
511 DW_OP (DW_OP_or, 0x21)
512 DW_OP (DW_OP_plus, 0x22)
513 DW_OP (DW_OP_plus_uconst, 0x23)
514 DW_OP (DW_OP_shl, 0x24)
515 DW_OP (DW_OP_shr, 0x25)
516 DW_OP (DW_OP_shra, 0x26)
517 DW_OP (DW_OP_xor, 0x27)
518 DW_OP (DW_OP_bra, 0x28)
519 DW_OP (DW_OP_eq, 0x29)
520 DW_OP (DW_OP_ge, 0x2a)
521 DW_OP (DW_OP_gt, 0x2b)
522 DW_OP (DW_OP_le, 0x2c)
523 DW_OP (DW_OP_lt, 0x2d)
524 DW_OP (DW_OP_ne, 0x2e)
525 DW_OP (DW_OP_skip, 0x2f)
526 DW_OP (DW_OP_lit0, 0x30)
527 DW_OP (DW_OP_lit1, 0x31)
528 DW_OP (DW_OP_lit2, 0x32)
529 DW_OP (DW_OP_lit3, 0x33)
530 DW_OP (DW_OP_lit4, 0x34)
531 DW_OP (DW_OP_lit5, 0x35)
532 DW_OP (DW_OP_lit6, 0x36)
533 DW_OP (DW_OP_lit7, 0x37)
534 DW_OP (DW_OP_lit8, 0x38)
535 DW_OP (DW_OP_lit9, 0x39)
536 DW_OP (DW_OP_lit10, 0x3a)
537 DW_OP (DW_OP_lit11, 0x3b)
538 DW_OP (DW_OP_lit12, 0x3c)
539 DW_OP (DW_OP_lit13, 0x3d)
540 DW_OP (DW_OP_lit14, 0x3e)
541 DW_OP (DW_OP_lit15, 0x3f)
542 DW_OP (DW_OP_lit16, 0x40)
543 DW_OP (DW_OP_lit17, 0x41)
544 DW_OP (DW_OP_lit18, 0x42)
545 DW_OP (DW_OP_lit19, 0x43)
546 DW_OP (DW_OP_lit20, 0x44)
547 DW_OP (DW_OP_lit21, 0x45)
548 DW_OP (DW_OP_lit22, 0x46)
549 DW_OP (DW_OP_lit23, 0x47)
550 DW_OP (DW_OP_lit24, 0x48)
551 DW_OP (DW_OP_lit25, 0x49)
552 DW_OP (DW_OP_lit26, 0x4a)
553 DW_OP (DW_OP_lit27, 0x4b)
554 DW_OP (DW_OP_lit28, 0x4c)
555 DW_OP (DW_OP_lit29, 0x4d)
556 DW_OP (DW_OP_lit30, 0x4e)
557 DW_OP (DW_OP_lit31, 0x4f)
558 DW_OP (DW_OP_reg0, 0x50)
559 DW_OP (DW_OP_reg1, 0x51)
560 DW_OP (DW_OP_reg2, 0x52)
561 DW_OP (DW_OP_reg3, 0x53)
562 DW_OP (DW_OP_reg4, 0x54)
563 DW_OP (DW_OP_reg5, 0x55)
564 DW_OP (DW_OP_reg6, 0x56)
565 DW_OP (DW_OP_reg7, 0x57)
566 DW_OP (DW_OP_reg8, 0x58)
567 DW_OP (DW_OP_reg9, 0x59)
568 DW_OP (DW_OP_reg10, 0x5a)
569 DW_OP (DW_OP_reg11, 0x5b)
570 DW_OP (DW_OP_reg12, 0x5c)
571 DW_OP (DW_OP_reg13, 0x5d)
572 DW_OP (DW_OP_reg14, 0x5e)
573 DW_OP (DW_OP_reg15, 0x5f)
574 DW_OP (DW_OP_reg16, 0x60)
575 DW_OP (DW_OP_reg17, 0x61)
576 DW_OP (DW_OP_reg18, 0x62)
577 DW_OP (DW_OP_reg19, 0x63)
578 DW_OP (DW_OP_reg20, 0x64)
579 DW_OP (DW_OP_reg21, 0x65)
580 DW_OP (DW_OP_reg22, 0x66)
581 DW_OP (DW_OP_reg23, 0x67)
582 DW_OP (DW_OP_reg24, 0x68)
583 DW_OP (DW_OP_reg25, 0x69)
584 DW_OP (DW_OP_reg26, 0x6a)
585 DW_OP (DW_OP_reg27, 0x6b)
586 DW_OP (DW_OP_reg28, 0x6c)
587 DW_OP (DW_OP_reg29, 0x6d)
588 DW_OP (DW_OP_reg30, 0x6e)
589 DW_OP (DW_OP_reg31, 0x6f)
590 DW_OP (DW_OP_breg0, 0x70)
591 DW_OP (DW_OP_breg1, 0x71)
592 DW_OP (DW_OP_breg2, 0x72)
593 DW_OP (DW_OP_breg3, 0x73)
594 DW_OP (DW_OP_breg4, 0x74)
595 DW_OP (DW_OP_breg5, 0x75)
596 DW_OP (DW_OP_breg6, 0x76)
597 DW_OP (DW_OP_breg7, 0x77)
598 DW_OP (DW_OP_breg8, 0x78)
599 DW_OP (DW_OP_breg9, 0x79)
600 DW_OP (DW_OP_breg10, 0x7a)
601 DW_OP (DW_OP_breg11, 0x7b)
602 DW_OP (DW_OP_breg12, 0x7c)
603 DW_OP (DW_OP_breg13, 0x7d)
604 DW_OP (DW_OP_breg14, 0x7e)
605 DW_OP (DW_OP_breg15, 0x7f)
606 DW_OP (DW_OP_breg16, 0x80)
607 DW_OP (DW_OP_breg17, 0x81)
608 DW_OP (DW_OP_breg18, 0x82)
609 DW_OP (DW_OP_breg19, 0x83)
610 DW_OP (DW_OP_breg20, 0x84)
611 DW_OP (DW_OP_breg21, 0x85)
612 DW_OP (DW_OP_breg22, 0x86)
613 DW_OP (DW_OP_breg23, 0x87)
614 DW_OP (DW_OP_breg24, 0x88)
615 DW_OP (DW_OP_breg25, 0x89)
616 DW_OP (DW_OP_breg26, 0x8a)
617 DW_OP (DW_OP_breg27, 0x8b)
618 DW_OP (DW_OP_breg28, 0x8c)
619 DW_OP (DW_OP_breg29, 0x8d)
620 DW_OP (DW_OP_breg30, 0x8e)
621 DW_OP (DW_OP_breg31, 0x8f)
622 DW_OP (DW_OP_regx, 0x90)
623 DW_OP (DW_OP_fbreg, 0x91)
624 DW_OP (DW_OP_bregx, 0x92)
625 DW_OP (DW_OP_piece, 0x93)
626 DW_OP (DW_OP_deref_size, 0x94)
627 DW_OP (DW_OP_xderef_size, 0x95)
628 DW_OP (DW_OP_nop, 0x96)
629 /* DWARF 3 extensions. */
630 DW_OP (DW_OP_push_object_address, 0x97)
631 DW_OP (DW_OP_call2, 0x98)
632 DW_OP (DW_OP_call4, 0x99)
633 DW_OP (DW_OP_call_ref, 0x9a)
634 DW_OP (DW_OP_form_tls_address, 0x9b)
635 DW_OP (DW_OP_call_frame_cfa, 0x9c)
636 DW_OP (DW_OP_bit_piece, 0x9d)
638 /* DWARF 4 extensions. */
639 DW_OP (DW_OP_implicit_value, 0x9e)
640 DW_OP (DW_OP_stack_value, 0x9f)
642 /* DWARF 5 extensions. */
643 DW_OP (DW_OP_implicit_pointer, 0xa0)
644 DW_OP (DW_OP_addrx, 0xa1)
645 DW_OP (DW_OP_constx, 0xa2)
646 DW_OP (DW_OP_entry_value, 0xa3)
647 DW_OP (DW_OP_const_type, 0xa4)
648 DW_OP (DW_OP_regval_type, 0xa5)
649 DW_OP (DW_OP_deref_type, 0xa6)
650 DW_OP (DW_OP_xderef_type, 0xa7)
651 DW_OP (DW_OP_convert, 0xa8)
652 DW_OP (DW_OP_reinterpret, 0xa9)
654 DW_OP_DUP (DW_OP_lo_user, 0xe0) /* Implementation-defined range start. */
655 DW_OP_DUP (DW_OP_hi_user, 0xff) /* Implementation-defined range end. */
657 /* GNU extensions. */
658 DW_OP (DW_OP_GNU_push_tls_address, 0xe0)
659 /* The following is for marking variables that are uninitialized. */
660 DW_OP (DW_OP_GNU_uninit, 0xf0)
661 DW_OP (DW_OP_GNU_encoded_addr, 0xf1)
662 /* The GNU implicit pointer extension.
663 See http://www.dwarfstd.org/ShowIssue.php?issue=100831.1&type=open . */
664 DW_OP (DW_OP_GNU_implicit_pointer, 0xf2)
665 /* The GNU entry value extension.
666 See http://www.dwarfstd.org/ShowIssue.php?issue=100909.1&type=open . */
667 DW_OP (DW_OP_GNU_entry_value, 0xf3)
668 /* The GNU typed stack extension.
669 See http://www.dwarfstd.org/doc/040408.1.html . */
670 DW_OP (DW_OP_GNU_const_type, 0xf4)
671 DW_OP (DW_OP_GNU_regval_type, 0xf5)
672 DW_OP (DW_OP_GNU_deref_type, 0xf6)
673 DW_OP (DW_OP_GNU_convert, 0xf7)
674 DW_OP (DW_OP_GNU_reinterpret, 0xf9)
675 /* The GNU parameter ref extension. */
676 DW_OP (DW_OP_GNU_parameter_ref, 0xfa)
677 /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
678 DW_OP (DW_OP_GNU_addr_index, 0xfb)
679 DW_OP (DW_OP_GNU_const_index, 0xfc)
680 /* The GNU variable value extension.
681 See http://dwarfstd.org/ShowIssue.php?issue=161109.2 . */
682 DW_OP (DW_OP_GNU_variable_value, 0xfd)
683 /* HP extensions. */
684 DW_OP_DUP (DW_OP_HP_unknown, 0xe0) /* Ouch, the same as GNU_push_tls_address. */
685 DW_OP (DW_OP_HP_is_value, 0xe1)
686 DW_OP (DW_OP_HP_fltconst4, 0xe2)
687 DW_OP (DW_OP_HP_fltconst8, 0xe3)
688 DW_OP (DW_OP_HP_mod_range, 0xe4)
689 DW_OP (DW_OP_HP_unmod_range, 0xe5)
690 DW_OP (DW_OP_HP_tls, 0xe6)
691 /* PGI (STMicroelectronics) extensions. */
692 DW_OP (DW_OP_PGI_omp_thread_num, 0xf8)
693 /* AARCH64 extensions.
694 DW_OP_AARCH64_operation takes one mandatory unsigned LEB128 operand.
695 Bits[6:0] of this operand is the action code, all others bits are initialized
696 to 0 except explicitly documented for one action. Please refer AArch64 DWARF
697 ABI documentation for details. */
698 DW_OP (DW_OP_AARCH64_operation, 0xea)
699 DW_END_OP
701 DW_FIRST_ATE (DW_ATE_void, 0x0)
702 DW_ATE (DW_ATE_address, 0x1)
703 DW_ATE (DW_ATE_boolean, 0x2)
704 DW_ATE (DW_ATE_complex_float, 0x3)
705 DW_ATE (DW_ATE_float, 0x4)
706 DW_ATE (DW_ATE_signed, 0x5)
707 DW_ATE (DW_ATE_signed_char, 0x6)
708 DW_ATE (DW_ATE_unsigned, 0x7)
709 DW_ATE (DW_ATE_unsigned_char, 0x8)
710 /* DWARF 3. */
711 DW_ATE (DW_ATE_imaginary_float, 0x9)
712 DW_ATE (DW_ATE_packed_decimal, 0xa)
713 DW_ATE (DW_ATE_numeric_string, 0xb)
714 DW_ATE (DW_ATE_edited, 0xc)
715 DW_ATE (DW_ATE_signed_fixed, 0xd)
716 DW_ATE (DW_ATE_unsigned_fixed, 0xe)
717 DW_ATE (DW_ATE_decimal_float, 0xf)
718 /* DWARF 4. */
719 DW_ATE (DW_ATE_UTF, 0x10)
720 /* DWARF 5. */
721 DW_ATE (DW_ATE_UCS, 0x11)
722 DW_ATE (DW_ATE_ASCII, 0x12)
724 DW_ATE_DUP (DW_ATE_lo_user, 0x80)
725 DW_ATE_DUP (DW_ATE_hi_user, 0xff)
727 /* HP extensions. */
728 DW_ATE (DW_ATE_HP_float80, 0x80) /* Floating-point (80 bit). */
729 DW_ATE (DW_ATE_HP_complex_float80, 0x81) /* Complex floating-point (80 bit). */
730 DW_ATE (DW_ATE_HP_float128, 0x82) /* Floating-point (128 bit). */
731 DW_ATE (DW_ATE_HP_complex_float128, 0x83) /* Complex fp (128 bit). */
732 DW_ATE (DW_ATE_HP_floathpintel, 0x84) /* Floating-point (82 bit IA64). */
733 DW_ATE (DW_ATE_HP_imaginary_float80, 0x85)
734 DW_ATE (DW_ATE_HP_imaginary_float128, 0x86)
735 DW_ATE (DW_ATE_HP_VAX_float, 0x88) /* F or G floating. */
736 DW_ATE (DW_ATE_HP_VAX_float_d, 0x89) /* D floating. */
737 DW_ATE (DW_ATE_HP_packed_decimal, 0x8a) /* Cobol. */
738 DW_ATE (DW_ATE_HP_zoned_decimal, 0x8b) /* Cobol. */
739 DW_ATE (DW_ATE_HP_edited, 0x8c) /* Cobol. */
740 DW_ATE (DW_ATE_HP_signed_fixed, 0x8d) /* Cobol. */
741 DW_ATE (DW_ATE_HP_unsigned_fixed, 0x8e) /* Cobol. */
742 DW_ATE (DW_ATE_HP_VAX_complex_float, 0x8f) /* F or G floating complex. */
743 DW_ATE (DW_ATE_HP_VAX_complex_float_d, 0x90) /* D floating complex. */
745 DW_END_ATE
747 DW_FIRST_CFA (DW_CFA_advance_loc, 0x40)
748 DW_CFA (DW_CFA_offset, 0x80)
749 DW_CFA (DW_CFA_restore, 0xc0)
750 DW_CFA (DW_CFA_nop, 0x00)
751 DW_CFA (DW_CFA_set_loc, 0x01)
752 DW_CFA (DW_CFA_advance_loc1, 0x02)
753 DW_CFA (DW_CFA_advance_loc2, 0x03)
754 DW_CFA (DW_CFA_advance_loc4, 0x04)
755 DW_CFA (DW_CFA_offset_extended, 0x05)
756 DW_CFA (DW_CFA_restore_extended, 0x06)
757 DW_CFA (DW_CFA_undefined, 0x07)
758 DW_CFA (DW_CFA_same_value, 0x08)
759 DW_CFA (DW_CFA_register, 0x09)
760 DW_CFA (DW_CFA_remember_state, 0x0a)
761 DW_CFA (DW_CFA_restore_state, 0x0b)
762 DW_CFA (DW_CFA_def_cfa, 0x0c)
763 DW_CFA (DW_CFA_def_cfa_register, 0x0d)
764 DW_CFA (DW_CFA_def_cfa_offset, 0x0e)
765 /* DWARF 3. */
766 DW_CFA (DW_CFA_def_cfa_expression, 0x0f)
767 DW_CFA (DW_CFA_expression, 0x10)
768 DW_CFA (DW_CFA_offset_extended_sf, 0x11)
769 DW_CFA (DW_CFA_def_cfa_sf, 0x12)
770 DW_CFA (DW_CFA_def_cfa_offset_sf, 0x13)
771 DW_CFA (DW_CFA_val_offset, 0x14)
772 DW_CFA (DW_CFA_val_offset_sf, 0x15)
773 DW_CFA (DW_CFA_val_expression, 0x16)
775 DW_CFA (DW_CFA_lo_user, 0x1c)
776 DW_CFA (DW_CFA_hi_user, 0x3f)
778 /* SGI/MIPS specific. */
779 DW_CFA (DW_CFA_MIPS_advance_loc8, 0x1d)
780 /* GNU extensions.
781 NOTE: DW_CFA_GNU_window_save is multiplexed on Sparc and AArch64. */
782 DW_CFA (DW_CFA_GNU_window_save, 0x2d)
783 DW_CFA_DUP (DW_CFA_AARCH64_negate_ra_state, 0x2d)
784 DW_CFA (DW_CFA_GNU_args_size, 0x2e)
785 DW_CFA (DW_CFA_GNU_negative_offset_extended, 0x2f)
787 DW_END_CFA
789 /* Index attributes in the Abbreviations Table. */
790 DW_FIRST_IDX (DW_IDX_compile_unit, 1)
791 DW_IDX (DW_IDX_type_unit, 2)
792 DW_IDX (DW_IDX_die_offset, 3)
793 DW_IDX (DW_IDX_parent, 4)
794 DW_IDX (DW_IDX_type_hash, 5)
795 DW_IDX_DUP (DW_IDX_lo_user, 0x2000)
796 DW_IDX (DW_IDX_hi_user, 0x3fff)
797 DW_IDX (DW_IDX_GNU_internal, 0x2000)
798 DW_IDX (DW_IDX_GNU_external, 0x2001)
799 DW_END_IDX