~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to binutils/include/elf/dwarf2.h

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

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