OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [binutils-2.20.1/] [include/] [dwarf2.h] - Blame information for rev 841

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
/* Declarations and definitions of codes relating to the DWARF2 and
2
   DWARF3 symbolic debugging information formats.
3
   Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
4
   2003, 2004, 2005, 2006, 2007, 2008, 2009 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 3, or (at your option) any later
18
   version.
19
 
20
   GCC is distributed in the hope that it will be useful, but WITHOUT
21
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
22
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
23
   License for more details.
24
 
25
   Under Section 7 of GPL version 3, you are granted additional
26
   permissions described in the GCC Runtime Library Exception, version
27
   3.1, as published by the Free Software Foundation.
28
 
29
   You should have received a copy of the GNU General Public License and
30
   a copy of the GCC Runtime Library Exception along with this program;
31
   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
32
   <http://www.gnu.org/licenses/>.  */
33
 
34
/* This file is derived from the DWARF specification (a public document)
35
   Revision 2.0.0 (July 27, 1993) developed by the UNIX International
36
   Programming Languages Special Interest Group (UI/PLSIG) and distributed
37
   by UNIX International.  Copies of this specification are available from
38
   UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
39
 
40
   This file also now contains definitions from the DWARF 3 specification
41
   published Dec 20, 2005, available from: http://dwarf.freestandards.org.  */
42
 
43
/* This file is shared between GCC and GDB, and should not contain
44
   prototypes.  */
45
 
46
#ifndef _ELF_DWARF2_H
47
#define _ELF_DWARF2_H
48
 
49
/* Structure found in the .debug_line section.  */
50
typedef struct
51
{
52
  unsigned char li_length          [4];
53
  unsigned char li_version         [2];
54
  unsigned char li_prologue_length [4];
55
  unsigned char li_min_insn_length [1];
56
  unsigned char li_default_is_stmt [1];
57
  unsigned char li_line_base       [1];
58
  unsigned char li_line_range      [1];
59
  unsigned char li_opcode_base     [1];
60
}
61
DWARF2_External_LineInfo;
62
 
63
typedef struct
64
{
65
  unsigned long  li_length;
66
  unsigned short li_version;
67
  unsigned int   li_prologue_length;
68
  unsigned char  li_min_insn_length;
69
  unsigned char  li_default_is_stmt;
70
  int            li_line_base;
71
  unsigned char  li_line_range;
72
  unsigned char  li_opcode_base;
73
}
74
DWARF2_Internal_LineInfo;
75
 
76
/* Structure found in .debug_pubnames section.  */
77
typedef struct
78
{
79
  unsigned char pn_length  [4];
80
  unsigned char pn_version [2];
81
  unsigned char pn_offset  [4];
82
  unsigned char pn_size    [4];
83
}
84
DWARF2_External_PubNames;
85
 
86
typedef struct
87
{
88
  unsigned long  pn_length;
89
  unsigned short pn_version;
90
  unsigned long  pn_offset;
91
  unsigned long  pn_size;
92
}
93
DWARF2_Internal_PubNames;
94
 
95
/* Structure found in .debug_info section.  */
96
typedef struct
97
{
98
  unsigned char  cu_length        [4];
99
  unsigned char  cu_version       [2];
100
  unsigned char  cu_abbrev_offset [4];
101
  unsigned char  cu_pointer_size  [1];
102
}
103
DWARF2_External_CompUnit;
104
 
105
typedef struct
106
{
107
  unsigned long  cu_length;
108
  unsigned short cu_version;
109
  unsigned long  cu_abbrev_offset;
110
  unsigned char  cu_pointer_size;
111
}
112
DWARF2_Internal_CompUnit;
113
 
114
typedef struct
115
{
116
  unsigned char  ar_length       [4];
117
  unsigned char  ar_version      [2];
118
  unsigned char  ar_info_offset  [4];
119
  unsigned char  ar_pointer_size [1];
120
  unsigned char  ar_segment_size [1];
121
}
122
DWARF2_External_ARange;
123
 
124
typedef struct
125
{
126
  unsigned long  ar_length;
127
  unsigned short ar_version;
128
  unsigned long  ar_info_offset;
129
  unsigned char  ar_pointer_size;
130
  unsigned char  ar_segment_size;
131
}
132
DWARF2_Internal_ARange;
133
 
134
 
