OSDN Git Service

* config/arm/crti.asm: Give _init and _fini function type.
[pf3gnuchains/gcc-fork.git] / gcc / dwarf2.h
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
13 This file is part of GCC.
14
15 GCC is free software; you can redistribute it and/or modify it under
16 the terms of the GNU General Public License as published by the Free
17 Software Foundation; either version 2, or (at your option) any later
18 version.
19
20 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
21 WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23 for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with GCC; see the file COPYING.  If not, write to the Free
27 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
28 02111-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.  */
45 enum 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.  */
122 enum 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
149 enum 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.  */
254 enum 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.  */
414 enum 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.  */
433 enum dwarf_array_dim_ordering
434   {
435     DW_ORD_row_major = 0,
436     DW_ORD_col_major = 1
437   };
438
439 /* Access attribute.  */
440 enum dwarf_access_attribute
441   {
442     DW_ACCESS_public = 1,
443     DW_ACCESS_protected = 2,
444     DW_ACCESS_private = 3
445   };
446
447 /* Visibility.  */
448 enum dwarf_visibility_attribute
449   {
450     DW_VIS_local = 1,
451     DW_VIS_exported = 2,
452     DW_VIS_qualified = 3
453   };
454
455 /* Virtuality.  */
456 enum 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.  */
464 enum 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.  */
473 enum dwarf_calling_convention
474   {
475     DW_CC_normal = 0x1,
476     DW_CC_program = 0x2,
477     DW_CC_nocall = 0x3,
478     DW_CC_renesas_sh = 0x40
479   };
480
481 #define DW_CC_lo_user 0x40
482 #define DW_CC_hi_user 0xff
483
484 /* Inline attribute.  */
485 enum dwarf_inline_attribute
486   {
487     DW_INL_not_inlined = 0,
488     DW_INL_inlined = 1,
489     DW_INL_declared_not_inlined = 2,
490     DW_INL_declared_inlined = 3
491   };
492
493 /* Discriminant lists.  */
494 enum dwarf_discrim_list
495   {
496     DW_DSC_label = 0,
497     DW_DSC_range = 1
498   };
499
500 /* Line number opcodes.  */
501 enum dwarf_line_number_ops
502   {
503     DW_LNS_extended_op = 0,
504     DW_LNS_copy = 1,
505     DW_LNS_advance_pc = 2,
506     DW_LNS_advance_line = 3,
507     DW_LNS_set_file = 4,
508     DW_LNS_set_column = 5,
509     DW_LNS_negate_stmt = 6,
510     DW_LNS_set_basic_block = 7,
511     DW_LNS_const_add_pc = 8,
512     DW_LNS_fixed_advance_pc = 9,
513     /* DWARF 3.  */
514     DW_LNS_set_prologue_end = 10,
515     DW_LNS_set_epilogue_begin = 11,
516     DW_LNS_set_isa = 12
517   };
518
519 /* Line number extended opcodes.  */
520 enum dwarf_line_number_x_ops
521   {
522     DW_LNE_end_sequence = 1,
523     DW_LNE_set_address = 2,
524     DW_LNE_define_file = 3
525   };
526
527 /* Call frame information.  */
528 enum dwarf_call_frame_info
529   {
530     DW_CFA_advance_loc = 0x40,
531     DW_CFA_offset = 0x80,
532     DW_CFA_restore = 0xc0,
533     DW_CFA_nop = 0x00,
534     DW_CFA_set_loc = 0x01,
535     DW_CFA_advance_loc1 = 0x02,
536     DW_CFA_advance_loc2 = 0x03,
537     DW_CFA_advance_loc4 = 0x04,
538     DW_CFA_offset_extended = 0x05,
539     DW_CFA_restore_extended = 0x06,
540     DW_CFA_undefined = 0x07,
541     DW_CFA_same_value = 0x08,
542     DW_CFA_register = 0x09,
543     DW_CFA_remember_state = 0x0a,
544     DW_CFA_restore_state = 0x0b,
545     DW_CFA_def_cfa = 0x0c,
546     DW_CFA_def_cfa_register = 0x0d,
547     DW_CFA_def_cfa_offset = 0x0e,
548
549     /* DWARF 3.  */
550     DW_CFA_def_cfa_expression = 0x0f,
551     DW_CFA_expression = 0x10,
552     DW_CFA_offset_extended_sf = 0x11,
553     DW_CFA_def_cfa_sf = 0x12,
554     DW_CFA_def_cfa_offset_sf = 0x13,
555
556     /* SGI/MIPS specific.  */
557     DW_CFA_MIPS_advance_loc8 = 0x1d,
558
559     /* GNU extensions.  */
560     DW_CFA_GNU_window_save = 0x2d,
561     DW_CFA_GNU_args_size = 0x2e,
562     DW_CFA_GNU_negative_offset_extended = 0x2f
563   };
564
565 #define DW_CIE_ID         0xffffffff
566 #define DW_CIE_VERSION    1
567
568 #define DW_CFA_extended   0
569 #define DW_CFA_low_user   0x1c
570 #define DW_CFA_high_user  0x3f
571
572 #define DW_CHILDREN_no               0x00
573 #define DW_CHILDREN_yes              0x01
574
575 #define DW_ADDR_none            0
576
577 /* Source language names and codes.  */
578 enum dwarf_source_language
579   {
580     DW_LANG_C89 = 0x0001,
581     DW_LANG_C = 0x0002,
582     DW_LANG_Ada83 = 0x0003,
583     DW_LANG_C_plus_plus = 0x0004,
584     DW_LANG_Cobol74 = 0x0005,
585     DW_LANG_Cobol85 = 0x0006,
586     DW_LANG_Fortran77 = 0x0007,
587     DW_LANG_Fortran90 = 0x0008,
588     DW_LANG_Pascal83 = 0x0009,
589     DW_LANG_Modula2 = 0x000a,
590     DW_LANG_Java = 0x000b,
591     /* DWARF 3.  */
592     DW_LANG_C99 = 0x000c,
593     DW_LANG_Ada95 = 0x000d,
594     DW_LANG_Fortran95 = 0x000e,
595     /* MIPS.  */
596     DW_LANG_Mips_Assembler = 0x8001
597   };
598
599
600 #define DW_LANG_lo_user 0x8000  /* Implementation-defined range start.  */
601 #define DW_LANG_hi_user 0xffff  /* Implementation-defined range start.  */
602
603 /* Names and codes for macro information.  */
604 enum dwarf_macinfo_record_type
605   {
606     DW_MACINFO_define = 1,
607     DW_MACINFO_undef = 2,
608     DW_MACINFO_start_file = 3,
609     DW_MACINFO_end_file = 4,
610     DW_MACINFO_vendor_ext = 255
611   };
612 \f
613 /* @@@ For use with GNU frame unwind information.  */
614
615 #define DW_EH_PE_absptr         0x00
616 #define DW_EH_PE_omit           0xff
617
618 #define DW_EH_PE_uleb128        0x01
619 #define DW_EH_PE_udata2         0x02
620 #define DW_EH_PE_udata4         0x03
621 #define DW_EH_PE_udata8         0x04
622 #define DW_EH_PE_sleb128        0x09
623 #define DW_EH_PE_sdata2         0x0A
624 #define DW_EH_PE_sdata4         0x0B
625 #define DW_EH_PE_sdata8         0x0C
626 #define DW_EH_PE_signed         0x08
627
628 #define DW_EH_PE_pcrel          0x10
629 #define DW_EH_PE_textrel        0x20
630 #define DW_EH_PE_datarel        0x30
631 #define DW_EH_PE_funcrel        0x40
632 #define DW_EH_PE_aligned        0x50
633
634 #define DW_EH_PE_indirect       0x80
635
636 #endif /* dwarf2.h */