dwarf_defs.h (7138B)
1 #ifndef KIT_DWARF_DEFS_H 2 #define KIT_DWARF_DEFS_H 3 4 /* Shared DWARF wire-format constants. 5 * 6 * This header is intentionally limited to numeric encodings from the DWARF 7 * format. Producer and reader internals may both include it, but neither side 8 * should expose or share implementation state through it. 9 */ 10 11 /* DW_TAG */ 12 #define DW_TAG_array_type 0x01 13 #define DW_TAG_class_type 0x02 14 #define DW_TAG_enumeration_type 0x04 15 #define DW_TAG_formal_parameter 0x05 16 #define DW_TAG_lexical_block 0x0b 17 #define DW_TAG_member 0x0d 18 #define DW_TAG_pointer_type 0x0f 19 #define DW_TAG_reference_type 0x10 20 #define DW_TAG_compile_unit 0x11 21 #define DW_TAG_structure_type 0x13 22 #define DW_TAG_subroutine_type 0x15 23 #define DW_TAG_typedef 0x16 24 #define DW_TAG_union_type 0x17 25 #define DW_TAG_unspecified_parameters 0x18 26 #define DW_TAG_inheritance 0x1c 27 #define DW_TAG_inlined_subroutine 0x1d 28 #define DW_TAG_subrange_type 0x21 29 #define DW_TAG_base_type 0x24 30 #define DW_TAG_const_type 0x26 31 #define DW_TAG_enumerator 0x28 32 #define DW_TAG_subprogram 0x2e 33 #define DW_TAG_variable 0x34 34 #define DW_TAG_volatile_type 0x35 35 #define DW_TAG_restrict_type 0x37 36 37 /* DW_CHILDREN */ 38 #define DW_CHILDREN_no 0x00 39 #define DW_CHILDREN_yes 0x01 40 41 /* DW_AT */ 42 #define DW_AT_sibling 0x01 43 #define DW_AT_location 0x02 44 #define DW_AT_name 0x03 45 #define DW_AT_byte_size 0x0b 46 #define DW_AT_bit_offset 0x0c /* DWARF 3/4; DW5 uses data_bit_offset. */ 47 #define DW_AT_bit_size 0x0d 48 #define DW_AT_stmt_list 0x10 49 #define DW_AT_low_pc 0x11 50 #define DW_AT_high_pc 0x12 51 #define DW_AT_language 0x13 52 #define DW_AT_comp_dir 0x1b 53 #define DW_AT_const_value 0x1c 54 #define DW_AT_producer 0x25 55 #define DW_AT_prototyped 0x27 56 #define DW_AT_start_scope 0x2c 57 #define DW_AT_bit_stride 0x2e 58 #define DW_AT_upper_bound 0x2f 59 #define DW_AT_count 0x37 60 #define DW_AT_data_member_location 0x38 61 #define DW_AT_decl_file 0x3a 62 #define DW_AT_decl_line 0x3b 63 #define DW_AT_declaration 0x3c 64 #define DW_AT_encoding 0x3e 65 #define DW_AT_external 0x3f 66 #define DW_AT_frame_base 0x40 67 #define DW_AT_specification 0x47 68 #define DW_AT_type 0x49 69 #define DW_AT_ranges 0x55 70 #define DW_AT_data_bit_offset 0x6b 71 #define DW_AT_str_offsets_base 0x72 72 #define DW_AT_addr_base 0x73 73 #define DW_AT_rnglists_base 0x74 74 #define DW_AT_loclists_base 0x8c 75 76 /* DW_FORM */ 77 #define DW_FORM_addr 0x01 78 #define DW_FORM_block2 0x03 79 #define DW_FORM_block4 0x04 80 #define DW_FORM_data2 0x05 81 #define DW_FORM_data4 0x06 82 #define DW_FORM_data8 0x07 83 #define DW_FORM_string 0x08 84 #define DW_FORM_block 0x09 85 #define DW_FORM_block1 0x0a 86 #define DW_FORM_data1 0x0b 87 #define DW_FORM_flag 0x0c 88 #define DW_FORM_sdata 0x0d 89 #define DW_FORM_strp 0x0e 90 #define DW_FORM_udata 0x0f 91 #define DW_FORM_ref_addr 0x10 92 #define DW_FORM_ref1 0x11 93 #define DW_FORM_ref2 0x12 94 #define DW_FORM_ref4 0x13 95 #define DW_FORM_ref8 0x14 96 #define DW_FORM_ref_udata 0x15 97 #define DW_FORM_indirect 0x16 98 #define DW_FORM_sec_offset 0x17 99 #define DW_FORM_exprloc 0x18 100 #define DW_FORM_flag_present 0x19 101 #define DW_FORM_strx 0x1a 102 #define DW_FORM_addrx 0x1b 103 #define DW_FORM_ref_sup4 0x1c 104 #define DW_FORM_strp_sup 0x1d 105 #define DW_FORM_data16 0x1e 106 #define DW_FORM_line_strp 0x1f 107 #define DW_FORM_ref_sig8 0x20 108 #define DW_FORM_implicit_const 0x21 109 #define DW_FORM_loclistx 0x22 110 #define DW_FORM_rnglistx 0x23 111 #define DW_FORM_ref_sup8 0x24 112 #define DW_FORM_strx1 0x26 113 #define DW_FORM_strx2 0x27 114 #define DW_FORM_strx3 0x28 115 #define DW_FORM_strx4 0x29 116 #define DW_FORM_addrx1 0x2a 117 #define DW_FORM_addrx2 0x2b 118 #define DW_FORM_addrx3 0x2c 119 #define DW_FORM_addrx4 0x2d 120 121 /* DW_LANG */ 122 #define DW_LANG_C 0x02 123 #define DW_LANG_C89 0x01 124 #define DW_LANG_C99 0x0c 125 #define DW_LANG_C11 0x1d 126 #define DW_LANG_C17 0x2c 127 128 /* DW_ATE */ 129 #define DW_ATE_address 0x01 130 #define DW_ATE_boolean 0x02 131 #define DW_ATE_complex_float 0x03 132 #define DW_ATE_float 0x04 133 #define DW_ATE_signed 0x05 134 #define DW_ATE_signed_char 0x06 135 #define DW_ATE_unsigned 0x07 136 #define DW_ATE_unsigned_char 0x08 137 #define DW_ATE_UTF 0x10 138 139 /* DW_LNS / DW_LNE / DW_LNCT */ 140 #define DW_LNS_copy 0x01 141 #define DW_LNS_advance_pc 0x02 142 #define DW_LNS_advance_line 0x03 143 #define DW_LNS_set_file 0x04 144 #define DW_LNS_set_column 0x05 145 #define DW_LNS_negate_stmt 0x06 146 #define DW_LNS_set_basic_block 0x07 147 #define DW_LNS_const_add_pc 0x08 148 #define DW_LNS_fixed_advance_pc 0x09 149 #define DW_LNS_set_prologue_end 0x0a 150 #define DW_LNS_set_epilogue_begin 0x0b 151 #define DW_LNS_set_isa 0x0c 152 153 #define DW_LNE_end_sequence 0x01 154 #define DW_LNE_set_address 0x02 155 #define DW_LNE_set_discriminator 0x04 156 157 #define DW_LNCT_path 0x01 158 #define DW_LNCT_directory_index 0x02 159 #define DW_LNCT_timestamp 0x03 160 #define DW_LNCT_size 0x04 161 #define DW_LNCT_MD5 0x05 162 163 /* DW_RLE */ 164 #define DW_RLE_end_of_list 0x00 165 #define DW_RLE_offset_pair 0x04 166 #define DW_RLE_start_length 0x07 167 168 /* DW_LLE */ 169 #define DW_LLE_end_of_list 0x00 170 #define DW_LLE_base_addressx 0x01 171 #define DW_LLE_startx_endx 0x02 172 #define DW_LLE_startx_length 0x03 173 #define DW_LLE_offset_pair 0x04 174 #define DW_LLE_default_location 0x05 175 #define DW_LLE_base_address 0x06 176 #define DW_LLE_start_end 0x07 177 #define DW_LLE_start_length 0x08 178 179 /* DW_OP */ 180 #define DW_OP_addr 0x03 181 #define DW_OP_const1u 0x08 182 #define DW_OP_const1s 0x09 183 #define DW_OP_const2u 0x0a 184 #define DW_OP_const2s 0x0b 185 #define DW_OP_const4u 0x0c 186 #define DW_OP_const4s 0x0d 187 #define DW_OP_const8u 0x0e 188 #define DW_OP_const8s 0x0f 189 #define DW_OP_constu 0x10 190 #define DW_OP_consts 0x11 191 #define DW_OP_dup 0x12 192 #define DW_OP_drop 0x13 193 #define DW_OP_and 0x1a 194 #define DW_OP_minus 0x1c 195 #define DW_OP_mul 0x1e 196 #define DW_OP_or 0x21 197 #define DW_OP_plus 0x22 198 #define DW_OP_plus_uconst 0x23 199 #define DW_OP_shl 0x24 200 #define DW_OP_shr 0x25 201 #define DW_OP_shra 0x26 202 #define DW_OP_xor 0x27 203 #define DW_OP_lit0 0x30 204 #define DW_OP_reg0 0x50 205 #define DW_OP_breg0 0x70 206 #define DW_OP_regx 0x90 207 #define DW_OP_fbreg 0x91 208 #define DW_OP_bregx 0x92 209 #define DW_OP_call_frame_cfa 0x9c 210 #define DW_OP_stack_value 0x9f 211 212 /* DW_CFA */ 213 #define DW_CFA_nop 0x00 214 #define DW_CFA_set_loc 0x01 215 #define DW_CFA_advance_loc1 0x02 216 #define DW_CFA_advance_loc2 0x03 217 #define DW_CFA_advance_loc4 0x04 218 #define DW_CFA_offset_extended 0x05 219 #define DW_CFA_restore_extended 0x06 220 #define DW_CFA_undefined 0x07 221 #define DW_CFA_same_value 0x08 222 #define DW_CFA_register 0x09 223 #define DW_CFA_remember_state 0x0a 224 #define DW_CFA_restore_state 0x0b 225 #define DW_CFA_def_cfa 0x0c 226 #define DW_CFA_def_cfa_register 0x0d 227 #define DW_CFA_def_cfa_offset 0x0e 228 #define DW_CFA_def_cfa_expression 0x0f 229 #define DW_CFA_expression 0x10 230 #define DW_CFA_offset_extended_sf 0x11 231 #define DW_CFA_def_cfa_sf 0x12 232 #define DW_CFA_def_cfa_offset_sf 0x13 233 #define DW_CFA_val_offset 0x14 234 #define DW_CFA_val_offset_sf 0x15 235 #define DW_CFA_val_expression 0x16 236 #define DW_CFA_advance_loc 0x40 237 #define DW_CFA_offset 0x80 238 #define DW_CFA_restore 0xc0 239 240 /* DW_EH_PE */ 241 #define DW_EH_PE_absptr 0x00 242 #define DW_EH_PE_uleb128 0x01 243 #define DW_EH_PE_udata2 0x02 244 #define DW_EH_PE_udata4 0x03 245 #define DW_EH_PE_udata8 0x04 246 #define DW_EH_PE_sleb128 0x09 247 #define DW_EH_PE_sdata2 0x0a 248 #define DW_EH_PE_sdata4 0x0b 249 #define DW_EH_PE_sdata8 0x0c 250 #define DW_EH_PE_pcrel 0x10 251 #define DW_EH_PE_textrel 0x20 252 #define DW_EH_PE_datarel 0x30 253 #define DW_EH_PE_funcrel 0x40 254 #define DW_EH_PE_aligned 0x50 255 #define DW_EH_PE_omit 0xff 256 257 /* DW_UT */ 258 #define DW_UT_compile 0x01 259 260 #endif