135
/* Tag names and codes.  */
136
enum dwarf_tag
137
  {
138
    DW_TAG_padding = 0x00,
139
    DW_TAG_array_type = 0x01,
140
    DW_TAG_class_type = 0x02,
141
    DW_TAG_entry_point = 0x03,
142
    DW_TAG_enumeration_type = 0x04,
143
    DW_TAG_formal_parameter = 0x05,
144
    DW_TAG_imported_declaration = 0x08,
145
    DW_TAG_label = 0x0a,
146
    DW_TAG_lexical_block = 0x0b,
147
    DW_TAG_member = 0x0d,
148
    DW_TAG_pointer_type = 0x0f,
149
    DW_TAG_reference_type = 0x10,
150
    DW_TAG_compile_unit = 0x11,
151
    DW_TAG_string_type = 0x12,
152
    DW_TAG_structure_type = 0x13,
153
    DW_TAG_subroutine_type = 0x15,
154
    DW_TAG_typedef = 0x16,
155
    DW_TAG_union_type = 0x17,
156
    DW_TAG_unspecified_parameters = 0x18,
157
    DW_TAG_variant = 0x19,
158
    DW_TAG_common_block = 0x1a,
159
    DW_TAG_common_inclusion = 0x1b,
160
    DW_TAG_inheritance = 0x1c,
161
    DW_TAG_inlined_subroutine = 0x1d,
162
    DW_TAG_module = 0x1e,
163
    DW_TAG_ptr_to_member_type = 0x1f,
164
    DW_TAG_set_type = 0x20,
165
    DW_TAG_subrange_type = 0x21,
166
    DW_TAG_with_stmt = 0x22,
167
    DW_TAG_access_declaration = 0x23,
168
    DW_TAG_base_type = 0x24,
169
    DW_TAG_catch_block = 0x25,
170
    DW_TAG_const_type = 0x26,
171
    DW_TAG_constant = 0x27,
172
    DW_TAG_enumerator = 0x28,
173
    DW_TAG_file_type = 0x29,
174
    DW_TAG_friend = 0x2a,
175
    DW_TAG_namelist = 0x2b,
176
    DW_TAG_namelist_item = 0x2c,
177
    DW_TAG_packed_type = 0x2d,
178
    DW_TAG_subprogram = 0x2e,
179
    DW_TAG_template_type_param = 0x2f,
180
    DW_TAG_template_value_param = 0x30,
181
    DW_TAG_thrown_type = 0x31,
182
    DW_TAG_try_block = 0x32,
183
    DW_TAG_variant_part = 0x33,
184
    DW_TAG_variable = 0x34,
185
    DW_TAG_volatile_type = 0x35,
186
    /* DWARF 3.  */
187
    DW_TAG_dwarf_procedure = 0x36,
188
    DW_TAG_restrict_type = 0x37,
189
    DW_TAG_interface_type = 0x38,
190
    DW_TAG_namespace = 0x39,
191
    DW_TAG_imported_module = 0x3a,
192
    DW_TAG_unspecified_type = 0x3b,
193
    DW_TAG_partial_unit = 0x3c,
194
    DW_TAG_imported_unit = 0x3d,
195
    DW_TAG_condition = 0x3f,
196
    DW_TAG_shared_type = 0x40,
197
    /* DWARF 4.  */
198
    DW_TAG_type_unit = 0x41,
199
 
200
    DW_TAG_lo_user = 0x4080,
201
    DW_TAG_hi_user = 0xffff,
202
 
203
    /* SGI/MIPS Extensions.  */
204
    DW_TAG_MIPS_loop = 0x4081,
205
    /* HP extensions.  See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz .  */
206
    DW_TAG_HP_array_descriptor = 0x4090,
207
    /* GNU extensions.  */
208
    DW_TAG_format_label = 0x4101,       /* For FORTRAN 77 and Fortran 90.  */
209
    DW_TAG_function_template = 0x4102,  /* For C++.  */
210
    DW_TAG_class_template = 0x4103,     /* For C++.  */
211
    DW_TAG_GNU_BINCL = 0x4104,
212
    DW_TAG_GNU_EINCL = 0x4105,
213
    /* Template template parameter.
214
       See http://gcc.gnu.org/wiki/TemplateParmsDwarf .  */
215
    DW_TAG_GNU_template_template_param = 0x4106,
216
    /* Extensions for UPC.  See: http://upc.gwu.edu/~upc.  */
217
    DW_TAG_upc_shared_type = 0x8765,
218
    DW_TAG_upc_strict_type = 0x8766,
219
    DW_TAG_upc_relaxed_type = 0x8767,
220
    /* PGI (STMicroelectronics) extensions.  No documentation available.  */
221
    DW_TAG_PGI_kanji_type      = 0xA000,
222
    DW_TAG_PGI_interface_block = 0xA020
223
  };
224
 
225
/* Flag that tells whether entry has a child or not.  */
226
#define DW_children_no   0
227
#define DW_children_yes  1
228
 
229
/* Form names and codes.  */
230
enum dwarf_form
231
  {
232
    DW_FORM_addr = 0x01,
233
    DW_FORM_block2 = 0x03,
234
    DW_FORM_block4 = 0x04,
235
    DW_FORM_data2 = 0x05,
236
    DW_FORM_data4 = 0x06,
237
    DW_FORM_data8 = 0x07,
238
    DW_FORM_string = 0x08,
239
    DW_FORM_block = 0x09,
240
    DW_FORM_block1 = 0x0a,
241
    DW_FORM_data1 = 0x0b,
242
    DW_FORM_flag = 0x0c,
243
    DW_FORM_sdata = 0x0d,
244
    DW_FORM_strp = 0x0e,
245
    DW_FORM_udata = 0x0f,
246
    DW_FORM_ref_addr = 0x10,
247
    DW_FORM_ref1 = 0x11,
248
    DW_FORM_ref2 = 0x12,
249
    DW_FORM_ref4 = 0x13,
250
    DW_FORM_ref8 = 0x14,
251
    DW_FORM_ref_udata = 0x15,
252
    DW_FORM_indirect = 0x16,
253
    /* DWARF 4.  */
254
    DW_FORM_sec_offset = 0x17,
255
    DW_FORM_exprloc = 0x18,
256
    DW_FORM_flag_present = 0x19,
257
    DW_FORM_sig8 = 0x20
258
  };
