OSDN Git Service

* dwarf2.h (enum dwarf_call_frame_info): Add other DWARF 3 codes.
[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 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
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     /* VMS Extensions.  */
243     DW_AT_VMS_rtnbeg_pd_address = 0x2201
244   };
245
246 #define DW_AT_lo_user   0x2000  /* Implementation-defined range start.  */
247 #define DW_AT_hi_user   0x3ff0  /* Implementation-defined range end.  */
248
249 /* Location atom names and codes.  */
250 enum dwarf_location_atom
251   {
252     DW_OP_addr = 0x03,
253     DW_OP_deref = 0x06,
254     DW_OP_const1u = 0x08,
255     DW_OP_const1s = 0x09,
256     DW_OP_const2u = 0x0a,
257     DW_OP_const2s = 0x0b,
258     DW_OP_const4u = 0x0c,
259     DW_OP_const4s = 0x0d,
260     DW_OP_const8u = 0x0e,
261     DW_OP_const8s = 0x0f,
262     DW_OP_constu = 0x10,
263     DW_OP_consts = 0x11,
264     DW_OP_dup = 0x12,
265     DW_OP_drop = 0x13,
266     DW_OP_over = 0x14,
267     DW_OP_pick = 0x15,
268     DW_OP_swap = 0x16,
269     DW_OP_rot = 0x17,
270     DW_OP_xderef = 0x18,
271     DW_OP_abs = 0x19,
272     DW_OP_and = 0x1a,
273     DW_OP_div = 0x1b,
274     DW_OP_minus = 0x1c,
275     DW_OP_mod = 0x1d,
276     DW_OP_mul = 0x1e,
277     DW_OP_neg = 0x1f,
278     DW_OP_not = 0x20,
279     DW_OP_or = 0x21,
280     DW_OP_plus = 0x22,
281     DW_OP_plus_uconst = 0x23,
282     DW_OP_shl = 0x24,
283     DW_OP_shr = 0x25,
284     DW_OP_shra = 0x26,
285     DW_OP_xor = 0x27,
286     DW_OP_bra = 0x28,
287     DW_OP_eq = 0x29,
288     DW_OP_ge = 0x2a,
289     DW_OP_gt = 0x2b,
290     DW_OP_le = 0x2c,
291     DW_OP_lt = 0x2d,
292     DW_OP_ne = 0x2e,
293     DW_OP_skip = 0x2f,
294     DW_OP_lit0 = 0x30,
295     DW_OP_lit1 = 0x31,
296     DW_OP_lit2 = 0x32,
297     DW_OP_lit3 = 0x33,
298     DW_OP_lit4 = 0x34,
299     DW_OP_lit5 = 0x35,
300     DW_OP_lit6 = 0x36,
301     DW_OP_lit7 = 0x37,
302     DW_OP_lit8 = 0x38,
303     DW_OP_lit9 = 0x39,
304     DW_OP_lit10 = 0x3a,
305     DW_OP_lit11 = 0x3b,
306     DW_OP_lit12 = 0x3c,
307     DW_OP_lit13 = 0x3d,
308     DW_OP_lit14 = 0x3e,
309     DW_OP_lit15 = 0x3f,
310     DW_OP_lit16 = 0x40,
311     DW_OP_lit17 = 0x41,
312     DW_OP_lit18 = 0x42,
313     DW_OP_lit19 = 0x43,
314     DW_OP_lit20 = 0x44,
315     DW_OP_lit21 = 0x45,
316     DW_OP_lit22 = 0x46,
317     DW_OP_lit23 = 0x47,
318     DW_OP_lit24 = 0x48,
319     DW_OP_lit25 = 0x49,
320     DW_OP_lit26 = 0x4a,
321     DW_OP_lit27 = 0x4b,
322     DW_OP_lit28 = 0x4c,
323     DW_OP_lit29 = 0x4d,
324     DW_OP_lit30 = 0x4e,
325     DW_OP_lit31 = 0x4f,
326     DW_OP_reg0 = 0x50,
327     DW_OP_reg1 = 0x51,
328     DW_OP_reg2 = 0x52,
329     DW_OP_reg3 = 0x53,
330     DW_OP_reg4 = 0x54,
331     DW_OP_reg5 = 0x55,
332     DW_OP_reg6 = 0x56,
333     DW_OP_reg7 = 0x57,
334     DW_OP_reg8 = 0x58,
335     DW_OP_reg9 = 0x59,
336     DW_OP_reg10 = 0x5a,
337     DW_OP_reg11 = 0x5b,
338     DW_OP_reg12 = 0x5c,
339     DW_OP_reg13 = 0x5d,
340     DW_OP_reg14 = 0x5e,
341     DW_OP_reg15 = 0x5f,
342     DW_OP_reg16 = 0x60,
343     DW_OP_reg17 = 0x61,
344     DW_OP_reg18 = 0x62,
345     DW_OP_reg19 = 0x63,
346     DW_OP_reg20 = 0x64,
347     DW_OP_reg21 = 0x65,
348     DW_OP_reg22 = 0x66,
349     DW_OP_reg23 = 0x67,
350     DW_OP_reg24 = 0x68,
351     DW_OP_reg25 = 0x69,
352     DW_OP_reg26 = 0x6a,
353     DW_OP_reg27 = 0x6b,
354     DW_OP_reg28 = 0x6c,
355     DW_OP_reg29 = 0x6d,
356     DW_OP_reg30 = 0x6e,
357     DW_OP_reg31 = 0x6f,
358     DW_OP_breg0 = 0x70,
359     DW_OP_breg1 = 0x71,
360     DW_OP_breg2 = 0x72,
361     DW_OP_breg3 = 0x73,
362     DW_OP_breg4 = 0x74,
363     DW_OP_breg5 = 0x75,
364     DW_OP_breg6 = 0x76,
365     DW_OP_breg7 = 0x77,
366     DW_OP_breg8 = 0x78,
367     DW_OP_breg9 = 0x79,
368     DW_OP_breg10 = 0x7a,
369     DW_OP_breg11 = 0x7b,
370     DW_OP_breg12 = 0x7c,
371     DW_OP_breg13 = 0x7d,
372     DW_OP_breg14 = 0x7e,
373     DW_OP_breg15 = 0x7f,
374     DW_OP_breg16 = 0x80,
375     DW_OP_breg17 = 0x81,
376     DW_OP_breg18 = 0x82,
377     DW_OP_breg19 = 0x83,
378     DW_OP_breg20 = 0x84,
379     DW_OP_breg21 = 0x85,
380     DW_OP_breg22 = 0x86,
381     DW_OP_breg23 = 0x87,
382     DW_OP_breg24 = 0x88,
383     DW_OP_breg25 = 0x89,
384     DW_OP_breg26 = 0x8a,
385     DW_OP_breg27 = 0x8b,
386     DW_OP_breg28 = 0x8c,
387     DW_OP_breg29 = 0x8d,
388     DW_OP_breg30 = 0x8e,
389     DW_OP_breg31 = 0x8f,
390     DW_OP_regx = 0x90,
391     DW_OP_fbreg = 0x91,
392     DW_OP_bregx = 0x92,
393     DW_OP_piece = 0x93,
394     DW_OP_deref_size = 0x94,
395     DW_OP_xderef_size = 0x95,
396     DW_OP_nop = 0x96,
397     /* DWARF 3 extensions.  */
398     DW_OP_push_object_address = 0x97,
399     DW_OP_call2 = 0x98,
400     DW_OP_call4 = 0x99,
401     DW_OP_calli = 0x9a
402   };
403
404 #define DW_OP_lo_user   0x80    /* Implementation-defined range start.  */
405 #define DW_OP_hi_user   0xff    /* Implementation-defined range end.  */
406
407 /* Type encodings.  */
408 enum dwarf_type
409   {
410     DW_ATE_void = 0x0,
411     DW_ATE_address = 0x1,
412     DW_ATE_boolean = 0x2,
413     DW_ATE_complex_float = 0x3,
414     DW_ATE_float = 0x4,
415     DW_ATE_signed = 0x5,
416     DW_ATE_signed_char = 0x6,
417     DW_ATE_unsigned = 0x7,
418     DW_ATE_unsigned_char = 0x8,
419     /* DWARF 3.  */
420     DW_ATE_imaginary_float = 0x9
421   };
422
423 #define DW_ATE_lo_user 0x80
424 #define DW_ATE_hi_user 0xff
425
426 /* Array ordering names and codes.  */
427 enum dwarf_array_dim_ordering
428   {
429     DW_ORD_row_major = 0,
430     DW_ORD_col_major = 1
431   };
432
433 /* Access attribute.  */
434 enum dwarf_access_attribute
435   {
436     DW_ACCESS_public = 1,
437     DW_ACCESS_protected = 2,
438     DW_ACCESS_private = 3
439   };
440
441 /* Visibility.  */
442 enum dwarf_visibility_attribute
443   {
444     DW_VIS_local = 1,
445     DW_VIS_exported = 2,
446     DW_VIS_qualified = 3
447   };
448
449 /* Virtuality.  */
450 enum dwarf_virtuality_attribute
451   {
452     DW_VIRTUALITY_none = 0,
453     DW_VIRTUALITY_virtual = 1,
454     DW_VIRTUALITY_pure_virtual = 2
455   };
456
457 /* Case sensitivity.  */
458 enum dwarf_id_case
459   {
460     DW_ID_case_sensitive = 0,
461     DW_ID_up_case = 1,
462     DW_ID_down_case = 2,
463     DW_ID_case_insensitive = 3
464   };
465
466 /* Calling convention.  */
467 enum dwarf_calling_convention
468   {
469     DW_CC_normal = 0x1,
470     DW_CC_program = 0x2,
471     DW_CC_nocall = 0x3
472   };
473
474 #define DW_CC_lo_user 0x40
475 #define DW_CC_hi_user 0xff
476
477 /* Inline attribute.  */
478 enum dwarf_inline_attribute
479   {
480     DW_INL_not_inlined = 0,
481     DW_INL_inlined = 1,
482     DW_INL_declared_not_inlined = 2,
483     DW_INL_declared_inlined = 3
484   };
485
486 /* Discriminant lists.  */
487 enum dwarf_discrim_list
488   {
489     DW_DSC_label = 0,
490     DW_DSC_range = 1
491   };
492
493 /* Line number opcodes.  */
494 enum dwarf_line_number_ops
495   {
496     DW_LNS_extended_op = 0,
497     DW_LNS_copy = 1,
498     DW_LNS_advance_pc = 2,
499     DW_LNS_advance_line = 3,
500     DW_LNS_set_file = 4,
501     DW_LNS_set_column = 5,
502     DW_LNS_negate_stmt = 6,
503     DW_LNS_set_basic_block = 7,
504     DW_LNS_const_add_pc = 8,
505     DW_LNS_fixed_advance_pc = 9,
506     /* DWARF 3.  */
507     DW_LNS_set_prologue_end = 10,
508     DW_LNS_set_epilogue_begin = 11,
509     DW_LNS_set_isa = 12
510   };
511
512 /* Line number extended opcodes.  */
513 enum dwarf_line_number_x_ops
514   {
515     DW_LNE_end_sequence = 1,
516     DW_LNE_set_address = 2,
517     DW_LNE_define_file = 3
518   };
519
520 /* Call frame information.  */
521 enum dwarf_call_frame_info
522   {
523     DW_CFA_advance_loc = 0x40,
524     DW_CFA_offset = 0x80,
525     DW_CFA_restore = 0xc0,
526     DW_CFA_nop = 0x00,
527     DW_CFA_set_loc = 0x01,
528     DW_CFA_advance_loc1 = 0x02,
529     DW_CFA_advance_loc2 = 0x03,
530     DW_CFA_advance_loc4 = 0x04,
531     DW_CFA_offset_extended = 0x05,
532     DW_CFA_restore_extended = 0x06,
533     DW_CFA_undefined = 0x07,
534     DW_CFA_same_value = 0x08,
535     DW_CFA_register = 0x09,
536     DW_CFA_remember_state = 0x0a,
537     DW_CFA_restore_state = 0x0b,
538     DW_CFA_def_cfa = 0x0c,
539     DW_CFA_def_cfa_register = 0x0d,
540     DW_CFA_def_cfa_offset = 0x0e,
541
542     /* DWARF 3.  */
543     DW_CFA_def_cfa_expression = 0x0f,
544     DW_CFA_expression = 0x10,
545     DW_CFA_offset_extended_sf = 0x11,
546     DW_CFA_def_cfa_sf = 0x12,
547     DW_CFA_def_cfa_offset_sf = 0x13,
548
549     /* SGI/MIPS specific.  */
550     DW_CFA_MIPS_advance_loc8 = 0x1d,
551
552     /* GNU extensions.  */
553     DW_CFA_GNU_window_save = 0x2d,
554     DW_CFA_GNU_args_size = 0x2e,
555     DW_CFA_GNU_negative_offset_extended = 0x2f
556   };
557
558 #define DW_CIE_ID         0xffffffff
559 #define DW_CIE_VERSION    1
560
561 #define DW_CFA_extended   0
562 #define DW_CFA_low_user   0x1c
563 #define DW_CFA_high_user  0x3f
564
565 #define DW_CHILDREN_no               0x00
566 #define DW_CHILDREN_yes              0x01
567
568 #define DW_ADDR_none            0
569
570 /* Source language names and codes.  */
571 enum dwarf_source_language
572   {
573     DW_LANG_C89 = 0x0001,
574     DW_LANG_C = 0x0002,
575     DW_LANG_Ada83 = 0x0003,
576     DW_LANG_C_plus_plus = 0x0004,
577     DW_LANG_Cobol74 = 0x0005,
578     DW_LANG_Cobol85 = 0x0006,
579     DW_LANG_Fortran77 = 0x0007,
580     DW_LANG_Fortran90 = 0x0008,
581     DW_LANG_Pascal83 = 0x0009,
582     DW_LANG_Modula2 = 0x000a,
583     DW_LANG_Java = 0x000b,
584     /* DWARF 3.  */
585     DW_LANG_C99 = 0x000c,
586     DW_LANG_Ada95 = 0x000d,
587     DW_LANG_Fortran95 = 0x000e,
588     /* MIPS.  */
589     DW_LANG_Mips_Assembler = 0x8001
590   };
591
592
593 #define DW_LANG_lo_user 0x8000  /* Implementation-defined range start.  */
594 #define DW_LANG_hi_user 0xffff  /* Implementation-defined range start.  */
595
596 /* Names and codes for macro information.  */
597 enum dwarf_macinfo_record_type
598   {
599     DW_MACINFO_define = 1,
600     DW_MACINFO_undef = 2,
601     DW_MACINFO_start_file = 3,
602     DW_MACINFO_end_file = 4,
603     DW_MACINFO_vendor_ext = 255
604   };
605 \f
606 /* @@@ For use with GNU frame unwind information.  */
607
608 #define DW_EH_PE_absptr         0x00
609 #define DW_EH_PE_omit           0xff
610
611 #define DW_EH_PE_uleb128        0x01
612 #define DW_EH_PE_udata2         0x02
613 #define DW_EH_PE_udata4         0x03
614 #define DW_EH_PE_udata8         0x04
615 #define DW_EH_PE_sleb128        0x09
616 #define DW_EH_PE_sdata2         0x0A
617 #define DW_EH_PE_sdata4         0x0B
618 #define DW_EH_PE_sdata8         0x0C
619 #define DW_EH_PE_signed         0x08
620
621 #define DW_EH_PE_pcrel          0x10
622 #define DW_EH_PE_textrel        0x20
623 #define DW_EH_PE_datarel        0x30
624 #define DW_EH_PE_funcrel        0x40
625 #define DW_EH_PE_aligned        0x50
626
627 #define DW_EH_PE_indirect       0x80