| 1 | //! DWARF debugging data format. |
| 2 | //! |
| 3 | //! This namespace contains unopinionated types and data definitions only. For |
| 4 | //! an implementation of parsing and caching DWARF information, see |
| 5 | //! `std.debug.Dwarf`. |
| 6 | |
| 7 | pub const TAG = @import("dwarf/TAG.zig"); |
| 8 | pub const AT = @import("dwarf/AT.zig"); |
| 9 | pub const OP = @import("dwarf/OP.zig"); |
| 10 | pub const LANG = @import("dwarf/LANG.zig"); |
| 11 | pub const FORM = @import("dwarf/FORM.zig"); |
| 12 | pub const ATE = @import("dwarf/ATE.zig"); |
| 13 | pub const EH = @import("dwarf/EH.zig"); |
| 14 | pub const Format = enum { @"32", @"64" }; |
| 15 | |
| 16 | pub const LLE = struct { |
| 17 | pub const end_of_list = 0x00; |
| 18 | pub const base_addressx = 0x01; |
| 19 | pub const startx_endx = 0x02; |
| 20 | pub const startx_length = 0x03; |
| 21 | pub const offset_pair = 0x04; |
| 22 | pub const default_location = 0x05; |
| 23 | pub const base_address = 0x06; |
| 24 | pub const start_end = 0x07; |
| 25 | pub const start_length = 0x08; |
| 26 | }; |
| 27 | |
| 28 | pub const CFA = struct { |
| 29 | pub const advance_loc = 0x40; |
| 30 | pub const offset = 0x80; |
| 31 | pub const restore = 0xc0; |
| 32 | pub const nop = 0x00; |
| 33 | pub const set_loc = 0x01; |
| 34 | pub const advance_loc1 = 0x02; |
| 35 | pub const advance_loc2 = 0x03; |
| 36 | pub const advance_loc4 = 0x04; |
| 37 | pub const offset_extended = 0x05; |
| 38 | pub const restore_extended = 0x06; |
| 39 | pub const @"undefined" = 0x07; |
| 40 | pub const same_value = 0x08; |
| 41 | pub const register = 0x09; |
| 42 | pub const remember_state = 0x0a; |
| 43 | pub const restore_state = 0x0b; |
| 44 | pub const def_cfa = 0x0c; |
| 45 | pub const def_cfa_register = 0x0d; |
| 46 | pub const def_cfa_offset = 0x0e; |
| 47 | |
| 48 | // DWARF 3. |
| 49 | pub const def_cfa_expression = 0x0f; |
| 50 | pub const expression = 0x10; |
| 51 | pub const offset_extended_sf = 0x11; |
| 52 | pub const def_cfa_sf = 0x12; |
| 53 | pub const def_cfa_offset_sf = 0x13; |
| 54 | pub const val_offset = 0x14; |
| 55 | pub const val_offset_sf = 0x15; |
| 56 | pub const val_expression = 0x16; |
| 57 | |
| 58 | pub const lo_user = 0x1c; |
| 59 | pub const hi_user = 0x3f; |
| 60 | |
| 61 | // SGI/MIPS specific. |
| 62 | pub const MIPS_advance_loc8 = 0x1d; |
| 63 | |
| 64 | // GNU extensions. |
| 65 | pub const GNU_window_save = 0x2d; |
| 66 | pub const GNU_args_size = 0x2e; |
| 67 | pub const GNU_negative_offset_extended = 0x2f; |
| 68 | }; |
| 69 | |
| 70 | pub const CHILDREN = struct { |
| 71 | pub const no = 0x00; |
| 72 | pub const yes = 0x01; |
| 73 | }; |
| 74 | |
| 75 | pub const LNS = struct { |
| 76 | pub const extended_op = 0x00; |
| 77 | pub const copy = 0x01; |
| 78 | pub const advance_pc = 0x02; |
| 79 | pub const advance_line = 0x03; |
| 80 | pub const set_file = 0x04; |
| 81 | pub const set_column = 0x05; |
| 82 | pub const negate_stmt = 0x06; |
| 83 | pub const set_basic_block = 0x07; |
| 84 | pub const const_add_pc = 0x08; |
| 85 | pub const fixed_advance_pc = 0x09; |
| 86 | pub const set_prologue_end = 0x0a; |
| 87 | pub const set_epilogue_begin = 0x0b; |
| 88 | pub const set_isa = 0x0c; |
| 89 | }; |
| 90 | |
| 91 | pub const LNE = struct { |
| 92 | pub const padding = 0x00; |
| 93 | pub const end_sequence = 0x01; |
| 94 | pub const set_address = 0x02; |
| 95 | pub const define_file = 0x03; |
| 96 | pub const set_discriminator = 0x04; |
| 97 | pub const lo_user = 0x80; |
| 98 | pub const hi_user = 0xff; |
| 99 | |
| 100 | // Zig extensions |
| 101 | pub const ZIG_set_decl = 0xec; |
| 102 | }; |
| 103 | |
| 104 | pub const UT = struct { |
| 105 | pub const compile = 0x01; |
| 106 | pub const @"type" = 0x02; |
| 107 | pub const partial = 0x03; |
| 108 | pub const skeleton = 0x04; |
| 109 | pub const split_compile = 0x05; |
| 110 | pub const split_type = 0x06; |
| 111 | |
| 112 | pub const lo_user = 0x80; |
| 113 | pub const hi_user = 0xff; |
| 114 | }; |
| 115 | |
| 116 | pub const LNCT = struct { |
| 117 | pub const path = 0x1; |
| 118 | pub const directory_index = 0x2; |
| 119 | pub const timestamp = 0x3; |
| 120 | pub const size = 0x4; |
| 121 | pub const MD5 = 0x5; |
| 122 | |
| 123 | pub const lo_user = 0x2000; |
| 124 | pub const hi_user = 0x3fff; |
| 125 | |
| 126 | pub const LLVM_source = 0x2001; |
| 127 | }; |
| 128 | |
| 129 | pub const RLE = struct { |
| 130 | pub const end_of_list = 0x00; |
| 131 | pub const base_addressx = 0x01; |
| 132 | pub const startx_endx = 0x02; |
| 133 | pub const startx_length = 0x03; |
| 134 | pub const offset_pair = 0x04; |
| 135 | pub const base_address = 0x05; |
| 136 | pub const start_end = 0x06; |
| 137 | pub const start_length = 0x07; |
| 138 | }; |
| 139 | |
| 140 | pub const CC = enum(u8) { |
| 141 | normal = 0x1, |
| 142 | program = 0x2, |
| 143 | nocall = 0x3, |
| 144 | |
| 145 | pass_by_reference = 0x4, |
| 146 | pass_by_value = 0x5, |
| 147 | |
| 148 | GNU_renesas_sh = 0x40, |
| 149 | GNU_borland_fastcall_i386 = 0x41, |
| 150 | |
| 151 | BORLAND_safecall = 0xb0, |
| 152 | BORLAND_stdcall = 0xb1, |
| 153 | BORLAND_pascal = 0xb2, |
| 154 | BORLAND_msfastcall = 0xb3, |
| 155 | BORLAND_msreturn = 0xb4, |
| 156 | BORLAND_thiscall = 0xb5, |
| 157 | BORLAND_fastcall = 0xb6, |
| 158 | |
| 159 | LLVM_vectorcall = 0xc0, |
| 160 | LLVM_Win64 = 0xc1, |
| 161 | LLVM_X86_64SysV = 0xc2, |
| 162 | LLVM_AAPCS = 0xc3, |
| 163 | LLVM_AAPCS_VFP = 0xc4, |
| 164 | LLVM_IntelOclBicc = 0xc5, |
| 165 | LLVM_SpirFunction = 0xc6, |
| 166 | LLVM_OpenCLKernel = 0xc7, |
| 167 | LLVM_Swift = 0xc8, |
| 168 | LLVM_PreserveMost = 0xc9, |
| 169 | LLVM_PreserveAll = 0xca, |
| 170 | LLVM_X86RegCall = 0xcb, |
| 171 | LLVM_M68kRTD = 0xcc, |
| 172 | LLVM_PreserveNone = 0xcd, |
| 173 | LLVM_RISCVVectorCall = 0xce, |
| 174 | LLVM_SwiftTail = 0xcf, |
| 175 | |
| 176 | pub const lo_user = 0x40; |
| 177 | pub const hi_user = 0xff; |
| 178 | }; |
| 179 | |
| 180 | pub const ACCESS = struct { |
| 181 | pub const public = 0x01; |
| 182 | pub const protected = 0x02; |
| 183 | pub const private = 0x03; |
| 184 | }; |