xref: /titanic_44/usr/src/tools/ctf/dwarf/common/dwarf.h (revision 07dc1947c362e187fb955d283b692f8769dd5def)
149d3bc91SRichard Lowe /*
2*07dc1947SRichard Lowe   Copyright (C) 2000,2001,2003,2004,2005,2006 Silicon Graphics, Inc.  All Rights Reserved.
3*07dc1947SRichard Lowe   Portions Copyright 2002-2010 Sun Microsystems, Inc. All rights reserved.
4*07dc1947SRichard Lowe   Portions Copyright 2007-2010 David Anderson. All rights reserved.
549d3bc91SRichard Lowe 
649d3bc91SRichard Lowe   This program is free software; you can redistribute it and/or modify it
749d3bc91SRichard Lowe   under the terms of version 2.1 of the GNU Lesser General Public License
849d3bc91SRichard Lowe   as published by the Free Software Foundation.
949d3bc91SRichard Lowe 
1049d3bc91SRichard Lowe   This program is distributed in the hope that it would be useful, but
1149d3bc91SRichard Lowe   WITHOUT ANY WARRANTY; without even the implied warranty of
1249d3bc91SRichard Lowe   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1349d3bc91SRichard Lowe 
1449d3bc91SRichard Lowe   Further, this software is distributed without any warranty that it is
1549d3bc91SRichard Lowe   free of the rightful claim of any third person regarding infringement
1649d3bc91SRichard Lowe   or the like.  Any license provided herein, whether implied or
1749d3bc91SRichard Lowe   otherwise, applies only to this software file.  Patent licenses, if
1849d3bc91SRichard Lowe   any, provided herein do not apply to combinations of this program with
1949d3bc91SRichard Lowe   other software, or any other product whatsoever.
2049d3bc91SRichard Lowe 
2149d3bc91SRichard Lowe   You should have received a copy of the GNU Lesser General Public
2249d3bc91SRichard Lowe   License along with this program; if not, write the Free Software
23*07dc1947SRichard Lowe   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
2449d3bc91SRichard Lowe   USA.
2549d3bc91SRichard Lowe 
26*07dc1947SRichard Lowe   Contact information:  Silicon Graphics, Inc., 1500 Crittenden Lane,
2749d3bc91SRichard Lowe   Mountain View, CA 94043, or:
2849d3bc91SRichard Lowe 
2949d3bc91SRichard Lowe   http://www.sgi.com
3049d3bc91SRichard Lowe 
3149d3bc91SRichard Lowe   For further information regarding this notice, see:
3249d3bc91SRichard Lowe 
3349d3bc91SRichard Lowe   http://oss.sgi.com/projects/GenInfo/NoticeExplan
3449d3bc91SRichard Lowe 
3549d3bc91SRichard Lowe */
3649d3bc91SRichard Lowe 
3749d3bc91SRichard Lowe 
3849d3bc91SRichard Lowe #ifndef __DWARF_H
3949d3bc91SRichard Lowe #define __DWARF_H
4049d3bc91SRichard Lowe #ifdef __cplusplus
4149d3bc91SRichard Lowe extern "C" {
4249d3bc91SRichard Lowe #endif
4349d3bc91SRichard Lowe 
4449d3bc91SRichard Lowe /*
4549d3bc91SRichard Lowe         dwarf.h   DWARF  debugging information values
46*07dc1947SRichard Lowe         $Revision: 1.41 $    $Date: 2006/04/17 00:09:56 $
4749d3bc91SRichard Lowe 
4849d3bc91SRichard Lowe         The comment "DWARF3" appears where there are
49*07dc1947SRichard Lowe         new entries from DWARF3 as of 2004, "DWARF3f"
50*07dc1947SRichard Lowe         where there are new entries as of the November 2005
51*07dc1947SRichard Lowe         public review document and other comments apply
52*07dc1947SRichard Lowe         where extension entries appear.
53*07dc1947SRichard Lowe 
54*07dc1947SRichard Lowe         Extensions part of DWARF4 are marked DWARF4.
55*07dc1947SRichard Lowe 
56*07dc1947SRichard Lowe         A few extension names have omitted the 'vendor id'
57*07dc1947SRichard Lowe         (See chapter 7, "Vendor Extensibility"). Please
58*07dc1947SRichard Lowe         always use a 'vendor id' string in extension names.
59*07dc1947SRichard Lowe 
60*07dc1947SRichard Lowe         Vendors should use a vendor string in names and
61*07dc1947SRichard Lowe         whereever possible avoid duplicating values used by
62*07dc1947SRichard Lowe         other vendor extensions
6349d3bc91SRichard Lowe 
6449d3bc91SRichard Lowe */
6549d3bc91SRichard Lowe 
6649d3bc91SRichard Lowe 
6749d3bc91SRichard Lowe #define DW_TAG_array_type               0x01
6849d3bc91SRichard Lowe #define DW_TAG_class_type               0x02
6949d3bc91SRichard Lowe #define DW_TAG_entry_point              0x03
7049d3bc91SRichard Lowe #define DW_TAG_enumeration_type         0x04
7149d3bc91SRichard Lowe #define DW_TAG_formal_parameter         0x05
7249d3bc91SRichard Lowe #define DW_TAG_imported_declaration     0x08
7349d3bc91SRichard Lowe #define DW_TAG_label                    0x0a
7449d3bc91SRichard Lowe #define DW_TAG_lexical_block            0x0b
7549d3bc91SRichard Lowe #define DW_TAG_member                   0x0d
7649d3bc91SRichard Lowe #define DW_TAG_pointer_type             0x0f
7749d3bc91SRichard Lowe #define DW_TAG_reference_type           0x10
7849d3bc91SRichard Lowe #define DW_TAG_compile_unit             0x11
7949d3bc91SRichard Lowe #define DW_TAG_string_type              0x12
8049d3bc91SRichard Lowe #define DW_TAG_structure_type           0x13
8149d3bc91SRichard Lowe #define DW_TAG_subroutine_type          0x15
8249d3bc91SRichard Lowe #define DW_TAG_typedef                  0x16
8349d3bc91SRichard Lowe #define DW_TAG_union_type               0x17
8449d3bc91SRichard Lowe #define DW_TAG_unspecified_parameters   0x18
8549d3bc91SRichard Lowe #define DW_TAG_variant                  0x19
8649d3bc91SRichard Lowe #define DW_TAG_common_block             0x1a
8749d3bc91SRichard Lowe #define DW_TAG_common_inclusion         0x1b
8849d3bc91SRichard Lowe #define DW_TAG_inheritance              0x1c
8949d3bc91SRichard Lowe #define DW_TAG_inlined_subroutine       0x1d
9049d3bc91SRichard Lowe #define DW_TAG_module                   0x1e
9149d3bc91SRichard Lowe #define DW_TAG_ptr_to_member_type       0x1f
9249d3bc91SRichard Lowe #define DW_TAG_set_type                 0x20
9349d3bc91SRichard Lowe #define DW_TAG_subrange_type            0x21
9449d3bc91SRichard Lowe #define DW_TAG_with_stmt                0x22
9549d3bc91SRichard Lowe #define DW_TAG_access_declaration       0x23
9649d3bc91SRichard Lowe #define DW_TAG_base_type                0x24
9749d3bc91SRichard Lowe #define DW_TAG_catch_block              0x25
9849d3bc91SRichard Lowe #define DW_TAG_const_type               0x26
9949d3bc91SRichard Lowe #define DW_TAG_constant                 0x27
10049d3bc91SRichard Lowe #define DW_TAG_enumerator               0x28
10149d3bc91SRichard Lowe #define DW_TAG_file_type                0x29
10249d3bc91SRichard Lowe #define DW_TAG_friend                   0x2a
10349d3bc91SRichard Lowe #define DW_TAG_namelist                 0x2b
104*07dc1947SRichard Lowe         /* Early releases of this header had the following
10549d3bc91SRichard Lowe            misspelled with a trailing 's' */
10649d3bc91SRichard Lowe #define DW_TAG_namelist_item            0x2c /* DWARF3/2 spelling */
10749d3bc91SRichard Lowe #define DW_TAG_namelist_items           0x2c /* SGI misspelling/typo */
10849d3bc91SRichard Lowe #define DW_TAG_packed_type              0x2d
10949d3bc91SRichard Lowe #define DW_TAG_subprogram               0x2e
11049d3bc91SRichard Lowe         /* The DWARF2 document had two spellings of the following
11149d3bc91SRichard Lowe            two TAGs, DWARF3 specifies the longer spelling. */
11249d3bc91SRichard Lowe #define DW_TAG_template_type_parameter  0x2f /* DWARF3/2 spelling*/
11349d3bc91SRichard Lowe #define DW_TAG_template_type_param      0x2f /* DWARF2   spelling*/
11449d3bc91SRichard Lowe #define DW_TAG_template_value_parameter 0x30 /* DWARF3/2 spelling*/
11549d3bc91SRichard Lowe #define DW_TAG_template_value_param     0x30 /* DWARF2   spelling*/
11649d3bc91SRichard Lowe #define DW_TAG_thrown_type              0x31
11749d3bc91SRichard Lowe #define DW_TAG_try_block                0x32
11849d3bc91SRichard Lowe #define DW_TAG_variant_part             0x33
11949d3bc91SRichard Lowe #define DW_TAG_variable                 0x34
12049d3bc91SRichard Lowe #define DW_TAG_volatile_type            0x35
12149d3bc91SRichard Lowe #define DW_TAG_dwarf_procedure          0x36  /* DWARF3 */
12249d3bc91SRichard Lowe #define DW_TAG_restrict_type            0x37  /* DWARF3 */
12349d3bc91SRichard Lowe #define DW_TAG_interface_type           0x38  /* DWARF3 */
12449d3bc91SRichard Lowe #define DW_TAG_namespace                0x39  /* DWARF3 */
12549d3bc91SRichard Lowe #define DW_TAG_imported_module          0x3a  /* DWARF3 */
12649d3bc91SRichard Lowe #define DW_TAG_unspecified_type         0x3b  /* DWARF3 */
12749d3bc91SRichard Lowe #define DW_TAG_partial_unit             0x3c  /* DWARF3 */
12849d3bc91SRichard Lowe #define DW_TAG_imported_unit            0x3d  /* DWARF3 */
129*07dc1947SRichard Lowe         /* Do not use DW_TAG_mutable_type */
130*07dc1947SRichard Lowe #define DW_TAG_mutable_type 0x3e /* Withdrawn from DWARF3 by DWARF3f. */
131*07dc1947SRichard Lowe #define DW_TAG_condition                0x3f  /* DWARF3f */
132*07dc1947SRichard Lowe #define DW_TAG_shared_type              0x40  /* DWARF3f */
133*07dc1947SRichard Lowe #define DW_TAG_type_unit                0x41  /* DWARF4 */
134*07dc1947SRichard Lowe #define DW_TAG_rvalue_reference_type    0x42  /* DWARF4 */
135*07dc1947SRichard Lowe #define DW_TAG_template_alias           0x43  /* DWARF4 */
13649d3bc91SRichard Lowe #define DW_TAG_lo_user                  0x4080
137*07dc1947SRichard Lowe 
13849d3bc91SRichard Lowe #define DW_TAG_MIPS_loop                0x4081
13949d3bc91SRichard Lowe 
140*07dc1947SRichard Lowe /* HP extensions: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz  */
141*07dc1947SRichard Lowe #define DW_TAG_HP_array_descriptor      0x4090 /* HP */
14249d3bc91SRichard Lowe 
143*07dc1947SRichard Lowe /* GNU extensions.  The first 3 missing the GNU_. */
144*07dc1947SRichard Lowe #define DW_TAG_format_label             0x4101 /* GNU. Fortran. */
145*07dc1947SRichard Lowe #define DW_TAG_function_template        0x4102 /* GNU. For C++ */
146*07dc1947SRichard Lowe #define DW_TAG_class_template           0x4103 /* GNU. For C++ */
147*07dc1947SRichard Lowe #define DW_TAG_GNU_BINCL                0x4104 /* GNU */
148*07dc1947SRichard Lowe #define DW_TAG_GNU_EINCL                0x4105 /* GNU */
149*07dc1947SRichard Lowe 
150*07dc1947SRichard Lowe 
151*07dc1947SRichard Lowe /* GNU extension. http://gcc.gnu.org/wiki/TemplateParmsDwarf */
152*07dc1947SRichard Lowe #define DW_TAG_GNU_template_template_parameter  0x4106 /* GNU */
153*07dc1947SRichard Lowe #define DW_TAG_GNU_template_template_param      0x4106 /* GNU */
154*07dc1947SRichard Lowe #define DW_TAG_GNU_template_parameter_pack      0x4107 /* GNU */
155*07dc1947SRichard Lowe #define DW_TAG_GNU_formal_parameter_pack        0x4108 /* GNU */
156*07dc1947SRichard Lowe 
157*07dc1947SRichard Lowe /* ALTIUM extensions */
158*07dc1947SRichard Lowe     /* DSP-C/Starcore __circ qualifier */
159*07dc1947SRichard Lowe #define DW_TAG_ALTIUM_circ_type         0x5101 /* ALTIUM */
160*07dc1947SRichard Lowe     /* Starcore __mwa_circ qualifier */
161*07dc1947SRichard Lowe #define DW_TAG_ALTIUM_mwa_circ_type     0x5102 /* ALTIUM */
162*07dc1947SRichard Lowe     /* Starcore __rev_carry qualifier */
163*07dc1947SRichard Lowe #define DW_TAG_ALTIUM_rev_carry_type    0x5103 /* ALTIUM */
164*07dc1947SRichard Lowe     /* M16 __rom qualifier */
165*07dc1947SRichard Lowe #define DW_TAG_ALTIUM_rom               0x5111 /* ALTIUM */
16649d3bc91SRichard Lowe 
16749d3bc91SRichard Lowe /* The following 3 are extensions to support UPC */
16849d3bc91SRichard Lowe #define DW_TAG_upc_shared_type          0x8765 /* UPC */
16949d3bc91SRichard Lowe #define DW_TAG_upc_strict_type          0x8766 /* UPC */
17049d3bc91SRichard Lowe #define DW_TAG_upc_relaxed_type         0x8767 /* UPC */
17149d3bc91SRichard Lowe 
172*07dc1947SRichard Lowe /* PGI (STMicroelectronics) extensions. */
173*07dc1947SRichard Lowe #define DW_TAG_PGI_kanji_type           0xa000 /* PGI */
174*07dc1947SRichard Lowe #define DW_TAG_PGI_interface_block      0xa020 /* PGI */
175*07dc1947SRichard Lowe /* The following are SUN extensions */
176*07dc1947SRichard Lowe #define DW_TAG_SUN_function_template    0x4201 /* SUN */
177*07dc1947SRichard Lowe #define DW_TAG_SUN_class_template       0x4202 /* SUN */
178*07dc1947SRichard Lowe #define DW_TAG_SUN_struct_template      0x4203 /* SUN */
179*07dc1947SRichard Lowe #define DW_TAG_SUN_union_template       0x4204 /* SUN */
180*07dc1947SRichard Lowe #define DW_TAG_SUN_indirect_inheritance 0x4205 /* SUN */
181*07dc1947SRichard Lowe #define DW_TAG_SUN_codeflags            0x4206 /* SUN */
182*07dc1947SRichard Lowe #define DW_TAG_SUN_memop_info           0x4207 /* SUN */
183*07dc1947SRichard Lowe #define DW_TAG_SUN_omp_child_func       0x4208 /* SUN */
184*07dc1947SRichard Lowe #define DW_TAG_SUN_rtti_descriptor      0x4209 /* SUN */
185*07dc1947SRichard Lowe #define DW_TAG_SUN_dtor_info            0x420a /* SUN */
186*07dc1947SRichard Lowe #define DW_TAG_SUN_dtor                 0x420b /* SUN */
187*07dc1947SRichard Lowe #define DW_TAG_SUN_f90_interface        0x420c /* SUN */
188*07dc1947SRichard Lowe #define DW_TAG_SUN_fortran_vax_structure 0x420d /* SUN */
189*07dc1947SRichard Lowe #define DW_TAG_SUN_hi                   0x42ff /* SUN */
190*07dc1947SRichard Lowe 
191*07dc1947SRichard Lowe 
192*07dc1947SRichard Lowe #define DW_TAG_hi_user                  0xffff
193*07dc1947SRichard Lowe 
19449d3bc91SRichard Lowe #define DW_children_no                  0
19549d3bc91SRichard Lowe #define DW_children_yes                 1
19649d3bc91SRichard Lowe 
19749d3bc91SRichard Lowe 
19849d3bc91SRichard Lowe 
19949d3bc91SRichard Lowe #define DW_FORM_addr                    0x01
20049d3bc91SRichard Lowe #define DW_FORM_block2                  0x03
20149d3bc91SRichard Lowe #define DW_FORM_block4                  0x04
20249d3bc91SRichard Lowe #define DW_FORM_data2                   0x05
20349d3bc91SRichard Lowe #define DW_FORM_data4                   0x06
20449d3bc91SRichard Lowe #define DW_FORM_data8                   0x07
20549d3bc91SRichard Lowe #define DW_FORM_string                  0x08
20649d3bc91SRichard Lowe #define DW_FORM_block                   0x09
20749d3bc91SRichard Lowe #define DW_FORM_block1                  0x0a
20849d3bc91SRichard Lowe #define DW_FORM_data1                   0x0b
20949d3bc91SRichard Lowe #define DW_FORM_flag                    0x0c
21049d3bc91SRichard Lowe #define DW_FORM_sdata                   0x0d
21149d3bc91SRichard Lowe #define DW_FORM_strp                    0x0e
21249d3bc91SRichard Lowe #define DW_FORM_udata                   0x0f
21349d3bc91SRichard Lowe #define DW_FORM_ref_addr                0x10
21449d3bc91SRichard Lowe #define DW_FORM_ref1                    0x11
21549d3bc91SRichard Lowe #define DW_FORM_ref2                    0x12
21649d3bc91SRichard Lowe #define DW_FORM_ref4                    0x13
21749d3bc91SRichard Lowe #define DW_FORM_ref8                    0x14
21849d3bc91SRichard Lowe #define DW_FORM_ref_udata               0x15
21949d3bc91SRichard Lowe #define DW_FORM_indirect                0x16
220*07dc1947SRichard Lowe #define DW_FORM_sec_offset              0x17 /* DWARF4 */
221*07dc1947SRichard Lowe #define DW_FORM_exprloc                 0x18 /* DWARF4 */
222*07dc1947SRichard Lowe #define DW_FORM_flag_present            0x19 /* DWARF4 */
223*07dc1947SRichard Lowe /* 0x1a thru 0x1f were left unused accidentally. Reserved for future use. */
224*07dc1947SRichard Lowe #define DW_FORM_ref_sig8                0x20 /* DWARF4 */
22549d3bc91SRichard Lowe 
22649d3bc91SRichard Lowe #define DW_AT_sibling                           0x01
22749d3bc91SRichard Lowe #define DW_AT_location                          0x02
22849d3bc91SRichard Lowe #define DW_AT_name                              0x03
22949d3bc91SRichard Lowe #define DW_AT_ordering                          0x09
23049d3bc91SRichard Lowe #define DW_AT_subscr_data                       0x0a
23149d3bc91SRichard Lowe #define DW_AT_byte_size                         0x0b
23249d3bc91SRichard Lowe #define DW_AT_bit_offset                        0x0c
23349d3bc91SRichard Lowe #define DW_AT_bit_size                          0x0d
23449d3bc91SRichard Lowe #define DW_AT_element_list                      0x0f
23549d3bc91SRichard Lowe #define DW_AT_stmt_list                         0x10
23649d3bc91SRichard Lowe #define DW_AT_low_pc                            0x11
23749d3bc91SRichard Lowe #define DW_AT_high_pc                           0x12
23849d3bc91SRichard Lowe #define DW_AT_language                          0x13
23949d3bc91SRichard Lowe #define DW_AT_member                            0x14
24049d3bc91SRichard Lowe #define DW_AT_discr                             0x15
24149d3bc91SRichard Lowe #define DW_AT_discr_value                       0x16
24249d3bc91SRichard Lowe #define DW_AT_visibility                        0x17
24349d3bc91SRichard Lowe #define DW_AT_import                            0x18
24449d3bc91SRichard Lowe #define DW_AT_string_length                     0x19
24549d3bc91SRichard Lowe #define DW_AT_common_reference                  0x1a
24649d3bc91SRichard Lowe #define DW_AT_comp_dir                          0x1b
24749d3bc91SRichard Lowe #define DW_AT_const_value                       0x1c
24849d3bc91SRichard Lowe #define DW_AT_containing_type                   0x1d
24949d3bc91SRichard Lowe #define DW_AT_default_value                     0x1e
25049d3bc91SRichard Lowe #define DW_AT_inline                            0x20
25149d3bc91SRichard Lowe #define DW_AT_is_optional                       0x21
25249d3bc91SRichard Lowe #define DW_AT_lower_bound                       0x22
25349d3bc91SRichard Lowe #define DW_AT_producer                          0x25
25449d3bc91SRichard Lowe #define DW_AT_prototyped                        0x27
25549d3bc91SRichard Lowe #define DW_AT_return_addr                       0x2a
25649d3bc91SRichard Lowe #define DW_AT_start_scope                       0x2c
257*07dc1947SRichard Lowe #define DW_AT_bit_stride                        0x2e /* DWARF3 name */
258*07dc1947SRichard Lowe #define DW_AT_stride_size                       0x2e /* DWARF2 name */
25949d3bc91SRichard Lowe #define DW_AT_upper_bound                       0x2f
26049d3bc91SRichard Lowe #define DW_AT_abstract_origin                   0x31
26149d3bc91SRichard Lowe #define DW_AT_accessibility                     0x32
26249d3bc91SRichard Lowe #define DW_AT_address_class                     0x33
26349d3bc91SRichard Lowe #define DW_AT_artificial                        0x34
26449d3bc91SRichard Lowe #define DW_AT_base_types                        0x35
26549d3bc91SRichard Lowe #define DW_AT_calling_convention                0x36
26649d3bc91SRichard Lowe #define DW_AT_count                             0x37
26749d3bc91SRichard Lowe #define DW_AT_data_member_location              0x38
26849d3bc91SRichard Lowe #define DW_AT_decl_column                       0x39
26949d3bc91SRichard Lowe #define DW_AT_decl_file                         0x3a
27049d3bc91SRichard Lowe #define DW_AT_decl_line                         0x3b
27149d3bc91SRichard Lowe #define DW_AT_declaration                       0x3c
27249d3bc91SRichard Lowe #define DW_AT_discr_list                        0x3d
27349d3bc91SRichard Lowe #define DW_AT_encoding                          0x3e
27449d3bc91SRichard Lowe #define DW_AT_external                          0x3f
27549d3bc91SRichard Lowe #define DW_AT_frame_base                        0x40
27649d3bc91SRichard Lowe #define DW_AT_friend                            0x41
27749d3bc91SRichard Lowe #define DW_AT_identifier_case                   0x42
27849d3bc91SRichard Lowe #define DW_AT_macro_info                        0x43
27949d3bc91SRichard Lowe #define DW_AT_namelist_item                     0x44
28049d3bc91SRichard Lowe #define DW_AT_priority                          0x45
28149d3bc91SRichard Lowe #define DW_AT_segment                           0x46
28249d3bc91SRichard Lowe #define DW_AT_specification                     0x47
28349d3bc91SRichard Lowe #define DW_AT_static_link                       0x48
28449d3bc91SRichard Lowe #define DW_AT_type                              0x49
28549d3bc91SRichard Lowe #define DW_AT_use_location                      0x4a
28649d3bc91SRichard Lowe #define DW_AT_variable_parameter                0x4b
28749d3bc91SRichard Lowe #define DW_AT_virtuality                        0x4c
28849d3bc91SRichard Lowe #define DW_AT_vtable_elem_location              0x4d
28949d3bc91SRichard Lowe #define DW_AT_allocated                         0x4e /* DWARF3 */
29049d3bc91SRichard Lowe #define DW_AT_associated                        0x4f /* DWARF3 */
29149d3bc91SRichard Lowe #define DW_AT_data_location                     0x50 /* DWARF3 */
292*07dc1947SRichard Lowe #define DW_AT_byte_stride                       0x51 /* DWARF3f */
293*07dc1947SRichard Lowe #define DW_AT_stride                            0x51 /* DWARF3 (do not use) */
29449d3bc91SRichard Lowe #define DW_AT_entry_pc                          0x52 /* DWARF3 */
29549d3bc91SRichard Lowe #define DW_AT_use_UTF8                          0x53 /* DWARF3 */
29649d3bc91SRichard Lowe #define DW_AT_extension                         0x54 /* DWARF3 */
29749d3bc91SRichard Lowe #define DW_AT_ranges                            0x55 /* DWARF3 */
29849d3bc91SRichard Lowe #define DW_AT_trampoline                        0x56 /* DWARF3 */
29949d3bc91SRichard Lowe #define DW_AT_call_column                       0x57 /* DWARF3 */
30049d3bc91SRichard Lowe #define DW_AT_call_file                         0x58 /* DWARF3 */
30149d3bc91SRichard Lowe #define DW_AT_call_line                         0x59 /* DWARF3 */
30249d3bc91SRichard Lowe #define DW_AT_description                       0x5a /* DWARF3 */
303*07dc1947SRichard Lowe #define DW_AT_binary_scale                      0x5b /* DWARF3f */
304*07dc1947SRichard Lowe #define DW_AT_decimal_scale                     0x5c /* DWARF3f */
305*07dc1947SRichard Lowe #define DW_AT_small                             0x5d /* DWARF3f */
306*07dc1947SRichard Lowe #define DW_AT_decimal_sign                      0x5e /* DWARF3f */
307*07dc1947SRichard Lowe #define DW_AT_digit_count                       0x5f /* DWARF3f */
308*07dc1947SRichard Lowe #define DW_AT_picture_string                    0x60 /* DWARF3f */
309*07dc1947SRichard Lowe #define DW_AT_mutable                           0x61 /* DWARF3f */
310*07dc1947SRichard Lowe #define DW_AT_threads_scaled                    0x62 /* DWARF3f */
311*07dc1947SRichard Lowe #define DW_AT_explicit                          0x63 /* DWARF3f */
312*07dc1947SRichard Lowe #define DW_AT_object_pointer                    0x64 /* DWARF3f */
313*07dc1947SRichard Lowe #define DW_AT_endianity                         0x65 /* DWARF3f */
314*07dc1947SRichard Lowe #define DW_AT_elemental                         0x66 /* DWARF3f */
315*07dc1947SRichard Lowe #define DW_AT_pure                              0x67 /* DWARF3f */
316*07dc1947SRichard Lowe #define DW_AT_recursive                         0x68 /* DWARF3f */
317*07dc1947SRichard Lowe #define DW_AT_signature                         0x69 /* DWARF4 */
318*07dc1947SRichard Lowe #define DW_AT_main_subprogram                   0x6a /* DWARF4 */
319*07dc1947SRichard Lowe #define DW_AT_data_bit_offset                   0x6b /* DWARF4 */
320*07dc1947SRichard Lowe #define DW_AT_const_expr                        0x6c /* DWARF4 */
321*07dc1947SRichard Lowe #define DW_AT_enum_class                        0x6d /* DWARF4 */
322*07dc1947SRichard Lowe #define DW_AT_linkage_name                      0x6e /* DWARF4 */
323*07dc1947SRichard Lowe 
324*07dc1947SRichard Lowe /* In extensions, we attempt to include the vendor extension
325*07dc1947SRichard Lowe    in the name even when the vendor leaves it out. */
326*07dc1947SRichard Lowe 
327*07dc1947SRichard Lowe /* HP extensions. */
328*07dc1947SRichard Lowe #define DW_AT_HP_block_index                    0x2000  /* HP */
329*07dc1947SRichard Lowe 
330*07dc1947SRichard Lowe /* Follows extension so dwarfdump prints the most-likely-useful name. */
33149d3bc91SRichard Lowe #define DW_AT_lo_user                           0x2000
33249d3bc91SRichard Lowe 
333*07dc1947SRichard Lowe #define DW_AT_MIPS_fde                          0x2001 /* MIPS/SGI */
334*07dc1947SRichard Lowe #define DW_AT_MIPS_loop_begin                   0x2002 /* MIPS/SGI */
335*07dc1947SRichard Lowe #define DW_AT_MIPS_tail_loop_begin              0x2003 /* MIPS/SGI */
336*07dc1947SRichard Lowe #define DW_AT_MIPS_epilog_begin                 0x2004 /* MIPS/SGI */
337*07dc1947SRichard Lowe #define DW_AT_MIPS_loop_unroll_factor           0x2005 /* MIPS/SGI */
338*07dc1947SRichard Lowe #define DW_AT_MIPS_software_pipeline_depth      0x2006 /* MIPS/SGI */
339*07dc1947SRichard Lowe #define DW_AT_MIPS_linkage_name                 0x2007 /* MIPS/SGI, GNU, and others.*/
340*07dc1947SRichard Lowe #define DW_AT_MIPS_stride                       0x2008 /* MIPS/SGI */
341*07dc1947SRichard Lowe #define DW_AT_MIPS_abstract_name                0x2009 /* MIPS/SGI */
342*07dc1947SRichard Lowe #define DW_AT_MIPS_clone_origin                 0x200a /* MIPS/SGI */
343*07dc1947SRichard Lowe #define DW_AT_MIPS_has_inlines                  0x200b /* MIPS/SGI */
344*07dc1947SRichard Lowe #define DW_AT_MIPS_stride_byte                  0x200c /* MIPS/SGI */
345*07dc1947SRichard Lowe #define DW_AT_MIPS_stride_elem                  0x200d /* MIPS/SGI */
346*07dc1947SRichard Lowe #define DW_AT_MIPS_ptr_dopetype                 0x200e /* MIPS/SGI */
347*07dc1947SRichard Lowe #define DW_AT_MIPS_allocatable_dopetype         0x200f /* MIPS/SGI */
348*07dc1947SRichard Lowe #define DW_AT_MIPS_assumed_shape_dopetype       0x2010 /* MIPS/SGI */
349*07dc1947SRichard Lowe #define DW_AT_MIPS_assumed_size                 0x2011 /* MIPS/SGI */
35049d3bc91SRichard Lowe 
351*07dc1947SRichard Lowe /* HP extensions. */
352*07dc1947SRichard Lowe #define DW_AT_HP_unmodifiable                   0x2001 /* conflict: MIPS */
353*07dc1947SRichard Lowe #define DW_AT_HP_actuals_stmt_list              0x2010 /* conflict: MIPS */
354*07dc1947SRichard Lowe #define DW_AT_HP_proc_per_section               0x2011 /* conflict: MIPS */
355*07dc1947SRichard Lowe #define DW_AT_HP_raw_data_ptr                   0x2012 /* HP */
356*07dc1947SRichard Lowe #define DW_AT_HP_pass_by_reference              0x2013 /* HP */
357*07dc1947SRichard Lowe #define DW_AT_HP_opt_level                      0x2014 /* HP */
358*07dc1947SRichard Lowe #define DW_AT_HP_prof_version_id                0x2015 /* HP */
359*07dc1947SRichard Lowe #define DW_AT_HP_opt_flags                      0x2016 /* HP */
360*07dc1947SRichard Lowe #define DW_AT_HP_cold_region_low_pc             0x2017 /* HP */
361*07dc1947SRichard Lowe #define DW_AT_HP_cold_region_high_pc            0x2018 /* HP */
362*07dc1947SRichard Lowe #define DW_AT_HP_all_variables_modifiable       0x2019 /* HP */
363*07dc1947SRichard Lowe #define DW_AT_HP_linkage_name                   0x201a /* HP */
364*07dc1947SRichard Lowe #define DW_AT_HP_prof_flags                     0x201b /* HP */
365*07dc1947SRichard Lowe 
366*07dc1947SRichard Lowe #define DW_AT_CPQ_discontig_ranges              0x2001 /* COMPAQ/HP */
367*07dc1947SRichard Lowe #define DW_AT_CPQ_semantic_events               0x2002 /* COMPAQ/HP */
368*07dc1947SRichard Lowe #define DW_AT_CPQ_split_lifetimes_var           0x2003 /* COMPAQ/HP */
369*07dc1947SRichard Lowe #define DW_AT_CPQ_split_lifetimes_rtn           0x2004 /* COMPAQ/HP */
370*07dc1947SRichard Lowe #define DW_AT_CPQ_prologue_length               0x2005 /* COMPAQ/HP */
371*07dc1947SRichard Lowe 
372*07dc1947SRichard Lowe #define DW_AT_INTEL_other_endian                0x2026 /* Intel, 1 if byte swapped. */
373*07dc1947SRichard Lowe 
374*07dc1947SRichard Lowe /* GNU extensions. */
375*07dc1947SRichard Lowe #define DW_AT_sf_names                          0x2101 /* GNU */
376*07dc1947SRichard Lowe #define DW_AT_src_info                          0x2102 /* GNU */
377*07dc1947SRichard Lowe #define DW_AT_mac_info                          0x2103 /* GNU */
378*07dc1947SRichard Lowe #define DW_AT_src_coords                        0x2104 /* GNU */
379*07dc1947SRichard Lowe #define DW_AT_body_begin                        0x2105 /* GNU */
380*07dc1947SRichard Lowe #define DW_AT_body_end                          0x2106 /* GNU */
381*07dc1947SRichard Lowe #define DW_AT_GNU_vector                        0x2107 /* GNU */
382*07dc1947SRichard Lowe #define DW_AT_GNU_template_name                 0x2108 /* GNU */
383*07dc1947SRichard Lowe 
384*07dc1947SRichard Lowe /* ALTIUM extension: ALTIUM Compliant location lists (flag) */
385*07dc1947SRichard Lowe #define DW_AT_ALTIUM_loclist    0x2300          /* ALTIUM  */
386*07dc1947SRichard Lowe 
387*07dc1947SRichard Lowe /* Sun extensions */
388*07dc1947SRichard Lowe #define DW_AT_SUN_template                      0x2201 /* SUN */
389*07dc1947SRichard Lowe #define DW_AT_VMS_rtnbeg_pd_address             0x2201 /* VMS */
390*07dc1947SRichard Lowe #define DW_AT_SUN_alignment                     0x2202 /* SUN */
391*07dc1947SRichard Lowe #define DW_AT_SUN_vtable                        0x2203 /* SUN */
392*07dc1947SRichard Lowe #define DW_AT_SUN_count_guarantee               0x2204 /* SUN */
393*07dc1947SRichard Lowe #define DW_AT_SUN_command_line                  0x2205 /* SUN */
394*07dc1947SRichard Lowe #define DW_AT_SUN_vbase                         0x2206 /* SUN */
395*07dc1947SRichard Lowe #define DW_AT_SUN_compile_options               0x2207 /* SUN */
396*07dc1947SRichard Lowe #define DW_AT_SUN_language                      0x2208 /* SUN */
397*07dc1947SRichard Lowe #define DW_AT_SUN_browser_file                  0x2209 /* SUN */
398*07dc1947SRichard Lowe #define DW_AT_SUN_vtable_abi                    0x2210 /* SUN */
399*07dc1947SRichard Lowe #define DW_AT_SUN_func_offsets                  0x2211 /* SUN */
400*07dc1947SRichard Lowe #define DW_AT_SUN_cf_kind                       0x2212 /* SUN */
401*07dc1947SRichard Lowe #define DW_AT_SUN_vtable_index                  0x2213 /* SUN */
402*07dc1947SRichard Lowe #define DW_AT_SUN_omp_tpriv_addr                0x2214 /* SUN */
403*07dc1947SRichard Lowe #define DW_AT_SUN_omp_child_func                0x2215 /* SUN */
404*07dc1947SRichard Lowe #define DW_AT_SUN_func_offset                   0x2216 /* SUN */
405*07dc1947SRichard Lowe #define DW_AT_SUN_memop_type_ref                0x2217 /* SUN */
406*07dc1947SRichard Lowe #define DW_AT_SUN_profile_id                    0x2218 /* SUN */
407*07dc1947SRichard Lowe #define DW_AT_SUN_memop_signature               0x2219 /* SUN */
408*07dc1947SRichard Lowe #define DW_AT_SUN_obj_dir                       0x2220 /* SUN */
409*07dc1947SRichard Lowe #define DW_AT_SUN_obj_file                      0x2221 /* SUN */
410*07dc1947SRichard Lowe #define DW_AT_SUN_original_name                 0x2222 /* SUN */
411*07dc1947SRichard Lowe #define DW_AT_SUN_hwcprof_signature             0x2223 /* SUN */
412*07dc1947SRichard Lowe #define DW_AT_SUN_amd64_parmdump                0x2224 /* SUN */
413*07dc1947SRichard Lowe #define DW_AT_SUN_part_link_name                0x2225 /* SUN */
414*07dc1947SRichard Lowe #define DW_AT_SUN_link_name                     0x2226 /* SUN */
415*07dc1947SRichard Lowe #define DW_AT_SUN_pass_with_const               0x2227 /* SUN */
416*07dc1947SRichard Lowe #define DW_AT_SUN_return_with_const             0x2228 /* SUN */
417*07dc1947SRichard Lowe #define DW_AT_SUN_import_by_name                0x2229 /* SUN */
418*07dc1947SRichard Lowe #define DW_AT_SUN_f90_pointer                   0x222a /* SUN */
419*07dc1947SRichard Lowe #define DW_AT_SUN_pass_by_ref                   0x222b /* SUN */
420*07dc1947SRichard Lowe #define DW_AT_SUN_f90_allocatable               0x222c /* SUN */
421*07dc1947SRichard Lowe #define DW_AT_SUN_f90_assumed_shape_array       0x222d /* SUN */
422*07dc1947SRichard Lowe #define DW_AT_SUN_c_vla                         0x222e /* SUN */
423*07dc1947SRichard Lowe #define DW_AT_SUN_return_value_ptr              0x2230 /* SUN */
424*07dc1947SRichard Lowe #define DW_AT_SUN_dtor_start                    0x2231 /* SUN */
425*07dc1947SRichard Lowe #define DW_AT_SUN_dtor_length                   0x2232 /* SUN */
426*07dc1947SRichard Lowe #define DW_AT_SUN_dtor_state_initial            0x2233 /* SUN */
427*07dc1947SRichard Lowe #define DW_AT_SUN_dtor_state_final              0x2234 /* SUN */
428*07dc1947SRichard Lowe #define DW_AT_SUN_dtor_state_deltas             0x2235 /* SUN */
429*07dc1947SRichard Lowe #define DW_AT_SUN_import_by_lname               0x2236 /* SUN */
430*07dc1947SRichard Lowe #define DW_AT_SUN_f90_use_only                  0x2237 /* SUN */
431*07dc1947SRichard Lowe #define DW_AT_SUN_namelist_spec                 0x2238 /* SUN */
432*07dc1947SRichard Lowe #define DW_AT_SUN_is_omp_child_func             0x2239 /* SUN */
433*07dc1947SRichard Lowe #define DW_AT_SUN_fortran_main_alias            0x223a /* SUN */
434*07dc1947SRichard Lowe #define DW_AT_SUN_fortran_based                 0x223b /* SUN */
435*07dc1947SRichard Lowe 
43649d3bc91SRichard Lowe /* UPC extension */
43749d3bc91SRichard Lowe #define DW_AT_upc_threads_scaled                0x3210 /* UPC */
43849d3bc91SRichard Lowe 
439*07dc1947SRichard Lowe /* PGI (STMicroelectronics) extensions. */
440*07dc1947SRichard Lowe #define DW_AT_PGI_lbase                         0x3a00 /* PGI. Block, constant, reference. This attribute is an ASTPLAB extension used to describe the array local base.  */
441*07dc1947SRichard Lowe #define DW_AT_PGI_soffset                       0x3a01  /* PGI. Block, constant, reference. ASTPLAB adds this attribute to describe the section offset, or the offset to the first element in the dimension. */
442*07dc1947SRichard Lowe #define DW_AT_PGI_lstride                       0x3a02  /* PGI. Block, constant, reference. ASTPLAB adds this attribute to describe the linear stride or the distance between elements in the dimension. */
443*07dc1947SRichard Lowe 
444*07dc1947SRichard Lowe /* Apple Extensions for closures  */
445*07dc1947SRichard Lowe #define DW_AT_APPLE_closure                     0x3fe4 /* Apple */
446*07dc1947SRichard Lowe /* Apple Extensions for Objective-C runtime info */
447*07dc1947SRichard Lowe #define DW_AT_APPLE_major_runtime_vers          0x3fe5 /* Apple */
448*07dc1947SRichard Lowe #define DW_AT_APPLE_runtime_class               0x3fe6 /* Apple */
44949d3bc91SRichard Lowe 
45049d3bc91SRichard Lowe 
45149d3bc91SRichard Lowe #define DW_AT_hi_user                           0x3fff
45249d3bc91SRichard Lowe 
45349d3bc91SRichard Lowe #define DW_OP_addr                      0x03
45449d3bc91SRichard Lowe #define DW_OP_deref                     0x06
45549d3bc91SRichard Lowe #define DW_OP_const1u                   0x08
45649d3bc91SRichard Lowe #define DW_OP_const1s                   0x09
45749d3bc91SRichard Lowe #define DW_OP_const2u                   0x0a
45849d3bc91SRichard Lowe #define DW_OP_const2s                   0x0b
45949d3bc91SRichard Lowe #define DW_OP_const4u                   0x0c
46049d3bc91SRichard Lowe #define DW_OP_const4s                   0x0d
46149d3bc91SRichard Lowe #define DW_OP_const8u                   0x0e
46249d3bc91SRichard Lowe #define DW_OP_const8s                   0x0f
46349d3bc91SRichard Lowe #define DW_OP_constu                    0x10
46449d3bc91SRichard Lowe #define DW_OP_consts                    0x11
46549d3bc91SRichard Lowe #define DW_OP_dup                       0x12
46649d3bc91SRichard Lowe #define DW_OP_drop                      0x13
46749d3bc91SRichard Lowe #define DW_OP_over                      0x14
46849d3bc91SRichard Lowe #define DW_OP_pick                      0x15
46949d3bc91SRichard Lowe #define DW_OP_swap                      0x16
47049d3bc91SRichard Lowe #define DW_OP_rot                       0x17
47149d3bc91SRichard Lowe #define DW_OP_xderef                    0x18
47249d3bc91SRichard Lowe #define DW_OP_abs                       0x19
47349d3bc91SRichard Lowe #define DW_OP_and                       0x1a
47449d3bc91SRichard Lowe #define DW_OP_div                       0x1b
47549d3bc91SRichard Lowe #define DW_OP_minus                     0x1c
47649d3bc91SRichard Lowe #define DW_OP_mod                       0x1d
47749d3bc91SRichard Lowe #define DW_OP_mul                       0x1e
47849d3bc91SRichard Lowe #define DW_OP_neg                       0x1f
47949d3bc91SRichard Lowe #define DW_OP_not                       0x20
48049d3bc91SRichard Lowe #define DW_OP_or                        0x21
48149d3bc91SRichard Lowe #define DW_OP_plus                      0x22
48249d3bc91SRichard Lowe #define DW_OP_plus_uconst               0x23
48349d3bc91SRichard Lowe #define DW_OP_shl                       0x24
48449d3bc91SRichard Lowe #define DW_OP_shr                       0x25
48549d3bc91SRichard Lowe #define DW_OP_shra                      0x26
48649d3bc91SRichard Lowe #define DW_OP_xor                       0x27
48749d3bc91SRichard Lowe #define DW_OP_bra                       0x28
48849d3bc91SRichard Lowe #define DW_OP_eq                        0x29
48949d3bc91SRichard Lowe #define DW_OP_ge                        0x2a
49049d3bc91SRichard Lowe #define DW_OP_gt                        0x2b
49149d3bc91SRichard Lowe #define DW_OP_le                        0x2c
49249d3bc91SRichard Lowe #define DW_OP_lt                        0x2d
49349d3bc91SRichard Lowe #define DW_OP_ne                        0x2e
49449d3bc91SRichard Lowe #define DW_OP_skip                      0x2f
49549d3bc91SRichard Lowe #define DW_OP_lit0                      0x30
49649d3bc91SRichard Lowe #define DW_OP_lit1                      0x31
49749d3bc91SRichard Lowe #define DW_OP_lit2                      0x32
49849d3bc91SRichard Lowe #define DW_OP_lit3                      0x33
49949d3bc91SRichard Lowe #define DW_OP_lit4                      0x34
50049d3bc91SRichard Lowe #define DW_OP_lit5                      0x35
50149d3bc91SRichard Lowe #define DW_OP_lit6                      0x36
50249d3bc91SRichard Lowe #define DW_OP_lit7                      0x37
50349d3bc91SRichard Lowe #define DW_OP_lit8                      0x38
50449d3bc91SRichard Lowe #define DW_OP_lit9                      0x39
50549d3bc91SRichard Lowe #define DW_OP_lit10                     0x3a
50649d3bc91SRichard Lowe #define DW_OP_lit11                     0x3b
50749d3bc91SRichard Lowe #define DW_OP_lit12                     0x3c
50849d3bc91SRichard Lowe #define DW_OP_lit13                     0x3d
50949d3bc91SRichard Lowe #define DW_OP_lit14                     0x3e
51049d3bc91SRichard Lowe #define DW_OP_lit15                     0x3f
51149d3bc91SRichard Lowe #define DW_OP_lit16                     0x40
51249d3bc91SRichard Lowe #define DW_OP_lit17                     0x41
51349d3bc91SRichard Lowe #define DW_OP_lit18                     0x42
51449d3bc91SRichard Lowe #define DW_OP_lit19                     0x43
51549d3bc91SRichard Lowe #define DW_OP_lit20                     0x44
51649d3bc91SRichard Lowe #define DW_OP_lit21                     0x45
51749d3bc91SRichard Lowe #define DW_OP_lit22                     0x46
51849d3bc91SRichard Lowe #define DW_OP_lit23                     0x47
51949d3bc91SRichard Lowe #define DW_OP_lit24                     0x48
52049d3bc91SRichard Lowe #define DW_OP_lit25                     0x49
52149d3bc91SRichard Lowe #define DW_OP_lit26                     0x4a
52249d3bc91SRichard Lowe #define DW_OP_lit27                     0x4b
52349d3bc91SRichard Lowe #define DW_OP_lit28                     0x4c
52449d3bc91SRichard Lowe #define DW_OP_lit29                     0x4d
52549d3bc91SRichard Lowe #define DW_OP_lit30                     0x4e
52649d3bc91SRichard Lowe #define DW_OP_lit31                     0x4f
52749d3bc91SRichard Lowe #define DW_OP_reg0                      0x50
52849d3bc91SRichard Lowe #define DW_OP_reg1                      0x51
52949d3bc91SRichard Lowe #define DW_OP_reg2                      0x52
53049d3bc91SRichard Lowe #define DW_OP_reg3                      0x53
53149d3bc91SRichard Lowe #define DW_OP_reg4                      0x54
53249d3bc91SRichard Lowe #define DW_OP_reg5                      0x55
53349d3bc91SRichard Lowe #define DW_OP_reg6                      0x56
53449d3bc91SRichard Lowe #define DW_OP_reg7                      0x57
53549d3bc91SRichard Lowe #define DW_OP_reg8                      0x58
53649d3bc91SRichard Lowe #define DW_OP_reg9                      0x59
53749d3bc91SRichard Lowe #define DW_OP_reg10                     0x5a
53849d3bc91SRichard Lowe #define DW_OP_reg11                     0x5b
53949d3bc91SRichard Lowe #define DW_OP_reg12                     0x5c
54049d3bc91SRichard Lowe #define DW_OP_reg13                     0x5d
54149d3bc91SRichard Lowe #define DW_OP_reg14                     0x5e
54249d3bc91SRichard Lowe #define DW_OP_reg15                     0x5f
54349d3bc91SRichard Lowe #define DW_OP_reg16                     0x60
54449d3bc91SRichard Lowe #define DW_OP_reg17                     0x61
54549d3bc91SRichard Lowe #define DW_OP_reg18                     0x62
54649d3bc91SRichard Lowe #define DW_OP_reg19                     0x63
54749d3bc91SRichard Lowe #define DW_OP_reg20                     0x64
54849d3bc91SRichard Lowe #define DW_OP_reg21                     0x65
54949d3bc91SRichard Lowe #define DW_OP_reg22                     0x66
55049d3bc91SRichard Lowe #define DW_OP_reg23                     0x67
55149d3bc91SRichard Lowe #define DW_OP_reg24                     0x68
55249d3bc91SRichard Lowe #define DW_OP_reg25                     0x69
55349d3bc91SRichard Lowe #define DW_OP_reg26                     0x6a
55449d3bc91SRichard Lowe #define DW_OP_reg27                     0x6b
55549d3bc91SRichard Lowe #define DW_OP_reg28                     0x6c
55649d3bc91SRichard Lowe #define DW_OP_reg29                     0x6d
55749d3bc91SRichard Lowe #define DW_OP_reg30                     0x6e
55849d3bc91SRichard Lowe #define DW_OP_reg31                     0x6f
55949d3bc91SRichard Lowe #define DW_OP_breg0                     0x70
56049d3bc91SRichard Lowe #define DW_OP_breg1                     0x71
56149d3bc91SRichard Lowe #define DW_OP_breg2                     0x72
56249d3bc91SRichard Lowe #define DW_OP_breg3                     0x73
56349d3bc91SRichard Lowe #define DW_OP_breg4                     0x74
56449d3bc91SRichard Lowe #define DW_OP_breg5                     0x75
56549d3bc91SRichard Lowe #define DW_OP_breg6                     0x76
56649d3bc91SRichard Lowe #define DW_OP_breg7                     0x77
56749d3bc91SRichard Lowe #define DW_OP_breg8                     0x78
56849d3bc91SRichard Lowe #define DW_OP_breg9                     0x79
56949d3bc91SRichard Lowe #define DW_OP_breg10                    0x7a
57049d3bc91SRichard Lowe #define DW_OP_breg11                    0x7b
57149d3bc91SRichard Lowe #define DW_OP_breg12                    0x7c
57249d3bc91SRichard Lowe #define DW_OP_breg13                    0x7d
57349d3bc91SRichard Lowe #define DW_OP_breg14                    0x7e
57449d3bc91SRichard Lowe #define DW_OP_breg15                    0x7f
57549d3bc91SRichard Lowe #define DW_OP_breg16                    0x80
57649d3bc91SRichard Lowe #define DW_OP_breg17                    0x81
57749d3bc91SRichard Lowe #define DW_OP_breg18                    0x82
57849d3bc91SRichard Lowe #define DW_OP_breg19                    0x83
57949d3bc91SRichard Lowe #define DW_OP_breg20                    0x84
58049d3bc91SRichard Lowe #define DW_OP_breg21                    0x85
58149d3bc91SRichard Lowe #define DW_OP_breg22                    0x86
58249d3bc91SRichard Lowe #define DW_OP_breg23                    0x87
58349d3bc91SRichard Lowe #define DW_OP_breg24                    0x88
58449d3bc91SRichard Lowe #define DW_OP_breg25                    0x89
58549d3bc91SRichard Lowe #define DW_OP_breg26                    0x8a
58649d3bc91SRichard Lowe #define DW_OP_breg27                    0x8b
58749d3bc91SRichard Lowe #define DW_OP_breg28                    0x8c
58849d3bc91SRichard Lowe #define DW_OP_breg29                    0x8d
58949d3bc91SRichard Lowe #define DW_OP_breg30                    0x8e
59049d3bc91SRichard Lowe #define DW_OP_breg31                    0x8f
59149d3bc91SRichard Lowe #define DW_OP_regx                      0x90
59249d3bc91SRichard Lowe #define DW_OP_fbreg                     0x91
59349d3bc91SRichard Lowe #define DW_OP_bregx                     0x92
59449d3bc91SRichard Lowe #define DW_OP_piece                     0x93
59549d3bc91SRichard Lowe #define DW_OP_deref_size                0x94
59649d3bc91SRichard Lowe #define DW_OP_xderef_size               0x95
59749d3bc91SRichard Lowe #define DW_OP_nop                       0x96
59849d3bc91SRichard Lowe #define DW_OP_push_object_address       0x97 /* DWARF3 */
59949d3bc91SRichard Lowe #define DW_OP_call2                     0x98 /* DWARF3 */
60049d3bc91SRichard Lowe #define DW_OP_call4                     0x99 /* DWARF3 */
60149d3bc91SRichard Lowe #define DW_OP_call_ref                  0x9a /* DWARF3 */
602*07dc1947SRichard Lowe #define DW_OP_form_tls_address          0x9b /* DWARF3f */
603*07dc1947SRichard Lowe #define DW_OP_call_frame_cfa            0x9c /* DWARF3f */
604*07dc1947SRichard Lowe #define DW_OP_bit_piece                 0x9d /* DWARF3f */
605*07dc1947SRichard Lowe #define DW_OP_implicit_value            0x9e /* DWARF4 */
606*07dc1947SRichard Lowe #define DW_OP_stack_value               0x9f /* DWARF4 */
607*07dc1947SRichard Lowe 
608*07dc1947SRichard Lowe 
609*07dc1947SRichard Lowe     /* GNU extensions. */
610*07dc1947SRichard Lowe #define DW_OP_GNU_push_tls_address      0xe0 /* GNU */
611*07dc1947SRichard Lowe 
612*07dc1947SRichard Lowe /* Follows extension so dwarfdump prints the most-likely-useful name. */
61349d3bc91SRichard Lowe #define DW_OP_lo_user                   0xe0
614*07dc1947SRichard Lowe 
615*07dc1947SRichard Lowe     /* HP extensions. */
616*07dc1947SRichard Lowe #define DW_OP_HP_unknown                0xe0 /* HP conflict: GNU */
617*07dc1947SRichard Lowe #define DW_OP_HP_is_value               0xe1 /* HP */
618*07dc1947SRichard Lowe #define DW_OP_HP_fltconst4              0xe2 /* HP */
619*07dc1947SRichard Lowe #define DW_OP_HP_fltconst8              0xe3 /* HP */
620*07dc1947SRichard Lowe #define DW_OP_HP_mod_range              0xe4 /* HP */
621*07dc1947SRichard Lowe #define DW_OP_HP_unmod_range            0xe5 /* HP */
622*07dc1947SRichard Lowe #define DW_OP_HP_tls                    0xe6 /* HP */
623*07dc1947SRichard Lowe 
624*07dc1947SRichard Lowe #define DW_OP_INTEL_bit_piece           0xe8 /* Intel: made obsolete by DW_OP_bit_piece above. */
625*07dc1947SRichard Lowe 
626*07dc1947SRichard Lowe 
627*07dc1947SRichard Lowe    /* Apple extension. */
628*07dc1947SRichard Lowe #define DW_OP_APPLE_uninit              0xf0 /* Apple */
629*07dc1947SRichard Lowe 
63049d3bc91SRichard Lowe #define DW_OP_hi_user                   0xff
63149d3bc91SRichard Lowe 
63249d3bc91SRichard Lowe #define DW_ATE_address                  0x1
63349d3bc91SRichard Lowe #define DW_ATE_boolean                  0x2
63449d3bc91SRichard Lowe #define DW_ATE_complex_float            0x3
63549d3bc91SRichard Lowe #define DW_ATE_float                    0x4
63649d3bc91SRichard Lowe #define DW_ATE_signed                   0x5
63749d3bc91SRichard Lowe #define DW_ATE_signed_char              0x6
63849d3bc91SRichard Lowe #define DW_ATE_unsigned                 0x7
63949d3bc91SRichard Lowe #define DW_ATE_unsigned_char            0x8
64049d3bc91SRichard Lowe #define DW_ATE_imaginary_float          0x9  /* DWARF3 */
641*07dc1947SRichard Lowe #define DW_ATE_packed_decimal           0xa  /* DWARF3f */
642*07dc1947SRichard Lowe #define DW_ATE_numeric_string           0xb  /* DWARF3f */
643*07dc1947SRichard Lowe #define DW_ATE_edited                   0xc  /* DWARF3f */
644*07dc1947SRichard Lowe #define DW_ATE_signed_fixed             0xd  /* DWARF3f */
645*07dc1947SRichard Lowe #define DW_ATE_unsigned_fixed           0xe  /* DWARF3f */
646*07dc1947SRichard Lowe #define DW_ATE_decimal_float            0xf  /* DWARF3f */
647*07dc1947SRichard Lowe 
648*07dc1947SRichard Lowe 
649*07dc1947SRichard Lowe /* ALTIUM extensions. x80, x81 */
650*07dc1947SRichard Lowe #define DW_ATE_ALTIUM_fract           0x80 /* ALTIUM __fract type */
651*07dc1947SRichard Lowe 
652*07dc1947SRichard Lowe /* Follows extension so dwarfdump prints the most-likely-useful name. */
65349d3bc91SRichard Lowe #define DW_ATE_lo_user                  0x80
65449d3bc91SRichard Lowe 
655*07dc1947SRichard Lowe /* Shown here to help dwarfdump build script. */
656*07dc1947SRichard Lowe #define DW_ATE_ALTIUM_accum           0x81 /* ALTIUM __accum type */
657*07dc1947SRichard Lowe 
658*07dc1947SRichard Lowe /* HP Floating point extensions. */
659*07dc1947SRichard Lowe #define DW_ATE_HP_float80             0x80 /* (80 bit). HP */
660*07dc1947SRichard Lowe 
661*07dc1947SRichard Lowe 
662*07dc1947SRichard Lowe #define DW_ATE_HP_complex_float80     0x81 /* Complex (80 bit). HP  */
663*07dc1947SRichard Lowe #define DW_ATE_HP_float128            0x82 /* (128 bit). HP */
664*07dc1947SRichard Lowe #define DW_ATE_HP_complex_float128    0x83 /* Complex (128 bit). HP */
665*07dc1947SRichard Lowe #define DW_ATE_HP_floathpintel        0x84 /* (82 bit IA64). HP */
666*07dc1947SRichard Lowe #define DW_ATE_HP_imaginary_float80   0x85 /* HP */
667*07dc1947SRichard Lowe #define DW_ATE_HP_imaginary_float128  0x86 /* HP */
668*07dc1947SRichard Lowe 
66949d3bc91SRichard Lowe /* Sun extensions */
67049d3bc91SRichard Lowe #define DW_ATE_SUN_interval_float       0x91
67149d3bc91SRichard Lowe #define DW_ATE_SUN_imaginary_float      0x92 /* Obsolete: See DW_ATE_imaginary_float */
67249d3bc91SRichard Lowe 
67349d3bc91SRichard Lowe #define DW_ATE_hi_user                  0xff
67449d3bc91SRichard Lowe 
675*07dc1947SRichard Lowe 
676*07dc1947SRichard Lowe /* Decimal Sign codes. */
677*07dc1947SRichard Lowe #define DW_DS_unsigned                  0x01 /* DWARF3f */
678*07dc1947SRichard Lowe #define DW_DS_leading_overpunch         0x02 /* DWARF3f */
679*07dc1947SRichard Lowe #define DW_DS_trailing_overpunch        0x03 /* DWARF3f */
680*07dc1947SRichard Lowe #define DW_DS_leading_separate          0x04 /* DWARF3f */
681*07dc1947SRichard Lowe 
682*07dc1947SRichard Lowe #define DW_DS_trailing_separate         0x05 /* DWARF3f */
683*07dc1947SRichard Lowe 
684*07dc1947SRichard Lowe /* Endian code name. */
685*07dc1947SRichard Lowe #define DW_END_default                  0x00 /* DWARF3f */
686*07dc1947SRichard Lowe #define DW_END_big                      0x01 /* DWARF3f */
687*07dc1947SRichard Lowe #define DW_END_little                   0x02 /* DWARF3f */
688*07dc1947SRichard Lowe 
689*07dc1947SRichard Lowe #define DW_END_lo_user                  0x40 /* DWARF3f */
690*07dc1947SRichard Lowe #define DW_END_hi_user                  0xff /* DWARF3f */
691*07dc1947SRichard Lowe 
692*07dc1947SRichard Lowe /* For use with DW_TAG_SUN_codeflags
69349d3bc91SRichard Lowe  * If DW_TAG_SUN_codeflags is accepted as a dwarf standard, then
69449d3bc91SRichard Lowe  * standard dwarf ATCF entries start at 0x01
69549d3bc91SRichard Lowe  */
696*07dc1947SRichard Lowe #define DW_ATCF_lo_user                 0x40 /* SUN */
697*07dc1947SRichard Lowe #define DW_ATCF_SUN_mop_bitfield        0x41 /* SUN */
698*07dc1947SRichard Lowe #define DW_ATCF_SUN_mop_spill           0x42 /* SUN */
699*07dc1947SRichard Lowe #define DW_ATCF_SUN_mop_scopy           0x43 /* SUN */
700*07dc1947SRichard Lowe #define DW_ATCF_SUN_func_start          0x44 /* SUN */
701*07dc1947SRichard Lowe #define DW_ATCF_SUN_end_ctors           0x45 /* SUN */
702*07dc1947SRichard Lowe #define DW_ATCF_SUN_branch_target       0x46 /* SUN */
703*07dc1947SRichard Lowe #define DW_ATCF_SUN_mop_stack_probe     0x47 /* SUN */
704*07dc1947SRichard Lowe #define DW_ATCF_SUN_func_epilog         0x48 /* SUN */
705*07dc1947SRichard Lowe #define DW_ATCF_hi_user                 0xff /* SUN */
70649d3bc91SRichard Lowe 
707*07dc1947SRichard Lowe /* Accessibility code name. */
708*07dc1947SRichard Lowe #define DW_ACCESS_public                0x01
709*07dc1947SRichard Lowe #define DW_ACCESS_protected             0x02
710*07dc1947SRichard Lowe #define DW_ACCESS_private               0x03
71149d3bc91SRichard Lowe 
712*07dc1947SRichard Lowe /* Visibility code name. */
713*07dc1947SRichard Lowe #define DW_VIS_local                    0x01
714*07dc1947SRichard Lowe #define DW_VIS_exported                 0x02
715*07dc1947SRichard Lowe #define DW_VIS_qualified                0x03
71649d3bc91SRichard Lowe 
717*07dc1947SRichard Lowe /* Virtuality code name. */
718*07dc1947SRichard Lowe #define DW_VIRTUALITY_none              0x00
719*07dc1947SRichard Lowe #define DW_VIRTUALITY_virtual           0x01
720*07dc1947SRichard Lowe #define DW_VIRTUALITY_pure_virtual      0x02
72149d3bc91SRichard Lowe 
72249d3bc91SRichard Lowe #define DW_LANG_C89                     0x0001
72349d3bc91SRichard Lowe #define DW_LANG_C                       0x0002
72449d3bc91SRichard Lowe #define DW_LANG_Ada83                   0x0003
72549d3bc91SRichard Lowe #define DW_LANG_C_plus_plus             0x0004
72649d3bc91SRichard Lowe #define DW_LANG_Cobol74                 0x0005
72749d3bc91SRichard Lowe #define DW_LANG_Cobol85                 0x0006
72849d3bc91SRichard Lowe #define DW_LANG_Fortran77               0x0007
72949d3bc91SRichard Lowe #define DW_LANG_Fortran90               0x0008
73049d3bc91SRichard Lowe #define DW_LANG_Pascal83                0x0009
73149d3bc91SRichard Lowe #define DW_LANG_Modula2                 0x000a
73249d3bc91SRichard Lowe #define DW_LANG_Java                    0x000b /* DWARF3 */
73349d3bc91SRichard Lowe #define DW_LANG_C99                     0x000c /* DWARF3 */
73449d3bc91SRichard Lowe #define DW_LANG_Ada95                   0x000d /* DWARF3 */
73549d3bc91SRichard Lowe #define DW_LANG_Fortran95               0x000e /* DWARF3 */
73649d3bc91SRichard Lowe #define DW_LANG_PLI                     0x000f /* DWARF3 */
737*07dc1947SRichard Lowe #define DW_LANG_ObjC                    0x0010 /* DWARF3f */
738*07dc1947SRichard Lowe #define DW_LANG_ObjC_plus_plus          0x0011 /* DWARF3f */
739*07dc1947SRichard Lowe #define DW_LANG_UPC                     0x0012 /* DWARF3f */
740*07dc1947SRichard Lowe #define DW_LANG_D                       0x0013 /* DWARF3f */
741*07dc1947SRichard Lowe #define DW_LANG_Python                  0x0014 /* DWARF4 */
742*07dc1947SRichard Lowe /* The following 2 are not yet formally approved October 2010, but
743*07dc1947SRichard Lowe    it seems extremely likely they will be approved as the committee
744*07dc1947SRichard Lowe    chair agrees these should be ok and no one on the committee
745*07dc1947SRichard Lowe    has objected. */
746*07dc1947SRichard Lowe #define DW_LANG_OpenCL                  0x0015 /* Provisionally DWARF5 */
747*07dc1947SRichard Lowe #define DW_LANG_Go                      0x0016 /* Provisionally DWARF5 */
74849d3bc91SRichard Lowe #define DW_LANG_lo_user                 0x8000
749*07dc1947SRichard Lowe #define DW_LANG_Mips_Assembler          0x8001 /* MIPS   */
750*07dc1947SRichard Lowe #define DW_LANG_Upc                     0x8765 /* UPC, use
751*07dc1947SRichard Lowe                                         DW_LANG_UPC instead. */
752*07dc1947SRichard Lowe /* ALTIUM extension */
753*07dc1947SRichard Lowe #define DW_LANG_ALTIUM_Assembler        0x9101  /* ALTIUM */
75449d3bc91SRichard Lowe 
75549d3bc91SRichard Lowe /* Sun extensions */
756*07dc1947SRichard Lowe #define DW_LANG_SUN_Assembler           0x9001 /* SUN */
75749d3bc91SRichard Lowe 
75849d3bc91SRichard Lowe #define DW_LANG_hi_user                 0xffff
75949d3bc91SRichard Lowe 
760*07dc1947SRichard Lowe /* Identifier case name. */
761*07dc1947SRichard Lowe #define DW_ID_case_sensitive            0x00
762*07dc1947SRichard Lowe #define DW_ID_up_case                   0x01
763*07dc1947SRichard Lowe #define DW_ID_down_case                 0x02
764*07dc1947SRichard Lowe #define DW_ID_case_insensitive          0x03
76549d3bc91SRichard Lowe 
766*07dc1947SRichard Lowe /* Calling Convention Name. */
767*07dc1947SRichard Lowe #define DW_CC_normal                    0x01
768*07dc1947SRichard Lowe #define DW_CC_program                   0x02
769*07dc1947SRichard Lowe #define DW_CC_nocall                    0x03
77049d3bc91SRichard Lowe #define DW_CC_lo_user                   0x40
771*07dc1947SRichard Lowe 
772*07dc1947SRichard Lowe /* ALTIUM extensions. */
773*07dc1947SRichard Lowe /* Function is an interrupt handler, return address on system stack. */
774*07dc1947SRichard Lowe #define DW_CC_ALTIUM_interrupt          0x65  /* ALTIUM*/
775*07dc1947SRichard Lowe 
776*07dc1947SRichard Lowe /* Near function model, return address on system stack. */
777*07dc1947SRichard Lowe #define DW_CC_ALTIUM_near_system_stack  0x66  /*ALTIUM */
778*07dc1947SRichard Lowe 
779*07dc1947SRichard Lowe /* Near function model, return address on user stack. */
780*07dc1947SRichard Lowe #define DW_CC_ALTIUM_near_user_stack    0x67  /* ALTIUM */
781*07dc1947SRichard Lowe 
782*07dc1947SRichard Lowe /* Huge function model, return address on user stack.  */
783*07dc1947SRichard Lowe #define DW_CC_ALTIUM_huge_user_stack    0x68  /* ALTIUM */
784*07dc1947SRichard Lowe 
785*07dc1947SRichard Lowe 
78649d3bc91SRichard Lowe #define DW_CC_hi_user                   0xff
78749d3bc91SRichard Lowe 
788*07dc1947SRichard Lowe /* Inline Code Name. */
789*07dc1947SRichard Lowe #define DW_INL_not_inlined              0x00
790*07dc1947SRichard Lowe #define DW_INL_inlined                  0x01
791*07dc1947SRichard Lowe #define DW_INL_declared_not_inlined     0x02
792*07dc1947SRichard Lowe #define DW_INL_declared_inlined         0x03
79349d3bc91SRichard Lowe 
794*07dc1947SRichard Lowe /* Ordering Name. */
795*07dc1947SRichard Lowe #define DW_ORD_row_major                0x00
796*07dc1947SRichard Lowe #define DW_ORD_col_major                0x01
79749d3bc91SRichard Lowe 
798*07dc1947SRichard Lowe /* Discriminant Descriptor Name. */
799*07dc1947SRichard Lowe #define DW_DSC_label                    0x00
800*07dc1947SRichard Lowe #define DW_DSC_range                    0x01
80149d3bc91SRichard Lowe 
802*07dc1947SRichard Lowe /* Line number standard opcode name. */
803*07dc1947SRichard Lowe #define DW_LNS_copy                     0x01
804*07dc1947SRichard Lowe #define DW_LNS_advance_pc               0x02
805*07dc1947SRichard Lowe #define DW_LNS_advance_line             0x03
806*07dc1947SRichard Lowe #define DW_LNS_set_file                 0x04
807*07dc1947SRichard Lowe #define DW_LNS_set_column               0x05
808*07dc1947SRichard Lowe #define DW_LNS_negate_stmt              0x06
809*07dc1947SRichard Lowe #define DW_LNS_set_basic_block          0x07
810*07dc1947SRichard Lowe #define DW_LNS_const_add_pc             0x08
811*07dc1947SRichard Lowe #define DW_LNS_fixed_advance_pc         0x09
812*07dc1947SRichard Lowe #define DW_LNS_set_prologue_end         0x0a /* DWARF3 */
813*07dc1947SRichard Lowe #define DW_LNS_set_epilogue_begin       0x0b /* DWARF3 */
814*07dc1947SRichard Lowe #define DW_LNS_set_isa                  0x0c /* DWARF3 */
81549d3bc91SRichard Lowe 
816*07dc1947SRichard Lowe /* Line number extended opcode name. */
817*07dc1947SRichard Lowe #define DW_LNE_end_sequence             0x01
818*07dc1947SRichard Lowe #define DW_LNE_set_address              0x02
819*07dc1947SRichard Lowe #define DW_LNE_define_file              0x03
820*07dc1947SRichard Lowe #define DW_LNE_set_discriminator        0x04  /* DWARF4 */
82149d3bc91SRichard Lowe 
822*07dc1947SRichard Lowe /* HP extensions. */
823*07dc1947SRichard Lowe #define DW_LNE_HP_negate_is_UV_update       0x11 /* 17 HP */
824*07dc1947SRichard Lowe #define DW_LNE_HP_push_context              0x12 /* 18 HP */
825*07dc1947SRichard Lowe #define DW_LNE_HP_pop_context               0x13 /* 19 HP */
826*07dc1947SRichard Lowe #define DW_LNE_HP_set_file_line_column      0x14 /* 20 HP */
827*07dc1947SRichard Lowe #define DW_LNE_HP_set_routine_name          0x15 /* 21 HP */
828*07dc1947SRichard Lowe #define DW_LNE_HP_set_sequence              0x16 /* 22 HP */
829*07dc1947SRichard Lowe #define DW_LNE_HP_negate_post_semantics     0x17 /* 23 HP */
830*07dc1947SRichard Lowe #define DW_LNE_HP_negate_function_exit      0x18 /* 24 HP */
831*07dc1947SRichard Lowe #define DW_LNE_HP_negate_front_end_logical  0x19 /* 25 HP */
832*07dc1947SRichard Lowe #define DW_LNE_HP_define_proc               0x20 /* 32 HP */
83349d3bc91SRichard Lowe 
834*07dc1947SRichard Lowe #define DW_LNE_lo_user                  0x80 /* DWARF3 */
835*07dc1947SRichard Lowe #define DW_LNE_hi_user                  0xff /* DWARF3 */
836*07dc1947SRichard Lowe 
837*07dc1947SRichard Lowe /* These are known values for DW_LNS_set_isa. */
838*07dc1947SRichard Lowe #define DW_ISA_UNKNOWN   0
839*07dc1947SRichard Lowe /* The following two are ARM specific. */
840*07dc1947SRichard Lowe #define DW_ISA_ARM_thumb 1 /* ARM ISA */
841*07dc1947SRichard Lowe #define DW_ISA_ARM_arm   2 /* ARM ISA */
842*07dc1947SRichard Lowe 
843*07dc1947SRichard Lowe /* Macro information. */
844*07dc1947SRichard Lowe #define DW_MACINFO_define               0x01
845*07dc1947SRichard Lowe #define DW_MACINFO_undef                0x02
846*07dc1947SRichard Lowe #define DW_MACINFO_start_file           0x03
847*07dc1947SRichard Lowe #define DW_MACINFO_end_file             0x04
848*07dc1947SRichard Lowe #define DW_MACINFO_vendor_ext           0xff
849*07dc1947SRichard Lowe 
850*07dc1947SRichard Lowe /* CFA operator compaction (a space saving measure, see
851*07dc1947SRichard Lowe    the DWARF standard) means DW_CFA_extended and DW_CFA_nop
852*07dc1947SRichard Lowe    have the same value here.  */
85349d3bc91SRichard Lowe #define DW_CFA_advance_loc        0x40
85449d3bc91SRichard Lowe #define DW_CFA_offset             0x80
85549d3bc91SRichard Lowe #define DW_CFA_restore            0xc0
85649d3bc91SRichard Lowe #define DW_CFA_extended           0
85749d3bc91SRichard Lowe 
85849d3bc91SRichard Lowe #define DW_CFA_nop              0x00
85949d3bc91SRichard Lowe #define DW_CFA_set_loc          0x01
86049d3bc91SRichard Lowe #define DW_CFA_advance_loc1     0x02
86149d3bc91SRichard Lowe #define DW_CFA_advance_loc2     0x03
86249d3bc91SRichard Lowe #define DW_CFA_advance_loc4     0x04
86349d3bc91SRichard Lowe #define DW_CFA_offset_extended  0x05
86449d3bc91SRichard Lowe #define DW_CFA_restore_extended 0x06
86549d3bc91SRichard Lowe #define DW_CFA_undefined        0x07
86649d3bc91SRichard Lowe #define DW_CFA_same_value       0x08
86749d3bc91SRichard Lowe #define DW_CFA_register         0x09
86849d3bc91SRichard Lowe #define DW_CFA_remember_state   0x0a
86949d3bc91SRichard Lowe #define DW_CFA_restore_state    0x0b
87049d3bc91SRichard Lowe #define DW_CFA_def_cfa          0x0c
87149d3bc91SRichard Lowe #define DW_CFA_def_cfa_register 0x0d
87249d3bc91SRichard Lowe #define DW_CFA_def_cfa_offset   0x0e
87349d3bc91SRichard Lowe #define DW_CFA_def_cfa_expression 0x0f     /* DWARF3 */
87449d3bc91SRichard Lowe #define DW_CFA_expression       0x10       /* DWARF3 */
875*07dc1947SRichard Lowe #define DW_CFA_offset_extended_sf 0x11     /* DWARF3 */
87649d3bc91SRichard Lowe #define DW_CFA_def_cfa_sf       0x12       /* DWARF3 */
87749d3bc91SRichard Lowe #define DW_CFA_def_cfa_offset_sf 0x13      /* DWARF3 */
878*07dc1947SRichard Lowe #define DW_CFA_val_offset        0x14      /* DWARF3f */
879*07dc1947SRichard Lowe #define DW_CFA_val_offset_sf     0x15      /* DWARF3f */
880*07dc1947SRichard Lowe #define DW_CFA_val_expression    0x16      /* DWARF3f */
88149d3bc91SRichard Lowe 
882*07dc1947SRichard Lowe #define DW_CFA_lo_user           0x1c
883*07dc1947SRichard Lowe #define DW_CFA_low_user          0x1c  /* Incorrect spelling, do not use. */
88449d3bc91SRichard Lowe 
885*07dc1947SRichard Lowe /* SGI/MIPS extension. */
886*07dc1947SRichard Lowe #define DW_CFA_MIPS_advance_loc8 0x1d   /* MIPS */
887*07dc1947SRichard Lowe 
888*07dc1947SRichard Lowe /* GNU extensions. */
889*07dc1947SRichard Lowe #define DW_CFA_GNU_window_save   0x2d  /* GNU */
890*07dc1947SRichard Lowe #define DW_CFA_GNU_args_size     0x2e /* GNU  */
891*07dc1947SRichard Lowe #define DW_CFA_GNU_negative_offset_extended  0x2f /* GNU */
89249d3bc91SRichard Lowe 
89349d3bc91SRichard Lowe #define DW_CFA_high_user         0x3f
89449d3bc91SRichard Lowe 
895*07dc1947SRichard Lowe /* GNU exception header encoding.  See the Generic
896*07dc1947SRichard Lowe    Elf Specification of the Linux Standard Base (LSB).
897*07dc1947SRichard Lowe    http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/dwarfext.html
898*07dc1947SRichard Lowe    The upper 4 bits indicate how the value is to be applied.
899*07dc1947SRichard Lowe    The lower 4 bits indicate the format of the data.
900*07dc1947SRichard Lowe */
901*07dc1947SRichard Lowe #define DW_EH_PE_absptr   0x00  /* GNU */
902*07dc1947SRichard Lowe #define DW_EH_PE_uleb128  0x01  /* GNU */
903*07dc1947SRichard Lowe #define DW_EH_PE_udata2   0x02  /* GNU */
904*07dc1947SRichard Lowe #define DW_EH_PE_udata4   0x03  /* GNU */
905*07dc1947SRichard Lowe #define DW_EH_PE_udata8   0x04  /* GNU */
906*07dc1947SRichard Lowe #define DW_EH_PE_sleb128  0x09  /* GNU */
907*07dc1947SRichard Lowe #define DW_EH_PE_sdata2   0x0A  /* GNU */
908*07dc1947SRichard Lowe #define DW_EH_PE_sdata4   0x0B  /* GNU */
909*07dc1947SRichard Lowe #define DW_EH_PE_sdata8   0x0C  /* GNU */
910*07dc1947SRichard Lowe 
911*07dc1947SRichard Lowe #define DW_EH_PE_pcrel    0x10  /* GNU */
912*07dc1947SRichard Lowe #define DW_EH_PE_textrel  0x20  /* GNU */
913*07dc1947SRichard Lowe #define DW_EH_PE_datarel  0x30  /* GNU */
914*07dc1947SRichard Lowe #define DW_EH_PE_funcrel  0x40  /* GNU */
915*07dc1947SRichard Lowe #define DW_EH_PE_aligned  0x50  /* GNU */
916*07dc1947SRichard Lowe 
917*07dc1947SRichard Lowe #define DW_EH_PE_omit     0xff  /* GNU.  Means no value present. */
918*07dc1947SRichard Lowe 
91949d3bc91SRichard Lowe 
92049d3bc91SRichard Lowe /* Mapping from machine registers and pseudo-regs into the .debug_frame table.
92149d3bc91SRichard Lowe    DW_FRAME entries are machine specific. These describe
922*07dc1947SRichard Lowe    MIPS/SGI R3000, R4K, R4400 and all later MIPS/SGI IRIX machines.
923*07dc1947SRichard Lowe    They describe a mapping from hardware register number to
92449d3bc91SRichard Lowe    the number used in the table to identify that register.
92549d3bc91SRichard Lowe 
92649d3bc91SRichard Lowe    The CFA (Canonical Frame Address) described in DWARF is called
92749d3bc91SRichard Lowe    the Virtual Frame Pointer on MIPS/SGI machines.
92849d3bc91SRichard Lowe 
929*07dc1947SRichard Lowe    The DW_FRAME* names here are MIPS/SGI specfic.
930*07dc1947SRichard Lowe    Libdwarf interfaces defined in 2008 make the
931*07dc1947SRichard Lowe    frame definitions
932*07dc1947SRichard Lowe    here (and the fixed table sizes they imply) obsolete.
933*07dc1947SRichard Lowe    They are left here for compatibility.
93449d3bc91SRichard Lowe */
935*07dc1947SRichard Lowe /* Default column used for CFA in the libdwarf reader client.
936*07dc1947SRichard Lowe    Assumes reg 0 never appears as
937*07dc1947SRichard Lowe    a register in DWARF information. Usable for MIPS,
938*07dc1947SRichard Lowe    but never a good idea, really.    */
939*07dc1947SRichard Lowe #define DW_FRAME_CFA_COL 0
940*07dc1947SRichard Lowe 
94149d3bc91SRichard Lowe #define DW_FRAME_REG1   1  /* integer reg 1 */
94249d3bc91SRichard Lowe #define DW_FRAME_REG2   2  /* integer reg 2 */
94349d3bc91SRichard Lowe #define DW_FRAME_REG3   3  /* integer reg 3 */
94449d3bc91SRichard Lowe #define DW_FRAME_REG4   4  /* integer reg 4 */
94549d3bc91SRichard Lowe #define DW_FRAME_REG5   5  /* integer reg 5 */
94649d3bc91SRichard Lowe #define DW_FRAME_REG6   6  /* integer reg 6 */
94749d3bc91SRichard Lowe #define DW_FRAME_REG7   7  /* integer reg 7 */
94849d3bc91SRichard Lowe #define DW_FRAME_REG8   8  /* integer reg 8 */
94949d3bc91SRichard Lowe #define DW_FRAME_REG9   9  /* integer reg 9 */
95049d3bc91SRichard Lowe #define DW_FRAME_REG10  10 /* integer reg 10 */
95149d3bc91SRichard Lowe #define DW_FRAME_REG11  11 /* integer reg 11 */
95249d3bc91SRichard Lowe #define DW_FRAME_REG12  12 /* integer reg 12 */
95349d3bc91SRichard Lowe #define DW_FRAME_REG13  13 /* integer reg 13 */
95449d3bc91SRichard Lowe #define DW_FRAME_REG14  14 /* integer reg 14 */
95549d3bc91SRichard Lowe #define DW_FRAME_REG15  15 /* integer reg 15 */
95649d3bc91SRichard Lowe #define DW_FRAME_REG16  16 /* integer reg 16 */
95749d3bc91SRichard Lowe #define DW_FRAME_REG17  17 /* integer reg 17 */
95849d3bc91SRichard Lowe #define DW_FRAME_REG18  18 /* integer reg 18 */
95949d3bc91SRichard Lowe #define DW_FRAME_REG19  19 /* integer reg 19 */
96049d3bc91SRichard Lowe #define DW_FRAME_REG20  20 /* integer reg 20 */
96149d3bc91SRichard Lowe #define DW_FRAME_REG21  21 /* integer reg 21 */
96249d3bc91SRichard Lowe #define DW_FRAME_REG22  22 /* integer reg 22 */
96349d3bc91SRichard Lowe #define DW_FRAME_REG23  23 /* integer reg 23 */
96449d3bc91SRichard Lowe #define DW_FRAME_REG24  24 /* integer reg 24 */
96549d3bc91SRichard Lowe #define DW_FRAME_REG25  25 /* integer reg 25 */
96649d3bc91SRichard Lowe #define DW_FRAME_REG26  26 /* integer reg 26 */
96749d3bc91SRichard Lowe #define DW_FRAME_REG27  27 /* integer reg 27 */
96849d3bc91SRichard Lowe #define DW_FRAME_REG28  28 /* integer reg 28 */
96949d3bc91SRichard Lowe #define DW_FRAME_REG29  29 /* integer reg 29 */
97049d3bc91SRichard Lowe #define DW_FRAME_REG30  30 /* integer reg 30 */
97149d3bc91SRichard Lowe #define DW_FRAME_REG31  31 /* integer reg 31, aka ra */
97249d3bc91SRichard Lowe 
97349d3bc91SRichard Lowe         /* MIPS1, 2 have only some of these 64-bit registers.
97449d3bc91SRichard Lowe         ** MIPS1  save/restore takes 2 instructions per 64-bit reg, and
97549d3bc91SRichard Lowe         ** in that case, the register is considered stored after the second
97649d3bc91SRichard Lowe         ** swc1.
97749d3bc91SRichard Lowe         */
97849d3bc91SRichard Lowe #define DW_FRAME_FREG0  32 /* 64-bit floating point reg 0 */
97949d3bc91SRichard Lowe #define DW_FRAME_FREG1  33 /* 64-bit floating point reg 1 */
98049d3bc91SRichard Lowe #define DW_FRAME_FREG2  34 /* 64-bit floating point reg 2 */
98149d3bc91SRichard Lowe #define DW_FRAME_FREG3  35 /* 64-bit floating point reg 3 */
98249d3bc91SRichard Lowe #define DW_FRAME_FREG4  36 /* 64-bit floating point reg 4 */
98349d3bc91SRichard Lowe #define DW_FRAME_FREG5  37 /* 64-bit floating point reg 5 */
98449d3bc91SRichard Lowe #define DW_FRAME_FREG6  38 /* 64-bit floating point reg 6 */
98549d3bc91SRichard Lowe #define DW_FRAME_FREG7  39 /* 64-bit floating point reg 7 */
98649d3bc91SRichard Lowe #define DW_FRAME_FREG8  40 /* 64-bit floating point reg 8 */
98749d3bc91SRichard Lowe #define DW_FRAME_FREG9  41 /* 64-bit floating point reg 9 */
98849d3bc91SRichard Lowe #define DW_FRAME_FREG10 42 /* 64-bit floating point reg 10 */
98949d3bc91SRichard Lowe #define DW_FRAME_FREG11 43 /* 64-bit floating point reg 11 */
99049d3bc91SRichard Lowe #define DW_FRAME_FREG12 44 /* 64-bit floating point reg 12 */
99149d3bc91SRichard Lowe #define DW_FRAME_FREG13 45 /* 64-bit floating point reg 13 */
99249d3bc91SRichard Lowe #define DW_FRAME_FREG14 46 /* 64-bit floating point reg 14 */
99349d3bc91SRichard Lowe #define DW_FRAME_FREG15 47 /* 64-bit floating point reg 15 */
99449d3bc91SRichard Lowe #define DW_FRAME_FREG16 48 /* 64-bit floating point reg 16 */
99549d3bc91SRichard Lowe #define DW_FRAME_FREG17 49 /* 64-bit floating point reg 17 */
99649d3bc91SRichard Lowe #define DW_FRAME_FREG18 50 /* 64-bit floating point reg 18 */
99749d3bc91SRichard Lowe #define DW_FRAME_FREG19 51 /* 64-bit floating point reg 19 */
99849d3bc91SRichard Lowe #define DW_FRAME_FREG20 52 /* 64-bit floating point reg 20 */
99949d3bc91SRichard Lowe #define DW_FRAME_FREG21 53 /* 64-bit floating point reg 21 */
100049d3bc91SRichard Lowe #define DW_FRAME_FREG22 54 /* 64-bit floating point reg 22 */
100149d3bc91SRichard Lowe #define DW_FRAME_FREG23 55 /* 64-bit floating point reg 23 */
100249d3bc91SRichard Lowe #define DW_FRAME_FREG24 56 /* 64-bit floating point reg 24 */
100349d3bc91SRichard Lowe #define DW_FRAME_FREG25 57 /* 64-bit floating point reg 25 */
100449d3bc91SRichard Lowe #define DW_FRAME_FREG26 58 /* 64-bit floating point reg 26 */
100549d3bc91SRichard Lowe #define DW_FRAME_FREG27 59 /* 64-bit floating point reg 27 */
100649d3bc91SRichard Lowe #define DW_FRAME_FREG28 60 /* 64-bit floating point reg 28 */
100749d3bc91SRichard Lowe #define DW_FRAME_FREG29 61 /* 64-bit floating point reg 29 */
100849d3bc91SRichard Lowe #define DW_FRAME_FREG30 62 /* 64-bit floating point reg 30 */
100949d3bc91SRichard Lowe #define DW_FRAME_FREG31 63 /* 64-bit floating point reg 31 */
101049d3bc91SRichard Lowe 
1011*07dc1947SRichard Lowe /*  ***IMPORTANT NOTE, TARGET DEPENDENCY ****
1012*07dc1947SRichard Lowe     The following 4 #defines are dependent on
1013*07dc1947SRichard Lowe     the target cpu(s) that you apply libdwarf to.
1014*07dc1947SRichard Lowe     Ensure that DW_FRAME_UNDEFINED_VAL  and DW_FRAME_SAME_VAL
1015*07dc1947SRichard Lowe     do not conflict with the range [0-DW_FRAME_STATIC_LINK].
1016*07dc1947SRichard Lowe     The value 63 works for MIPS cpus at least up to the R16000.
101749d3bc91SRichard Lowe 
1018*07dc1947SRichard Lowe     For a cpu with more than 63 real registers
1019*07dc1947SRichard Lowe     DW_FRAME_HIGHEST_NORMAL_REGISTER
1020*07dc1947SRichard Lowe     must be increased for things to work properly!
1021*07dc1947SRichard Lowe     Also ensure that DW_FRAME_UNDEFINED_VAL DW_FRAME_SAME_VAL
1022*07dc1947SRichard Lowe     are not in the range [0-DW_FRAME_STATIC_LINK]
102349d3bc91SRichard Lowe 
1024*07dc1947SRichard Lowe     Having DW_FRAME_HIGHEST_NORMAL_REGISTER be higher than
1025*07dc1947SRichard Lowe     is strictly needed is safe.
1026*07dc1947SRichard Lowe 
1027*07dc1947SRichard Lowe */
1028*07dc1947SRichard Lowe 
1029*07dc1947SRichard Lowe #ifndef DW_FRAME_HIGHEST_NORMAL_REGISTER
1030*07dc1947SRichard Lowe #define DW_FRAME_HIGHEST_NORMAL_REGISTER 63
1031*07dc1947SRichard Lowe #endif
1032*07dc1947SRichard Lowe /* This is the number of columns in the Frame Table.
1033*07dc1947SRichard Lowe    This constant should
1034*07dc1947SRichard Lowe    be kept in sync with DW_REG_TABLE_SIZE defined in libdwarf.h
1035*07dc1947SRichard Lowe    It must also be large enough to be beyond the highest
1036*07dc1947SRichard Lowe    compiler-defined-register (meaning DW_FRAME_RA_COL DW_FRAME_STATIC_LINK
1037*07dc1947SRichard Lowe    in the MIPS/IRIX case */
1038*07dc1947SRichard Lowe #ifndef DW_FRAME_LAST_REG_NUM
1039*07dc1947SRichard Lowe #define DW_FRAME_LAST_REG_NUM   (DW_FRAME_HIGHEST_NORMAL_REGISTER + 3)
1040*07dc1947SRichard Lowe #endif
1041*07dc1947SRichard Lowe 
1042*07dc1947SRichard Lowe 
1043*07dc1947SRichard Lowe /* Column recording ra (return address from a function call).
1044*07dc1947SRichard Lowe    This is common to many architectures, but as a 'simple register'
1045*07dc1947SRichard Lowe    is not necessarily adequate for all architectures.
1046*07dc1947SRichard Lowe    For MIPS/IRIX this register number is actually recorded on disk
1047*07dc1947SRichard Lowe    in the .debug_frame section.
1048*07dc1947SRichard Lowe    */
1049*07dc1947SRichard Lowe #define DW_FRAME_RA_COL  (DW_FRAME_HIGHEST_NORMAL_REGISTER + 1)
1050*07dc1947SRichard Lowe 
1051*07dc1947SRichard Lowe /* Column recording static link applicable to up-level
1052*07dc1947SRichard Lowe    addressing, as in IRIX mp code, pascal, etc.
1053*07dc1947SRichard Lowe    This is common to many architectures but
1054*07dc1947SRichard Lowe    is not necessarily adequate for all architectures.
1055*07dc1947SRichard Lowe    For MIPS/IRIX this register number is actually recorded on disk
1056*07dc1947SRichard Lowe    in the .debug_frame section.
1057*07dc1947SRichard Lowe */
1058*07dc1947SRichard Lowe #define DW_FRAME_STATIC_LINK (DW_FRAME_HIGHEST_NORMAL_REGISTER + 2)
1059*07dc1947SRichard Lowe 
106049d3bc91SRichard Lowe 
106149d3bc91SRichard Lowe 
106249d3bc91SRichard Lowe /*
106349d3bc91SRichard Lowe   DW_FRAME_UNDEFINED_VAL and  DW_FRAME_SAME_VAL  are
106449d3bc91SRichard Lowe   never on disk, just generated by libdwarf. See libdwarf.h
106549d3bc91SRichard Lowe   for their values.
106649d3bc91SRichard Lowe */
106749d3bc91SRichard Lowe 
106849d3bc91SRichard Lowe 
106949d3bc91SRichard Lowe 
107049d3bc91SRichard Lowe #define DW_CHILDREN_no               0x00
107149d3bc91SRichard Lowe #define DW_CHILDREN_yes              0x01
107249d3bc91SRichard Lowe 
107349d3bc91SRichard Lowe #define DW_ADDR_none            0
107449d3bc91SRichard Lowe 
107549d3bc91SRichard Lowe #ifdef __cplusplus
107649d3bc91SRichard Lowe }
107749d3bc91SRichard Lowe #endif
107849d3bc91SRichard Lowe #endif /* __DWARF_H */
1079