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