259
 
260
/* Attribute names and codes.  */
261
enum dwarf_attribute
262
  {
263
    DW_AT_sibling = 0x01,
264
    DW_AT_location = 0x02,
265
    DW_AT_name = 0x03,
266
    DW_AT_ordering = 0x09,
267
    DW_AT_subscr_data = 0x0a,
268
    DW_AT_byte_size = 0x0b,
269
    DW_AT_bit_offset = 0x0c,
270
    DW_AT_bit_size = 0x0d,
271
    DW_AT_element_list = 0x0f,
272
    DW_AT_stmt_list = 0x10,
273
    DW_AT_low_pc = 0x11,
274
    DW_AT_high_pc = 0x12,
275
    DW_AT_language = 0x13,
276
    DW_AT_member = 0x14,
277
    DW_AT_discr = 0x15,
278
    DW_AT_discr_value = 0x16,
279
    DW_AT_visibility = 0x17,
280
    DW_AT_import = 0x18,
281
    DW_AT_string_length = 0x19,
282
    DW_AT_common_reference = 0x1a,
283
    DW_AT_comp_dir = 0x1b,
284
    DW_AT_const_value = 0x1c,
285
    DW_AT_containing_type = 0x1d,
286
    DW_AT_default_value = 0x1e,
287
    DW_AT_inline = 0x20,
288
    DW_AT_is_optional = 0x21,
289
    DW_AT_lower_bound = 0x22,
290
    DW_AT_producer = 0x25,
291
    DW_AT_prototyped = 0x27,
292
    DW_AT_return_addr = 0x2a,
293
    DW_AT_start_scope = 0x2c,
294
    DW_AT_bit_stride = 0x2e,
295
#define DW_AT_stride_size   DW_AT_bit_stride  /* Note: The use of DW_AT_stride_size is deprecated.  */
296
    DW_AT_upper_bound = 0x2f,
297
    DW_AT_abstract_origin = 0x31,
298
    DW_AT_accessibility = 0x32,
299
    DW_AT_address_class = 0x33,
300
    DW_AT_artificial = 0x34,
301
    DW_AT_base_types = 0x35,
302
    DW_AT_calling_convention = 0x36,
303
    DW_AT_count = 0x37,
304
    DW_AT_data_member_location = 0x38,
305
    DW_AT_decl_column = 0x39,
306
    DW_AT_decl_file = 0x3a,
307
    DW_AT_decl_line = 0x3b,
308
    DW_AT_declaration = 0x3c,
309
    DW_AT_discr_list = 0x3d,
310
    DW_AT_encoding = 0x3e,
311
    DW_AT_external = 0x3f,
312
    DW_AT_frame_base = 0x40,
313
    DW_AT_friend = 0x41,
314
    DW_AT_identifier_case = 0x42,
315
    DW_AT_macro_info = 0x43,
316
    DW_AT_namelist_items = 0x44,
317
    DW_AT_priority = 0x45,
318
    DW_AT_segment = 0x46,
319
    DW_AT_specification = 0x47,
320
    DW_AT_static_link = 0x48,
321
    DW_AT_type = 0x49,
322
    DW_AT_use_location = 0x4a,
323
    DW_AT_variable_parameter = 0x4b,
324
    DW_AT_virtuality = 0x4c,
325
    DW_AT_vtable_elem_location = 0x4d,
326
    /* DWARF 3 values.  */
327
    DW_AT_allocated     = 0x4e,
328
    DW_AT_associated    = 0x4f,
329
    DW_AT_data_location = 0x50,
330
    DW_AT_byte_stride   = 0x51,
331
#define DW_AT_stride   DW_AT_byte_stride  /* Note: The use of DW_AT_stride is deprecated.  */
332
    DW_AT_entry_pc      = 0x52,
333
    DW_AT_use_UTF8      = 0x53,
334
    DW_AT_extension     = 0x54,
335
    DW_AT_ranges        = 0x55,
336
    DW_AT_trampoline    = 0x56,
337
    DW_AT_call_column   = 0x57,
338
    DW_AT_call_file     = 0x58,
339
    DW_AT_call_line     = 0x59,
340
    DW_AT_description   = 0x5a,
341
    DW_AT_binary_scale  = 0x5b,
342
    DW_AT_decimal_scale = 0x5c,
343
    DW_AT_small         = 0x5d,
344
    DW_AT_decimal_sign  = 0x5e,
345
    DW_AT_digit_count   = 0x5f,
346
    DW_AT_picture_string = 0x60,
347
    DW_AT_mutable       = 0x61,
348
    DW_AT_threads_scaled = 0x62,
349
    DW_AT_explicit      = 0x63,
350
    DW_AT_object_pointer = 0x64,
351
    DW_AT_endianity     = 0x65,
352
    DW_AT_elemental     = 0x66,
353
    DW_AT_pure          = 0x67,
354
    DW_AT_recursive     = 0x68,
355
    /* DWARF 4.  */
356
    DW_AT_signature     = 0x69,
357
 
358
    DW_AT_lo_user = 0x2000,     /* Implementation-defined range start.  */
359
    DW_AT_hi_user = 0x3ff0,     /* Implementation-defined range end.  */
360
 
361
    /* SGI/MIPS extensions.  */
362
    DW_AT_MIPS_fde = 0x2001,
363
    DW_AT_MIPS_loop_begin = 0x2002,
364
    DW_AT_MIPS_tail_loop_begin = 0x2003,
365
    DW_AT_MIPS_epilog_begin = 0x2004,
366
    DW_AT_MIPS_loop_unroll_factor = 0x2005,
367
    DW_AT_MIPS_software_pipeline_depth = 0x2006,
368
    DW_AT_MIPS_linkage_name = 0x2007,
369
    DW_AT_MIPS_stride = 0x2008,
370
    DW_AT_MIPS_abstract_name = 0x2009,
371
    DW_AT_MIPS_clone_origin = 0x200a,
372
    DW_AT_MIPS_has_inlines = 0x200b,
373
    /* HP extensions.  */
374
    DW_AT_HP_block_index         = 0x2000,
375
    DW_AT_HP_unmodifiable        = 0x2001, /* Same as DW_AT_MIPS_fde.  */
376
    DW_AT_HP_actuals_stmt_list   = 0x2010,
377
    DW_AT_HP_proc_per_section    = 0x2011,
378
    DW_AT_HP_raw_data_ptr        = 0x2012,
379
    DW_AT_HP_pass_by_reference   = 0x2013,
380
    DW_AT_HP_opt_level           = 0x2014,
381
    DW_AT_HP_prof_version_id     = 0x2015,
382
    DW_AT_HP_opt_flags           = 0x2016,
383
    DW_AT_HP_cold_region_low_pc  = 0x2017,
384
    DW_AT_HP_cold_region_high_pc = 0x2018,
385
    DW_AT_HP_all_variables_modifiable = 0x2019,
386
    DW_AT_HP_linkage_name        = 0x201a,
387
    DW_AT_HP_prof_flags          = 0x201b,  /* In comp unit of procs_info for -g.  */
388
    /* GNU extensions.  */
389
    DW_AT_sf_names   = 0x2101,
390
    DW_AT_src_info   = 0x2102,
391
    DW_AT_mac_info   = 0x2103,
392
    DW_AT_src_coords = 0x2104,
393
    DW_AT_body_begin = 0x2105,
394
    DW_AT_body_end   = 0x2106,
395
    DW_AT_GNU_vector = 0x2107,
396
    /* Template template argument name.
397
       See http://gcc.gnu.org/wiki/TemplateParmsDwarf .  */
398
    DW_AT_GNU_template_name = 0x2110,
399
    /* VMS extensions.  */
400
    DW_AT_VMS_rtnbeg_pd_address = 0x2201,
401
    /* UPC extension.  */
402
    DW_AT_upc_threads_scaled = 0x3210,
403
    /* PGI (STMicroelectronics) extensions.  */
404
    DW_AT_PGI_lbase    = 0x3a00,
405
    DW_AT_PGI_soffset  = 0x3a01,
406
    DW_AT_PGI_lstride  = 0x3a02
407
  };
