Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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