xref: /dflybsd-src/contrib/gdb-7/include/dwarf2.h (revision de8e141f24382815c10a4012d209bbbf7abf1112)
15796c8dcSSimon Schubert /* Declarations and definitions of codes relating to the DWARF2 and
25796c8dcSSimon Schubert    DWARF3 symbolic debugging information formats.
35796c8dcSSimon Schubert    Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
4*ef5ccd6cSJohn Marino    2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
5cf7f2e2dSJohn Marino    Free Software Foundation, Inc.
65796c8dcSSimon Schubert 
75796c8dcSSimon Schubert    Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
85796c8dcSSimon Schubert    Office (AJPO), Florida State University and Silicon Graphics Inc.
95796c8dcSSimon Schubert    provided support for this effort -- June 21, 1995.
105796c8dcSSimon Schubert 
115796c8dcSSimon Schubert    Derived from the DWARF 1 implementation written by Ron Guilmette
125796c8dcSSimon Schubert    (rfg@netcom.com), November 1990.
135796c8dcSSimon Schubert 
145796c8dcSSimon Schubert    This file is part of GCC.
155796c8dcSSimon Schubert 
165796c8dcSSimon Schubert    GCC is free software; you can redistribute it and/or modify it under
175796c8dcSSimon Schubert    the terms of the GNU General Public License as published by the Free
185796c8dcSSimon Schubert    Software Foundation; either version 3, or (at your option) any later
195796c8dcSSimon Schubert    version.
205796c8dcSSimon Schubert 
215796c8dcSSimon Schubert    GCC is distributed in the hope that it will be useful, but WITHOUT
225796c8dcSSimon Schubert    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
235796c8dcSSimon Schubert    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
245796c8dcSSimon Schubert    License for more details.
255796c8dcSSimon Schubert 
265796c8dcSSimon Schubert    Under Section 7 of GPL version 3, you are granted additional
275796c8dcSSimon Schubert    permissions described in the GCC Runtime Library Exception, version
285796c8dcSSimon Schubert    3.1, as published by the Free Software Foundation.
295796c8dcSSimon Schubert 
305796c8dcSSimon Schubert    You should have received a copy of the GNU General Public License and
315796c8dcSSimon Schubert    a copy of the GCC Runtime Library Exception along with this program;
325796c8dcSSimon Schubert    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
335796c8dcSSimon Schubert    <http://www.gnu.org/licenses/>.  */
345796c8dcSSimon Schubert 
355796c8dcSSimon Schubert /* This file is derived from the DWARF specification (a public document)
365796c8dcSSimon Schubert    Revision 2.0.0 (July 27, 1993) developed by the UNIX International
375796c8dcSSimon Schubert    Programming Languages Special Interest Group (UI/PLSIG) and distributed
385796c8dcSSimon Schubert    by UNIX International.  Copies of this specification are available from
395796c8dcSSimon Schubert    UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
405796c8dcSSimon Schubert 
415796c8dcSSimon Schubert    This file also now contains definitions from the DWARF 3 specification
425796c8dcSSimon Schubert    published Dec 20, 2005, available from: http://dwarf.freestandards.org.  */
435796c8dcSSimon Schubert 
44c50c785cSJohn Marino #ifndef _DWARF2_H
45c50c785cSJohn Marino #define _DWARF2_H
465796c8dcSSimon Schubert 
47*ef5ccd6cSJohn Marino #define DW_TAG(name, value) , name = value
48*ef5ccd6cSJohn Marino #define DW_TAG_DUP(name, value) , name = value
49*ef5ccd6cSJohn Marino #define DW_FORM(name, value) , name = value
50*ef5ccd6cSJohn Marino #define DW_AT(name, value) , name = value
51*ef5ccd6cSJohn Marino #define DW_AT_DUP(name, value) , name = value
52*ef5ccd6cSJohn Marino #define DW_OP(name, value) , name = value
53*ef5ccd6cSJohn Marino #define DW_OP_DUP(name, value) , name = value
54*ef5ccd6cSJohn Marino #define DW_ATE(name, value) , name = value
55*ef5ccd6cSJohn Marino #define DW_ATE_DUP(name, value) , name = value
56*ef5ccd6cSJohn Marino #define DW_CFA(name, value) , name = value
575796c8dcSSimon Schubert 
58*ef5ccd6cSJohn Marino #define DW_FIRST_TAG(name, value) enum dwarf_tag { \
59*ef5ccd6cSJohn Marino   name = value
60*ef5ccd6cSJohn Marino #define DW_END_TAG };
61*ef5ccd6cSJohn Marino #define DW_FIRST_FORM(name, value) enum dwarf_form { \
62*ef5ccd6cSJohn Marino   name = value
63*ef5ccd6cSJohn Marino #define DW_END_FORM };
64*ef5ccd6cSJohn Marino #define DW_FIRST_AT(name, value) enum dwarf_attribute { \
65*ef5ccd6cSJohn Marino   name = value
66*ef5ccd6cSJohn Marino #define DW_END_AT };
67*ef5ccd6cSJohn Marino #define DW_FIRST_OP(name, value) enum dwarf_location_atom { \
68*ef5ccd6cSJohn Marino   name = value
69*ef5ccd6cSJohn Marino #define DW_END_OP };
70*ef5ccd6cSJohn Marino #define DW_FIRST_ATE(name, value) enum dwarf_type { \
71*ef5ccd6cSJohn Marino   name = value
72*ef5ccd6cSJohn Marino #define DW_END_ATE };
73*ef5ccd6cSJohn Marino #define DW_FIRST_CFA(name, value) enum dwarf_call_frame_info { \
74*ef5ccd6cSJohn Marino   name = value
75*ef5ccd6cSJohn Marino #define DW_END_CFA };
765796c8dcSSimon Schubert 
77*ef5ccd6cSJohn Marino #include "dwarf2.def"
78cf7f2e2dSJohn Marino 
79*ef5ccd6cSJohn Marino #undef DW_FIRST_TAG
80*ef5ccd6cSJohn Marino #undef DW_END_TAG
81*ef5ccd6cSJohn Marino #undef DW_FIRST_FORM
82*ef5ccd6cSJohn Marino #undef DW_END_FORM
83*ef5ccd6cSJohn Marino #undef DW_FIRST_AT
84*ef5ccd6cSJohn Marino #undef DW_END_AT
85*ef5ccd6cSJohn Marino #undef DW_FIRST_OP
86*ef5ccd6cSJohn Marino #undef DW_END_OP
87*ef5ccd6cSJohn Marino #undef DW_FIRST_ATE
88*ef5ccd6cSJohn Marino #undef DW_END_ATE
89*ef5ccd6cSJohn Marino #undef DW_FIRST_CFA
90*ef5ccd6cSJohn Marino #undef DW_END_CFA
91cf7f2e2dSJohn Marino 
92*ef5ccd6cSJohn Marino #undef DW_TAG
93*ef5ccd6cSJohn Marino #undef DW_TAG_DUP
94*ef5ccd6cSJohn Marino #undef DW_FORM
95*ef5ccd6cSJohn Marino #undef DW_AT
96*ef5ccd6cSJohn Marino #undef DW_AT_DUP
97*ef5ccd6cSJohn Marino #undef DW_OP
98*ef5ccd6cSJohn Marino #undef DW_OP_DUP
99*ef5ccd6cSJohn Marino #undef DW_ATE
100*ef5ccd6cSJohn Marino #undef DW_ATE_DUP
101*ef5ccd6cSJohn Marino #undef DW_CFA
1025796c8dcSSimon Schubert 
1035796c8dcSSimon Schubert /* Flag that tells whether entry has a child or not.  */
1045796c8dcSSimon Schubert #define DW_children_no   0
1055796c8dcSSimon Schubert #define	DW_children_yes  1
1065796c8dcSSimon Schubert 
1075796c8dcSSimon Schubert #define DW_AT_stride_size   DW_AT_bit_stride  /* Note: The use of DW_AT_stride_size is deprecated.  */
1085796c8dcSSimon Schubert #define DW_AT_stride   DW_AT_byte_stride  /* Note: The use of DW_AT_stride is deprecated.  */
1095796c8dcSSimon Schubert 
1105796c8dcSSimon Schubert /* Decimal sign encodings.  */
1115796c8dcSSimon Schubert enum dwarf_decimal_sign_encoding
1125796c8dcSSimon Schubert   {
1135796c8dcSSimon Schubert     /* DWARF 3.  */
1145796c8dcSSimon Schubert     DW_DS_unsigned = 0x01,
1155796c8dcSSimon Schubert     DW_DS_leading_overpunch = 0x02,
1165796c8dcSSimon Schubert     DW_DS_trailing_overpunch = 0x03,
1175796c8dcSSimon Schubert     DW_DS_leading_separate = 0x04,
1185796c8dcSSimon Schubert     DW_DS_trailing_separate = 0x05
1195796c8dcSSimon Schubert   };
1205796c8dcSSimon Schubert 
1215796c8dcSSimon Schubert /* Endianity encodings.  */
1225796c8dcSSimon Schubert enum dwarf_endianity_encoding
1235796c8dcSSimon Schubert   {
1245796c8dcSSimon Schubert     /* DWARF 3.  */
1255796c8dcSSimon Schubert     DW_END_default = 0x00,
1265796c8dcSSimon Schubert     DW_END_big = 0x01,
1275796c8dcSSimon Schubert     DW_END_little = 0x02,
1285796c8dcSSimon Schubert 
1295796c8dcSSimon Schubert     DW_END_lo_user = 0x40,
1305796c8dcSSimon Schubert     DW_END_hi_user = 0xff
1315796c8dcSSimon Schubert   };
1325796c8dcSSimon Schubert 
1335796c8dcSSimon Schubert /* Array ordering names and codes.  */
1345796c8dcSSimon Schubert enum dwarf_array_dim_ordering
1355796c8dcSSimon Schubert   {
1365796c8dcSSimon Schubert     DW_ORD_row_major = 0,
1375796c8dcSSimon Schubert     DW_ORD_col_major = 1
1385796c8dcSSimon Schubert   };
1395796c8dcSSimon Schubert 
1405796c8dcSSimon Schubert /* Access attribute.  */
1415796c8dcSSimon Schubert enum dwarf_access_attribute
1425796c8dcSSimon Schubert   {
1435796c8dcSSimon Schubert     DW_ACCESS_public = 1,
1445796c8dcSSimon Schubert     DW_ACCESS_protected = 2,
1455796c8dcSSimon Schubert     DW_ACCESS_private = 3
1465796c8dcSSimon Schubert   };
1475796c8dcSSimon Schubert 
1485796c8dcSSimon Schubert /* Visibility.  */
1495796c8dcSSimon Schubert enum dwarf_visibility_attribute
1505796c8dcSSimon Schubert   {
1515796c8dcSSimon Schubert     DW_VIS_local = 1,
1525796c8dcSSimon Schubert     DW_VIS_exported = 2,
1535796c8dcSSimon Schubert     DW_VIS_qualified = 3
1545796c8dcSSimon Schubert   };
1555796c8dcSSimon Schubert 
1565796c8dcSSimon Schubert /* Virtuality.  */
1575796c8dcSSimon Schubert enum dwarf_virtuality_attribute
1585796c8dcSSimon Schubert   {
1595796c8dcSSimon Schubert     DW_VIRTUALITY_none = 0,
1605796c8dcSSimon Schubert     DW_VIRTUALITY_virtual = 1,
1615796c8dcSSimon Schubert     DW_VIRTUALITY_pure_virtual = 2
1625796c8dcSSimon Schubert   };
1635796c8dcSSimon Schubert 
1645796c8dcSSimon Schubert /* Case sensitivity.  */
1655796c8dcSSimon Schubert enum dwarf_id_case
1665796c8dcSSimon Schubert   {
1675796c8dcSSimon Schubert     DW_ID_case_sensitive = 0,
1685796c8dcSSimon Schubert     DW_ID_up_case = 1,
1695796c8dcSSimon Schubert     DW_ID_down_case = 2,
1705796c8dcSSimon Schubert     DW_ID_case_insensitive = 3
1715796c8dcSSimon Schubert   };
1725796c8dcSSimon Schubert 
1735796c8dcSSimon Schubert /* Calling convention.  */
1745796c8dcSSimon Schubert enum dwarf_calling_convention
1755796c8dcSSimon Schubert   {
1765796c8dcSSimon Schubert     DW_CC_normal = 0x1,
1775796c8dcSSimon Schubert     DW_CC_program = 0x2,
1785796c8dcSSimon Schubert     DW_CC_nocall = 0x3,
1795796c8dcSSimon Schubert 
1805796c8dcSSimon Schubert     DW_CC_lo_user = 0x40,
1815796c8dcSSimon Schubert     DW_CC_hi_user = 0xff,
1825796c8dcSSimon Schubert 
183cf7f2e2dSJohn Marino     DW_CC_GNU_renesas_sh = 0x40,
184c50c785cSJohn Marino     DW_CC_GNU_borland_fastcall_i386 = 0x41,
185c50c785cSJohn Marino 
186c50c785cSJohn Marino     /* This DW_CC_ value is not currently generated by any toolchain.  It is
187c50c785cSJohn Marino        used internally to GDB to indicate OpenCL C functions that have been
188c50c785cSJohn Marino        compiled with the IBM XL C for OpenCL compiler and use a non-platform
189c50c785cSJohn Marino        calling convention for passing OpenCL C vector types.  This value may
190c50c785cSJohn Marino        be changed freely as long as it does not conflict with any other DW_CC_
191c50c785cSJohn Marino        value defined here.  */
192c50c785cSJohn Marino     DW_CC_GDB_IBM_OpenCL = 0xff
1935796c8dcSSimon Schubert   };
1945796c8dcSSimon Schubert 
1955796c8dcSSimon Schubert /* Inline attribute.  */
1965796c8dcSSimon Schubert enum dwarf_inline_attribute
1975796c8dcSSimon Schubert   {
1985796c8dcSSimon Schubert     DW_INL_not_inlined = 0,
1995796c8dcSSimon Schubert     DW_INL_inlined = 1,
2005796c8dcSSimon Schubert     DW_INL_declared_not_inlined = 2,
2015796c8dcSSimon Schubert     DW_INL_declared_inlined = 3
2025796c8dcSSimon Schubert   };
2035796c8dcSSimon Schubert 
2045796c8dcSSimon Schubert /* Discriminant lists.  */
2055796c8dcSSimon Schubert enum dwarf_discrim_list
2065796c8dcSSimon Schubert   {
2075796c8dcSSimon Schubert     DW_DSC_label = 0,
2085796c8dcSSimon Schubert     DW_DSC_range = 1
2095796c8dcSSimon Schubert   };
2105796c8dcSSimon Schubert 
2115796c8dcSSimon Schubert /* Line number opcodes.  */
2125796c8dcSSimon Schubert enum dwarf_line_number_ops
2135796c8dcSSimon Schubert   {
2145796c8dcSSimon Schubert     DW_LNS_extended_op = 0,
2155796c8dcSSimon Schubert     DW_LNS_copy = 1,
2165796c8dcSSimon Schubert     DW_LNS_advance_pc = 2,
2175796c8dcSSimon Schubert     DW_LNS_advance_line = 3,
2185796c8dcSSimon Schubert     DW_LNS_set_file = 4,
2195796c8dcSSimon Schubert     DW_LNS_set_column = 5,
2205796c8dcSSimon Schubert     DW_LNS_negate_stmt = 6,
2215796c8dcSSimon Schubert     DW_LNS_set_basic_block = 7,
2225796c8dcSSimon Schubert     DW_LNS_const_add_pc = 8,
2235796c8dcSSimon Schubert     DW_LNS_fixed_advance_pc = 9,
2245796c8dcSSimon Schubert     /* DWARF 3.  */
2255796c8dcSSimon Schubert     DW_LNS_set_prologue_end = 10,
2265796c8dcSSimon Schubert     DW_LNS_set_epilogue_begin = 11,
2275796c8dcSSimon Schubert     DW_LNS_set_isa = 12
2285796c8dcSSimon Schubert   };
2295796c8dcSSimon Schubert 
2305796c8dcSSimon Schubert /* Line number extended opcodes.  */
2315796c8dcSSimon Schubert enum dwarf_line_number_x_ops
2325796c8dcSSimon Schubert   {
2335796c8dcSSimon Schubert     DW_LNE_end_sequence = 1,
2345796c8dcSSimon Schubert     DW_LNE_set_address = 2,
2355796c8dcSSimon Schubert     DW_LNE_define_file = 3,
2365796c8dcSSimon Schubert     DW_LNE_set_discriminator = 4,
2375796c8dcSSimon Schubert     /* HP extensions.  */
2385796c8dcSSimon Schubert     DW_LNE_HP_negate_is_UV_update      = 0x11,
2395796c8dcSSimon Schubert     DW_LNE_HP_push_context             = 0x12,
2405796c8dcSSimon Schubert     DW_LNE_HP_pop_context              = 0x13,
2415796c8dcSSimon Schubert     DW_LNE_HP_set_file_line_column     = 0x14,
2425796c8dcSSimon Schubert     DW_LNE_HP_set_routine_name         = 0x15,
2435796c8dcSSimon Schubert     DW_LNE_HP_set_sequence             = 0x16,
2445796c8dcSSimon Schubert     DW_LNE_HP_negate_post_semantics    = 0x17,
2455796c8dcSSimon Schubert     DW_LNE_HP_negate_function_exit     = 0x18,
2465796c8dcSSimon Schubert     DW_LNE_HP_negate_front_end_logical = 0x19,
2475796c8dcSSimon Schubert     DW_LNE_HP_define_proc              = 0x20,
248cf7f2e2dSJohn Marino     DW_LNE_HP_source_file_correlation  = 0x80,
2495796c8dcSSimon Schubert 
2505796c8dcSSimon Schubert     DW_LNE_lo_user = 0x80,
2515796c8dcSSimon Schubert     DW_LNE_hi_user = 0xff
2525796c8dcSSimon Schubert   };
2535796c8dcSSimon Schubert 
254c50c785cSJohn Marino /* Sub-opcodes for DW_LNE_HP_source_file_correlation.  */
255c50c785cSJohn Marino enum dwarf_line_number_hp_sfc_ops
256c50c785cSJohn Marino   {
257c50c785cSJohn Marino     DW_LNE_HP_SFC_formfeed = 1,
258c50c785cSJohn Marino     DW_LNE_HP_SFC_set_listing_line = 2,
259c50c785cSJohn Marino     DW_LNE_HP_SFC_associate = 3
260c50c785cSJohn Marino   };
261c50c785cSJohn Marino 
262*ef5ccd6cSJohn Marino /* Type codes for location list entries.
263*ef5ccd6cSJohn Marino    Extension for Fission.  See http://gcc.gnu.org/wiki/DebugFission.  */
264*ef5ccd6cSJohn Marino 
265*ef5ccd6cSJohn Marino enum dwarf_location_list_entry_type
2665796c8dcSSimon Schubert   {
267*ef5ccd6cSJohn Marino     DW_LLE_GNU_end_of_list_entry = 0,
268*ef5ccd6cSJohn Marino     DW_LLE_GNU_base_address_selection_entry = 1,
269*ef5ccd6cSJohn Marino     DW_LLE_GNU_start_end_entry = 2,
270*ef5ccd6cSJohn Marino     DW_LLE_GNU_start_length_entry = 3
2715796c8dcSSimon Schubert   };
2725796c8dcSSimon Schubert 
2735796c8dcSSimon Schubert #define DW_CIE_ID	  0xffffffff
2745796c8dcSSimon Schubert #define DW64_CIE_ID	  0xffffffffffffffffULL
2755796c8dcSSimon Schubert #define DW_CIE_VERSION	  1
2765796c8dcSSimon Schubert 
2775796c8dcSSimon Schubert #define DW_CFA_extended   0
2785796c8dcSSimon Schubert 
2795796c8dcSSimon Schubert #define DW_CHILDREN_no		     0x00
2805796c8dcSSimon Schubert #define DW_CHILDREN_yes		     0x01
2815796c8dcSSimon Schubert 
2825796c8dcSSimon Schubert #define DW_ADDR_none		0
2835796c8dcSSimon Schubert 
2845796c8dcSSimon Schubert /* Source language names and codes.  */
2855796c8dcSSimon Schubert enum dwarf_source_language
2865796c8dcSSimon Schubert   {
2875796c8dcSSimon Schubert     DW_LANG_C89 = 0x0001,
2885796c8dcSSimon Schubert     DW_LANG_C = 0x0002,
2895796c8dcSSimon Schubert     DW_LANG_Ada83 = 0x0003,
2905796c8dcSSimon Schubert     DW_LANG_C_plus_plus = 0x0004,
2915796c8dcSSimon Schubert     DW_LANG_Cobol74 = 0x0005,
2925796c8dcSSimon Schubert     DW_LANG_Cobol85 = 0x0006,
2935796c8dcSSimon Schubert     DW_LANG_Fortran77 = 0x0007,
2945796c8dcSSimon Schubert     DW_LANG_Fortran90 = 0x0008,
2955796c8dcSSimon Schubert     DW_LANG_Pascal83 = 0x0009,
2965796c8dcSSimon Schubert     DW_LANG_Modula2 = 0x000a,
2975796c8dcSSimon Schubert     /* DWARF 3.  */
2985796c8dcSSimon Schubert     DW_LANG_Java = 0x000b,
2995796c8dcSSimon Schubert     DW_LANG_C99 = 0x000c,
3005796c8dcSSimon Schubert     DW_LANG_Ada95 = 0x000d,
3015796c8dcSSimon Schubert     DW_LANG_Fortran95 = 0x000e,
3025796c8dcSSimon Schubert     DW_LANG_PLI = 0x000f,
3035796c8dcSSimon Schubert     DW_LANG_ObjC = 0x0010,
3045796c8dcSSimon Schubert     DW_LANG_ObjC_plus_plus = 0x0011,
3055796c8dcSSimon Schubert     DW_LANG_UPC = 0x0012,
3065796c8dcSSimon Schubert     DW_LANG_D = 0x0013,
307cf7f2e2dSJohn Marino     /* DWARF 4.  */
308cf7f2e2dSJohn Marino     DW_LANG_Python = 0x0014,
309c50c785cSJohn Marino     /* DWARF 5.  */
310c50c785cSJohn Marino     DW_LANG_Go = 0x0016,
3115796c8dcSSimon Schubert 
3125796c8dcSSimon Schubert     DW_LANG_lo_user = 0x8000,	/* Implementation-defined range start.  */
3135796c8dcSSimon Schubert     DW_LANG_hi_user = 0xffff,	/* Implementation-defined range start.  */
3145796c8dcSSimon Schubert 
3155796c8dcSSimon Schubert     /* MIPS.  */
3165796c8dcSSimon Schubert     DW_LANG_Mips_Assembler = 0x8001,
3175796c8dcSSimon Schubert     /* UPC.  */
318cf7f2e2dSJohn Marino     DW_LANG_Upc = 0x8765,
319cf7f2e2dSJohn Marino     /* HP extensions.  */
320cf7f2e2dSJohn Marino     DW_LANG_HP_Bliss     = 0x8003,
321cf7f2e2dSJohn Marino     DW_LANG_HP_Basic91   = 0x8004,
322cf7f2e2dSJohn Marino     DW_LANG_HP_Pascal91  = 0x8005,
323cf7f2e2dSJohn Marino     DW_LANG_HP_IMacro    = 0x8006,
324cf7f2e2dSJohn Marino     DW_LANG_HP_Assembler = 0x8007
3255796c8dcSSimon Schubert   };
3265796c8dcSSimon Schubert 
3275796c8dcSSimon Schubert /* Names and codes for macro information.  */
3285796c8dcSSimon Schubert enum dwarf_macinfo_record_type
3295796c8dcSSimon Schubert   {
3305796c8dcSSimon Schubert     DW_MACINFO_define = 1,
3315796c8dcSSimon Schubert     DW_MACINFO_undef = 2,
3325796c8dcSSimon Schubert     DW_MACINFO_start_file = 3,
3335796c8dcSSimon Schubert     DW_MACINFO_end_file = 4,
3345796c8dcSSimon Schubert     DW_MACINFO_vendor_ext = 255
3355796c8dcSSimon Schubert   };
336a45ae5f8SJohn Marino 
337a45ae5f8SJohn Marino /* Names and codes for new style macro information.  */
338a45ae5f8SJohn Marino enum dwarf_macro_record_type
339a45ae5f8SJohn Marino   {
340a45ae5f8SJohn Marino     DW_MACRO_GNU_define = 1,
341a45ae5f8SJohn Marino     DW_MACRO_GNU_undef = 2,
342a45ae5f8SJohn Marino     DW_MACRO_GNU_start_file = 3,
343a45ae5f8SJohn Marino     DW_MACRO_GNU_end_file = 4,
344a45ae5f8SJohn Marino     DW_MACRO_GNU_define_indirect = 5,
345a45ae5f8SJohn Marino     DW_MACRO_GNU_undef_indirect = 6,
346a45ae5f8SJohn Marino     DW_MACRO_GNU_transparent_include = 7,
347*ef5ccd6cSJohn Marino     /* Extensions for DWZ multifile.
348*ef5ccd6cSJohn Marino        See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open .  */
349*ef5ccd6cSJohn Marino     DW_MACRO_GNU_define_indirect_alt = 8,
350*ef5ccd6cSJohn Marino     DW_MACRO_GNU_undef_indirect_alt = 9,
351*ef5ccd6cSJohn Marino     DW_MACRO_GNU_transparent_include_alt = 10,
352a45ae5f8SJohn Marino     DW_MACRO_GNU_lo_user = 0xe0,
353a45ae5f8SJohn Marino     DW_MACRO_GNU_hi_user = 0xff
354a45ae5f8SJohn Marino   };
3555796c8dcSSimon Schubert 
3565796c8dcSSimon Schubert /* @@@ For use with GNU frame unwind information.  */
3575796c8dcSSimon Schubert 
3585796c8dcSSimon Schubert #define DW_EH_PE_absptr		0x00
3595796c8dcSSimon Schubert #define DW_EH_PE_omit		0xff
3605796c8dcSSimon Schubert 
3615796c8dcSSimon Schubert #define DW_EH_PE_uleb128	0x01
3625796c8dcSSimon Schubert #define DW_EH_PE_udata2		0x02
3635796c8dcSSimon Schubert #define DW_EH_PE_udata4		0x03
3645796c8dcSSimon Schubert #define DW_EH_PE_udata8		0x04
3655796c8dcSSimon Schubert #define DW_EH_PE_sleb128	0x09
3665796c8dcSSimon Schubert #define DW_EH_PE_sdata2		0x0A
3675796c8dcSSimon Schubert #define DW_EH_PE_sdata4		0x0B
3685796c8dcSSimon Schubert #define DW_EH_PE_sdata8		0x0C
3695796c8dcSSimon Schubert #define DW_EH_PE_signed		0x08
3705796c8dcSSimon Schubert 
3715796c8dcSSimon Schubert #define DW_EH_PE_pcrel		0x10
3725796c8dcSSimon Schubert #define DW_EH_PE_textrel	0x20
3735796c8dcSSimon Schubert #define DW_EH_PE_datarel	0x30
3745796c8dcSSimon Schubert #define DW_EH_PE_funcrel	0x40
3755796c8dcSSimon Schubert #define DW_EH_PE_aligned	0x50
3765796c8dcSSimon Schubert 
3775796c8dcSSimon Schubert #define DW_EH_PE_indirect	0x80
3785796c8dcSSimon Schubert 
379*ef5ccd6cSJohn Marino /* Codes for the debug sections in a dwarf package (.dwp) file.
380*ef5ccd6cSJohn Marino    Extensions for Fission.  See http://gcc.gnu.org/wiki/DebugFissionDWP.  */
381*ef5ccd6cSJohn Marino enum dwarf_sect
382*ef5ccd6cSJohn Marino   {
383*ef5ccd6cSJohn Marino     DW_SECT_INFO = 1,
384*ef5ccd6cSJohn Marino     DW_SECT_TYPES = 2,
385*ef5ccd6cSJohn Marino     DW_SECT_ABBREV = 3,
386*ef5ccd6cSJohn Marino     DW_SECT_LINE = 4,
387*ef5ccd6cSJohn Marino     DW_SECT_LOC = 5,
388*ef5ccd6cSJohn Marino     DW_SECT_STR_OFFSETS = 6,
389*ef5ccd6cSJohn Marino     DW_SECT_MACINFO = 7,
390*ef5ccd6cSJohn Marino     DW_SECT_MACRO = 8,
391*ef5ccd6cSJohn Marino     DW_SECT_MAX = 8
392*ef5ccd6cSJohn Marino   };
393*ef5ccd6cSJohn Marino 
394*ef5ccd6cSJohn Marino #ifdef __cplusplus
395*ef5ccd6cSJohn Marino extern "C" {
396*ef5ccd6cSJohn Marino #endif /* __cplusplus */
397*ef5ccd6cSJohn Marino 
398*ef5ccd6cSJohn Marino /* Return the name of a DW_TAG_ constant, or NULL if the value is not
399*ef5ccd6cSJohn Marino    recognized.  */
400*ef5ccd6cSJohn Marino extern const char *get_DW_TAG_name (unsigned int tag);
401*ef5ccd6cSJohn Marino 
402*ef5ccd6cSJohn Marino /* Return the name of a DW_AT_ constant, or NULL if the value is not
403*ef5ccd6cSJohn Marino    recognized.  */
404*ef5ccd6cSJohn Marino extern const char *get_DW_AT_name (unsigned int attr);
405*ef5ccd6cSJohn Marino 
406*ef5ccd6cSJohn Marino /* Return the name of a DW_FORM_ constant, or NULL if the value is not
407*ef5ccd6cSJohn Marino    recognized.  */
408*ef5ccd6cSJohn Marino extern const char *get_DW_FORM_name (unsigned int form);
409*ef5ccd6cSJohn Marino 
410*ef5ccd6cSJohn Marino /* Return the name of a DW_OP_ constant, or NULL if the value is not
411*ef5ccd6cSJohn Marino    recognized.  */
412*ef5ccd6cSJohn Marino extern const char *get_DW_OP_name (unsigned int op);
413*ef5ccd6cSJohn Marino 
414*ef5ccd6cSJohn Marino /* Return the name of a DW_ATE_ constant, or NULL if the value is not
415*ef5ccd6cSJohn Marino    recognized.  */
416*ef5ccd6cSJohn Marino extern const char *get_DW_ATE_name (unsigned int enc);
417*ef5ccd6cSJohn Marino 
418*ef5ccd6cSJohn Marino /* Return the name of a DW_CFA_ constant, or NULL if the value is not
419*ef5ccd6cSJohn Marino    recognized.  */
420*ef5ccd6cSJohn Marino extern const char *get_DW_CFA_name (unsigned int opc);
421*ef5ccd6cSJohn Marino 
422*ef5ccd6cSJohn Marino #ifdef __cplusplus
423*ef5ccd6cSJohn Marino }
424*ef5ccd6cSJohn Marino #endif /* __cplusplus */
425*ef5ccd6cSJohn Marino 
426c50c785cSJohn Marino #endif /* _DWARF2_H */
427