408
 
409
/* Location atom names and codes.  */
410
enum dwarf_location_atom
411
  {
412
    DW_OP_addr = 0x03,
413
    DW_OP_deref = 0x06,
414
    DW_OP_const1u = 0x08,
415
    DW_OP_const1s = 0x09,
416
    DW_OP_const2u = 0x0a,
417
    DW_OP_const2s = 0x0b,
418
    DW_OP_const4u = 0x0c,
419
    DW_OP_const4s = 0x0d,
420
    DW_OP_const8u = 0x0e,
421
    DW_OP_const8s = 0x0f,
422
    DW_OP_constu = 0x10,
423
    DW_OP_consts = 0x11,
424
    DW_OP_dup = 0x12,
425
    DW_OP_drop = 0x13,
426
    DW_OP_over = 0x14,
427
    DW_OP_pick = 0x15,
428
    DW_OP_swap = 0x16,
429
    DW_OP_rot = 0x17,
430
    DW_OP_xderef = 0x18,
431
    DW_OP_abs = 0x19,
432
    DW_OP_and = 0x1a,
433
    DW_OP_div = 0x1b,
434
    DW_OP_minus = 0x1c,
435
    DW_OP_mod = 0x1d,
436
    DW_OP_mul = 0x1e,
437
    DW_OP_neg = 0x1f,
438
    DW_OP_not = 0x20,
439
    DW_OP_or = 0x21,
440
    DW_OP_plus = 0x22,
441
    DW_OP_plus_uconst = 0x23,
442
    DW_OP_shl = 0x24,
443
    DW_OP_shr = 0x25,
444
    DW_OP_shra = 0x26,
445
    DW_OP_xor = 0x27,
446
    DW_OP_bra = 0x28,
447
    DW_OP_eq = 0x29,
448
    DW_OP_ge = 0x2a,
449
    DW_OP_gt = 0x2b,
450
    DW_OP_le = 0x2c,
451
    DW_OP_lt = 0x2d,
452
    DW_OP_ne = 0x2e,
453
    DW_OP_skip = 0x2f,
454
    DW_OP_lit0 = 0x30,
455
    DW_OP_lit1 = 0x31,
456
    DW_OP_lit2 = 0x32,
457
    DW_OP_lit3 = 0x33,
458
    DW_OP_lit4 = 0x34,
459
    DW_OP_lit5 = 0x35,
460
    DW_OP_lit6 = 0x36,
461
    DW_OP_lit7 = 0x37,
462
    DW_OP_lit8 = 0x38,
463
    DW_OP_lit9 = 0x39,
464
    DW_OP_lit10 = 0x3a,
465
    DW_OP_lit11 = 0x3b,
466
    DW_OP_lit12 = 0x3c,
467
    DW_OP_lit13 = 0x3d,
468
    DW_OP_lit14 = 0x3e,
469
    DW_OP_lit15 = 0x3f,
470
    DW_OP_lit16 = 0x40,
471
    DW_OP_lit17 = 0x41,
472
    DW_OP_lit18 = 0x42,
473
    DW_OP_lit19 = 0x43,
474
    DW_OP_lit20 = 0x44,
475
    DW_OP_lit21 = 0x45,
476
    DW_OP_lit22 = 0x46,
477
    DW_OP_lit23 = 0x47,
478
    DW_OP_lit24 = 0x48,
479
    DW_OP_lit25 = 0x49,
480
    DW_OP_lit26 = 0x4a,
481
    DW_OP_lit27 = 0x4b,
482
    DW_OP_lit28 = 0x4c,
483
    DW_OP_lit29 = 0x4d,
484
    DW_OP_lit30 = 0x4e,
485
    DW_OP_lit31 = 0x4f,
486
    DW_OP_reg0 = 0x50,
487
    DW_OP_reg1 = 0x51,
488
    DW_OP_reg2 = 0x52,
489
    DW_OP_reg3 = 0x53,
490
    DW_OP_reg4 = 0x54,
491
    DW_OP_reg5 = 0x55,
492
    DW_OP_reg6 = 0x56,
493
    DW_OP_reg7 = 0x57,
494
    DW_OP_reg8 = 0x58,
495
    DW_OP_reg9 = 0x59,
496
    DW_OP_reg10 = 0x5a,
497
    DW_OP_reg11 = 0x5b,
498
    DW_OP_reg12 = 0x5c,
499
    DW_OP_reg13 = 0x5d,
500
    DW_OP_reg14 = 0x5e,
501
    DW_OP_reg15 = 0x5f,
502
    DW_OP_reg16 = 0x60,
503
    DW_OP_reg17 = 0x61,
504
    DW_OP_reg18 = 0x62,
505
    DW_OP_reg19 = 0x63,
506
    DW_OP_reg20 = 0x64,
507
    DW_OP_reg21 = 0x65,
508
    DW_OP_reg22 = 0x66,
509
    DW_OP_reg23 = 0x67,
510
    DW_OP_reg24 = 0x68,
511
    DW_OP_reg25 = 0x69,
512
    DW_OP_reg26 = 0x6a,
513
    DW_OP_reg27 = 0x6b,
514
    DW_OP_reg28 = 0x6c,
515
    DW_OP_reg29 = 0x6d,
516
    DW_OP_reg30 = 0x6e,
517
    DW_OP_reg31 = 0x6f,
518
    DW_OP_breg0 = 0x70,
519
    DW_OP_breg1 = 0x71,
520
    DW_OP_breg2 = 0x72,
521
    DW_OP_breg3 = 0x73,
522
    DW_OP_breg4 = 0x74,
523
    DW_OP_breg5 = 0x75,
524
    DW_OP_breg6 = 0x76,
525
    DW_OP_breg7 = 0x77,
526
    DW_OP_breg8 = 0x78,
527
    DW_OP_breg9 = 0x79,
528
    DW_OP_breg10 = 0x7a,
529
    DW_OP_breg11 = 0x7b,
530
    DW_OP_breg12 = 0x7c,
531
    DW_OP_breg13 = 0x7d,
532
    DW_OP_breg14 = 0x7e,
533
    DW_OP_breg15 = 0x7f,
534
    DW_OP_breg16 = 0x80,
535
    DW_OP_breg17 = 0x81,
536
    DW_OP_breg18 = 0x82,
537
    DW_OP_breg19 = 0x83,
538
    DW_OP_breg20 = 0x84,
539
    DW_OP_breg21 = 0x85,
540
    DW_OP_breg22 = 0x86,
541
    DW_OP_breg23 = 0x87,
542
    DW_OP_breg24 = 0x88,
543
    DW_OP_breg25 = 0x89,
544
    DW_OP_breg26 = 0x8a,
545
    DW_OP_breg27 = 0x8b,
546
    DW_OP_breg28 = 0x8c,
547
    DW_OP_breg29 = 0x8d,
548
    DW_OP_breg30 = 0x8e,
549
    DW_OP_breg31 = 0x8f,
550
    DW_OP_regx = 0x90,
551
    DW_OP_fbreg = 0x91,
552
    DW_OP_bregx = 0x92,
553
    DW_OP_piece = 0x93,
554
    DW_OP_deref_size = 0x94,
555
    DW_OP_xderef_size = 0x95,
556
    DW_OP_nop = 0x96,
557
    /* DWARF 3 extensions.  */
558
    DW_OP_push_object_address = 0x97,
559
    DW_OP_call2 = 0x98,
560
    DW_OP_call4 = 0x99,
561
    DW_OP_call_ref = 0x9a,
562
    DW_OP_form_tls_address = 0x9b,
563
    DW_OP_call_frame_cfa = 0x9c,
564
    DW_OP_bit_piece = 0x9d,
565
 
566
    /* DWARF 4 extensions.  */
567
    DW_OP_implicit_value = 0x9e,
568
    DW_OP_stack_value = 0x9f,
569
 
570
    DW_OP_lo_user = 0xe0,       /* Implementation-defined range start.  */
571
    DW_OP_hi_user = 0xff,       /* Implementation-defined range end.  */
572
 
573
    /* GNU extensions.  */
574
    DW_OP_GNU_push_tls_address = 0xe0,
575
    /* The following is for marking variables that are uninitialized.  */
576
    DW_OP_GNU_uninit     = 0xf0,
577
    DW_OP_GNU_encoded_addr = 0xf1,
578
    /* HP extensions.  */
579
    DW_OP_HP_unknown     = 0xe0, /* Ouch, the same as GNU_push_tls_address.  */
580
    DW_OP_HP_is_value    = 0xe1,
581
    DW_OP_HP_fltconst4   = 0xe2,
582
    DW_OP_HP_fltconst8   = 0xe3,
583
    DW_OP_HP_mod_range   = 0xe4,
584
    DW_OP_HP_unmod_range = 0xe5,
585
    DW_OP_HP_tls         = 0xe6,
586
    /* PGI (STMicroelectronics) extensions.  */
587
    DW_OP_PGI_omp_thread_num = 0xf8
588
  };
