1 /* $OpenBSD: dwarf.h,v 1.3 2024/02/21 13:16:14 claudio 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_noreturn 0x87 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", \ 417 [0x87 - 1] = "DW_AT_noreturn", \ 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_ */ 977