1/* -*- c -*- 2 Declarations and definitions of codes relating to the DWARF2 and 3 DWARF3 symbolic debugging information formats. 4 Copyright (C) 1992-2022 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) 223DW_FORM (DW_FORM_strx1, 0x25) 224DW_FORM (DW_FORM_strx2, 0x26) 225DW_FORM (DW_FORM_strx3, 0x27) 226DW_FORM (DW_FORM_strx4, 0x28) 227DW_FORM (DW_FORM_addrx1, 0x29) 228DW_FORM (DW_FORM_addrx2, 0x2a) 229DW_FORM (DW_FORM_addrx3, 0x2b) 230DW_FORM (DW_FORM_addrx4, 0x2c) 231/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ 232DW_FORM (DW_FORM_GNU_addr_index, 0x1f01) 233DW_FORM (DW_FORM_GNU_str_index, 0x1f02) 234/* Extensions for DWZ multifile. 235 See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open . */ 236DW_FORM (DW_FORM_GNU_ref_alt, 0x1f20) 237DW_FORM (DW_FORM_GNU_strp_alt, 0x1f21) 238DW_END_FORM 239 240DW_FIRST_AT (DW_AT_sibling, 0x01) 241DW_AT (DW_AT_location, 0x02) 242DW_AT (DW_AT_name, 0x03) 243DW_AT (DW_AT_ordering, 0x09) 244DW_AT (DW_AT_subscr_data, 0x0a) 245DW_AT (DW_AT_byte_size, 0x0b) 246DW_AT (DW_AT_bit_offset, 0x0c) 247DW_AT (DW_AT_bit_size, 0x0d) 248DW_AT (DW_AT_element_list, 0x0f) 249DW_AT (DW_AT_stmt_list, 0x10) 250DW_AT (DW_AT_low_pc, 0x11) 251DW_AT (DW_AT_high_pc, 0x12) 252DW_AT (DW_AT_language, 0x13) 253DW_AT (DW_AT_member, 0x14) 254DW_AT (DW_AT_discr, 0x15) 255DW_AT (DW_AT_discr_value, 0x16) 256DW_AT (DW_AT_visibility, 0x17) 257DW_AT (DW_AT_import, 0x18) 258DW_AT (DW_AT_string_length, 0x19) 259DW_AT (DW_AT_common_reference, 0x1a) 260DW_AT (DW_AT_comp_dir, 0x1b) 261DW_AT (DW_AT_const_value, 0x1c) 262DW_AT (DW_AT_containing_type, 0x1d) 263DW_AT (DW_AT_default_value, 0x1e) 264DW_AT (DW_AT_inline, 0x20) 265DW_AT (DW_AT_is_optional, 0x21) 266DW_AT (DW_AT_lower_bound, 0x22) 267DW_AT (DW_AT_producer, 0x25) 268DW_AT (DW_AT_prototyped, 0x27) 269DW_AT (DW_AT_return_addr, 0x2a) 270DW_AT (DW_AT_start_scope, 0x2c) 271DW_AT (DW_AT_bit_stride, 0x2e) 272DW_AT (DW_AT_upper_bound, 0x2f) 273DW_AT (DW_AT_abstract_origin, 0x31) 274DW_AT (DW_AT_accessibility, 0x32) 275DW_AT (DW_AT_address_class, 0x33) 276DW_AT (DW_AT_artificial, 0x34) 277DW_AT (DW_AT_base_types, 0x35) 278DW_AT (DW_AT_calling_convention, 0x36) 279DW_AT (DW_AT_count, 0x37) 280DW_AT (DW_AT_data_member_location, 0x38) 281DW_AT (DW_AT_decl_column, 0x39) 282DW_AT (DW_AT_decl_file, 0x3a) 283DW_AT (DW_AT_decl_line, 0x3b) 284DW_AT (DW_AT_declaration, 0x3c) 285DW_AT (DW_AT_discr_list, 0x3d) 286DW_AT (DW_AT_encoding, 0x3e) 287DW_AT (DW_AT_external, 0x3f) 288DW_AT (DW_AT_frame_base, 0x40) 289DW_AT (DW_AT_friend, 0x41) 290DW_AT (DW_AT_identifier_case, 0x42) 291DW_AT (DW_AT_macro_info, 0x43) 292DW_AT (DW_AT_namelist_items, 0x44) 293DW_AT (DW_AT_priority, 0x45) 294DW_AT (DW_AT_segment, 0x46) 295DW_AT (DW_AT_specification, 0x47) 296DW_AT (DW_AT_static_link, 0x48) 297DW_AT (DW_AT_type, 0x49) 298DW_AT (DW_AT_use_location, 0x4a) 299DW_AT (DW_AT_variable_parameter, 0x4b) 300DW_AT (DW_AT_virtuality, 0x4c) 301DW_AT (DW_AT_vtable_elem_location, 0x4d) 302/* DWARF 3 values. */ 303DW_AT (DW_AT_allocated, 0x4e) 304DW_AT (DW_AT_associated, 0x4f) 305DW_AT (DW_AT_data_location, 0x50) 306DW_AT (DW_AT_byte_stride, 0x51) 307DW_AT (DW_AT_entry_pc, 0x52) 308DW_AT (DW_AT_use_UTF8, 0x53) 309DW_AT (DW_AT_extension, 0x54) 310DW_AT (DW_AT_ranges, 0x55) 311DW_AT (DW_AT_trampoline, 0x56) 312DW_AT (DW_AT_call_column, 0x57) 313DW_AT (DW_AT_call_file, 0x58) 314DW_AT (DW_AT_call_line, 0x59) 315DW_AT (DW_AT_description, 0x5a) 316DW_AT (DW_AT_binary_scale, 0x5b) 317DW_AT (DW_AT_decimal_scale, 0x5c) 318DW_AT (DW_AT_small, 0x5d) 319DW_AT (DW_AT_decimal_sign, 0x5e) 320DW_AT (DW_AT_digit_count, 0x5f) 321DW_AT (DW_AT_picture_string, 0x60) 322DW_AT (DW_AT_mutable, 0x61) 323DW_AT (DW_AT_threads_scaled, 0x62) 324DW_AT (DW_AT_explicit, 0x63) 325DW_AT (DW_AT_object_pointer, 0x64) 326DW_AT (DW_AT_endianity, 0x65) 327DW_AT (DW_AT_elemental, 0x66) 328DW_AT (DW_AT_pure, 0x67) 329DW_AT (DW_AT_recursive, 0x68) 330/* DWARF 4. */ 331DW_AT (DW_AT_signature, 0x69) 332DW_AT (DW_AT_main_subprogram, 0x6a) 333DW_AT (DW_AT_data_bit_offset, 0x6b) 334DW_AT (DW_AT_const_expr, 0x6c) 335DW_AT (DW_AT_enum_class, 0x6d) 336DW_AT (DW_AT_linkage_name, 0x6e) 337/* DWARF 5. */ 338DW_AT (DW_AT_string_length_bit_size, 0x6f) 339DW_AT (DW_AT_string_length_byte_size, 0x70) 340DW_AT (DW_AT_rank, 0x71) 341DW_AT (DW_AT_str_offsets_base, 0x72) 342DW_AT (DW_AT_addr_base, 0x73) 343DW_AT (DW_AT_rnglists_base, 0x74) 344DW_AT (DW_AT_dwo_name, 0x76) 345DW_AT (DW_AT_reference, 0x77) 346DW_AT (DW_AT_rvalue_reference, 0x78) 347DW_AT (DW_AT_macros, 0x79) 348DW_AT (DW_AT_call_all_calls, 0x7a) 349DW_AT (DW_AT_call_all_source_calls, 0x7b) 350DW_AT (DW_AT_call_all_tail_calls, 0x7c) 351DW_AT (DW_AT_call_return_pc, 0x7d) 352DW_AT (DW_AT_call_value, 0x7e) 353DW_AT (DW_AT_call_origin, 0x7f) 354DW_AT (DW_AT_call_parameter, 0x80) 355DW_AT (DW_AT_call_pc, 0x81) 356DW_AT (DW_AT_call_tail_call, 0x82) 357DW_AT (DW_AT_call_target, 0x83) 358DW_AT (DW_AT_call_target_clobbered, 0x84) 359DW_AT (DW_AT_call_data_location, 0x85) 360DW_AT (DW_AT_call_data_value, 0x86) 361DW_AT (DW_AT_noreturn, 0x87) 362DW_AT (DW_AT_alignment, 0x88) 363DW_AT (DW_AT_export_symbols, 0x89) 364DW_AT (DW_AT_deleted, 0x8a) 365DW_AT (DW_AT_defaulted, 0x8b) 366DW_AT (DW_AT_loclists_base, 0x8c) 367 368DW_AT_DUP (DW_AT_lo_user, 0x2000) /* Implementation-defined range start. */ 369DW_AT_DUP (DW_AT_hi_user, 0x3fff) /* Implementation-defined range end. */ 370 371/* SGI/MIPS extensions. */ 372DW_AT (DW_AT_MIPS_fde, 0x2001) 373DW_AT (DW_AT_MIPS_loop_begin, 0x2002) 374DW_AT (DW_AT_MIPS_tail_loop_begin, 0x2003) 375DW_AT (DW_AT_MIPS_epilog_begin, 0x2004) 376DW_AT (DW_AT_MIPS_loop_unroll_factor, 0x2005) 377DW_AT (DW_AT_MIPS_software_pipeline_depth, 0x2006) 378DW_AT (DW_AT_MIPS_linkage_name, 0x2007) 379DW_AT (DW_AT_MIPS_stride, 0x2008) 380DW_AT (DW_AT_MIPS_abstract_name, 0x2009) 381DW_AT (DW_AT_MIPS_clone_origin, 0x200a) 382DW_AT (DW_AT_MIPS_has_inlines, 0x200b) 383/* HP extensions. */ 384DW_AT (DW_AT_HP_block_index, 0x2000) 385DW_AT_DUP (DW_AT_HP_unmodifiable, 0x2001) /* Same as DW_AT_MIPS_fde. */ 386DW_AT_DUP (DW_AT_HP_prologue, 0x2005) /* Same as DW_AT_MIPS_loop_unroll. */ 387DW_AT_DUP (DW_AT_HP_epilogue, 0x2008) /* Same as DW_AT_MIPS_stride. */ 388DW_AT (DW_AT_HP_actuals_stmt_list, 0x2010) 389DW_AT (DW_AT_HP_proc_per_section, 0x2011) 390DW_AT (DW_AT_HP_raw_data_ptr, 0x2012) 391DW_AT (DW_AT_HP_pass_by_reference, 0x2013) 392DW_AT (DW_AT_HP_opt_level, 0x2014) 393DW_AT (DW_AT_HP_prof_version_id, 0x2015) 394DW_AT (DW_AT_HP_opt_flags, 0x2016) 395DW_AT (DW_AT_HP_cold_region_low_pc, 0x2017) 396DW_AT (DW_AT_HP_cold_region_high_pc, 0x2018) 397DW_AT (DW_AT_HP_all_variables_modifiable, 0x2019) 398DW_AT (DW_AT_HP_linkage_name, 0x201a) 399DW_AT (DW_AT_HP_prof_flags, 0x201b) /* In comp unit of procs_info for -g. */ 400DW_AT (DW_AT_HP_unit_name, 0x201f) 401DW_AT (DW_AT_HP_unit_size, 0x2020) 402DW_AT (DW_AT_HP_widened_byte_size, 0x2021) 403DW_AT (DW_AT_HP_definition_points, 0x2022) 404DW_AT (DW_AT_HP_default_location, 0x2023) 405DW_AT (DW_AT_HP_is_result_param, 0x2029) 406 407/* GNU extensions. */ 408DW_AT (DW_AT_sf_names, 0x2101) 409DW_AT (DW_AT_src_info, 0x2102) 410DW_AT (DW_AT_mac_info, 0x2103) 411DW_AT (DW_AT_src_coords, 0x2104) 412DW_AT (DW_AT_body_begin, 0x2105) 413DW_AT (DW_AT_body_end, 0x2106) 414DW_AT (DW_AT_GNU_vector, 0x2107) 415/* Thread-safety annotations. 416 See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */ 417DW_AT (DW_AT_GNU_guarded_by, 0x2108) 418DW_AT (DW_AT_GNU_pt_guarded_by, 0x2109) 419DW_AT (DW_AT_GNU_guarded, 0x210a) 420DW_AT (DW_AT_GNU_pt_guarded, 0x210b) 421DW_AT (DW_AT_GNU_locks_excluded, 0x210c) 422DW_AT (DW_AT_GNU_exclusive_locks_required, 0x210d) 423DW_AT (DW_AT_GNU_shared_locks_required, 0x210e) 424/* One-definition rule violation detection. 425 See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */ 426DW_AT (DW_AT_GNU_odr_signature, 0x210f) 427/* Template template argument name. 428 See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ 429DW_AT (DW_AT_GNU_template_name, 0x2110) 430/* The GNU call site extension. 431 See http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . */ 432DW_AT (DW_AT_GNU_call_site_value, 0x2111) 433DW_AT (DW_AT_GNU_call_site_data_value, 0x2112) 434DW_AT (DW_AT_GNU_call_site_target, 0x2113) 435DW_AT (DW_AT_GNU_call_site_target_clobbered, 0x2114) 436DW_AT (DW_AT_GNU_tail_call, 0x2115) 437DW_AT (DW_AT_GNU_all_tail_call_sites, 0x2116) 438DW_AT (DW_AT_GNU_all_call_sites, 0x2117) 439DW_AT (DW_AT_GNU_all_source_call_sites, 0x2118) 440/* Section offset into .debug_macro section. */ 441DW_AT (DW_AT_GNU_macros, 0x2119) 442/* Attribute for C++ deleted special member functions (= delete;). */ 443DW_AT (DW_AT_GNU_deleted, 0x211a) 444/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ 445DW_AT (DW_AT_GNU_dwo_name, 0x2130) 446DW_AT (DW_AT_GNU_dwo_id, 0x2131) 447DW_AT (DW_AT_GNU_ranges_base, 0x2132) 448DW_AT (DW_AT_GNU_addr_base, 0x2133) 449DW_AT (DW_AT_GNU_pubnames, 0x2134) 450DW_AT (DW_AT_GNU_pubtypes, 0x2135) 451/* Attribute for discriminator. 452 See http://gcc.gnu.org/wiki/Discriminator */ 453DW_AT (DW_AT_GNU_discriminator, 0x2136) 454DW_AT (DW_AT_GNU_locviews, 0x2137) 455DW_AT (DW_AT_GNU_entry_view, 0x2138) 456/* VMS extensions. */ 457DW_AT (DW_AT_VMS_rtnbeg_pd_address, 0x2201) 458/* GNAT extensions. */ 459/* GNAT descriptive type. 460 See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */ 461DW_AT (DW_AT_use_GNAT_descriptive_type, 0x2301) 462DW_AT (DW_AT_GNAT_descriptive_type, 0x2302) 463/* Rational constant extension. 464 See https://gcc.gnu.org/wiki/DW_AT_GNU_numerator_denominator . */ 465DW_TAG (DW_AT_GNU_numerator, 0x2303) 466DW_TAG (DW_AT_GNU_denominator, 0x2304) 467/* Biased integer extension. 468 See https://gcc.gnu.org/wiki/DW_AT_GNU_bias . */ 469DW_TAG (DW_AT_GNU_bias, 0x2305) 470/* UPC extension. */ 471DW_AT (DW_AT_upc_threads_scaled, 0x3210) 472/* PGI (STMicroelectronics) extensions. */ 473DW_AT (DW_AT_PGI_lbase, 0x3a00) 474DW_AT (DW_AT_PGI_soffset, 0x3a01) 475DW_AT (DW_AT_PGI_lstride, 0x3a02) 476/* Apple extensions. */ 477DW_AT (DW_AT_APPLE_optimized, 0x3fe1) 478DW_AT (DW_AT_APPLE_flags, 0x3fe2) 479DW_AT (DW_AT_APPLE_isa, 0x3fe3) 480DW_AT (DW_AT_APPLE_block, 0x3fe4) 481DW_AT (DW_AT_APPLE_major_runtime_vers, 0x3fe5) 482DW_AT (DW_AT_APPLE_runtime_class, 0x3fe6) 483DW_AT (DW_AT_APPLE_omit_frame_ptr, 0x3fe7) 484DW_AT (DW_AT_APPLE_property_name, 0x3fe8) 485DW_AT (DW_AT_APPLE_property_getter, 0x3fe9) 486DW_AT (DW_AT_APPLE_property_setter, 0x3fea) 487DW_AT (DW_AT_APPLE_property_attribute, 0x3feb) 488DW_AT (DW_AT_APPLE_objc_complete_type, 0x3fec) 489DW_AT (DW_AT_APPLE_property, 0x3fed) 490DW_END_AT 491 492DW_FIRST_OP (DW_OP_addr, 0x03) 493DW_OP (DW_OP_deref, 0x06) 494DW_OP (DW_OP_const1u, 0x08) 495DW_OP (DW_OP_const1s, 0x09) 496DW_OP (DW_OP_const2u, 0x0a) 497DW_OP (DW_OP_const2s, 0x0b) 498DW_OP (DW_OP_const4u, 0x0c) 499DW_OP (DW_OP_const4s, 0x0d) 500DW_OP (DW_OP_const8u, 0x0e) 501DW_OP (DW_OP_const8s, 0x0f) 502DW_OP (DW_OP_constu, 0x10) 503DW_OP (DW_OP_consts, 0x11) 504DW_OP (DW_OP_dup, 0x12) 505DW_OP (DW_OP_drop, 0x13) 506DW_OP (DW_OP_over, 0x14) 507DW_OP (DW_OP_pick, 0x15) 508DW_OP (DW_OP_swap, 0x16) 509DW_OP (DW_OP_rot, 0x17) 510DW_OP (DW_OP_xderef, 0x18) 511DW_OP (DW_OP_abs, 0x19) 512DW_OP (DW_OP_and, 0x1a) 513DW_OP (DW_OP_div, 0x1b) 514DW_OP (DW_OP_minus, 0x1c) 515DW_OP (DW_OP_mod, 0x1d) 516DW_OP (DW_OP_mul, 0x1e) 517DW_OP (DW_OP_neg, 0x1f) 518DW_OP (DW_OP_not, 0x20) 519DW_OP (DW_OP_or, 0x21) 520DW_OP (DW_OP_plus, 0x22) 521DW_OP (DW_OP_plus_uconst, 0x23) 522DW_OP (DW_OP_shl, 0x24) 523DW_OP (DW_OP_shr, 0x25) 524DW_OP (DW_OP_shra, 0x26) 525DW_OP (DW_OP_xor, 0x27) 526DW_OP (DW_OP_bra, 0x28) 527DW_OP (DW_OP_eq, 0x29) 528DW_OP (DW_OP_ge, 0x2a) 529DW_OP (DW_OP_gt, 0x2b) 530DW_OP (DW_OP_le, 0x2c) 531DW_OP (DW_OP_lt, 0x2d) 532DW_OP (DW_OP_ne, 0x2e) 533DW_OP (DW_OP_skip, 0x2f) 534DW_OP (DW_OP_lit0, 0x30) 535DW_OP (DW_OP_lit1, 0x31) 536DW_OP (DW_OP_lit2, 0x32) 537DW_OP (DW_OP_lit3, 0x33) 538DW_OP (DW_OP_lit4, 0x34) 539DW_OP (DW_OP_lit5, 0x35) 540DW_OP (DW_OP_lit6, 0x36) 541DW_OP (DW_OP_lit7, 0x37) 542DW_OP (DW_OP_lit8, 0x38) 543DW_OP (DW_OP_lit9, 0x39) 544DW_OP (DW_OP_lit10, 0x3a) 545DW_OP (DW_OP_lit11, 0x3b) 546DW_OP (DW_OP_lit12, 0x3c) 547DW_OP (DW_OP_lit13, 0x3d) 548DW_OP (DW_OP_lit14, 0x3e) 549DW_OP (DW_OP_lit15, 0x3f) 550DW_OP (DW_OP_lit16, 0x40) 551DW_OP (DW_OP_lit17, 0x41) 552DW_OP (DW_OP_lit18, 0x42) 553DW_OP (DW_OP_lit19, 0x43) 554DW_OP (DW_OP_lit20, 0x44) 555DW_OP (DW_OP_lit21, 0x45) 556DW_OP (DW_OP_lit22, 0x46) 557DW_OP (DW_OP_lit23, 0x47) 558DW_OP (DW_OP_lit24, 0x48) 559DW_OP (DW_OP_lit25, 0x49) 560DW_OP (DW_OP_lit26, 0x4a) 561DW_OP (DW_OP_lit27, 0x4b) 562DW_OP (DW_OP_lit28, 0x4c) 563DW_OP (DW_OP_lit29, 0x4d) 564DW_OP (DW_OP_lit30, 0x4e) 565DW_OP (DW_OP_lit31, 0x4f) 566DW_OP (DW_OP_reg0, 0x50) 567DW_OP (DW_OP_reg1, 0x51) 568DW_OP (DW_OP_reg2, 0x52) 569DW_OP (DW_OP_reg3, 0x53) 570DW_OP (DW_OP_reg4, 0x54) 571DW_OP (DW_OP_reg5, 0x55) 572DW_OP (DW_OP_reg6, 0x56) 573DW_OP (DW_OP_reg7, 0x57) 574DW_OP (DW_OP_reg8, 0x58) 575DW_OP (DW_OP_reg9, 0x59) 576DW_OP (DW_OP_reg10, 0x5a) 577DW_OP (DW_OP_reg11, 0x5b) 578DW_OP (DW_OP_reg12, 0x5c) 579DW_OP (DW_OP_reg13, 0x5d) 580DW_OP (DW_OP_reg14, 0x5e) 581DW_OP (DW_OP_reg15, 0x5f) 582DW_OP (DW_OP_reg16, 0x60) 583DW_OP (DW_OP_reg17, 0x61) 584DW_OP (DW_OP_reg18, 0x62) 585DW_OP (DW_OP_reg19, 0x63) 586DW_OP (DW_OP_reg20, 0x64) 587DW_OP (DW_OP_reg21, 0x65) 588DW_OP (DW_OP_reg22, 0x66) 589DW_OP (DW_OP_reg23, 0x67) 590DW_OP (DW_OP_reg24, 0x68) 591DW_OP (DW_OP_reg25, 0x69) 592DW_OP (DW_OP_reg26, 0x6a) 593DW_OP (DW_OP_reg27, 0x6b) 594DW_OP (DW_OP_reg28, 0x6c) 595DW_OP (DW_OP_reg29, 0x6d) 596DW_OP (DW_OP_reg30, 0x6e) 597DW_OP (DW_OP_reg31, 0x6f) 598DW_OP (DW_OP_breg0, 0x70) 599DW_OP (DW_OP_breg1, 0x71) 600DW_OP (DW_OP_breg2, 0x72) 601DW_OP (DW_OP_breg3, 0x73) 602DW_OP (DW_OP_breg4, 0x74) 603DW_OP (DW_OP_breg5, 0x75) 604DW_OP (DW_OP_breg6, 0x76) 605DW_OP (DW_OP_breg7, 0x77) 606DW_OP (DW_OP_breg8, 0x78) 607DW_OP (DW_OP_breg9, 0x79) 608DW_OP (DW_OP_breg10, 0x7a) 609DW_OP (DW_OP_breg11, 0x7b) 610DW_OP (DW_OP_breg12, 0x7c) 611DW_OP (DW_OP_breg13, 0x7d) 612DW_OP (DW_OP_breg14, 0x7e) 613DW_OP (DW_OP_breg15, 0x7f) 614DW_OP (DW_OP_breg16, 0x80) 615DW_OP (DW_OP_breg17, 0x81) 616DW_OP (DW_OP_breg18, 0x82) 617DW_OP (DW_OP_breg19, 0x83) 618DW_OP (DW_OP_breg20, 0x84) 619DW_OP (DW_OP_breg21, 0x85) 620DW_OP (DW_OP_breg22, 0x86) 621DW_OP (DW_OP_breg23, 0x87) 622DW_OP (DW_OP_breg24, 0x88) 623DW_OP (DW_OP_breg25, 0x89) 624DW_OP (DW_OP_breg26, 0x8a) 625DW_OP (DW_OP_breg27, 0x8b) 626DW_OP (DW_OP_breg28, 0x8c) 627DW_OP (DW_OP_breg29, 0x8d) 628DW_OP (DW_OP_breg30, 0x8e) 629DW_OP (DW_OP_breg31, 0x8f) 630DW_OP (DW_OP_regx, 0x90) 631DW_OP (DW_OP_fbreg, 0x91) 632DW_OP (DW_OP_bregx, 0x92) 633DW_OP (DW_OP_piece, 0x93) 634DW_OP (DW_OP_deref_size, 0x94) 635DW_OP (DW_OP_xderef_size, 0x95) 636DW_OP (DW_OP_nop, 0x96) 637/* DWARF 3 extensions. */ 638DW_OP (DW_OP_push_object_address, 0x97) 639DW_OP (DW_OP_call2, 0x98) 640DW_OP (DW_OP_call4, 0x99) 641DW_OP (DW_OP_call_ref, 0x9a) 642DW_OP (DW_OP_form_tls_address, 0x9b) 643DW_OP (DW_OP_call_frame_cfa, 0x9c) 644DW_OP (DW_OP_bit_piece, 0x9d) 645 646/* DWARF 4 extensions. */ 647DW_OP (DW_OP_implicit_value, 0x9e) 648DW_OP (DW_OP_stack_value, 0x9f) 649 650/* DWARF 5 extensions. */ 651DW_OP (DW_OP_implicit_pointer, 0xa0) 652DW_OP (DW_OP_addrx, 0xa1) 653DW_OP (DW_OP_constx, 0xa2) 654DW_OP (DW_OP_entry_value, 0xa3) 655DW_OP (DW_OP_const_type, 0xa4) 656DW_OP (DW_OP_regval_type, 0xa5) 657DW_OP (DW_OP_deref_type, 0xa6) 658DW_OP (DW_OP_xderef_type, 0xa7) 659DW_OP (DW_OP_convert, 0xa8) 660DW_OP (DW_OP_reinterpret, 0xa9) 661 662DW_OP_DUP (DW_OP_lo_user, 0xe0) /* Implementation-defined range start. */ 663DW_OP_DUP (DW_OP_hi_user, 0xff) /* Implementation-defined range end. */ 664 665/* GNU extensions. */ 666DW_OP (DW_OP_GNU_push_tls_address, 0xe0) 667/* The following is for marking variables that are uninitialized. */ 668DW_OP (DW_OP_GNU_uninit, 0xf0) 669DW_OP (DW_OP_GNU_encoded_addr, 0xf1) 670/* The GNU implicit pointer extension. 671 See http://www.dwarfstd.org/ShowIssue.php?issue=100831.1&type=open . */ 672DW_OP (DW_OP_GNU_implicit_pointer, 0xf2) 673/* The GNU entry value extension. 674 See http://www.dwarfstd.org/ShowIssue.php?issue=100909.1&type=open . */ 675DW_OP (DW_OP_GNU_entry_value, 0xf3) 676/* The GNU typed stack extension. 677 See http://www.dwarfstd.org/doc/040408.1.html . */ 678DW_OP (DW_OP_GNU_const_type, 0xf4) 679DW_OP (DW_OP_GNU_regval_type, 0xf5) 680DW_OP (DW_OP_GNU_deref_type, 0xf6) 681DW_OP (DW_OP_GNU_convert, 0xf7) 682DW_OP (DW_OP_GNU_reinterpret, 0xf9) 683/* The GNU parameter ref extension. */ 684DW_OP (DW_OP_GNU_parameter_ref, 0xfa) 685/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ 686DW_OP (DW_OP_GNU_addr_index, 0xfb) 687DW_OP (DW_OP_GNU_const_index, 0xfc) 688/* The GNU variable value extension. 689 See http://dwarfstd.org/ShowIssue.php?issue=161109.2 . */ 690DW_OP (DW_OP_GNU_variable_value, 0xfd) 691/* HP extensions. */ 692DW_OP_DUP (DW_OP_HP_unknown, 0xe0) /* Ouch, the same as GNU_push_tls_address. */ 693DW_OP (DW_OP_HP_is_value, 0xe1) 694DW_OP (DW_OP_HP_fltconst4, 0xe2) 695DW_OP (DW_OP_HP_fltconst8, 0xe3) 696DW_OP (DW_OP_HP_mod_range, 0xe4) 697DW_OP (DW_OP_HP_unmod_range, 0xe5) 698DW_OP (DW_OP_HP_tls, 0xe6) 699/* PGI (STMicroelectronics) extensions. */ 700DW_OP (DW_OP_PGI_omp_thread_num, 0xf8) 701/* AARCH64 extensions. 702 DW_OP_AARCH64_operation takes one mandatory unsigned LEB128 operand. 703 Bits[6:0] of this operand is the action code, all others bits are initialized 704 to 0 except explicitly documented for one action. Please refer AArch64 DWARF 705 ABI documentation for details. */ 706DW_OP (DW_OP_AARCH64_operation, 0xea) 707DW_END_OP 708 709DW_FIRST_ATE (DW_ATE_void, 0x0) 710DW_ATE (DW_ATE_address, 0x1) 711DW_ATE (DW_ATE_boolean, 0x2) 712DW_ATE (DW_ATE_complex_float, 0x3) 713DW_ATE (DW_ATE_float, 0x4) 714DW_ATE (DW_ATE_signed, 0x5) 715DW_ATE (DW_ATE_signed_char, 0x6) 716DW_ATE (DW_ATE_unsigned, 0x7) 717DW_ATE (DW_ATE_unsigned_char, 0x8) 718/* DWARF 3. */ 719DW_ATE (DW_ATE_imaginary_float, 0x9) 720DW_ATE (DW_ATE_packed_decimal, 0xa) 721DW_ATE (DW_ATE_numeric_string, 0xb) 722DW_ATE (DW_ATE_edited, 0xc) 723DW_ATE (DW_ATE_signed_fixed, 0xd) 724DW_ATE (DW_ATE_unsigned_fixed, 0xe) 725DW_ATE (DW_ATE_decimal_float, 0xf) 726/* DWARF 4. */ 727DW_ATE (DW_ATE_UTF, 0x10) 728/* DWARF 5. */ 729DW_ATE (DW_ATE_UCS, 0x11) 730DW_ATE (DW_ATE_ASCII, 0x12) 731 732DW_ATE_DUP (DW_ATE_lo_user, 0x80) 733DW_ATE_DUP (DW_ATE_hi_user, 0xff) 734 735/* HP extensions. */ 736DW_ATE (DW_ATE_HP_float80, 0x80) /* Floating-point (80 bit). */ 737DW_ATE (DW_ATE_HP_complex_float80, 0x81) /* Complex floating-point (80 bit). */ 738DW_ATE (DW_ATE_HP_float128, 0x82) /* Floating-point (128 bit). */ 739DW_ATE (DW_ATE_HP_complex_float128, 0x83) /* Complex fp (128 bit). */ 740DW_ATE (DW_ATE_HP_floathpintel, 0x84) /* Floating-point (82 bit IA64). */ 741DW_ATE (DW_ATE_HP_imaginary_float80, 0x85) 742DW_ATE (DW_ATE_HP_imaginary_float128, 0x86) 743DW_ATE (DW_ATE_HP_VAX_float, 0x88) /* F or G floating. */ 744DW_ATE (DW_ATE_HP_VAX_float_d, 0x89) /* D floating. */ 745DW_ATE (DW_ATE_HP_packed_decimal, 0x8a) /* Cobol. */ 746DW_ATE (DW_ATE_HP_zoned_decimal, 0x8b) /* Cobol. */ 747DW_ATE (DW_ATE_HP_edited, 0x8c) /* Cobol. */ 748DW_ATE (DW_ATE_HP_signed_fixed, 0x8d) /* Cobol. */ 749DW_ATE (DW_ATE_HP_unsigned_fixed, 0x8e) /* Cobol. */ 750DW_ATE (DW_ATE_HP_VAX_complex_float, 0x8f) /* F or G floating complex. */ 751DW_ATE (DW_ATE_HP_VAX_complex_float_d, 0x90) /* D floating complex. */ 752 753DW_END_ATE 754 755DW_FIRST_CFA (DW_CFA_advance_loc, 0x40) 756DW_CFA (DW_CFA_offset, 0x80) 757DW_CFA (DW_CFA_restore, 0xc0) 758DW_CFA (DW_CFA_nop, 0x00) 759DW_CFA (DW_CFA_set_loc, 0x01) 760DW_CFA (DW_CFA_advance_loc1, 0x02) 761DW_CFA (DW_CFA_advance_loc2, 0x03) 762DW_CFA (DW_CFA_advance_loc4, 0x04) 763DW_CFA (DW_CFA_offset_extended, 0x05) 764DW_CFA (DW_CFA_restore_extended, 0x06) 765DW_CFA (DW_CFA_undefined, 0x07) 766DW_CFA (DW_CFA_same_value, 0x08) 767DW_CFA (DW_CFA_register, 0x09) 768DW_CFA (DW_CFA_remember_state, 0x0a) 769DW_CFA (DW_CFA_restore_state, 0x0b) 770DW_CFA (DW_CFA_def_cfa, 0x0c) 771DW_CFA (DW_CFA_def_cfa_register, 0x0d) 772DW_CFA (DW_CFA_def_cfa_offset, 0x0e) 773/* DWARF 3. */ 774DW_CFA (DW_CFA_def_cfa_expression, 0x0f) 775DW_CFA (DW_CFA_expression, 0x10) 776DW_CFA (DW_CFA_offset_extended_sf, 0x11) 777DW_CFA (DW_CFA_def_cfa_sf, 0x12) 778DW_CFA (DW_CFA_def_cfa_offset_sf, 0x13) 779DW_CFA (DW_CFA_val_offset, 0x14) 780DW_CFA (DW_CFA_val_offset_sf, 0x15) 781DW_CFA (DW_CFA_val_expression, 0x16) 782 783DW_CFA (DW_CFA_lo_user, 0x1c) 784DW_CFA (DW_CFA_hi_user, 0x3f) 785 786/* SGI/MIPS specific. */ 787DW_CFA (DW_CFA_MIPS_advance_loc8, 0x1d) 788/* GNU extensions. 789 NOTE: DW_CFA_GNU_window_save is multiplexed on Sparc and AArch64. */ 790DW_CFA (DW_CFA_GNU_window_save, 0x2d) 791DW_CFA_DUP (DW_CFA_AARCH64_negate_ra_state, 0x2d) 792DW_CFA (DW_CFA_GNU_args_size, 0x2e) 793DW_CFA (DW_CFA_GNU_negative_offset_extended, 0x2f) 794 795DW_END_CFA 796 797/* Index attributes in the Abbreviations Table. */ 798DW_FIRST_IDX (DW_IDX_compile_unit, 1) 799DW_IDX (DW_IDX_type_unit, 2) 800DW_IDX (DW_IDX_die_offset, 3) 801DW_IDX (DW_IDX_parent, 4) 802DW_IDX (DW_IDX_type_hash, 5) 803DW_IDX_DUP (DW_IDX_lo_user, 0x2000) 804DW_IDX (DW_IDX_hi_user, 0x3fff) 805DW_IDX (DW_IDX_GNU_internal, 0x2000) 806DW_IDX (DW_IDX_GNU_external, 0x2001) 807DW_END_IDX 808 809/* DWARF5 Unit type header encodings */ 810DW_FIRST_UT (DW_UT_compile, 0x01) 811DW_UT (DW_UT_type, 0x02) 812DW_UT (DW_UT_partial, 0x03) 813DW_UT (DW_UT_skeleton, 0x04) 814DW_UT (DW_UT_split_compile, 0x05) 815DW_UT (DW_UT_split_type, 0x06) 816DW_UT (DW_UT_lo_user, 0x80) 817DW_UT (DW_UT_hi_user, 0xff) 818DW_END_UT 819