xref: /openbsd/usr.bin/ctfconv/dwarf.h (revision 274d7c50)
1 /*	$OpenBSD: dwarf.h,v 1.2 2017/08/11 14:58:56 jasper Exp $ */
2 
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
276 #define DW_AT_lo_user			0x2000
277 #define DW_AT_hi_user			0x3fff
278 
279 /* GNU extensions. */
280 #define	DW_AT_sf_names				0x2101
281 #define	DW_AT_src_info				0x2102
282 #define	DW_AT_mac_info				0x2103
283 #define	DW_AT_src_coords			0x2104
284 #define	DW_AT_body_begin			0x2105
285 #define	DW_AT_body_end				0x2106
286 #define	DW_AT_GNU_vector			0x2107
287 #define	DW_AT_GNU_guarded_by			0x2108
288 #define	DW_AT_GNU_pt_guarded_by			0x2109
289 #define	DW_AT_GNU_guarded			0x210a
290 #define	DW_AT_GNU_pt_guarded			0x210b
291 #define	DW_AT_GNU_locks_excluded		0x210c
292 #define	DW_AT_GNU_exclusive_locks_required	0x210d
293 #define	DW_AT_GNU_shared_locks_required		0x210e
294 #define	DW_AT_GNU_odr_signature			0x210f
295 #define	DW_AT_GNU_template_name			0x2110
296 #define	DW_AT_GNU_call_site_value		0x2111
297 #define	DW_AT_GNU_call_site_data_value		0x2112
298 #define	DW_AT_GNU_call_site_target		0x2113
299 #define	DW_AT_GNU_call_site_target_clobbered	0x2114
300 #define	DW_AT_GNU_tail_call			0x2115
301 #define	DW_AT_GNU_all_tail_call_sites		0x2116
302 #define	DW_AT_GNU_all_call_sites		0x2117
303 #define	DW_AT_GNU_all_source_call_sites		0x2118
304 
305 #define DW_AT_NAMES							\
306 	"DW_AT_sibling",						\
307 	"DW_AT_location",						\
308 	"DW_AT_name",							\
309 	NULL,								\
310 	NULL,								\
311 	NULL,								\
312 	NULL,								\
313 	NULL,								\
314 	"DW_AT_ordering",						\
315 	"DW_AT_subscr_data",						\
316 	"DW_AT_byte_size",						\
317 	"DW_AT_bit_offset",						\
318 	"DW_AT_bit_size",						\
319 	NULL,								\
320 	"DW_AT_element_list",						\
321 	"DW_AT_stmt_list",						\
322 	"DW_AT_low_pc",							\
323 	"DW_AT_high_pc",						\
324 	"DW_AT_language",						\
325 	"DW_AT_member",							\
326 	"DW_AT_discr",							\
327 	"DW_AT_discr_value",						\
328 	"DW_AT_visibility",						\
329 	"DW_AT_import",							\
330 	"DW_AT_string_length",						\
331 	"DW_AT_common_reference",					\
332 	"DW_AT_comp_dir",						\
333 	"DW_AT_const_value",						\
334 	"DW_AT_containing_type",					\
335 	"DW_AT_default_value",						\
336 	NULL,								\
337 	"DW_AT_inline",							\
338 	"DW_AT_is_optional",						\
339 	"DW_AT_lower_bound",						\
340 	NULL,								\
341 	NULL,								\
342 	"DW_AT_producer",						\
343 	NULL,								\
344 	"DW_AT_prototyped",						\
345 	NULL,								\
346 	NULL,								\
347 	"DW_AT_return_addr",						\
348 	NULL,								\
349 	"DW_AT_start_scope",						\
350 	NULL,								\
351 	"DW_AT_bit_stride",						\
352 	"DW_AT_upper_bound",						\
353 	NULL,								\
354 	"DW_AT_abstract_origin",					\
355 	"DW_AT_accessibility",						\
356 	"DW_AT_address_class",						\
357 	"DW_AT_artificial",						\
358 	"DW_AT_base_types",						\
359 	"DW_AT_calling_convention",					\
360 	"DW_AT_count",							\
361 	"DW_AT_data_member_location",					\
362 	"DW_AT_decl_column",						\
363 	"DW_AT_decl_file",						\
364 	"DW_AT_decl_line",						\
365 	"DW_AT_declaration",						\
366 	"DW_AT_discr_list",						\
367 	"DW_AT_encoding",						\
368 	"DW_AT_external",						\
369 	"DW_AT_frame_base",						\
370 	"DW_AT_friend",							\
371 	"DW_AT_identifier_case",					\
372 	"DW_AT_macro_info",						\
373 	"DW_AT_namelist_item",						\
374 	"DW_AT_priority",						\
375 	"DW_AT_segment",						\
376 	"DW_AT_specification",						\
377 	"DW_AT_static_link",						\
378 	"DW_AT_type",							\
379 	"DW_AT_use_location",						\
380 	"DW_AT_variable_parameter",					\
381 	"DW_AT_virtuality",						\
382 	"DW_AT_vtable_elem_location",					\
383 	"DW_AT_allocated",						\
384 	"DW_AT_associated",						\
385 	"DW_AT_data_location",						\
386 	"DW_AT_byte_stride",						\
387 	"DW_AT_entry_pc",						\
388 	"DW_AT_use_UTF8",						\
389 	"DW_AT_extension",						\
390 	"DW_AT_ranges",							\
391 	"DW_AT_trampoline",						\
392 	"DW_AT_call_column",						\
393 	"DW_AT_call_file",						\
394 	"DW_AT_call_line",						\
395 	"DW_AT_description",						\
396 	"DW_AT_binary_scale",						\
397 	"DW_AT_decimal_scale",						\
398 	"DW_AT_small",							\
399 	"DW_AT_decimal_sign",						\
400 	"DW_AT_digit_count",						\
401 	"DW_AT_picture_string",						\
402 	"DW_AT_mutable",						\
403 	"DW_AT_threads_scaled",						\
404 	"DW_AT_explicit",						\
405 	"DW_AT_object_pointer",						\
406 	"DW_AT_endianity",						\
407 	"DW_AT_elemental",						\
408 	"DW_AT_pure",							\
409 	"DW_AT_recursive",						\
410 	"DW_AT_signature",						\
411 	"DW_AT_main_subprogram",					\
412 	"DW_AT_data_bit_offset",					\
413 	"DW_AT_const_expr",						\
414 	"DW_AT_enum_class",						\
415 	"DW_AT_linkage_name",						\
416 
417 #define DW_FORM_addr			0x01
418 #define DW_FORM_block2			0x03
419 #define DW_FORM_block4			0x04
420 #define DW_FORM_data2			0x05
421 #define DW_FORM_data4			0x06
422 #define DW_FORM_data8			0x07
423 #define DW_FORM_string			0x08
424 #define DW_FORM_block			0x09
425 #define DW_FORM_block1			0x0a
426 #define DW_FORM_data1			0x0b
427 #define DW_FORM_flag			0x0c
428 #define DW_FORM_sdata			0x0d
429 #define DW_FORM_strp			0x0e
430 #define DW_FORM_udata			0x0f
431 #define DW_FORM_ref_addr		0x10
432 #define DW_FORM_ref1			0x11
433 #define DW_FORM_ref2			0x12
434 #define DW_FORM_ref4			0x13
435 #define DW_FORM_ref8			0x14
436 #define DW_FORM_ref_udata		0x15
437 #define DW_FORM_indirect		0x16
438 #define DW_FORM_sec_offset		0x17
439 #define DW_FORM_exprloc			0x18
440 #define DW_FORM_flag_present		0x19
441 #define DW_FORM_ref_sig8		0x20
442 #define	DW_FORM_GNU_ref_alt		0x1f20
443 #define	DW_FORM_GNU_strp_alt		0x1f21
444 
445 #define DW_FORM_NAMES							\
446 	"DW_FORM_addr",							\
447 	NULL,								\
448 	"DW_FORM_block2",						\
449 	"DW_FORM_block4",						\
450 	"DW_FORM_data2",						\
451 	"DW_FORM_data4",						\
452 	"DW_FORM_data8",						\
453 	"DW_FORM_string",						\
454 	"DW_FORM_block",						\
455 	"DW_FORM_block1",						\
456 	"DW_FORM_data1",						\
457 	"DW_FORM_flag",							\
458 	"DW_FORM_sdata",						\
459 	"DW_FORM_strp",							\
460 	"DW_FORM_udata",						\
461 	"DW_FORM_ref_addr",						\
462 	"DW_FORM_ref1",							\
463 	"DW_FORM_ref2",							\
464 	"DW_FORM_ref4",							\
465 	"DW_FORM_ref8",							\
466 	"DW_FORM_ref_udata",						\
467 	"DW_FORM_indirect",						\
468 	"DW_FORM_sec_offset",						\
469 	"DW_FORM_exprloc",						\
470 	"DW_FORM_flag_present",						\
471 	NULL,								\
472 	NULL,								\
473 	NULL,								\
474 	NULL,								\
475 	NULL,								\
476 	NULL,								\
477 	"DW_FORM_ref_sig8",						\
478 
479 #define DW_OP_addr			0x03
480 #define DW_OP_deref			0x06
481 #define DW_OP_const1u			0x08
482 #define DW_OP_const1s			0x09
483 #define DW_OP_const2u			0x0a
484 #define DW_OP_const2s			0x0b
485 #define DW_OP_const4u			0x0c
486 #define DW_OP_const4s			0x0d
487 #define DW_OP_const8u			0x0e
488 #define DW_OP_const8s			0x0f
489 #define DW_OP_constu			0x10
490 #define DW_OP_consts			0x11
491 #define DW_OP_dup			0x12
492 #define DW_OP_drop			0x13
493 #define DW_OP_over			0x14
494 #define DW_OP_pick			0x15
495 #define DW_OP_swap			0x16
496 #define DW_OP_rot			0x17
497 #define DW_OP_xderef			0x18
498 #define DW_OP_abs			0x19
499 #define DW_OP_and			0x1a
500 #define DW_OP_div			0x1b
501 #define DW_OP_minus			0x1c
502 #define DW_OP_mod			0x1d
503 #define DW_OP_mul			0x1e
504 #define DW_OP_neg			0x1f
505 #define DW_OP_not			0x20
506 #define DW_OP_or			0x21
507 #define DW_OP_plus			0x22
508 #define DW_OP_plus_uconst		0x23
509 #define DW_OP_shl			0x24
510 #define DW_OP_shr			0x25
511 #define DW_OP_shra			0x26
512 #define DW_OP_xor			0x27
513 #define DW_OP_bra			0x28
514 #define DW_OP_eq			0x29
515 #define DW_OP_ge			0x2a
516 #define DW_OP_gt			0x2b
517 #define DW_OP_le			0x2c
518 #define DW_OP_lt			0x2d
519 #define DW_OP_ne			0x2e
520 #define DW_OP_skip			0x2f
521 #define DW_OP_lit0			0x30
522 #define DW_OP_lit1			0x31
523 #define DW_OP_lit2			0x32
524 #define DW_OP_lit3			0x33
525 #define DW_OP_lit4			0x34
526 #define DW_OP_lit5			0x35
527 #define DW_OP_lit6			0x36
528 #define DW_OP_lit7			0x37
529 #define DW_OP_lit8			0x38
530 #define DW_OP_lit9			0x39
531 #define DW_OP_lit10			0x3a
532 #define DW_OP_lit11			0x3b
533 #define DW_OP_lit12			0x3c
534 #define DW_OP_lit13			0x3d
535 #define DW_OP_lit14			0x3e
536 #define DW_OP_lit15			0x3f
537 #define DW_OP_lit16			0x40
538 #define DW_OP_lit17			0x41
539 #define DW_OP_lit18			0x42
540 #define DW_OP_lit19			0x43
541 #define DW_OP_lit20			0x44
542 #define DW_OP_lit21			0x45
543 #define DW_OP_lit22			0x46
544 #define DW_OP_lit23			0x47
545 #define DW_OP_lit24			0x48
546 #define DW_OP_lit25			0x49
547 #define DW_OP_lit26			0x4a
548 #define DW_OP_lit27			0x4b
549 #define DW_OP_lit28			0x4c
550 #define DW_OP_lit29			0x4d
551 #define DW_OP_lit30			0x4e
552 #define DW_OP_lit31			0x4f
553 #define DW_OP_reg0			0x50
554 #define DW_OP_reg1			0x51
555 #define DW_OP_reg2			0x52
556 #define DW_OP_reg3			0x53
557 #define DW_OP_reg4			0x54
558 #define DW_OP_reg5			0x55
559 #define DW_OP_reg6			0x56
560 #define DW_OP_reg7			0x57
561 #define DW_OP_reg8			0x58
562 #define DW_OP_reg9			0x59
563 #define DW_OP_reg10			0x5a
564 #define DW_OP_reg11			0x5b
565 #define DW_OP_reg12			0x5c
566 #define DW_OP_reg13			0x5d
567 #define DW_OP_reg14			0x5e
568 #define DW_OP_reg15			0x5f
569 #define DW_OP_reg16			0x60
570 #define DW_OP_reg17			0x61
571 #define DW_OP_reg18			0x62
572 #define DW_OP_reg19			0x63
573 #define DW_OP_reg20			0x64
574 #define DW_OP_reg21			0x65
575 #define DW_OP_reg22			0x66
576 #define DW_OP_reg23			0x67
577 #define DW_OP_reg24			0x68
578 #define DW_OP_reg25			0x69
579 #define DW_OP_reg26			0x6a
580 #define DW_OP_reg27			0x6b
581 #define DW_OP_reg28			0x6c
582 #define DW_OP_reg29			0x6d
583 #define DW_OP_reg30			0x6e
584 #define DW_OP_reg31			0x6f
585 #define DW_OP_breg0			0x70
586 #define DW_OP_breg1			0x71
587 #define DW_OP_breg2			0x72
588 #define DW_OP_breg3			0x73
589 #define DW_OP_breg4			0x74
590 #define DW_OP_breg5			0x75
591 #define DW_OP_breg6			0x76
592 #define DW_OP_breg7			0x77
593 #define DW_OP_breg8			0x78
594 #define DW_OP_breg9			0x79
595 #define DW_OP_breg10			0x7a
596 #define DW_OP_breg11			0x7b
597 #define DW_OP_breg12			0x7c
598 #define DW_OP_breg13			0x7d
599 #define DW_OP_breg14			0x7e
600 #define DW_OP_breg15			0x7f
601 #define DW_OP_breg16			0x80
602 #define DW_OP_breg17			0x81
603 #define DW_OP_breg18			0x82
604 #define DW_OP_breg19			0x83
605 #define DW_OP_breg20			0x84
606 #define DW_OP_breg21			0x85
607 #define DW_OP_breg22			0x86
608 #define DW_OP_breg23			0x87
609 #define DW_OP_breg24			0x88
610 #define DW_OP_breg25			0x89
611 #define DW_OP_breg26			0x8a
612 #define DW_OP_breg27			0x8b
613 #define DW_OP_breg28			0x8c
614 #define DW_OP_breg29			0x8d
615 #define DW_OP_breg30			0x8e
616 #define DW_OP_breg31			0x8f
617 #define DW_OP_regx			0x90
618 #define DW_OP_fbreg			0x91
619 #define DW_OP_bregx			0x92
620 #define DW_OP_piece			0x93
621 #define DW_OP_deref_size		0x94
622 #define DW_OP_xderef_size		0x95
623 #define DW_OP_nop			0x96
624 #define DW_OP_push_object_address	0x97
625 #define DW_OP_call2			0x98
626 #define DW_OP_call4			0x99
627 #define DW_OP_call_ref			0x9a
628 #define DW_OP_form_tls_address		0x9b
629 #define DW_OP_call_frame_cfa		0x9c
630 #define DW_OP_bit_piece			0x9d
631 #define DW_OP_implicit_value		0x9e
632 #define DW_OP_stack_value		0x9f
633 #define DW_OP_lo_user		 	0xe0
634 #define DW_OP_hi_user		 	0xff
635 
636 /* GNU extensions. */
637 #define	DW_OP_GNU_push_tls_address	0xe0
638 #define	DW_OP_GNU_uninit		0xf0
639 #define	DW_OP_GNU_encoded_addr		0xf1
640 #define	DW_OP_GNU_implicit_pointer	0xf2
641 #define	DW_OP_GNU_entry_value		0xf3
642 #define	DW_OP_GNU_const_type		0xf4
643 #define	DW_OP_GNU_regval_type		0xf5
644 #define	DW_OP_GNU_deref_type		0xf6
645 #define	DW_OP_GNU_convert		0xf7
646 #define	DW_OP_GNU_reinterpret		0xf9
647 #define	DW_OP_GNU_parameter_ref		0xfa
648 #define	DW_OP_GNU_addr_index		0xfb
649 #define	DW_OP_GNU_const_index		0xfc
650 
651 #define DW_OP_NAMES							\
652 	NULL,								\
653 	NULL,								\
654 	"DW_OP_addr",							\
655 	NULL,								\
656 	NULL,								\
657 	"DW_OP_deref",							\
658 	NULL,								\
659 	"DW_OP_const1u",						\
660 	"DW_OP_const1s",						\
661 	"DW_OP_const2u",						\
662 	"DW_OP_const2s",						\
663 	"DW_OP_const4u",						\
664 	"DW_OP_const4s",						\
665 	"DW_OP_const8u",						\
666 	"DW_OP_const8s",						\
667 	"DW_OP_constu",							\
668 	"DW_OP_consts",							\
669 	"DW_OP_dup",							\
670 	"DW_OP_drop",							\
671 	"DW_OP_over",							\
672 	"DW_OP_pick",							\
673 	"DW_OP_swap",							\
674 	"DW_OP_rot",							\
675 	"DW_OP_xderef",							\
676 	"DW_OP_abs",							\
677 	"DW_OP_and",							\
678 	"DW_OP_div",							\
679 	"DW_OP_minus",							\
680 	"DW_OP_mod",							\
681 	"DW_OP_mul",							\
682 	"DW_OP_neg",							\
683 	"DW_OP_not",							\
684 	"DW_OP_or",							\
685 	"DW_OP_plus",							\
686 	"DW_OP_plus_uconst",						\
687 	"DW_OP_shl",							\
688 	"DW_OP_shr",							\
689 	"DW_OP_shra",							\
690 	"DW_OP_xor",							\
691 	"DW_OP_bra",							\
692 	"DW_OP_eq",							\
693 	"DW_OP_ge",							\
694 	"DW_OP_gt",							\
695 	"DW_OP_le",							\
696 	"DW_OP_lt",							\
697 	"DW_OP_ne",							\
698 	"DW_OP_skip",							\
699 	"DW_OP_lit0",							\
700 	"DW_OP_lit1",							\
701 	"DW_OP_lit2",							\
702 	"DW_OP_lit3",							\
703 	"DW_OP_lit4",							\
704 	"DW_OP_lit5",							\
705 	"DW_OP_lit6",							\
706 	"DW_OP_lit7",							\
707 	"DW_OP_lit8",							\
708 	"DW_OP_lit9",							\
709 	"DW_OP_lit10",							\
710 	"DW_OP_lit11",							\
711 	"DW_OP_lit12",							\
712 	"DW_OP_lit13",							\
713 	"DW_OP_lit14",							\
714 	"DW_OP_lit15",							\
715 	"DW_OP_lit16",							\
716 	"DW_OP_lit17",							\
717 	"DW_OP_lit18",							\
718 	"DW_OP_lit19",							\
719 	"DW_OP_lit20",							\
720 	"DW_OP_lit21",							\
721 	"DW_OP_lit22",							\
722 	"DW_OP_lit23",							\
723 	"DW_OP_lit24",							\
724 	"DW_OP_lit25",							\
725 	"DW_OP_lit26",							\
726 	"DW_OP_lit27",							\
727 	"DW_OP_lit28",							\
728 	"DW_OP_lit29",							\
729 	"DW_OP_lit30",							\
730 	"DW_OP_lit31",							\
731 	"DW_OP_reg0",							\
732 	"DW_OP_reg1",							\
733 	"DW_OP_reg2",							\
734 	"DW_OP_reg3",							\
735 	"DW_OP_reg4",							\
736 	"DW_OP_reg5",							\
737 	"DW_OP_reg6",							\
738 	"DW_OP_reg7",							\
739 	"DW_OP_reg8",							\
740 	"DW_OP_reg9",							\
741 	"DW_OP_reg10",							\
742 	"DW_OP_reg11",							\
743 	"DW_OP_reg12",							\
744 	"DW_OP_reg13",							\
745 	"DW_OP_reg14",							\
746 	"DW_OP_reg15",							\
747 	"DW_OP_reg16",							\
748 	"DW_OP_reg17",							\
749 	"DW_OP_reg18",							\
750 	"DW_OP_reg19",							\
751 	"DW_OP_reg20",							\
752 	"DW_OP_reg21",							\
753 	"DW_OP_reg22",							\
754 	"DW_OP_reg23",							\
755 	"DW_OP_reg24",							\
756 	"DW_OP_reg25",							\
757 	"DW_OP_reg26",							\
758 	"DW_OP_reg27",							\
759 	"DW_OP_reg28",							\
760 	"DW_OP_reg29",							\
761 	"DW_OP_reg30",							\
762 	"DW_OP_reg31",							\
763 	"DW_OP_breg0",							\
764 	"DW_OP_breg1",							\
765 	"DW_OP_breg2",							\
766 	"DW_OP_breg3",							\
767 	"DW_OP_breg4",							\
768 	"DW_OP_breg5",							\
769 	"DW_OP_breg6",							\
770 	"DW_OP_breg7",							\
771 	"DW_OP_breg8",							\
772 	"DW_OP_breg9",							\
773 	"DW_OP_breg10",							\
774 	"DW_OP_breg11",							\
775 	"DW_OP_breg12",							\
776 	"DW_OP_breg13",							\
777 	"DW_OP_breg14",							\
778 	"DW_OP_breg15",							\
779 	"DW_OP_breg16",							\
780 	"DW_OP_breg17",							\
781 	"DW_OP_breg18",							\
782 	"DW_OP_breg19",							\
783 	"DW_OP_breg20",							\
784 	"DW_OP_breg21",							\
785 	"DW_OP_breg22",							\
786 	"DW_OP_breg23",							\
787 	"DW_OP_breg24",							\
788 	"DW_OP_breg25",							\
789 	"DW_OP_breg26",							\
790 	"DW_OP_breg27",							\
791 	"DW_OP_breg28",							\
792 	"DW_OP_breg29",							\
793 	"DW_OP_breg30",							\
794 	"DW_OP_breg31",							\
795 	"DW_OP_regx",							\
796 	"DW_OP_fbreg",							\
797 	"DW_OP_bregx",							\
798 	"DW_OP_piece",							\
799 	"DW_OP_deref_size",						\
800 	"DW_OP_xderef_size",						\
801 	"DW_OP_nop",							\
802 	"DW_OP_push_object_address",					\
803 	"DW_OP_call2",							\
804 	"DW_OP_call4",							\
805 	"DW_OP_call_ref",						\
806 	"DW_OP_form_tls_address",					\
807 	"DW_OP_call_frame_cfa",						\
808 	"DW_OP_bit_piece",						\
809 	"DW_OP_implicit_value",						\
810 	"DW_OP_stack_value",						\
811 
812 #define DW_ATE_address		 	0x1
813 #define DW_ATE_boolean		 	0x2
814 #define DW_ATE_complex_float	 	0x3
815 #define DW_ATE_float		 	0x4
816 #define DW_ATE_signed		 	0x5
817 #define DW_ATE_signed_char	 	0x6
818 #define DW_ATE_unsigned		 	0x7
819 #define DW_ATE_unsigned_char	 	0x8
820 #define DW_ATE_imaginary_float	 	0x9
821 #define DW_ATE_packed_decimal	 	0xa
822 #define DW_ATE_numeric_string	 	0xb
823 #define DW_ATE_edited		 	0xc
824 #define DW_ATE_signed_fixed	 	0xd
825 #define DW_ATE_unsigned_fixed	 	0xe
826 #define DW_ATE_decimal_float	 	0xf
827 #define DW_ATE_lo_user		 	0x80
828 #define DW_ATE_hi_user		 	0xff
829 
830 #define DW_ACCESS_public		0x01
831 #define DW_ACCESS_protected	 	0x02
832 #define DW_ACCESS_private	 	0x03
833 
834 #define	DW_END_default			0x00
835 #define	DW_END_big			0x01
836 #define	DW_END_little			0x02
837 #define	DW_END_lo_user			0x40
838 #define	DW_END_high_user		0xff
839 
840 #define DW_VIS_local		 	0x01
841 #define DW_VIS_exported		 	0x02
842 #define DW_VIS_qualified		0x03
843 
844 #define DW_VIRTUALITY_none	 	0x00
845 #define DW_VIRTUALITY_virtual	 	0x01
846 #define DW_VIRTUALITY_pure_virtual 	0x02
847 
848 #define DW_LANG_C89		 	0x0001
849 #define DW_LANG_C		 	0x0002
850 #define DW_LANG_Ada83		 	0x0003
851 #define DW_LANG_C_plus_plus	 	0x0004
852 #define DW_LANG_Cobol74		 	0x0005
853 #define DW_LANG_Cobol85		 	0x0006
854 #define DW_LANG_Fortran77	 	0x0007
855 #define DW_LANG_Fortran90	 	0x0008
856 #define DW_LANG_Pascal83		0x0009
857 #define DW_LANG_Modula2		 	0x000a
858 #define DW_LANG_Java		 	0x000b
859 #define DW_LANG_C99		 	0x000c
860 #define DW_LANG_Ada95		 	0x000d
861 #define DW_LANG_Fortran95	 	0x000e
862 #define DW_LANG_PLI		 	0x000f
863 #define DW_LANG_ObjC		 	0x0010
864 #define DW_LANG_ObjC_plus_plus	 	0x0011
865 #define DW_LANG_UPC		 	0x0012
866 #define DW_LANG_D		 	0x0013
867 #define DW_LANG_lo_user		 	0x8000
868 #define DW_LANG_hi_user		 	0xffff
869 
870 #define DW_ID_case_sensitive	 	0x00
871 #define DW_ID_up_case		 	0x01
872 #define DW_ID_down_case		 	0x02
873 #define DW_ID_case_insensitive	 	0x03
874 
875 #define DW_CC_normal		 	0x01
876 #define DW_CC_program		 	0x02
877 #define DW_CC_nocall		 	0x03
878 #define DW_CC_lo_user		 	0x40
879 #define DW_CC_hi_user		 	0xff
880 
881 #define DW_INL_not_inlined	 	0x00
882 #define DW_INL_inlined		 	0x01
883 #define DW_INL_declared_not_inlined 	0x02
884 #define DW_INL_declared_inlined	 	0x03
885 
886 #define DW_ORD_row_major		0x00
887 #define DW_ORD_col_major		0x01
888 
889 #define	DW_DS_unsigned			0x01
890 #define	DW_DS_leading_overpunch		0x02
891 #define	DW_DS_trailing_overpunch	0x03
892 #define	DW_DS_leading_separate		0x04
893 #define	DW_DS_trailing_separate		0x05
894 
895 #define DW_DSC_label		 	0x00
896 #define DW_DSC_range		 	0x01
897 
898 #define DW_LNS_copy		 	0x01
899 #define DW_LNS_advance_pc	 	0x02
900 #define DW_LNS_advance_line	 	0x03
901 #define DW_LNS_set_file		 	0x04
902 #define DW_LNS_set_column	 	0x05
903 #define DW_LNS_negate_stmt	 	0x06
904 #define DW_LNS_set_basic_block	 	0x07
905 #define DW_LNS_const_add_pc	 	0x08
906 #define DW_LNS_fixed_advance_pc	 	0x09
907 #define DW_LNS_set_prologue_end	 	0x0a
908 #define DW_LNS_set_epilogue_begin 	0x0b
909 #define DW_LNS_set_isa		 	0x0c
910 
911 #define DW_LNE_end_sequence	 	0x01
912 #define DW_LNE_set_address	 	0x02
913 #define DW_LNE_define_file	 	0x03
914 #define DW_LNE_lo_user		 	0x80
915 #define DW_LNE_hi_user		 	0xff
916 
917 #define DW_MACINFO_define	 	0x01
918 #define DW_MACINFO_undef		0x02
919 #define DW_MACINFO_start_file	 	0x03
920 #define DW_MACINFO_end_file	 	0x04
921 #define DW_MACINFO_vendor_ext	 	0xff
922 
923 #define DW_CFA_advance_loc		0x40
924 #define DW_CFA_offset	 		0x80
925 #define DW_CFA_restore	 		0xc0
926 #define DW_CFA_extended			0
927 
928 #define DW_CFA_nop	 		0x00
929 #define DW_CFA_set_loc	 		0x01
930 #define DW_CFA_advance_loc1 		0x02
931 #define DW_CFA_advance_loc2 		0x03
932 #define DW_CFA_advance_loc4 		0x04
933 #define DW_CFA_offset_extended 		0x05
934 #define DW_CFA_restore_extended 	0x06
935 #define DW_CFA_undefined		0x07
936 #define DW_CFA_same_value 		0x08
937 #define DW_CFA_register	 		0x09
938 #define DW_CFA_remember_state 		0x0a
939 #define DW_CFA_restore_state 		0x0b
940 #define DW_CFA_def_cfa	 		0x0c
941 #define DW_CFA_def_cfa_register 	0x0d
942 #define DW_CFA_def_cfa_offset 		0x0e
943 #define DW_CFA_def_cfa_expression 	0x0f
944 #define DW_CFA_expression 		0x10
945 #define DW_CFA_offset_extended_sf 	0x11
946 #define DW_CFA_def_cfa_sf 		0x12
947 #define DW_CFA_def_cfa_offset_sf 	0x13
948 #define DW_CFA_val_offset		0x14
949 #define DW_CFA_val_offset_sf 		0x15
950 #define DW_CFA_val_expression 		0x16
951 #define DW_CFA_lo_user	 		0x1c
952 #define DW_CFA_high_user	 	0x3f
953 
954 /*
955  * LSB(Linux Standard Base) extension to DWARF2.
956  */
957 
958 #define	DW_EH_PE_absptr			0x00
959 #define	DW_EH_PE_uleb128		0x01
960 #define	DW_EH_PE_udata2			0x02
961 #define	DW_EH_PE_udata4			0x03
962 #define	DW_EH_PE_udata8			0x04
963 #define	DW_EH_PE_sleb128		0x09
964 #define	DW_EH_PE_sdata2			0x0a
965 #define	DW_EH_PE_sdata4			0x0b
966 #define	DW_EH_PE_sdata8			0x0c
967 #define	DW_EH_PE_pcrel			0x10
968 #define	DW_EH_PE_textrel		0x20
969 #define	DW_EH_PE_datarel		0x30
970 #define	DW_EH_PE_funcrel		0x40
971 #define	DW_EH_PE_aligned		0x50
972 #define	DW_EH_PE_omit			0xff
973 
974 #endif /* !_DWARF_H_ */
975