589
 
590
/* Type encodings.  */
591
enum dwarf_type
592
  {
593
    DW_ATE_void = 0x0,
594
    DW_ATE_address = 0x1,
595
    DW_ATE_boolean = 0x2,
596
    DW_ATE_complex_float = 0x3,
597
    DW_ATE_float = 0x4,
598
    DW_ATE_signed = 0x5,
599
    DW_ATE_signed_char = 0x6,
600
    DW_ATE_unsigned = 0x7,
601
    DW_ATE_unsigned_char = 0x8,
602
    /* DWARF 3.  */
603
    DW_ATE_imaginary_float = 0x9,
604
    DW_ATE_packed_decimal = 0xa,
605
    DW_ATE_numeric_string = 0xb,
606
    DW_ATE_edited = 0xc,
607
    DW_ATE_signed_fixed = 0xd,
608
    DW_ATE_unsigned_fixed = 0xe,
609
    DW_ATE_decimal_float = 0xf,
610
 
611
    DW_ATE_lo_user = 0x80,
612
    DW_ATE_hi_user = 0xff,
613
 
614
    /* HP extensions.  */
615
    DW_ATE_HP_float80            = 0x80, /* Floating-point (80 bit).  */
616
    DW_ATE_HP_complex_float80    = 0x81, /* Complex floating-point (80 bit).  */
617
    DW_ATE_HP_float128           = 0x82, /* Floating-point (128 bit).  */
618
    DW_ATE_HP_complex_float128   = 0x83, /* Complex floating-point (128 bit).  */
619
    DW_ATE_HP_floathpintel       = 0x84, /* Floating-point (82 bit IA64).  */
620
    DW_ATE_HP_imaginary_float80  = 0x85,
621
    DW_ATE_HP_imaginary_float128 = 0x86
622
  };
