xref: /dflybsd-src/contrib/binutils-2.27/include/dwarf2.h (revision e656dc90e3d65d744d534af2f5ea88cf8101ebcf)
1*a9fa9459Szrj /* Declarations and definitions of codes relating to the DWARF2 and
2*a9fa9459Szrj    DWARF3 symbolic debugging information formats.
3*a9fa9459Szrj    Copyright (C) 1992-2016 Free Software Foundation, Inc.
4*a9fa9459Szrj 
5*a9fa9459Szrj    Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
6*a9fa9459Szrj    Office (AJPO), Florida State University and Silicon Graphics Inc.
7*a9fa9459Szrj    provided support for this effort -- June 21, 1995.
8*a9fa9459Szrj 
9*a9fa9459Szrj    Derived from the DWARF 1 implementation written by Ron Guilmette
10*a9fa9459Szrj    (rfg@netcom.com), November 1990.
11*a9fa9459Szrj 
12*a9fa9459Szrj    This file is part of GCC.
13*a9fa9459Szrj 
14*a9fa9459Szrj    GCC is free software; you can redistribute it and/or modify it under
15*a9fa9459Szrj    the terms of the GNU General Public License as published by the Free
16*a9fa9459Szrj    Software Foundation; either version 3, or (at your option) any later
17*a9fa9459Szrj    version.
18*a9fa9459Szrj 
19*a9fa9459Szrj    GCC is distributed in the hope that it will be useful, but WITHOUT
20*a9fa9459Szrj    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
21*a9fa9459Szrj    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
22*a9fa9459Szrj    License for more details.
23*a9fa9459Szrj 
24*a9fa9459Szrj    Under Section 7 of GPL version 3, you are granted additional
25*a9fa9459Szrj    permissions described in the GCC Runtime Library Exception, version
26*a9fa9459Szrj    3.1, as published by the Free Software Foundation.
27*a9fa9459Szrj 
28*a9fa9459Szrj    You should have received a copy of the GNU General Public License and
29*a9fa9459Szrj    a copy of the GCC Runtime Library Exception along with this program;
30*a9fa9459Szrj    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
31*a9fa9459Szrj    <http://www.gnu.org/licenses/>.  */
32*a9fa9459Szrj 
33*a9fa9459Szrj /* This file is derived from the DWARF specification (a public document)
34*a9fa9459Szrj    Revision 2.0.0 (July 27, 1993) developed by the UNIX International
35*a9fa9459Szrj    Programming Languages Special Interest Group (UI/PLSIG) and distributed
36*a9fa9459Szrj    by UNIX International.  Copies of this specification are available from
37*a9fa9459Szrj    UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
38*a9fa9459Szrj 
39*a9fa9459Szrj    This file also now contains definitions from the DWARF 3 specification
40*a9fa9459Szrj    published Dec 20, 2005, available from: http://dwarf.freestandards.org.  */
41*a9fa9459Szrj 
42*a9fa9459Szrj #ifndef _DWARF2_H
43*a9fa9459Szrj #define _DWARF2_H
44*a9fa9459Szrj 
45*a9fa9459Szrj #define DW_TAG(name, value) , name = value
46*a9fa9459Szrj #define DW_TAG_DUP(name, value) , name = value
47*a9fa9459Szrj #define DW_FORM(name, value) , name = value
48*a9fa9459Szrj #define DW_AT(name, value) , name = value
49*a9fa9459Szrj #define DW_AT_DUP(name, value) , name = value
50*a9fa9459Szrj #define DW_OP(name, value) , name = value
51*a9fa9459Szrj #define DW_OP_DUP(name, value) , name = value
52*a9fa9459Szrj #define DW_ATE(name, value) , name = value
53*a9fa9459Szrj #define DW_ATE_DUP(name, value) , name = value
54*a9fa9459Szrj #define DW_CFA(name, value) , name = value
55*a9fa9459Szrj 
56*a9fa9459Szrj #define DW_FIRST_TAG(name, value) enum dwarf_tag { \
57*a9fa9459Szrj   name = value
58*a9fa9459Szrj #define DW_END_TAG };
59*a9fa9459Szrj #define DW_FIRST_FORM(name, value) enum dwarf_form { \
60*a9fa9459Szrj   name = value
61*a9fa9459Szrj #define DW_END_FORM };
62*a9fa9459Szrj #define DW_FIRST_AT(name, value) enum dwarf_attribute { \
63*a9fa9459Szrj   name = value
64*a9fa9459Szrj #define DW_END_AT };
65*a9fa9459Szrj #define DW_FIRST_OP(name, value) enum dwarf_location_atom { \
66*a9fa9459Szrj   name = value
67*a9fa9459Szrj #define DW_END_OP };
68*a9fa9459Szrj #define DW_FIRST_ATE(name, value) enum dwarf_type { \
69*a9fa9459Szrj   name = value
70*a9fa9459Szrj #define DW_END_ATE };
71*a9fa9459Szrj #define DW_FIRST_CFA(name, value) enum dwarf_call_frame_info { \
72*a9fa9459Szrj   name = value
73*a9fa9459Szrj #define DW_END_CFA };
74*a9fa9459Szrj 
75*a9fa9459Szrj #include "dwarf2.def"
76*a9fa9459Szrj 
77*a9fa9459Szrj #undef DW_FIRST_TAG
78*a9fa9459Szrj #undef DW_END_TAG
79*a9fa9459Szrj #undef DW_FIRST_FORM
80*a9fa9459Szrj #undef DW_END_FORM
81*a9fa9459Szrj #undef DW_FIRST_AT
82*a9fa9459Szrj #undef DW_END_AT
83*a9fa9459Szrj #undef DW_FIRST_OP
84*a9fa9459Szrj #undef DW_END_OP
85*a9fa9459Szrj #undef DW_FIRST_ATE
86*a9fa9459Szrj #undef DW_END_ATE
87*a9fa9459Szrj #undef DW_FIRST_CFA
88*a9fa9459Szrj #undef DW_END_CFA
89*a9fa9459Szrj 
90*a9fa9459Szrj #undef DW_TAG
91*a9fa9459Szrj #undef DW_TAG_DUP
92*a9fa9459Szrj #undef DW_FORM
93*a9fa9459Szrj #undef DW_AT
94*a9fa9459Szrj #undef DW_AT_DUP
95*a9fa9459Szrj #undef DW_OP
96*a9fa9459Szrj #undef DW_OP_DUP
97*a9fa9459Szrj #undef DW_ATE
98*a9fa9459Szrj #undef DW_ATE_DUP
99*a9fa9459Szrj #undef DW_CFA
100*a9fa9459Szrj 
101*a9fa9459Szrj /* Flag that tells whether entry has a child or not.  */
102*a9fa9459Szrj #define DW_children_no   0
103*a9fa9459Szrj #define	DW_children_yes  1
104*a9fa9459Szrj 
105*a9fa9459Szrj #define DW_AT_stride_size   DW_AT_bit_stride  /* Note: The use of DW_AT_stride_size is deprecated.  */
106*a9fa9459Szrj #define DW_AT_stride   DW_AT_byte_stride  /* Note: The use of DW_AT_stride is deprecated.  */
107*a9fa9459Szrj 
108*a9fa9459Szrj /* Decimal sign encodings.  */
109*a9fa9459Szrj enum dwarf_decimal_sign_encoding
110*a9fa9459Szrj   {
111*a9fa9459Szrj     /* DWARF 3.  */
112*a9fa9459Szrj     DW_DS_unsigned = 0x01,
113*a9fa9459Szrj     DW_DS_leading_overpunch = 0x02,
114*a9fa9459Szrj     DW_DS_trailing_overpunch = 0x03,
115*a9fa9459Szrj     DW_DS_leading_separate = 0x04,
116*a9fa9459Szrj     DW_DS_trailing_separate = 0x05
117*a9fa9459Szrj   };
118*a9fa9459Szrj 
119*a9fa9459Szrj /* Endianity encodings.  */
120*a9fa9459Szrj enum dwarf_endianity_encoding
121*a9fa9459Szrj   {
122*a9fa9459Szrj     /* DWARF 3.  */
123*a9fa9459Szrj     DW_END_default = 0x00,
124*a9fa9459Szrj     DW_END_big = 0x01,
125*a9fa9459Szrj     DW_END_little = 0x02,
126*a9fa9459Szrj 
127*a9fa9459Szrj     DW_END_lo_user = 0x40,
128*a9fa9459Szrj     DW_END_hi_user = 0xff
129*a9fa9459Szrj   };
130*a9fa9459Szrj 
131*a9fa9459Szrj /* Array ordering names and codes.  */
132*a9fa9459Szrj enum dwarf_array_dim_ordering
133*a9fa9459Szrj   {
134*a9fa9459Szrj     DW_ORD_row_major = 0,
135*a9fa9459Szrj     DW_ORD_col_major = 1
136*a9fa9459Szrj   };
137*a9fa9459Szrj 
138*a9fa9459Szrj /* Access attribute.  */
139*a9fa9459Szrj enum dwarf_access_attribute
140*a9fa9459Szrj   {
141*a9fa9459Szrj     DW_ACCESS_public = 1,
142*a9fa9459Szrj     DW_ACCESS_protected = 2,
143*a9fa9459Szrj     DW_ACCESS_private = 3
144*a9fa9459Szrj   };
145*a9fa9459Szrj 
146*a9fa9459Szrj /* Visibility.  */
147*a9fa9459Szrj enum dwarf_visibility_attribute
148*a9fa9459Szrj   {
149*a9fa9459Szrj     DW_VIS_local = 1,
150*a9fa9459Szrj     DW_VIS_exported = 2,
151*a9fa9459Szrj     DW_VIS_qualified = 3
152*a9fa9459Szrj   };
153*a9fa9459Szrj 
154*a9fa9459Szrj /* Virtuality.  */
155*a9fa9459Szrj enum dwarf_virtuality_attribute
156*a9fa9459Szrj   {
157*a9fa9459Szrj     DW_VIRTUALITY_none = 0,
158*a9fa9459Szrj     DW_VIRTUALITY_virtual = 1,
159*a9fa9459Szrj     DW_VIRTUALITY_pure_virtual = 2
160*a9fa9459Szrj   };
161*a9fa9459Szrj 
162*a9fa9459Szrj /* Case sensitivity.  */
163*a9fa9459Szrj enum dwarf_id_case
164*a9fa9459Szrj   {
165*a9fa9459Szrj     DW_ID_case_sensitive = 0,
166*a9fa9459Szrj     DW_ID_up_case = 1,
167*a9fa9459Szrj     DW_ID_down_case = 2,
168*a9fa9459Szrj     DW_ID_case_insensitive = 3
169*a9fa9459Szrj   };
170*a9fa9459Szrj 
171*a9fa9459Szrj /* Calling convention.  */
172*a9fa9459Szrj enum dwarf_calling_convention
173*a9fa9459Szrj   {
174*a9fa9459Szrj     DW_CC_normal = 0x1,
175*a9fa9459Szrj     DW_CC_program = 0x2,
176*a9fa9459Szrj     DW_CC_nocall = 0x3,
177*a9fa9459Szrj 
178*a9fa9459Szrj     DW_CC_lo_user = 0x40,
179*a9fa9459Szrj     DW_CC_hi_user = 0xff,
180*a9fa9459Szrj 
181*a9fa9459Szrj     DW_CC_GNU_renesas_sh = 0x40,
182*a9fa9459Szrj     DW_CC_GNU_borland_fastcall_i386 = 0x41,
183*a9fa9459Szrj 
184*a9fa9459Szrj     /* This DW_CC_ value is not currently generated by any toolchain.  It is
185*a9fa9459Szrj        used internally to GDB to indicate OpenCL C functions that have been
186*a9fa9459Szrj        compiled with the IBM XL C for OpenCL compiler and use a non-platform
187*a9fa9459Szrj        calling convention for passing OpenCL C vector types.  This value may
188*a9fa9459Szrj        be changed freely as long as it does not conflict with any other DW_CC_
189*a9fa9459Szrj        value defined here.  */
190*a9fa9459Szrj     DW_CC_GDB_IBM_OpenCL = 0xff
191*a9fa9459Szrj   };
192*a9fa9459Szrj 
193*a9fa9459Szrj /* Inline attribute.  */
194*a9fa9459Szrj enum dwarf_inline_attribute
195*a9fa9459Szrj   {
196*a9fa9459Szrj     DW_INL_not_inlined = 0,
197*a9fa9459Szrj     DW_INL_inlined = 1,
198*a9fa9459Szrj     DW_INL_declared_not_inlined = 2,
199*a9fa9459Szrj     DW_INL_declared_inlined = 3
200*a9fa9459Szrj   };
201*a9fa9459Szrj 
202*a9fa9459Szrj /* Discriminant lists.  */
203*a9fa9459Szrj enum dwarf_discrim_list
204*a9fa9459Szrj   {
205*a9fa9459Szrj     DW_DSC_label = 0,
206*a9fa9459Szrj     DW_DSC_range = 1
207*a9fa9459Szrj   };
208*a9fa9459Szrj 
209*a9fa9459Szrj /* Line number opcodes.  */
210*a9fa9459Szrj enum dwarf_line_number_ops
211*a9fa9459Szrj   {
212*a9fa9459Szrj     DW_LNS_extended_op = 0,
213*a9fa9459Szrj     DW_LNS_copy = 1,
214*a9fa9459Szrj     DW_LNS_advance_pc = 2,
215*a9fa9459Szrj     DW_LNS_advance_line = 3,
216*a9fa9459Szrj     DW_LNS_set_file = 4,
217*a9fa9459Szrj     DW_LNS_set_column = 5,
218*a9fa9459Szrj     DW_LNS_negate_stmt = 6,
219*a9fa9459Szrj     DW_LNS_set_basic_block = 7,
220*a9fa9459Szrj     DW_LNS_const_add_pc = 8,
221*a9fa9459Szrj     DW_LNS_fixed_advance_pc = 9,
222*a9fa9459Szrj     /* DWARF 3.  */
223*a9fa9459Szrj     DW_LNS_set_prologue_end = 10,
224*a9fa9459Szrj     DW_LNS_set_epilogue_begin = 11,
225*a9fa9459Szrj     DW_LNS_set_isa = 12
226*a9fa9459Szrj   };
227*a9fa9459Szrj 
228*a9fa9459Szrj /* Line number extended opcodes.  */
229*a9fa9459Szrj enum dwarf_line_number_x_ops
230*a9fa9459Szrj   {
231*a9fa9459Szrj     DW_LNE_end_sequence = 1,
232*a9fa9459Szrj     DW_LNE_set_address = 2,
233*a9fa9459Szrj     DW_LNE_define_file = 3,
234*a9fa9459Szrj     DW_LNE_set_discriminator = 4,
235*a9fa9459Szrj     /* HP extensions.  */
236*a9fa9459Szrj     DW_LNE_HP_negate_is_UV_update      = 0x11,
237*a9fa9459Szrj     DW_LNE_HP_push_context             = 0x12,
238*a9fa9459Szrj     DW_LNE_HP_pop_context              = 0x13,
239*a9fa9459Szrj     DW_LNE_HP_set_file_line_column     = 0x14,
240*a9fa9459Szrj     DW_LNE_HP_set_routine_name         = 0x15,
241*a9fa9459Szrj     DW_LNE_HP_set_sequence             = 0x16,
242*a9fa9459Szrj     DW_LNE_HP_negate_post_semantics    = 0x17,
243*a9fa9459Szrj     DW_LNE_HP_negate_function_exit     = 0x18,
244*a9fa9459Szrj     DW_LNE_HP_negate_front_end_logical = 0x19,
245*a9fa9459Szrj     DW_LNE_HP_define_proc              = 0x20,
246*a9fa9459Szrj     DW_LNE_HP_source_file_correlation  = 0x80,
247*a9fa9459Szrj 
248*a9fa9459Szrj     DW_LNE_lo_user = 0x80,
249*a9fa9459Szrj     DW_LNE_hi_user = 0xff
250*a9fa9459Szrj   };
251*a9fa9459Szrj 
252*a9fa9459Szrj /* Sub-opcodes for DW_LNE_HP_source_file_correlation.  */
253*a9fa9459Szrj enum dwarf_line_number_hp_sfc_ops
254*a9fa9459Szrj   {
255*a9fa9459Szrj     DW_LNE_HP_SFC_formfeed = 1,
256*a9fa9459Szrj     DW_LNE_HP_SFC_set_listing_line = 2,
257*a9fa9459Szrj     DW_LNE_HP_SFC_associate = 3
258*a9fa9459Szrj   };
259*a9fa9459Szrj 
260*a9fa9459Szrj /* Type codes for location list entries.
261*a9fa9459Szrj    Extension for Fission.  See http://gcc.gnu.org/wiki/DebugFission.  */
262*a9fa9459Szrj 
263*a9fa9459Szrj enum dwarf_location_list_entry_type
264*a9fa9459Szrj   {
265*a9fa9459Szrj     DW_LLE_GNU_end_of_list_entry = 0,
266*a9fa9459Szrj     DW_LLE_GNU_base_address_selection_entry = 1,
267*a9fa9459Szrj     DW_LLE_GNU_start_end_entry = 2,
268*a9fa9459Szrj     DW_LLE_GNU_start_length_entry = 3
269*a9fa9459Szrj   };
270*a9fa9459Szrj 
271*a9fa9459Szrj #define DW_CIE_ID	  0xffffffff
272*a9fa9459Szrj #define DW64_CIE_ID	  0xffffffffffffffffULL
273*a9fa9459Szrj #define DW_CIE_VERSION	  1
274*a9fa9459Szrj 
275*a9fa9459Szrj #define DW_CFA_extended   0
276*a9fa9459Szrj 
277*a9fa9459Szrj #define DW_CHILDREN_no		     0x00
278*a9fa9459Szrj #define DW_CHILDREN_yes		     0x01
279*a9fa9459Szrj 
280*a9fa9459Szrj #define DW_ADDR_none		0
281*a9fa9459Szrj 
282*a9fa9459Szrj /* Source language names and codes.  */
283*a9fa9459Szrj enum dwarf_source_language
284*a9fa9459Szrj   {
285*a9fa9459Szrj     DW_LANG_C89 = 0x0001,
286*a9fa9459Szrj     DW_LANG_C = 0x0002,
287*a9fa9459Szrj     DW_LANG_Ada83 = 0x0003,
288*a9fa9459Szrj     DW_LANG_C_plus_plus = 0x0004,
289*a9fa9459Szrj     DW_LANG_Cobol74 = 0x0005,
290*a9fa9459Szrj     DW_LANG_Cobol85 = 0x0006,
291*a9fa9459Szrj     DW_LANG_Fortran77 = 0x0007,
292*a9fa9459Szrj     DW_LANG_Fortran90 = 0x0008,
293*a9fa9459Szrj     DW_LANG_Pascal83 = 0x0009,
294*a9fa9459Szrj     DW_LANG_Modula2 = 0x000a,
295*a9fa9459Szrj     /* DWARF 3.  */
296*a9fa9459Szrj     DW_LANG_Java = 0x000b,
297*a9fa9459Szrj     DW_LANG_C99 = 0x000c,
298*a9fa9459Szrj     DW_LANG_Ada95 = 0x000d,
299*a9fa9459Szrj     DW_LANG_Fortran95 = 0x000e,
300*a9fa9459Szrj     DW_LANG_PLI = 0x000f,
301*a9fa9459Szrj     DW_LANG_ObjC = 0x0010,
302*a9fa9459Szrj     DW_LANG_ObjC_plus_plus = 0x0011,
303*a9fa9459Szrj     DW_LANG_UPC = 0x0012,
304*a9fa9459Szrj     DW_LANG_D = 0x0013,
305*a9fa9459Szrj     /* DWARF 4.  */
306*a9fa9459Szrj     DW_LANG_Python = 0x0014,
307*a9fa9459Szrj     /* DWARF 5.  */
308*a9fa9459Szrj     DW_LANG_Go = 0x0016,
309*a9fa9459Szrj 
310*a9fa9459Szrj     DW_LANG_C_plus_plus_11 = 0x001a, /* dwarf5.20141029.pdf DRAFT */
311*a9fa9459Szrj     DW_LANG_Rust = 0x001c,
312*a9fa9459Szrj     DW_LANG_C11 = 0x001d,
313*a9fa9459Szrj     DW_LANG_C_plus_plus_14 = 0x0021,
314*a9fa9459Szrj     DW_LANG_Fortran03 = 0x0022,
315*a9fa9459Szrj     DW_LANG_Fortran08 = 0x0023,
316*a9fa9459Szrj 
317*a9fa9459Szrj     DW_LANG_lo_user = 0x8000,	/* Implementation-defined range start.  */
318*a9fa9459Szrj     DW_LANG_hi_user = 0xffff,	/* Implementation-defined range start.  */
319*a9fa9459Szrj 
320*a9fa9459Szrj     /* MIPS.  */
321*a9fa9459Szrj     DW_LANG_Mips_Assembler = 0x8001,
322*a9fa9459Szrj     /* UPC.  */
323*a9fa9459Szrj     DW_LANG_Upc = 0x8765,
324*a9fa9459Szrj     /* HP extensions.  */
325*a9fa9459Szrj     DW_LANG_HP_Bliss     = 0x8003,
326*a9fa9459Szrj     DW_LANG_HP_Basic91   = 0x8004,
327*a9fa9459Szrj     DW_LANG_HP_Pascal91  = 0x8005,
328*a9fa9459Szrj     DW_LANG_HP_IMacro    = 0x8006,
329*a9fa9459Szrj     DW_LANG_HP_Assembler = 0x8007,
330*a9fa9459Szrj 
331*a9fa9459Szrj     /* Rust extension, but replaced in DWARF 5.  */
332*a9fa9459Szrj     DW_LANG_Rust_old = 0x9000
333*a9fa9459Szrj   };
334*a9fa9459Szrj 
335*a9fa9459Szrj /* Names and codes for macro information.  */
336*a9fa9459Szrj enum dwarf_macinfo_record_type
337*a9fa9459Szrj   {
338*a9fa9459Szrj     DW_MACINFO_define = 1,
339*a9fa9459Szrj     DW_MACINFO_undef = 2,
340*a9fa9459Szrj     DW_MACINFO_start_file = 3,
341*a9fa9459Szrj     DW_MACINFO_end_file = 4,
342*a9fa9459Szrj     DW_MACINFO_vendor_ext = 255
343*a9fa9459Szrj   };
344*a9fa9459Szrj 
345*a9fa9459Szrj /* Names and codes for new style macro information.  */
346*a9fa9459Szrj enum dwarf_macro_record_type
347*a9fa9459Szrj   {
348*a9fa9459Szrj     DW_MACRO_GNU_define = 1,
349*a9fa9459Szrj     DW_MACRO_GNU_undef = 2,
350*a9fa9459Szrj     DW_MACRO_GNU_start_file = 3,
351*a9fa9459Szrj     DW_MACRO_GNU_end_file = 4,
352*a9fa9459Szrj     DW_MACRO_GNU_define_indirect = 5,
353*a9fa9459Szrj     DW_MACRO_GNU_undef_indirect = 6,
354*a9fa9459Szrj     DW_MACRO_GNU_transparent_include = 7,
355*a9fa9459Szrj     /* Extensions for DWZ multifile.
356*a9fa9459Szrj        See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open .  */
357*a9fa9459Szrj     DW_MACRO_GNU_define_indirect_alt = 8,
358*a9fa9459Szrj     DW_MACRO_GNU_undef_indirect_alt = 9,
359*a9fa9459Szrj     DW_MACRO_GNU_transparent_include_alt = 10,
360*a9fa9459Szrj     DW_MACRO_GNU_lo_user = 0xe0,
361*a9fa9459Szrj     DW_MACRO_GNU_hi_user = 0xff
362*a9fa9459Szrj   };
363*a9fa9459Szrj 
364*a9fa9459Szrj /* @@@ For use with GNU frame unwind information.  */
365*a9fa9459Szrj 
366*a9fa9459Szrj #define DW_EH_PE_absptr		0x00
367*a9fa9459Szrj #define DW_EH_PE_omit		0xff
368*a9fa9459Szrj 
369*a9fa9459Szrj #define DW_EH_PE_uleb128	0x01
370*a9fa9459Szrj #define DW_EH_PE_udata2		0x02
371*a9fa9459Szrj #define DW_EH_PE_udata4		0x03
372*a9fa9459Szrj #define DW_EH_PE_udata8		0x04
373*a9fa9459Szrj #define DW_EH_PE_sleb128	0x09
374*a9fa9459Szrj #define DW_EH_PE_sdata2		0x0A
375*a9fa9459Szrj #define DW_EH_PE_sdata4		0x0B
376*a9fa9459Szrj #define DW_EH_PE_sdata8		0x0C
377*a9fa9459Szrj #define DW_EH_PE_signed		0x08
378*a9fa9459Szrj 
379*a9fa9459Szrj #define DW_EH_PE_pcrel		0x10
380*a9fa9459Szrj #define DW_EH_PE_textrel	0x20
381*a9fa9459Szrj #define DW_EH_PE_datarel	0x30
382*a9fa9459Szrj #define DW_EH_PE_funcrel	0x40
383*a9fa9459Szrj #define DW_EH_PE_aligned	0x50
384*a9fa9459Szrj 
385*a9fa9459Szrj #define DW_EH_PE_indirect	0x80
386*a9fa9459Szrj 
387*a9fa9459Szrj /* Codes for the debug sections in a dwarf package (.dwp) file.
388*a9fa9459Szrj    Extensions for Fission.  See http://gcc.gnu.org/wiki/DebugFissionDWP.  */
389*a9fa9459Szrj enum dwarf_sect
390*a9fa9459Szrj   {
391*a9fa9459Szrj     DW_SECT_INFO = 1,
392*a9fa9459Szrj     DW_SECT_TYPES = 2,
393*a9fa9459Szrj     DW_SECT_ABBREV = 3,
394*a9fa9459Szrj     DW_SECT_LINE = 4,
395*a9fa9459Szrj     DW_SECT_LOC = 5,
396*a9fa9459Szrj     DW_SECT_STR_OFFSETS = 6,
397*a9fa9459Szrj     DW_SECT_MACINFO = 7,
398*a9fa9459Szrj     DW_SECT_MACRO = 8,
399*a9fa9459Szrj     DW_SECT_MAX = 8
400*a9fa9459Szrj   };
401*a9fa9459Szrj 
402*a9fa9459Szrj #ifdef __cplusplus
403*a9fa9459Szrj extern "C" {
404*a9fa9459Szrj #endif /* __cplusplus */
405*a9fa9459Szrj 
406*a9fa9459Szrj /* Return the name of a DW_TAG_ constant, or NULL if the value is not
407*a9fa9459Szrj    recognized.  */
408*a9fa9459Szrj extern const char *get_DW_TAG_name (unsigned int tag);
409*a9fa9459Szrj 
410*a9fa9459Szrj /* Return the name of a DW_AT_ constant, or NULL if the value is not
411*a9fa9459Szrj    recognized.  */
412*a9fa9459Szrj extern const char *get_DW_AT_name (unsigned int attr);
413*a9fa9459Szrj 
414*a9fa9459Szrj /* Return the name of a DW_FORM_ constant, or NULL if the value is not
415*a9fa9459Szrj    recognized.  */
416*a9fa9459Szrj extern const char *get_DW_FORM_name (unsigned int form);
417*a9fa9459Szrj 
418*a9fa9459Szrj /* Return the name of a DW_OP_ constant, or NULL if the value is not
419*a9fa9459Szrj    recognized.  */
420*a9fa9459Szrj extern const char *get_DW_OP_name (unsigned int op);
421*a9fa9459Szrj 
422*a9fa9459Szrj /* Return the name of a DW_ATE_ constant, or NULL if the value is not
423*a9fa9459Szrj    recognized.  */
424*a9fa9459Szrj extern const char *get_DW_ATE_name (unsigned int enc);
425*a9fa9459Szrj 
426*a9fa9459Szrj /* Return the name of a DW_CFA_ constant, or NULL if the value is not
427*a9fa9459Szrj    recognized.  */
428*a9fa9459Szrj extern const char *get_DW_CFA_name (unsigned int opc);
429*a9fa9459Szrj 
430*a9fa9459Szrj #ifdef __cplusplus
431*a9fa9459Szrj }
432*a9fa9459Szrj #endif /* __cplusplus */
433*a9fa9459Szrj 
434*a9fa9459Szrj #endif /* _DWARF2_H */
435