Annotation of src/usr.bin/ctfconv/dwarf.h, Revision 1.3
1.3 ! claudio 1: /* $OpenBSD: dwarf.h,v 1.2 2017/08/11 14:58:56 jasper Exp $ */
1.2 jasper 2:
1.1 mpi 3: /*
4: * Copyright (c) 2016 Martin Pieuchot <mpi@openbsd.org>
5: * Copyright (c) 2007 John Birrell (jb@freebsd.org).
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: *
17: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20: * ARE DISCLAIMED.IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27: * SUCH DAMAGE.
28: */
29:
30: #ifndef _DWARF_H_
31: #define _DWARF_H_
32:
33: #define DW_TAG_array_type 0x01
34: #define DW_TAG_class_type 0x02
35: #define DW_TAG_entry_point 0x03
36: #define DW_TAG_enumeration_type 0x04
37: #define DW_TAG_formal_parameter 0x05
38: #define DW_TAG_imported_declaration 0x08
39: #define DW_TAG_label 0x0a
40: #define DW_TAG_lexical_block 0x0b
41: #define DW_TAG_member 0x0d
42: #define DW_TAG_pointer_type 0x0f
43: #define DW_TAG_reference_type 0x10
44: #define DW_TAG_compile_unit 0x11
45: #define DW_TAG_string_type 0x12
46: #define DW_TAG_structure_type 0x13
47: #define DW_TAG_subroutine_type 0x15
48: #define DW_TAG_typedef 0x16
49: #define DW_TAG_union_type 0x17
50: #define DW_TAG_unspecified_parameters 0x18
51: #define DW_TAG_variant 0x19
52: #define DW_TAG_common_block 0x1a
53: #define DW_TAG_common_inclusion 0x1b
54: #define DW_TAG_inheritance 0x1c
55: #define DW_TAG_inlined_subroutine 0x1d
56: #define DW_TAG_module 0x1e
57: #define DW_TAG_ptr_to_member_type 0x1f
58: #define DW_TAG_set_type 0x20
59: #define DW_TAG_subrange_type 0x21
60: #define DW_TAG_with_stmt 0x22
61: #define DW_TAG_access_declaration 0x23
62: #define DW_TAG_base_type 0x24
63: #define DW_TAG_catch_block 0x25
64: #define DW_TAG_const_type 0x26
65: #define DW_TAG_constant 0x27
66: #define DW_TAG_enumerator 0x28
67: #define DW_TAG_friend 0x2a
68: #define DW_TAG_namelist 0x2b
69: #define DW_TAG_namelist_item 0x2c
70: #define DW_TAG_packed_type 0x2d
71: #define DW_TAG_subprogram 0x2e
72: #define DW_TAG_template_type_parameter 0x2f
73: #define DW_TAG_template_value_parameter 0x30
74: #define DW_TAG_thrown_type 0x31
75: #define DW_TAG_try_block 0x32
76: #define DW_TAG_variant_part 0x33
77: #define DW_TAG_variable 0x34
78: #define DW_TAG_volatile_type 0x35
79: #define DW_TAG_dwarf_procedure 0x36
80: #define DW_TAG_restrict_type 0x37
81: #define DW_TAG_interface_type 0x38
82: #define DW_TAG_namespace 0x39
83: #define DW_TAG_imported_module 0x3a
84: #define DW_TAG_unspecified_type 0x3b
85: #define DW_TAG_partial_unit 0x3c
86: #define DW_TAG_imported_unit 0x3d
87: #define DW_TAG_condition 0x3f
88: #define DW_TAG_shared_type 0x40
89: #define DW_TAG_type_unit 0x41
90: #define DW_TAG_rvalue_reference_type 0x42
91: #define DW_TAG_template_alias 0x43
92: #define DW_TAG_lo_user 0x4080
93: #define DW_TAG_hi_user 0xffff
94:
95: /* GNU extensions. */
96: #define DW_TAG_format_label 0x4101
97: #define DW_TAG_function_template 0x4102
98: #define DW_TAG_class_template 0x4103
99: #define DW_TAG_GNU_BINCL 0x4104
100: #define DW_TAG_GNU_EINCL 0x4105
101: #define DW_TAG_GNU_template_template_parameter 0x4106
102: #define DW_TAG_GNU_template_template_param 0x4106
103: #define DW_TAG_GNU_template_parameter_pack 0x4107
104: #define DW_TAG_GNU_formal_parameter_pack 0x4108
105: #define DW_TAG_GNU_call_site 0x4109
106: #define DW_TAG_GNU_call_site_parameter 0x410a
107:
108: #define DW_TAG_NAMES \
109: "DW_TAG_array_type", \
110: "DW_TAG_class_type", \
111: "DW_TAG_entry_point", \
112: "DW_TAG_enumeration_type", \
113: "DW_TAG_formal_parameter", \
114: NULL, \
115: NULL, \
116: "DW_TAG_imported_declaration", \
117: NULL, \
118: "DW_TAG_label", \
119: "DW_TAG_lexical_block", \
120: NULL, \
121: "DW_TAG_member", \
122: NULL, \
123: "DW_TAG_pointer_type", \
124: "DW_TAG_reference_type", \
125: "DW_TAG_compile_unit", \
126: "DW_TAG_string_type", \
127: "DW_TAG_structure_type", \
128: NULL, \
129: "DW_TAG_subroutine_type", \
130: "DW_TAG_typedef", \
131: "DW_TAG_union_type", \
132: "DW_TAG_unspecified_parameters", \
133: "DW_TAG_variant", \
134: "DW_TAG_common_block", \
135: "DW_TAG_common_inclusion", \
136: "DW_TAG_inheritance", \
137: "DW_TAG_inlined_subroutine", \
138: "DW_TAG_module", \
139: "DW_TAG_ptr_to_member_type", \
140: "DW_TAG_set_type", \
141: "DW_TAG_subrange_type", \
142: "DW_TAG_with_stmt", \
143: "DW_TAG_access_declaration", \
144: "DW_TAG_base_type", \
145: "DW_TAG_catch_block", \
146: "DW_TAG_const_type", \
147: "DW_TAG_constant", \
148: "DW_TAG_enumerator", \
149: NULL, \
150: "DW_TAG_friend", \
151: "DW_TAG_namelist", \
152: "DW_TAG_namelist_item", \
153: "DW_TAG_packed_type", \
154: "DW_TAG_subprogram", \
155: "DW_TAG_template_type_parameter", \
156: "DW_TAG_template_value_parameter", \
157: "DW_TAG_thrown_type", \
158: "DW_TAG_try_block", \
159: "DW_TAG_variant_part", \
160: "DW_TAG_variable", \
161: "DW_TAG_volatile_type", \
162: "DW_TAG_dwarf_procedure", \
163: "DW_TAG_restrict_type", \
164: "DW_TAG_interface_type", \
165: "DW_TAG_namespace", \
166: "DW_TAG_imported_module", \
167: "DW_TAG_unspecified_type", \
168: "DW_TAG_partial_unit", \
169: "DW_TAG_imported_unit", \
170: NULL, \
171: "DW_TAG_condition", \
172: "DW_TAG_shared_type", \
173: "DW_TAG_type_unit", \
174: "DW_TAG_rvalue_reference_type", \
175: "DW_TAG_template_alias",
176:
177: #define DW_CHILDREN_no 0x00
178: #define DW_CHILDREN_yes 0x01
179:
180: #define DW_AT_sibling 0x01
181: #define DW_AT_location 0x02
182: #define DW_AT_name 0x03
183: #define DW_AT_ordering 0x09
184: #define DW_AT_subscr_data 0x0a
185: #define DW_AT_byte_size 0x0b
186: #define DW_AT_bit_offset 0x0c
187: #define DW_AT_bit_size 0x0d
188: #define DW_AT_element_list 0x0f
189: #define DW_AT_stmt_list 0x10
190: #define DW_AT_low_pc 0x11
191: #define DW_AT_high_pc 0x12
192: #define DW_AT_language 0x13
193: #define DW_AT_member 0x14
194: #define DW_AT_discr 0x15
195: #define DW_AT_discr_value 0x16
196: #define DW_AT_visibility 0x17
197: #define DW_AT_import 0x18
198: #define DW_AT_string_length 0x19
199: #define DW_AT_common_reference 0x1a
200: #define DW_AT_comp_dir 0x1b
201: #define DW_AT_const_value 0x1c
202: #define DW_AT_containing_type 0x1d
203: #define DW_AT_default_value 0x1e
204: #define DW_AT_inline 0x20
205: #define DW_AT_is_optional 0x21
206: #define DW_AT_lower_bound 0x22
207: #define DW_AT_producer 0x25
208: #define DW_AT_prototyped 0x27
209: #define DW_AT_return_addr 0x2a
210: #define DW_AT_start_scope 0x2c
211: #define DW_AT_bit_stride 0x2e
212: #define DW_AT_stride_size 0x2e
213: #define DW_AT_upper_bound 0x2f
214: #define DW_AT_abstract_origin 0x31
215: #define DW_AT_accessibility 0x32
216: #define DW_AT_address_class 0x33
217: #define DW_AT_artificial 0x34
218: #define DW_AT_base_types 0x35
219: #define DW_AT_calling_convention 0x36
220: #define DW_AT_count 0x37
221: #define DW_AT_data_member_location 0x38
222: #define DW_AT_decl_column 0x39
223: #define DW_AT_decl_file 0x3a
224: #define DW_AT_decl_line 0x3b
225: #define DW_AT_declaration 0x3c
226: #define DW_AT_discr_list 0x3d
227: #define DW_AT_encoding 0x3e
228: #define DW_AT_external 0x3f
229: #define DW_AT_frame_base 0x40
230: #define DW_AT_friend 0x41
231: #define DW_AT_identifier_case 0x42
232: #define DW_AT_macro_info 0x43
233: #define DW_AT_namelist_item 0x44
234: #define DW_AT_priority 0x45
235: #define DW_AT_segment 0x46
236: #define DW_AT_specification 0x47
237: #define DW_AT_static_link 0x48
238: #define DW_AT_type 0x49
239: #define DW_AT_use_location 0x4a
240: #define DW_AT_variable_parameter 0x4b
241: #define DW_AT_virtuality 0x4c
242: #define DW_AT_vtable_elem_location 0x4d
243: #define DW_AT_allocated 0x4e
244: #define DW_AT_associated 0x4f
245: #define DW_AT_data_location 0x50
246: #define DW_AT_byte_stride 0x51
247: #define DW_AT_entry_pc 0x52
248: #define DW_AT_use_UTF8 0x53
249: #define DW_AT_extension 0x54
250: #define DW_AT_ranges 0x55
251: #define DW_AT_trampoline 0x56
252: #define DW_AT_call_column 0x57
253: #define DW_AT_call_file 0x58
254: #define DW_AT_call_line 0x59
255: #define DW_AT_description 0x5a
256: #define DW_AT_binary_scale 0x5b
257: #define DW_AT_decimal_scale 0x5c
258: #define DW_AT_small 0x5d
259: #define DW_AT_decimal_sign 0x5e
260: #define DW_AT_digit_count 0x5f
261: #define DW_AT_picture_string 0x60
262: #define DW_AT_mutable 0x61
263: #define DW_AT_threads_scaled 0x62
264: #define DW_AT_explicit 0x63
265: #define DW_AT_object_pointer 0x64
266: #define DW_AT_endianity 0x65
267: #define DW_AT_elemental 0x66
268: #define DW_AT_pure 0x67
269: #define DW_AT_recursive 0x68
270: #define DW_AT_signature 0x69
271: #define DW_AT_main_subprogram 0x6a
272: #define DW_AT_data_bit_offset 0x6b
273: #define DW_AT_const_expr 0x6c
274: #define DW_AT_enum_class 0x6d
275: #define DW_AT_linkage_name 0x6e
1.3 ! claudio 276: #define DW_AT_noreturn 0x87
1.1 mpi 277: #define DW_AT_lo_user 0x2000
278: #define DW_AT_hi_user 0x3fff
279:
280: /* GNU extensions. */
281: #define DW_AT_sf_names 0x2101
282: #define DW_AT_src_info 0x2102
283: #define DW_AT_mac_info 0x2103
284: #define DW_AT_src_coords 0x2104
285: #define DW_AT_body_begin 0x2105
286: #define DW_AT_body_end 0x2106
287: #define DW_AT_GNU_vector 0x2107
288: #define DW_AT_GNU_guarded_by 0x2108
289: #define DW_AT_GNU_pt_guarded_by 0x2109
290: #define DW_AT_GNU_guarded 0x210a
291: #define DW_AT_GNU_pt_guarded 0x210b
292: #define DW_AT_GNU_locks_excluded 0x210c
293: #define DW_AT_GNU_exclusive_locks_required 0x210d
294: #define DW_AT_GNU_shared_locks_required 0x210e
295: #define DW_AT_GNU_odr_signature 0x210f
296: #define DW_AT_GNU_template_name 0x2110
297: #define DW_AT_GNU_call_site_value 0x2111
298: #define DW_AT_GNU_call_site_data_value 0x2112
299: #define DW_AT_GNU_call_site_target 0x2113
300: #define DW_AT_GNU_call_site_target_clobbered 0x2114
301: #define DW_AT_GNU_tail_call 0x2115
302: #define DW_AT_GNU_all_tail_call_sites 0x2116
303: #define DW_AT_GNU_all_call_sites 0x2117
304: #define DW_AT_GNU_all_source_call_sites 0x2118
305:
306: #define DW_AT_NAMES \
307: "DW_AT_sibling", \
308: "DW_AT_location", \
309: "DW_AT_name", \
310: NULL, \
311: NULL, \
312: NULL, \
313: NULL, \
314: NULL, \
315: "DW_AT_ordering", \
316: "DW_AT_subscr_data", \
317: "DW_AT_byte_size", \
318: "DW_AT_bit_offset", \
319: "DW_AT_bit_size", \
320: NULL, \
321: "DW_AT_element_list", \
322: "DW_AT_stmt_list", \
323: "DW_AT_low_pc", \
324: "DW_AT_high_pc", \
325: "DW_AT_language", \
326: "DW_AT_member", \
327: "DW_AT_discr", \
328: "DW_AT_discr_value", \
329: "DW_AT_visibility", \
330: "DW_AT_import", \
331: "DW_AT_string_length", \
332: "DW_AT_common_reference", \
333: "DW_AT_comp_dir", \
334: "DW_AT_const_value", \
335: "DW_AT_containing_type", \
336: "DW_AT_default_value", \
337: NULL, \
338: "DW_AT_inline", \
339: "DW_AT_is_optional", \
340: "DW_AT_lower_bound", \
341: NULL, \
342: NULL, \
343: "DW_AT_producer", \
344: NULL, \
345: "DW_AT_prototyped", \
346: NULL, \
347: NULL, \
348: "DW_AT_return_addr", \
349: NULL, \
350: "DW_AT_start_scope", \
351: NULL, \
352: "DW_AT_bit_stride", \
353: "DW_AT_upper_bound", \
354: NULL, \
355: "DW_AT_abstract_origin", \
356: "DW_AT_accessibility", \
357: "DW_AT_address_class", \
358: "DW_AT_artificial", \
359: "DW_AT_base_types", \
360: "DW_AT_calling_convention", \
361: "DW_AT_count", \
362: "DW_AT_data_member_location", \
363: "DW_AT_decl_column", \
364: "DW_AT_decl_file", \
365: "DW_AT_decl_line", \
366: "DW_AT_declaration", \
367: "DW_AT_discr_list", \
368: "DW_AT_encoding", \
369: "DW_AT_external", \
370: "DW_AT_frame_base", \
371: "DW_AT_friend", \
372: "DW_AT_identifier_case", \
373: "DW_AT_macro_info", \
374: "DW_AT_namelist_item", \
375: "DW_AT_priority", \
376: "DW_AT_segment", \
377: "DW_AT_specification", \
378: "DW_AT_static_link", \
379: "DW_AT_type", \
380: "DW_AT_use_location", \
381: "DW_AT_variable_parameter", \
382: "DW_AT_virtuality", \
383: "DW_AT_vtable_elem_location", \
384: "DW_AT_allocated", \
385: "DW_AT_associated", \
386: "DW_AT_data_location", \
387: "DW_AT_byte_stride", \
388: "DW_AT_entry_pc", \
389: "DW_AT_use_UTF8", \
390: "DW_AT_extension", \
391: "DW_AT_ranges", \
392: "DW_AT_trampoline", \
393: "DW_AT_call_column", \
394: "DW_AT_call_file", \
395: "DW_AT_call_line", \
396: "DW_AT_description", \
397: "DW_AT_binary_scale", \
398: "DW_AT_decimal_scale", \
399: "DW_AT_small", \
400: "DW_AT_decimal_sign", \
401: "DW_AT_digit_count", \
402: "DW_AT_picture_string", \
403: "DW_AT_mutable", \
404: "DW_AT_threads_scaled", \
405: "DW_AT_explicit", \
406: "DW_AT_object_pointer", \
407: "DW_AT_endianity", \
408: "DW_AT_elemental", \
409: "DW_AT_pure", \
410: "DW_AT_recursive", \
411: "DW_AT_signature", \
412: "DW_AT_main_subprogram", \
413: "DW_AT_data_bit_offset", \
414: "DW_AT_const_expr", \
415: "DW_AT_enum_class", \
416: "DW_AT_linkage_name", \
1.3 ! claudio 417: [0x87 - 1] = "DW_AT_noreturn", \
1.1 mpi 418:
419: #define DW_FORM_addr 0x01
420: #define DW_FORM_block2 0x03
421: #define DW_FORM_block4 0x04
422: #define DW_FORM_data2 0x05
423: #define DW_FORM_data4 0x06
424: #define DW_FORM_data8 0x07
425: #define DW_FORM_string 0x08
426: #define DW_FORM_block 0x09
427: #define DW_FORM_block1 0x0a
428: #define DW_FORM_data1 0x0b
429: #define DW_FORM_flag 0x0c
430: #define DW_FORM_sdata 0x0d
431: #define DW_FORM_strp 0x0e
432: #define DW_FORM_udata 0x0f
433: #define DW_FORM_ref_addr 0x10
434: #define DW_FORM_ref1 0x11
435: #define DW_FORM_ref2 0x12
436: #define DW_FORM_ref4 0x13
437: #define DW_FORM_ref8 0x14
438: #define DW_FORM_ref_udata 0x15
439: #define DW_FORM_indirect 0x16
440: #define DW_FORM_sec_offset 0x17
441: #define DW_FORM_exprloc 0x18
442: #define DW_FORM_flag_present 0x19
443: #define DW_FORM_ref_sig8 0x20
444: #define DW_FORM_GNU_ref_alt 0x1f20
445: #define DW_FORM_GNU_strp_alt 0x1f21
446:
447: #define DW_FORM_NAMES \
448: "DW_FORM_addr", \
449: NULL, \
450: "DW_FORM_block2", \
451: "DW_FORM_block4", \
452: "DW_FORM_data2", \
453: "DW_FORM_data4", \
454: "DW_FORM_data8", \
455: "DW_FORM_string", \
456: "DW_FORM_block", \
457: "DW_FORM_block1", \
458: "DW_FORM_data1", \
459: "DW_FORM_flag", \
460: "DW_FORM_sdata", \
461: "DW_FORM_strp", \
462: "DW_FORM_udata", \
463: "DW_FORM_ref_addr", \
464: "DW_FORM_ref1", \
465: "DW_FORM_ref2", \
466: "DW_FORM_ref4", \
467: "DW_FORM_ref8", \
468: "DW_FORM_ref_udata", \
469: "DW_FORM_indirect", \
470: "DW_FORM_sec_offset", \
471: "DW_FORM_exprloc", \
472: "DW_FORM_flag_present", \
473: NULL, \
474: NULL, \
475: NULL, \
476: NULL, \
477: NULL, \
478: NULL, \
479: "DW_FORM_ref_sig8", \
480:
481: #define DW_OP_addr 0x03
482: #define DW_OP_deref 0x06
483: #define DW_OP_const1u 0x08
484: #define DW_OP_const1s 0x09
485: #define DW_OP_const2u 0x0a
486: #define DW_OP_const2s 0x0b
487: #define DW_OP_const4u 0x0c
488: #define DW_OP_const4s 0x0d
489: #define DW_OP_const8u 0x0e
490: #define DW_OP_const8s 0x0f
491: #define DW_OP_constu 0x10
492: #define DW_OP_consts 0x11
493: #define DW_OP_dup 0x12
494: #define DW_OP_drop 0x13
495: #define DW_OP_over 0x14
496: #define DW_OP_pick 0x15
497: #define DW_OP_swap 0x16
498: #define DW_OP_rot 0x17
499: #define DW_OP_xderef 0x18
500: #define DW_OP_abs 0x19
501: #define DW_OP_and 0x1a
502: #define DW_OP_div 0x1b
503: #define DW_OP_minus 0x1c
504: #define DW_OP_mod 0x1d
505: #define DW_OP_mul 0x1e
506: #define DW_OP_neg 0x1f
507: #define DW_OP_not 0x20
508: #define DW_OP_or 0x21
509: #define DW_OP_plus 0x22
510: #define DW_OP_plus_uconst 0x23
511: #define DW_OP_shl 0x24
512: #define DW_OP_shr 0x25
513: #define DW_OP_shra 0x26
514: #define DW_OP_xor 0x27
515: #define DW_OP_bra 0x28
516: #define DW_OP_eq 0x29
517: #define DW_OP_ge 0x2a
518: #define DW_OP_gt 0x2b
519: #define DW_OP_le 0x2c
520: #define DW_OP_lt 0x2d
521: #define DW_OP_ne 0x2e
522: #define DW_OP_skip 0x2f
523: #define DW_OP_lit0 0x30
524: #define DW_OP_lit1 0x31
525: #define DW_OP_lit2 0x32
526: #define DW_OP_lit3 0x33
527: #define DW_OP_lit4 0x34
528: #define DW_OP_lit5 0x35
529: #define DW_OP_lit6 0x36
530: #define DW_OP_lit7 0x37
531: #define DW_OP_lit8 0x38
532: #define DW_OP_lit9 0x39
533: #define DW_OP_lit10 0x3a
534: #define DW_OP_lit11 0x3b
535: #define DW_OP_lit12 0x3c
536: #define DW_OP_lit13 0x3d
537: #define DW_OP_lit14 0x3e
538: #define DW_OP_lit15 0x3f
539: #define DW_OP_lit16 0x40
540: #define DW_OP_lit17 0x41
541: #define DW_OP_lit18 0x42
542: #define DW_OP_lit19 0x43
543: #define DW_OP_lit20 0x44
544: #define DW_OP_lit21 0x45
545: #define DW_OP_lit22 0x46
546: #define DW_OP_lit23 0x47
547: #define DW_OP_lit24 0x48
548: #define DW_OP_lit25 0x49
549: #define DW_OP_lit26 0x4a
550: #define DW_OP_lit27 0x4b
551: #define DW_OP_lit28 0x4c
552: #define DW_OP_lit29 0x4d
553: #define DW_OP_lit30 0x4e
554: #define DW_OP_lit31 0x4f
555: #define DW_OP_reg0 0x50
556: #define DW_OP_reg1 0x51
557: #define DW_OP_reg2 0x52
558: #define DW_OP_reg3 0x53
559: #define DW_OP_reg4 0x54
560: #define DW_OP_reg5 0x55
561: #define DW_OP_reg6 0x56
562: #define DW_OP_reg7 0x57
563: #define DW_OP_reg8 0x58
564: #define DW_OP_reg9 0x59
565: #define DW_OP_reg10 0x5a
566: #define DW_OP_reg11 0x5b
567: #define DW_OP_reg12 0x5c
568: #define DW_OP_reg13 0x5d
569: #define DW_OP_reg14 0x5e
570: #define DW_OP_reg15 0x5f
571: #define DW_OP_reg16 0x60
572: #define DW_OP_reg17 0x61
573: #define DW_OP_reg18 0x62
574: #define DW_OP_reg19 0x63
575: #define DW_OP_reg20 0x64
576: #define DW_OP_reg21 0x65
577: #define DW_OP_reg22 0x66
578: #define DW_OP_reg23 0x67
579: #define DW_OP_reg24 0x68
580: #define DW_OP_reg25 0x69
581: #define DW_OP_reg26 0x6a
582: #define DW_OP_reg27 0x6b
583: #define DW_OP_reg28 0x6c
584: #define DW_OP_reg29 0x6d
585: #define DW_OP_reg30 0x6e
586: #define DW_OP_reg31 0x6f
587: #define DW_OP_breg0 0x70
588: #define DW_OP_breg1 0x71
589: #define DW_OP_breg2 0x72
590: #define DW_OP_breg3 0x73
591: #define DW_OP_breg4 0x74
592: #define DW_OP_breg5 0x75
593: #define DW_OP_breg6 0x76
594: #define DW_OP_breg7 0x77
595: #define DW_OP_breg8 0x78
596: #define DW_OP_breg9 0x79
597: #define DW_OP_breg10 0x7a
598: #define DW_OP_breg11 0x7b
599: #define DW_OP_breg12 0x7c
600: #define DW_OP_breg13 0x7d
601: #define DW_OP_breg14 0x7e
602: #define DW_OP_breg15 0x7f
603: #define DW_OP_breg16 0x80
604: #define DW_OP_breg17 0x81
605: #define DW_OP_breg18 0x82
606: #define DW_OP_breg19 0x83
607: #define DW_OP_breg20 0x84
608: #define DW_OP_breg21 0x85
609: #define DW_OP_breg22 0x86
610: #define DW_OP_breg23 0x87
611: #define DW_OP_breg24 0x88
612: #define DW_OP_breg25 0x89
613: #define DW_OP_breg26 0x8a
614: #define DW_OP_breg27 0x8b
615: #define DW_OP_breg28 0x8c
616: #define DW_OP_breg29 0x8d
617: #define DW_OP_breg30 0x8e
618: #define DW_OP_breg31 0x8f
619: #define DW_OP_regx 0x90
620: #define DW_OP_fbreg 0x91
621: #define DW_OP_bregx 0x92
622: #define DW_OP_piece 0x93
623: #define DW_OP_deref_size 0x94
624: #define DW_OP_xderef_size 0x95
625: #define DW_OP_nop 0x96
626: #define DW_OP_push_object_address 0x97
627: #define DW_OP_call2 0x98
628: #define DW_OP_call4 0x99
629: #define DW_OP_call_ref 0x9a
630: #define DW_OP_form_tls_address 0x9b
631: #define DW_OP_call_frame_cfa 0x9c
632: #define DW_OP_bit_piece 0x9d
633: #define DW_OP_implicit_value 0x9e
634: #define DW_OP_stack_value 0x9f
635: #define DW_OP_lo_user 0xe0
636: #define DW_OP_hi_user 0xff
637:
638: /* GNU extensions. */
639: #define DW_OP_GNU_push_tls_address 0xe0
640: #define DW_OP_GNU_uninit 0xf0
641: #define DW_OP_GNU_encoded_addr 0xf1
642: #define DW_OP_GNU_implicit_pointer 0xf2
643: #define DW_OP_GNU_entry_value 0xf3
644: #define DW_OP_GNU_const_type 0xf4
645: #define DW_OP_GNU_regval_type 0xf5
646: #define DW_OP_GNU_deref_type 0xf6
647: #define DW_OP_GNU_convert 0xf7
648: #define DW_OP_GNU_reinterpret 0xf9
649: #define DW_OP_GNU_parameter_ref 0xfa
650: #define DW_OP_GNU_addr_index 0xfb
651: #define DW_OP_GNU_const_index 0xfc
652:
653: #define DW_OP_NAMES \
654: NULL, \
655: NULL, \
656: "DW_OP_addr", \
657: NULL, \
658: NULL, \
659: "DW_OP_deref", \
660: NULL, \
661: "DW_OP_const1u", \
662: "DW_OP_const1s", \
663: "DW_OP_const2u", \
664: "DW_OP_const2s", \
665: "DW_OP_const4u", \
666: "DW_OP_const4s", \
667: "DW_OP_const8u", \
668: "DW_OP_const8s", \
669: "DW_OP_constu", \
670: "DW_OP_consts", \
671: "DW_OP_dup", \
672: "DW_OP_drop", \
673: "DW_OP_over", \
674: "DW_OP_pick", \
675: "DW_OP_swap", \
676: "DW_OP_rot", \
677: "DW_OP_xderef", \
678: "DW_OP_abs", \
679: "DW_OP_and", \
680: "DW_OP_div", \
681: "DW_OP_minus", \
682: "DW_OP_mod", \
683: "DW_OP_mul", \
684: "DW_OP_neg", \
685: "DW_OP_not", \
686: "DW_OP_or", \
687: "DW_OP_plus", \
688: "DW_OP_plus_uconst", \
689: "DW_OP_shl", \
690: "DW_OP_shr", \
691: "DW_OP_shra", \
692: "DW_OP_xor", \
693: "DW_OP_bra", \
694: "DW_OP_eq", \
695: "DW_OP_ge", \
696: "DW_OP_gt", \
697: "DW_OP_le", \
698: "DW_OP_lt", \
699: "DW_OP_ne", \
700: "DW_OP_skip", \
701: "DW_OP_lit0", \
702: "DW_OP_lit1", \
703: "DW_OP_lit2", \
704: "DW_OP_lit3", \
705: "DW_OP_lit4", \
706: "DW_OP_lit5", \
707: "DW_OP_lit6", \
708: "DW_OP_lit7", \
709: "DW_OP_lit8", \
710: "DW_OP_lit9", \
711: "DW_OP_lit10", \
712: "DW_OP_lit11", \
713: "DW_OP_lit12", \
714: "DW_OP_lit13", \
715: "DW_OP_lit14", \
716: "DW_OP_lit15", \
717: "DW_OP_lit16", \
718: "DW_OP_lit17", \
719: "DW_OP_lit18", \
720: "DW_OP_lit19", \
721: "DW_OP_lit20", \
722: "DW_OP_lit21", \
723: "DW_OP_lit22", \
724: "DW_OP_lit23", \
725: "DW_OP_lit24", \
726: "DW_OP_lit25", \
727: "DW_OP_lit26", \
728: "DW_OP_lit27", \
729: "DW_OP_lit28", \
730: "DW_OP_lit29", \
731: "DW_OP_lit30", \
732: "DW_OP_lit31", \
733: "DW_OP_reg0", \
734: "DW_OP_reg1", \
735: "DW_OP_reg2", \
736: "DW_OP_reg3", \
737: "DW_OP_reg4", \
738: "DW_OP_reg5", \
739: "DW_OP_reg6", \
740: "DW_OP_reg7", \
741: "DW_OP_reg8", \
742: "DW_OP_reg9", \
743: "DW_OP_reg10", \
744: "DW_OP_reg11", \
745: "DW_OP_reg12", \
746: "DW_OP_reg13", \
747: "DW_OP_reg14", \
748: "DW_OP_reg15", \
749: "DW_OP_reg16", \
750: "DW_OP_reg17", \
751: "DW_OP_reg18", \
752: "DW_OP_reg19", \
753: "DW_OP_reg20", \
754: "DW_OP_reg21", \
755: "DW_OP_reg22", \
756: "DW_OP_reg23", \
757: "DW_OP_reg24", \
758: "DW_OP_reg25", \
759: "DW_OP_reg26", \
760: "DW_OP_reg27", \
761: "DW_OP_reg28", \
762: "DW_OP_reg29", \
763: "DW_OP_reg30", \
764: "DW_OP_reg31", \
765: "DW_OP_breg0", \
766: "DW_OP_breg1", \
767: "DW_OP_breg2", \
768: "DW_OP_breg3", \
769: "DW_OP_breg4", \
770: "DW_OP_breg5", \
771: "DW_OP_breg6", \
772: "DW_OP_breg7", \
773: "DW_OP_breg8", \
774: "DW_OP_breg9", \
775: "DW_OP_breg10", \
776: "DW_OP_breg11", \
777: "DW_OP_breg12", \
778: "DW_OP_breg13", \
779: "DW_OP_breg14", \
780: "DW_OP_breg15", \
781: "DW_OP_breg16", \
782: "DW_OP_breg17", \
783: "DW_OP_breg18", \
784: "DW_OP_breg19", \
785: "DW_OP_breg20", \
786: "DW_OP_breg21", \
787: "DW_OP_breg22", \
788: "DW_OP_breg23", \
789: "DW_OP_breg24", \
790: "DW_OP_breg25", \
791: "DW_OP_breg26", \
792: "DW_OP_breg27", \
793: "DW_OP_breg28", \
794: "DW_OP_breg29", \
795: "DW_OP_breg30", \
796: "DW_OP_breg31", \
797: "DW_OP_regx", \
798: "DW_OP_fbreg", \
799: "DW_OP_bregx", \
800: "DW_OP_piece", \
801: "DW_OP_deref_size", \
802: "DW_OP_xderef_size", \
803: "DW_OP_nop", \
804: "DW_OP_push_object_address", \
805: "DW_OP_call2", \
806: "DW_OP_call4", \
807: "DW_OP_call_ref", \
808: "DW_OP_form_tls_address", \
809: "DW_OP_call_frame_cfa", \
810: "DW_OP_bit_piece", \
811: "DW_OP_implicit_value", \
812: "DW_OP_stack_value", \
813:
814: #define DW_ATE_address 0x1
815: #define DW_ATE_boolean 0x2
816: #define DW_ATE_complex_float 0x3
817: #define DW_ATE_float 0x4
818: #define DW_ATE_signed 0x5
819: #define DW_ATE_signed_char 0x6
820: #define DW_ATE_unsigned 0x7
821: #define DW_ATE_unsigned_char 0x8
822: #define DW_ATE_imaginary_float 0x9
823: #define DW_ATE_packed_decimal 0xa
824: #define DW_ATE_numeric_string 0xb
825: #define DW_ATE_edited 0xc
826: #define DW_ATE_signed_fixed 0xd
827: #define DW_ATE_unsigned_fixed 0xe
828: #define DW_ATE_decimal_float 0xf
829: #define DW_ATE_lo_user 0x80
830: #define DW_ATE_hi_user 0xff
831:
832: #define DW_ACCESS_public 0x01
833: #define DW_ACCESS_protected 0x02
834: #define DW_ACCESS_private 0x03
835:
836: #define DW_END_default 0x00
837: #define DW_END_big 0x01
838: #define DW_END_little 0x02
839: #define DW_END_lo_user 0x40
840: #define DW_END_high_user 0xff
841:
842: #define DW_VIS_local 0x01
843: #define DW_VIS_exported 0x02
844: #define DW_VIS_qualified 0x03
845:
846: #define DW_VIRTUALITY_none 0x00
847: #define DW_VIRTUALITY_virtual 0x01
848: #define DW_VIRTUALITY_pure_virtual 0x02
849:
850: #define DW_LANG_C89 0x0001
851: #define DW_LANG_C 0x0002
852: #define DW_LANG_Ada83 0x0003
853: #define DW_LANG_C_plus_plus 0x0004
854: #define DW_LANG_Cobol74 0x0005
855: #define DW_LANG_Cobol85 0x0006
856: #define DW_LANG_Fortran77 0x0007
857: #define DW_LANG_Fortran90 0x0008
858: #define DW_LANG_Pascal83 0x0009
859: #define DW_LANG_Modula2 0x000a
860: #define DW_LANG_Java 0x000b
861: #define DW_LANG_C99 0x000c
862: #define DW_LANG_Ada95 0x000d
863: #define DW_LANG_Fortran95 0x000e
864: #define DW_LANG_PLI 0x000f
865: #define DW_LANG_ObjC 0x0010
866: #define DW_LANG_ObjC_plus_plus 0x0011
867: #define DW_LANG_UPC 0x0012
868: #define DW_LANG_D 0x0013
869: #define DW_LANG_lo_user 0x8000
870: #define DW_LANG_hi_user 0xffff
871:
872: #define DW_ID_case_sensitive 0x00
873: #define DW_ID_up_case 0x01
874: #define DW_ID_down_case 0x02
875: #define DW_ID_case_insensitive 0x03
876:
877: #define DW_CC_normal 0x01
878: #define DW_CC_program 0x02
879: #define DW_CC_nocall 0x03
880: #define DW_CC_lo_user 0x40
881: #define DW_CC_hi_user 0xff
882:
883: #define DW_INL_not_inlined 0x00
884: #define DW_INL_inlined 0x01
885: #define DW_INL_declared_not_inlined 0x02
886: #define DW_INL_declared_inlined 0x03
887:
888: #define DW_ORD_row_major 0x00
889: #define DW_ORD_col_major 0x01
890:
891: #define DW_DS_unsigned 0x01
892: #define DW_DS_leading_overpunch 0x02
893: #define DW_DS_trailing_overpunch 0x03
894: #define DW_DS_leading_separate 0x04
895: #define DW_DS_trailing_separate 0x05
896:
897: #define DW_DSC_label 0x00
898: #define DW_DSC_range 0x01
899:
900: #define DW_LNS_copy 0x01
901: #define DW_LNS_advance_pc 0x02
902: #define DW_LNS_advance_line 0x03
903: #define DW_LNS_set_file 0x04
904: #define DW_LNS_set_column 0x05
905: #define DW_LNS_negate_stmt 0x06
906: #define DW_LNS_set_basic_block 0x07
907: #define DW_LNS_const_add_pc 0x08
908: #define DW_LNS_fixed_advance_pc 0x09
909: #define DW_LNS_set_prologue_end 0x0a
910: #define DW_LNS_set_epilogue_begin 0x0b
911: #define DW_LNS_set_isa 0x0c
912:
913: #define DW_LNE_end_sequence 0x01
914: #define DW_LNE_set_address 0x02
915: #define DW_LNE_define_file 0x03
916: #define DW_LNE_lo_user 0x80
917: #define DW_LNE_hi_user 0xff
918:
919: #define DW_MACINFO_define 0x01
920: #define DW_MACINFO_undef 0x02
921: #define DW_MACINFO_start_file 0x03
922: #define DW_MACINFO_end_file 0x04
923: #define DW_MACINFO_vendor_ext 0xff
924:
925: #define DW_CFA_advance_loc 0x40
926: #define DW_CFA_offset 0x80
927: #define DW_CFA_restore 0xc0
928: #define DW_CFA_extended 0
929:
930: #define DW_CFA_nop 0x00
931: #define DW_CFA_set_loc 0x01
932: #define DW_CFA_advance_loc1 0x02
933: #define DW_CFA_advance_loc2 0x03
934: #define DW_CFA_advance_loc4 0x04
935: #define DW_CFA_offset_extended 0x05
936: #define DW_CFA_restore_extended 0x06
937: #define DW_CFA_undefined 0x07
938: #define DW_CFA_same_value 0x08
939: #define DW_CFA_register 0x09
940: #define DW_CFA_remember_state 0x0a
941: #define DW_CFA_restore_state 0x0b
942: #define DW_CFA_def_cfa 0x0c
943: #define DW_CFA_def_cfa_register 0x0d
944: #define DW_CFA_def_cfa_offset 0x0e
945: #define DW_CFA_def_cfa_expression 0x0f
946: #define DW_CFA_expression 0x10
947: #define DW_CFA_offset_extended_sf 0x11
948: #define DW_CFA_def_cfa_sf 0x12
949: #define DW_CFA_def_cfa_offset_sf 0x13
950: #define DW_CFA_val_offset 0x14
951: #define DW_CFA_val_offset_sf 0x15
952: #define DW_CFA_val_expression 0x16
953: #define DW_CFA_lo_user 0x1c
954: #define DW_CFA_high_user 0x3f
955:
956: /*
957: * LSB(Linux Standard Base) extension to DWARF2.
958: */
959:
960: #define DW_EH_PE_absptr 0x00
961: #define DW_EH_PE_uleb128 0x01
962: #define DW_EH_PE_udata2 0x02
963: #define DW_EH_PE_udata4 0x03
964: #define DW_EH_PE_udata8 0x04
965: #define DW_EH_PE_sleb128 0x09
966: #define DW_EH_PE_sdata2 0x0a
967: #define DW_EH_PE_sdata4 0x0b
968: #define DW_EH_PE_sdata8 0x0c
969: #define DW_EH_PE_pcrel 0x10
970: #define DW_EH_PE_textrel 0x20
971: #define DW_EH_PE_datarel 0x30
972: #define DW_EH_PE_funcrel 0x40
973: #define DW_EH_PE_aligned 0x50
974: #define DW_EH_PE_omit 0xff
975:
976: #endif /* !_DWARF_H_ */