623
 
624
/* Decimal sign encodings.  */
625
enum dwarf_decimal_sign_encoding
626
  {
627
    /* DWARF 3.  */
628
    DW_DS_unsigned = 0x01,
629
    DW_DS_leading_overpunch = 0x02,
630
    DW_DS_trailing_overpunch = 0x03,
631
    DW_DS_leading_separate = 0x04,
632
    DW_DS_trailing_separate = 0x05
633
  };
634
 
635
/* Endianity encodings.  */
636
enum dwarf_endianity_encoding
637
  {
638
    /* DWARF 3.  */
639
    DW_END_default = 0x00,
640
    DW_END_big = 0x01,
641
    DW_END_little = 0x02,
642
 
643
    DW_END_lo_user = 0x40,
644
    DW_END_hi_user = 0xff
645
  };
646
 
647
/* Array ordering names and codes.  */
648
enum dwarf_array_dim_ordering
649
  {
650
    DW_ORD_row_major = 0,
651
    DW_ORD_col_major = 1
652
  };
653
 
654
/* Access attribute.  */
655
enum dwarf_access_attribute
656
  {
657
    DW_ACCESS_public = 1,
658
    DW_ACCESS_protected = 2,
659
    DW_ACCESS_private = 3
660
  };
661
 
662
/* Visibility.  */
663
enum dwarf_visibility_attribute
664
  {
665
    DW_VIS_local = 1,
666
    DW_VIS_exported = 2,
667
    DW_VIS_qualified = 3
668
  };
