OSDN Git Service

* config/freebsd-spec.h (FBSD_CPP_PREDEFINES): Remove.
[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 /* Tag names and codes.  */
42 enum 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.  */
119 enum 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
146 enum 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.  */
251 enum 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_call_ref = 0x9a,
403     /* GNU extensions.  */
404     DW_OP_GNU_push_tls_address = 0xe0
405   };
406
407 #define DW_OP_lo_user   0xe0    /* Implementation-defined range start.  */
408 #define DW_OP_hi_user   0xff    /* Implementation-defined range end.  */
409
410 /* Type encodings.  */
411 enum dwarf_type
412   {
413     DW_ATE_void = 0x0,
414     DW_ATE_address = 0x1,
415     DW_ATE_boolean = 0x2,
416     DW_ATE_complex_float = 0x3,
417     DW_ATE_float = 0x4,
418     DW_ATE_signed = 0x5,
419     DW_ATE_signed_char = 0x6,
420     DW_ATE_unsigned = 0x7,
421     DW_ATE_unsigned_char = 0x8,
422     /* DWARF 3.  */
423     DW_ATE_imaginary_float = 0x9
424   };
425
426 #define DW_ATE_lo_user 0x80
427 #define DW_ATE_hi_user 0xff
428
429 /* Array ordering names and codes.  */
430 enum dwarf_array_dim_ordering
431   {
432     DW_ORD_row_major = 0,
433     DW_ORD_col_major = 1
434   };
435
436 /* Access attribute.  */
437 enum dwarf_access_attribute
438   {
439     DW_ACCESS_public = 1,
440     DW_ACCESS_protected = 2,
441     DW_ACCESS_private = 3
442   };
443
444 /* Visibility.  */
445 enum dwarf_visibility_attribute
446   {
447     DW_VIS_local = 1,
448     DW_VIS_exported = 2,
449     DW_VIS_qualified = 3
450   };
451
452 /* Virtuality.  */
453 enum dwarf_virtuality_attribute
454   {
455     DW_VIRTUALITY_none = 0,
456     DW_VIRTUALITY_virtual = 1,
457     DW_VIRTUALITY_pure_virtual = 2
458   };
459
460 /* Case sensitivity.  */
461 enum dwarf_id_case
462   {
463     DW_ID_case_sensitive = 0,
464     DW_ID_up_case = 1,
465     DW_ID_down_case = 2,
466     DW_ID_case_insensitive = 3
467   };
468
469 /* Calling convention.  */
470 enum dwarf_calling_convention
471   {
472     DW_CC_normal = 0x1,
473     DW_CC_program = 0x2,
474     DW_CC_nocall = 0x3
475   };
476
477 #define DW_CC_lo_user 0x40
478 #define DW_CC_hi_user 0xff
479
480 /* Inline attribute.  */
481 enum dwarf_inline_attribute
482   {
483     DW_INL_not_inlined = 0,
484     DW_INL_inlined = 1,
485     DW_INL_declared_not_inlined = 2,
486     DW_INL_declared_inlined = 3
487   };
488
489 /* Discriminant lists.  */
490 enum dwarf_discrim_list
491   {
492     DW_DSC_label = 0,
493     DW_DSC_range = 1
494   };
495
496 /* Line number opcodes.  */
497 enum dwarf_line_number_ops
498   {
499     DW_LNS_extended_op = 0,
500     DW_LNS_copy = 1,
501     DW_LNS_advance_pc = 2,
502     DW_LNS_advance_line = 3,
503     DW_LNS_set_file = 4,
504     DW_LNS_set_column = 5,
505     DW_LNS_negate_stmt = 6,
506     DW_LNS_set_basic_block = 7,
507     DW_LNS_const_add_pc = 8,
508     DW_LNS_fixed_advance_pc = 9,
509     /* DWARF 3.  */
510     DW_LNS_set_prologue_end = 10,
511     DW_LNS_set_epilogue_begin = 11,
512     DW_LNS_set_isa = 12
513   };
514
515 /* Line number extended opcodes.  */
516 enum dwarf_line_number_x_ops
517   {
518     DW_LNE_end_sequence = 1,
519     DW_LNE_set_address = 2,
520     DW_LNE_define_file = 3
521   };
522
523 /* Call frame information.  */
524 enum dwarf_call_frame_info
525   {
526     DW_CFA_advance_loc = 0x40,
527     DW_CFA_offset = 0x80,
528     DW_CFA_restore = 0xc0,
529     DW_CFA_nop = 0x00,
530     DW_CFA_set_loc = 0x01,
531     DW_CFA_advance_loc1 = 0x02,
532     DW_CFA_advance_loc2 = 0x03,
533     DW_CFA_advance_loc4 = 0x04,
534     DW_CFA_offset_extended = 0x05,
535     DW_CFA_restore_extended = 0x06,
536     DW_CFA_undefined = 0x07,
537     DW_CFA_same_value = 0x08,
538     DW_CFA_register = 0x09,
539     DW_CFA_remember_state = 0x0a,
540     DW_CFA_restore_state = 0x0b,
541     DW_CFA_def_cfa = 0x0c,
542     DW_CFA_def_cfa_register = 0x0d,
543     DW_CFA_def_cfa_offset = 0x0e,
544
545     /* DWARF 3.  */
546     DW_CFA_def_cfa_expression = 0x0f,
547     DW_CFA_expression = 0x10,
548     DW_CFA_offset_extended_sf = 0x11,
549     DW_CFA_def_cfa_sf = 0x12,
550     DW_CFA_def_cfa_offset_sf = 0x13,
551
552     /* SGI/MIPS specific.  */
553     DW_CFA_MIPS_advance_loc8 = 0x1d,
554
555     /* GNU extensions.  */
556     DW_CFA_GNU_window_save = 0x2d,
557     DW_CFA_GNU_args_size = 0x2e,
558     DW_CFA_GNU_negative_offset_extended = 0x2f
559   };
560
561 #define DW_CIE_ID         0xffffffff
562 #define DW_CIE_VERSION    1
563
564 #define DW_CFA_extended   0
565 #define DW_CFA_low_user   0x1c
566 #define DW_CFA_high_user  0x3f
567
568 #define DW_CHILDREN_no               0x00
569 #define DW_CHILDREN_yes              0x01
570
571 #define DW_ADDR_none            0
572
573 /* Source language names and codes.  */
574 enum dwarf_source_language
575   {
576     DW_LANG_C89 = 0x0001,
577     DW_LANG_C = 0x0002,
578     DW_LANG_Ada83 = 0x0003,
579     DW_LANG_C_plus_plus = 0x0004,
580     DW_LANG_Cobol74 = 0x0005,
581     DW_LANG_Cobol85 = 0x0006,
582     DW_LANG_Fortran77 = 0x0007,
583     DW_LANG_Fortran90 = 0x0008,
584     DW_LANG_Pascal83 = 0x0009,
585     DW_LANG_Modula2 = 0x000a,
586     DW_LANG_Java = 0x000b,
587     /* DWARF 3.  */
588     DW_LANG_C99 = 0x000c,
589     DW_LANG_Ada95 = 0x000d,
590     DW_LANG_Fortran95 = 0x000e,
591     /* MIPS.  */
592     DW_LANG_Mips_Assembler = 0x8001
593   };
594
595
596 #define DW_LANG_lo_user 0x8000  /* Implementation-defined range start.  */
597 #define DW_LANG_hi_user 0xffff  /* Implementation-defined range start.  */
598
599 /* Names and codes for macro information.  */
600 enum dwarf_macinfo_record_type
601   {
602     DW_MACINFO_define = 1,
603     DW_MACINFO_undef = 2,
604     DW_MACINFO_start_file = 3,
605     DW_MACINFO_end_file = 4,
606     DW_MACINFO_vendor_ext = 255
607   };
608 \f
609 /* @@@ For use with GNU frame unwind information.  */
610
611 #define DW_EH_PE_absptr         0x00
612 #define DW_EH_PE_omit           0xff
613
614 #define DW_EH_PE_uleb128        0x01
615 #define DW_EH_PE_udata2         0x02
616 #define DW_EH_PE_udata4         0x03
617 #define DW_EH_PE_udata8         0x04
618 #define DW_EH_PE_sleb128        0x09
619 #define DW_EH_PE_sdata2         0x0A
620 #define DW_EH_PE_sdata4         0x0B
621 #define DW_EH_PE_sdata8         0x0C
622 #define DW_EH_PE_signed         0x08
623
624 #define DW_EH_PE_pcrel          0x10
625 #define DW_EH_PE_textrel        0x20
626 #define DW_EH_PE_datarel        0x30
627 #define DW_EH_PE_funcrel        0x40
628 #define DW_EH_PE_aligned        0x50
629
630 #define DW_EH_PE_indirect       0x80