source: trunk/third/gcc/dwarf2.h @ 11288

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