669
 
670
/* Virtuality.  */
671
enum dwarf_virtuality_attribute
672
  {
673
    DW_VIRTUALITY_none = 0,
674
    DW_VIRTUALITY_virtual = 1,
675
    DW_VIRTUALITY_pure_virtual = 2
676
  };
677
 
678
/* Case sensitivity.  */
679
enum dwarf_id_case
680
  {
681
    DW_ID_case_sensitive = 0,
682
    DW_ID_up_case = 1,
683
    DW_ID_down_case = 2,
684
    DW_ID_case_insensitive = 3
685
  };
686
 
687
/* Calling convention.  */
688
enum dwarf_calling_convention
689
  {
690
    DW_CC_normal = 0x1,
691
    DW_CC_program = 0x2,
692
    DW_CC_nocall = 0x3,
693
 
694
    DW_CC_lo_user = 0x40,
695
    DW_CC_hi_user = 0xff,
696
 
697
    DW_CC_GNU_renesas_sh = 0x40
698
  };
699
 
700
/* Inline attribute.  */
701
enum dwarf_inline_attribute
702
  {
703
    DW_INL_not_inlined = 0,
704
    DW_INL_inlined = 1,
705
    DW_INL_declared_not_inlined = 2,
706
    DW_INL_declared_inlined = 3
707
  };
708
 
709
/* Discriminant lists.  */
710
enum dwarf_discrim_list
711
  {
712
    DW_DSC_label = 0,
713
    DW_DSC_range = 1
714
  };
715
 
716
/* Line number opcodes.  */
717
enum dwarf_line_number_ops
718
  {
719
    DW_LNS_extended_op = 0,
720
    DW_LNS_copy = 1,
721
    DW_LNS_advance_pc = 2,
722
    DW_LNS_advance_line = 3,
723
    DW_LNS_set_file = 4,
724
    DW_LNS_set_column = 5,
725
    DW_LNS_negate_stmt = 6,
726
    DW_LNS_set_basic_block = 7,
727
    DW_LNS_const_add_pc = 8,
728
    DW_LNS_fixed_advance_pc = 9,
729
    /* DWARF 3.  */
730
    DW_LNS_set_prologue_end = 10,
731
    DW_LNS_set_epilogue_begin = 11,
732
    DW_LNS_set_isa = 12
733
  };
734
 
735
/* Line number extended opcodes.  */
736
enum dwarf_line_number_x_ops
737
  {
738
    DW_LNE_end_sequence = 1,
739
    DW_LNE_set_address = 2,
740
    DW_LNE_define_file = 3,
741
    DW_LNE_set_discriminator = 4,
742
    /* HP extensions.  */
743
    DW_LNE_HP_negate_is_UV_update      = 0x11,
744
    DW_LNE_HP_push_context             = 0x12,
745
    DW_LNE_HP_pop_context              = 0x13,
746
    DW_LNE_HP_set_file_line_column     = 0x14,
747
    DW_LNE_HP_set_routine_name         = 0x15,
748
    DW_LNE_HP_set_sequence             = 0x16,
749
    DW_LNE_HP_negate_post_semantics    = 0x17,
750
    DW_LNE_HP_negate_function_exit     = 0x18,
751
    DW_LNE_HP_negate_front_end_logical = 0x19,
752
    DW_LNE_HP_define_proc              = 0x20,
753
 
754
    DW_LNE_lo_user = 0x80,
755
    DW_LNE_hi_user = 0xff
756
  };
757
 
