dwarf2.h revision 132718
1/* Declarations and definitions of codes relating to the DWARF2 symbolic
2   debugging information format.
3   Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002
4   Free Software Foundation, Inc.
5
6   Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
7   Office (AJPO), Florida State University and Silicon Graphics Inc.
8   provided support for this effort -- June 21, 1995.
9
10   Derived from the DWARF 1 implementation written by Ron Guilmette
11   (rfg@netcom.com), November 1990.
12
13This file is part of GCC.
14
15GCC is free software; you can redistribute it and/or modify it under
16the terms of the GNU General Public License as published by the Free
17Software Foundation; either version 2, or (at your option) any later
18version.
19
20GCC is distributed in the hope that it will be useful, but WITHOUT ANY
21WARRANTY; without even the implied warranty of MERCHANTABILITY or
22FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23for more details.
24
25You should have received a copy of the GNU General Public License
26along with GCC; see the file COPYING.  If not, write to the Free
27Software Foundation, 59 Temple Place - Suite 330, Boston, MA
2802111-1307, USA.  */
29
30/* This file is derived from the DWARF specification (a public document)
31   Revision 2.0.0 (July 27, 1993) developed by the UNIX International
32   Programming Languages Special Interest Group (UI/PLSIG) and distributed
33   by UNIX International.  Copies of this specification are available from
34   UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
35
36   This file also now contains definitions from the DWARF 3 specification.  */
37
38/* This file is shared between GCC and GDB, and should not contain
39   prototypes.  */
40
41#ifndef GCC_DWARF2_H
42#define GCC_DWARF2_H
43
44/* Tag names and codes.  */
45enum dwarf_tag
46  {
47    DW_TAG_padding = 0x00,
48    DW_TAG_array_type = 0x01,
49    DW_TAG_class_type = 0x02,
50    DW_TAG_entry_point = 0x03,
51    DW_TAG_enumeration_type = 0x04,
52    DW_TAG_formal_parameter = 0x05,
53    DW_TAG_imported_declaration = 0x08,
54    DW_TAG_label = 0x0a,
55    DW_TAG_lexical_block = 0x0b,
56    DW_TAG_member = 0x0d,
57    DW_TAG_pointer_type = 0x0f,
58    DW_TAG_reference_type = 0x10,
59    DW_TAG_compile_unit = 0x11,
60    DW_TAG_string_type = 0x12,
61    DW_TAG_structure_type = 0x13,
62    DW_TAG_subroutine_type = 0x15,
63    DW_TAG_typedef = 0x16,
64    DW_TAG_union_type = 0x17,
65    DW_TAG_unspecified_parameters = 0x18,
66    DW_TAG_variant = 0x19,
67    DW_TAG_common_block = 0x1a,
68    DW_TAG_common_inclusion = 0x1b,
69    DW_TAG_inheritance = 0x1c,
70    DW_TAG_inlined_subroutine = 0x1d,
71    DW_TAG_module = 0x1e,
72    DW_TAG_ptr_to_member_type = 0x1f,
73    DW_TAG_set_type = 0x20,
74    DW_TAG_subrange_type = 0x21,
75    DW_TAG_with_stmt = 0x22,
76    DW_TAG_access_declaration = 0x23,
77    DW_TAG_base_type = 0x24,
78    DW_TAG_catch_block = 0x25,
79    DW_TAG_const_type = 0x26,
80    DW_TAG_constant = 0x27,
81    DW_TAG_enumerator = 0x28,
82    DW_TAG_file_type = 0x29,
83    DW_TAG_friend = 0x2a,
84    DW_TAG_namelist = 0x2b,
85    DW_TAG_namelist_item = 0x2c,
86    DW_TAG_packed_type = 0x2d,
87    DW_TAG_subprogram = 0x2e,
88    DW_TAG_template_type_param = 0x2f,
89    DW_TAG_template_value_param = 0x30,
90    DW_TAG_thrown_type = 0x31,
91    DW_TAG_try_block = 0x32,
92    DW_TAG_variant_part = 0x33,
93    DW_TAG_variable = 0x34,
94    DW_TAG_volatile_type = 0x35,
95    /* DWARF 3.  */
96    DW_TAG_dwarf_procedure = 0x36,
97    DW_TAG_restrict_type = 0x37,
98    DW_TAG_interface_type = 0x38,
99    DW_TAG_namespace = 0x39,
100    DW_TAG_imported_module = 0x3a,
101    DW_TAG_unspecified_type = 0x3b,
102    DW_TAG_partial_unit = 0x3c,
103    DW_TAG_imported_unit = 0x3d,
104    /* SGI/MIPS Extensions.  */
105    DW_TAG_MIPS_loop = 0x4081,
106    /* GNU extensions.  */
107    DW_TAG_format_label = 0x4101,	/* For FORTRAN 77 and Fortran 90.  */
108    DW_TAG_function_template = 0x4102,	/* For C++.  */
109    DW_TAG_class_template = 0x4103,	/* For C++.  */
110    DW_TAG_GNU_BINCL = 0x4104,
111    DW_TAG_GNU_EINCL = 0x4105
112  };
113
114#define DW_TAG_lo_user	0x4080
115#define DW_TAG_hi_user	0xffff
116
117/* Flag that tells whether entry has a child or not.  */
118#define DW_children_no   0
119#define	DW_children_yes  1
120
121/* Form names and codes.  */
122enum dwarf_form
123  {
124    DW_FORM_addr = 0x01,
125    DW_FORM_block2 = 0x03,
126    DW_FORM_block4 = 0x04,
127    DW_FORM_data2 = 0x05,
128    DW_FORM_data4 = 0x06,
129    DW_FORM_data8 = 0x07,
130    DW_FORM_string = 0x08,
131    DW_FORM_block = 0x09,
132    DW_FORM_block1 = 0x0a,
133    DW_FORM_data1 = 0x0b,
134    DW_FORM_flag = 0x0c,
135    DW_FORM_sdata = 0x0d,
136    DW_FORM_strp = 0x0e,
137    DW_FORM_udata = 0x0f,
138    DW_FORM_ref_addr = 0x10,
139    DW_FORM_ref1 = 0x11,
140    DW_FORM_ref2 = 0x12,
141    DW_FORM_ref4 = 0x13,
142    DW_FORM_ref8 = 0x14,
143    DW_FORM_ref_udata = 0x15,
144    DW_FORM_indirect = 0x16
145  };
146
147/* Attribute names and codes.  */
148
149enum dwarf_attribute
150  {
151    DW_AT_sibling = 0x01,
152    DW_AT_location = 0x02,
153    DW_AT_name = 0x03,
154    DW_AT_ordering = 0x09,
155    DW_AT_subscr_data = 0x0a,
156    DW_AT_byte_size = 0x0b,
157    DW_AT_bit_offset = 0x0c,
158    DW_AT_bit_size = 0x0d,
159    DW_AT_element_list = 0x0f,
160    DW_AT_stmt_list = 0x10,
161    DW_AT_low_pc = 0x11,
162    DW_AT_high_pc = 0x12,
163    DW_AT_language = 0x13,
164    DW_AT_member = 0x14,
165    DW_AT_discr = 0x15,
166    DW_AT_discr_value = 0x16,
167    DW_AT_visibility = 0x17,
168    DW_AT_import = 0x18,
169    DW_AT_string_length = 0x19,
170    DW_AT_common_reference = 0x1a,
171    DW_AT_comp_dir = 0x1b,
172    DW_AT_const_value = 0x1c,
173    DW_AT_containing_type = 0x1d,
174    DW_AT_default_value = 0x1e,
175    DW_AT_inline = 0x20,
176    DW_AT_is_optional = 0x21,
177    DW_AT_lower_bound = 0x22,
178    DW_AT_producer = 0x25,
179    DW_AT_prototyped = 0x27,
180    DW_AT_return_addr = 0x2a,
181    DW_AT_start_scope = 0x2c,
182    DW_AT_stride_size = 0x2e,
183    DW_AT_upper_bound = 0x2f,
184    DW_AT_abstract_origin = 0x31,
185    DW_AT_accessibility = 0x32,
186    DW_AT_address_class = 0x33,
187    DW_AT_artificial = 0x34,
188    DW_AT_base_types = 0x35,
189    DW_AT_calling_convention = 0x36,
190    DW_AT_count = 0x37,
191    DW_AT_data_member_location = 0x38,
192    DW_AT_decl_column = 0x39,
193    DW_AT_decl_file = 0x3a,
194    DW_AT_decl_line = 0x3b,
195    DW_AT_declaration = 0x3c,
196    DW_AT_discr_list = 0x3d,
197    DW_AT_encoding = 0x3e,
198    DW_AT_external = 0x3f,
199    DW_AT_frame_base = 0x40,
200    DW_AT_friend = 0x41,
201    DW_AT_identifier_case = 0x42,
202    DW_AT_macro_info = 0x43,
203    DW_AT_namelist_items = 0x44,
204    DW_AT_priority = 0x45,
205    DW_AT_segment = 0x46,
206    DW_AT_specification = 0x47,
207    DW_AT_static_link = 0x48,
208    DW_AT_type = 0x49,
209    DW_AT_use_location = 0x4a,
210    DW_AT_variable_parameter = 0x4b,
211    DW_AT_virtuality = 0x4c,
212    DW_AT_vtable_elem_location = 0x4d,
213    /* DWARF 3 values.  */
214    DW_AT_allocated     = 0x4e,
215    DW_AT_associated    = 0x4f,
216    DW_AT_data_location = 0x50,
217    DW_AT_stride        = 0x51,
218    DW_AT_entry_pc      = 0x52,
219    DW_AT_use_UTF8      = 0x53,
220    DW_AT_extension     = 0x54,
221    DW_AT_ranges        = 0x55,
222    DW_AT_trampoline    = 0x56,
223    DW_AT_call_column   = 0x57,
224    DW_AT_call_file     = 0x58,
225    DW_AT_call_line     = 0x59,
226    /* SGI/MIPS Extensions.  */
227    DW_AT_MIPS_fde = 0x2001,
228    DW_AT_MIPS_loop_begin = 0x2002,
229    DW_AT_MIPS_tail_loop_begin = 0x2003,
230    DW_AT_MIPS_epilog_begin = 0x2004,
231    DW_AT_MIPS_loop_unroll_factor = 0x2005,
232    DW_AT_MIPS_software_pipeline_depth = 0x2006,
233    DW_AT_MIPS_linkage_name = 0x2007,
234    DW_AT_MIPS_stride = 0x2008,
235    DW_AT_MIPS_abstract_name = 0x2009,
236    DW_AT_MIPS_clone_origin = 0x200a,
237    DW_AT_MIPS_has_inlines = 0x200b,
238    /* GNU extensions.  */
239    DW_AT_sf_names   = 0x2101,
240    DW_AT_src_info   = 0x2102,
241    DW_AT_mac_info   = 0x2103,
242    DW_AT_src_coords = 0x2104,
243    DW_AT_body_begin = 0x2105,
244    DW_AT_body_end   = 0x2106,
245    DW_AT_GNU_vector = 0x2107,
246    /* VMS Extensions.  */
247    DW_AT_VMS_rtnbeg_pd_address = 0x2201
248  };
249
250#define DW_AT_lo_user	0x2000	/* Implementation-defined range start.  */
251#define DW_AT_hi_user	0x3ff0	/* Implementation-defined range end.  */
252
253/* Location atom names and codes.  */
254enum dwarf_location_atom
255  {
256    DW_OP_addr = 0x03,
257    DW_OP_deref = 0x06,
258    DW_OP_const1u = 0x08,
259    DW_OP_const1s = 0x09,
260    DW_OP_const2u = 0x0a,
261    DW_OP_const2s = 0x0b,
262    DW_OP_const4u = 0x0c,
263    DW_OP_const4s = 0x0d,
264    DW_OP_const8u = 0x0e,
265    DW_OP_const8s = 0x0f,
266    DW_OP_constu = 0x10,
267    DW_OP_consts = 0x11,
268    DW_OP_dup = 0x12,
269    DW_OP_drop = 0x13,
270    DW_OP_over = 0x14,
271    DW_OP_pick = 0x15,
272    DW_OP_swap = 0x16,
273    DW_OP_rot = 0x17,
274    DW_OP_xderef = 0x18,
275    DW_OP_abs = 0x19,
276    DW_OP_and = 0x1a,
277    DW_OP_div = 0x1b,
278    DW_OP_minus = 0x1c,
279    DW_OP_mod = 0x1d,
280    DW_OP_mul = 0x1e,
281    DW_OP_neg = 0x1f,
282    DW_OP_not = 0x20,
283    DW_OP_or = 0x21,
284    DW_OP_plus = 0x22,
285    DW_OP_plus_uconst = 0x23,
286    DW_OP_shl = 0x24,
287    DW_OP_shr = 0x25,
288    DW_OP_shra = 0x26,
289    DW_OP_xor = 0x27,
290    DW_OP_bra = 0x28,
291    DW_OP_eq = 0x29,
292    DW_OP_ge = 0x2a,
293    DW_OP_gt = 0x2b,
294    DW_OP_le = 0x2c,
295    DW_OP_lt = 0x2d,
296    DW_OP_ne = 0x2e,
297    DW_OP_skip = 0x2f,
298    DW_OP_lit0 = 0x30,
299    DW_OP_lit1 = 0x31,
300    DW_OP_lit2 = 0x32,
301    DW_OP_lit3 = 0x33,
302    DW_OP_lit4 = 0x34,
303    DW_OP_lit5 = 0x35,
304    DW_OP_lit6 = 0x36,
305    DW_OP_lit7 = 0x37,
306    DW_OP_lit8 = 0x38,
307    DW_OP_lit9 = 0x39,
308    DW_OP_lit10 = 0x3a,
309    DW_OP_lit11 = 0x3b,
310    DW_OP_lit12 = 0x3c,
311    DW_OP_lit13 = 0x3d,
312    DW_OP_lit14 = 0x3e,
313    DW_OP_lit15 = 0x3f,
314    DW_OP_lit16 = 0x40,
315    DW_OP_lit17 = 0x41,
316    DW_OP_lit18 = 0x42,
317    DW_OP_lit19 = 0x43,
318    DW_OP_lit20 = 0x44,
319    DW_OP_lit21 = 0x45,
320    DW_OP_lit22 = 0x46,
321    DW_OP_lit23 = 0x47,
322    DW_OP_lit24 = 0x48,
323    DW_OP_lit25 = 0x49,
324    DW_OP_lit26 = 0x4a,
325    DW_OP_lit27 = 0x4b,
326    DW_OP_lit28 = 0x4c,
327    DW_OP_lit29 = 0x4d,
328    DW_OP_lit30 = 0x4e,
329    DW_OP_lit31 = 0x4f,
330    DW_OP_reg0 = 0x50,
331    DW_OP_reg1 = 0x51,
332    DW_OP_reg2 = 0x52,
333    DW_OP_reg3 = 0x53,
334    DW_OP_reg4 = 0x54,
335    DW_OP_reg5 = 0x55,
336    DW_OP_reg6 = 0x56,
337    DW_OP_reg7 = 0x57,
338    DW_OP_reg8 = 0x58,
339    DW_OP_reg9 = 0x59,
340    DW_OP_reg10 = 0x5a,
341    DW_OP_reg11 = 0x5b,
342    DW_OP_reg12 = 0x5c,
343    DW_OP_reg13 = 0x5d,
344    DW_OP_reg14 = 0x5e,
345    DW_OP_reg15 = 0x5f,
346    DW_OP_reg16 = 0x60,
347    DW_OP_reg17 = 0x61,
348    DW_OP_reg18 = 0x62,
349    DW_OP_reg19 = 0x63,
350    DW_OP_reg20 = 0x64,
351    DW_OP_reg21 = 0x65,
352    DW_OP_reg22 = 0x66,
353    DW_OP_reg23 = 0x67,
354    DW_OP_reg24 = 0x68,
355    DW_OP_reg25 = 0x69,
356    DW_OP_reg26 = 0x6a,
357    DW_OP_reg27 = 0x6b,
358    DW_OP_reg28 = 0x6c,
359    DW_OP_reg29 = 0x6d,
360    DW_OP_reg30 = 0x6e,
361    DW_OP_reg31 = 0x6f,
362    DW_OP_breg0 = 0x70,
363    DW_OP_breg1 = 0x71,
364    DW_OP_breg2 = 0x72,
365    DW_OP_breg3 = 0x73,
366    DW_OP_breg4 = 0x74,
367    DW_OP_breg5 = 0x75,
368    DW_OP_breg6 = 0x76,
369    DW_OP_breg7 = 0x77,
370    DW_OP_breg8 = 0x78,
371    DW_OP_breg9 = 0x79,
372    DW_OP_breg10 = 0x7a,
373    DW_OP_breg11 = 0x7b,
374    DW_OP_breg12 = 0x7c,
375    DW_OP_breg13 = 0x7d,
376    DW_OP_breg14 = 0x7e,
377    DW_OP_breg15 = 0x7f,
378    DW_OP_breg16 = 0x80,
379    DW_OP_breg17 = 0x81,
380    DW_OP_breg18 = 0x82,
381    DW_OP_breg19 = 0x83,
382    DW_OP_breg20 = 0x84,
383    DW_OP_breg21 = 0x85,
384    DW_OP_breg22 = 0x86,
385    DW_OP_breg23 = 0x87,
386    DW_OP_breg24 = 0x88,
387    DW_OP_breg25 = 0x89,
388    DW_OP_breg26 = 0x8a,
389    DW_OP_breg27 = 0x8b,
390    DW_OP_breg28 = 0x8c,
391    DW_OP_breg29 = 0x8d,
392    DW_OP_breg30 = 0x8e,
393    DW_OP_breg31 = 0x8f,
394    DW_OP_regx = 0x90,
395    DW_OP_fbreg = 0x91,
396    DW_OP_bregx = 0x92,
397    DW_OP_piece = 0x93,
398    DW_OP_deref_size = 0x94,
399    DW_OP_xderef_size = 0x95,
400    DW_OP_nop = 0x96,
401    /* DWARF 3 extensions.  */
402    DW_OP_push_object_address = 0x97,
403    DW_OP_call2 = 0x98,
404    DW_OP_call4 = 0x99,
405    DW_OP_call_ref = 0x9a,
406    /* GNU extensions.  */
407    DW_OP_GNU_push_tls_address = 0xe0
408  };
409
410#define DW_OP_lo_user	0xe0	/* Implementation-defined range start.  */
411#define DW_OP_hi_user	0xff	/* Implementation-defined range end.  */
412
413/* Type encodings.  */
414enum dwarf_type
415  {
416    DW_ATE_void = 0x0,
417    DW_ATE_address = 0x1,
418    DW_ATE_boolean = 0x2,
419    DW_ATE_complex_float = 0x3,
420    DW_ATE_float = 0x4,
421    DW_ATE_signed = 0x5,
422    DW_ATE_signed_char = 0x6,
423    DW_ATE_unsigned = 0x7,
424    DW_ATE_unsigned_char = 0x8,
425    /* DWARF 3.  */
426    DW_ATE_imaginary_float = 0x9
427  };
428
429#define	DW_ATE_lo_user 0x80
430#define	DW_ATE_hi_user 0xff
431
432/* Array ordering names and codes.  */
433enum dwarf_array_dim_ordering
434  {
435    DW_ORD_row_major = 0,
436    DW_ORD_col_major = 1
437  };
438
439/* Access attribute.  */
440enum dwarf_access_attribute
441  {
442    DW_ACCESS_public = 1,
443    DW_ACCESS_protected = 2,
444    DW_ACCESS_private = 3
445  };
446
447/* Visibility.  */
448enum dwarf_visibility_attribute
449  {
450    DW_VIS_local = 1,
451    DW_VIS_exported = 2,
452    DW_VIS_qualified = 3
453  };
454
455/* Virtuality.  */
456enum dwarf_virtuality_attribute
457  {
458    DW_VIRTUALITY_none = 0,
459    DW_VIRTUALITY_virtual = 1,
460    DW_VIRTUALITY_pure_virtual = 2
461  };
462
463/* Case sensitivity.  */
464enum dwarf_id_case
465  {
466    DW_ID_case_sensitive = 0,
467    DW_ID_up_case = 1,
468    DW_ID_down_case = 2,
469    DW_ID_case_insensitive = 3
470  };
471
472/* Calling convention.  */
473enum dwarf_calling_convention
474  {
475    DW_CC_normal = 0x1,
476    DW_CC_program = 0x2,
477    DW_CC_nocall = 0x3
478  };
479
480#define DW_CC_lo_user 0x40
481#define DW_CC_hi_user 0xff
482
483/* Inline attribute.  */
484enum dwarf_inline_attribute
485  {
486    DW_INL_not_inlined = 0,
487    DW_INL_inlined = 1,
488    DW_INL_declared_not_inlined = 2,
489    DW_INL_declared_inlined = 3
490  };
491
492/* Discriminant lists.  */
493enum dwarf_discrim_list
494  {
495    DW_DSC_label = 0,
496    DW_DSC_range = 1
497  };
498
499/* Line number opcodes.  */
500enum dwarf_line_number_ops
501  {
502    DW_LNS_extended_op = 0,
503    DW_LNS_copy = 1,
504    DW_LNS_advance_pc = 2,
505    DW_LNS_advance_line = 3,
506    DW_LNS_set_file = 4,
507    DW_LNS_set_column = 5,
508    DW_LNS_negate_stmt = 6,
509    DW_LNS_set_basic_block = 7,
510    DW_LNS_const_add_pc = 8,
511    DW_LNS_fixed_advance_pc = 9,
512    /* DWARF 3.  */
513    DW_LNS_set_prologue_end = 10,
514    DW_LNS_set_epilogue_begin = 11,
515    DW_LNS_set_isa = 12
516  };
517
518/* Line number extended opcodes.  */
519enum dwarf_line_number_x_ops
520  {
521    DW_LNE_end_sequence = 1,
522    DW_LNE_set_address = 2,
523    DW_LNE_define_file = 3
524  };
525
526/* Call frame information.  */
527enum dwarf_call_frame_info
528  {
529    DW_CFA_advance_loc = 0x40,
530    DW_CFA_offset = 0x80,
531    DW_CFA_restore = 0xc0,
532    DW_CFA_nop = 0x00,
533    DW_CFA_set_loc = 0x01,
534    DW_CFA_advance_loc1 = 0x02,
535    DW_CFA_advance_loc2 = 0x03,
536    DW_CFA_advance_loc4 = 0x04,
537    DW_CFA_offset_extended = 0x05,
538    DW_CFA_restore_extended = 0x06,
539    DW_CFA_undefined = 0x07,
540    DW_CFA_same_value = 0x08,
541    DW_CFA_register = 0x09,
542    DW_CFA_remember_state = 0x0a,
543    DW_CFA_restore_state = 0x0b,
544    DW_CFA_def_cfa = 0x0c,
545    DW_CFA_def_cfa_register = 0x0d,
546    DW_CFA_def_cfa_offset = 0x0e,
547
548    /* DWARF 3.  */
549    DW_CFA_def_cfa_expression = 0x0f,
550    DW_CFA_expression = 0x10,
551    DW_CFA_offset_extended_sf = 0x11,
552    DW_CFA_def_cfa_sf = 0x12,
553    DW_CFA_def_cfa_offset_sf = 0x13,
554
555    /* SGI/MIPS specific.  */
556    DW_CFA_MIPS_advance_loc8 = 0x1d,
557
558    /* GNU extensions.  */
559    DW_CFA_GNU_window_save = 0x2d,
560    DW_CFA_GNU_args_size = 0x2e,
561    DW_CFA_GNU_negative_offset_extended = 0x2f
562  };
563
564#define DW_CIE_ID	  0xffffffff
565#define DW_CIE_VERSION	  1
566
567#define DW_CFA_extended   0
568#define DW_CFA_low_user   0x1c
569#define DW_CFA_high_user  0x3f
570
571#define DW_CHILDREN_no		     0x00
572#define DW_CHILDREN_yes		     0x01
573
574#define DW_ADDR_none		0
575
576/* Source language names and codes.  */
577enum dwarf_source_language
578  {
579    DW_LANG_C89 = 0x0001,
580    DW_LANG_C = 0x0002,
581    DW_LANG_Ada83 = 0x0003,
582    DW_LANG_C_plus_plus = 0x0004,
583    DW_LANG_Cobol74 = 0x0005,
584    DW_LANG_Cobol85 = 0x0006,
585    DW_LANG_Fortran77 = 0x0007,
586    DW_LANG_Fortran90 = 0x0008,
587    DW_LANG_Pascal83 = 0x0009,
588    DW_LANG_Modula2 = 0x000a,
589    DW_LANG_Java = 0x000b,
590    /* DWARF 3.  */
591    DW_LANG_C99 = 0x000c,
592    DW_LANG_Ada95 = 0x000d,
593    DW_LANG_Fortran95 = 0x000e,
594    /* MIPS.  */
595    DW_LANG_Mips_Assembler = 0x8001
596  };
597
598
599#define DW_LANG_lo_user 0x8000	/* Implementation-defined range start.  */
600#define DW_LANG_hi_user 0xffff	/* Implementation-defined range start.  */
601
602/* Names and codes for macro information.  */
603enum dwarf_macinfo_record_type
604  {
605    DW_MACINFO_define = 1,
606    DW_MACINFO_undef = 2,
607    DW_MACINFO_start_file = 3,
608    DW_MACINFO_end_file = 4,
609    DW_MACINFO_vendor_ext = 255
610  };
611
612/* @@@ For use with GNU frame unwind information.  */
613
614#define DW_EH_PE_absptr		0x00
615#define DW_EH_PE_omit		0xff
616
617#define DW_EH_PE_uleb128	0x01
618#define DW_EH_PE_udata2		0x02
619#define DW_EH_PE_udata4		0x03
620#define DW_EH_PE_udata8		0x04
621#define DW_EH_PE_sleb128	0x09
622#define DW_EH_PE_sdata2		0x0A
623#define DW_EH_PE_sdata4		0x0B
624#define DW_EH_PE_sdata8		0x0C
625#define DW_EH_PE_signed		0x08
626
627#define DW_EH_PE_pcrel		0x10
628#define DW_EH_PE_textrel	0x20
629#define DW_EH_PE_datarel	0x30
630#define DW_EH_PE_funcrel	0x40
631#define DW_EH_PE_aligned	0x50
632
633#define DW_EH_PE_indirect	0x80
634
635#endif /* dwarf2.h */
636