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