758
/* Call frame information.  */
759
enum dwarf_call_frame_info
760
  {
761
    DW_CFA_advance_loc = 0x40,
762
    DW_CFA_offset = 0x80,
763
    DW_CFA_restore = 0xc0,
764
    DW_CFA_nop = 0x00,
765
    DW_CFA_set_loc = 0x01,
766
    DW_CFA_advance_loc1 = 0x02,
767
    DW_CFA_advance_loc2 = 0x03,
768
    DW_CFA_advance_loc4 = 0x04,
769
    DW_CFA_offset_extended = 0x05,
770
    DW_CFA_restore_extended = 0x06,
771
    DW_CFA_undefined = 0x07,
772
    DW_CFA_same_value = 0x08,
773
    DW_CFA_register = 0x09,
774
    DW_CFA_remember_state = 0x0a,
775
    DW_CFA_restore_state = 0x0b,
776
    DW_CFA_def_cfa = 0x0c,
777
    DW_CFA_def_cfa_register = 0x0d,
778
    DW_CFA_def_cfa_offset = 0x0e,
779
    /* DWARF 3.  */
780
    DW_CFA_def_cfa_expression = 0x0f,
781
    DW_CFA_expression = 0x10,
782
    DW_CFA_offset_extended_sf = 0x11,
783
    DW_CFA_def_cfa_sf = 0x12,
784
    DW_CFA_def_cfa_offset_sf = 0x13,
785
    DW_CFA_val_offset = 0x14,
786
    DW_CFA_val_offset_sf = 0x15,
787
    DW_CFA_val_expression = 0x16,
788
 
789
    DW_CFA_lo_user = 0x1c,
790
    DW_CFA_hi_user = 0x3f,
791
 
792
    /* SGI/MIPS specific.  */
793
    DW_CFA_MIPS_advance_loc8 = 0x1d,
794
    /* GNU extensions.  */
795
    DW_CFA_GNU_window_save = 0x2d,
796
    DW_CFA_GNU_args_size = 0x2e,
797
    DW_CFA_GNU_negative_offset_extended = 0x2f
798
  };
799
 
800
#define DW_CIE_ID         0xffffffff
801
#define DW64_CIE_ID       0xffffffffffffffffULL
802
#define DW_CIE_VERSION    1
803
 
804
#define DW_CFA_extended   0
805
 
806
#define DW_CHILDREN_no               0x00
807
#define DW_CHILDREN_yes              0x01
808
 
809
#define DW_ADDR_none            0
810
 
811
/* Source language names and codes.  */
812
enum dwarf_source_language
813
  {
814
    DW_LANG_C89 = 0x0001,
815
    DW_LANG_C = 0x0002,
816
    DW_LANG_Ada83 = 0x0003,
817
    DW_LANG_C_plus_plus = 0x0004,
818
    DW_LANG_Cobol74 = 0x0005,
819
    DW_LANG_Cobol85 = 0x0006,
820
    DW_LANG_Fortran77 = 0x0007,
821
    DW_LANG_Fortran90 = 0x0008,
822
    DW_LANG_Pascal83 = 0x0009,
823
    DW_LANG_Modula2 = 0x000a,
824
    /* DWARF 3.  */
825
    DW_LANG_Java = 0x000b,
826
    DW_LANG_C99 = 0x000c,
827
    DW_LANG_Ada95 = 0x000d,
828
    DW_LANG_Fortran95 = 0x000e,
829
    DW_LANG_PLI = 0x000f,
830
    DW_LANG_ObjC = 0x0010,
831
    DW_LANG_ObjC_plus_plus = 0x0011,
832
    DW_LANG_UPC = 0x0012,
833
    DW_LANG_D = 0x0013,
834
 
835
    DW_LANG_lo_user = 0x8000,   /* Implementation-defined range start.  */
836
    DW_LANG_hi_user = 0xffff,   /* Implementation-defined range start.  */
837
 
838
    /* MIPS.  */
839
    DW_LANG_Mips_Assembler = 0x8001,
840
    /* UPC.  */
841
    DW_LANG_Upc = 0x8765
842
  };
843
 
844
/* Names and codes for macro information.  */
845
enum dwarf_macinfo_record_type
846
  {
847
    DW_MACINFO_define = 1,
848
    DW_MACINFO_undef = 2,
849
    DW_MACINFO_start_file = 3,
850
    DW_MACINFO_end_file = 4,
851
    DW_MACINFO_vendor_ext = 255
852
  };
853
 
854
/* @@@ For use with GNU frame unwind information.  */
855
 
856
#define DW_EH_PE_absptr         0x00
857
#define DW_EH_PE_omit           0xff
858
 
859
#define DW_EH_PE_uleb128        0x01
860
#define DW_EH_PE_udata2         0x02
861
#define DW_EH_PE_udata4         0x03
862
#define DW_EH_PE_udata8         0x04
863
#define DW_EH_PE_sleb128        0x09
864
#define DW_EH_PE_sdata2         0x0A
865
#define DW_EH_PE_sdata4         0x0B
866
#define DW_EH_PE_sdata8         0x0C
867
#define DW_EH_PE_signed         0x08
868
 
869
#define DW_EH_PE_pcrel          0x10
870
#define DW_EH_PE_textrel        0x20
871
#define DW_EH_PE_datarel        0x30
872
#define DW_EH_PE_funcrel        0x40
873
#define DW_EH_PE_aligned        0x50
874
 
875
#define DW_EH_PE_indirect       0x80
876
 
877
#endif /* _ELF_DWARF2_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.