1*80814287SRaphael Isemann //===-- CodeViewRegisterMapping.cpp ---------------------------------------===// 2758657e5SAleksandr Urakov // 3ee21a66aSAleksandr Urakov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4ee21a66aSAleksandr Urakov // See https://llvm.org/LICENSE.txt for license information. 5ee21a66aSAleksandr Urakov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6758657e5SAleksandr Urakov // 7758657e5SAleksandr Urakov //===----------------------------------------------------------------------===// 8758657e5SAleksandr Urakov 9758657e5SAleksandr Urakov #include "CodeViewRegisterMapping.h" 10758657e5SAleksandr Urakov 11758657e5SAleksandr Urakov #include "lldb/lldb-defines.h" 12758657e5SAleksandr Urakov 13758657e5SAleksandr Urakov #include "Plugins/Process/Utility/lldb-x86-register-enums.h" 14758657e5SAleksandr Urakov 15758657e5SAleksandr Urakov using namespace lldb_private; 16758657e5SAleksandr Urakov 17758657e5SAleksandr Urakov static const uint32_t g_code_view_to_lldb_registers_x86[] = { 18758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // NONE 19758657e5SAleksandr Urakov lldb_al_i386, // AL 20758657e5SAleksandr Urakov lldb_cl_i386, // CL 21758657e5SAleksandr Urakov lldb_dl_i386, // DL 22758657e5SAleksandr Urakov lldb_bl_i386, // BL 23758657e5SAleksandr Urakov lldb_ah_i386, // AH 24758657e5SAleksandr Urakov lldb_ch_i386, // CH 25758657e5SAleksandr Urakov lldb_dh_i386, // DH 26758657e5SAleksandr Urakov lldb_bh_i386, // BH 27758657e5SAleksandr Urakov lldb_ax_i386, // AX 28758657e5SAleksandr Urakov lldb_cx_i386, // CX 29758657e5SAleksandr Urakov lldb_dx_i386, // DX 30758657e5SAleksandr Urakov lldb_bx_i386, // BX 31758657e5SAleksandr Urakov lldb_sp_i386, // SP 32758657e5SAleksandr Urakov lldb_bp_i386, // BP 33758657e5SAleksandr Urakov lldb_si_i386, // SI 34758657e5SAleksandr Urakov lldb_di_i386, // DI 35758657e5SAleksandr Urakov lldb_eax_i386, // EAX 36758657e5SAleksandr Urakov lldb_ecx_i386, // ECX 37758657e5SAleksandr Urakov lldb_edx_i386, // EDX 38758657e5SAleksandr Urakov lldb_ebx_i386, // EBX 39758657e5SAleksandr Urakov lldb_esp_i386, // ESP 40758657e5SAleksandr Urakov lldb_ebp_i386, // EBP 41758657e5SAleksandr Urakov lldb_esi_i386, // ESI 42758657e5SAleksandr Urakov lldb_edi_i386, // EDI 43758657e5SAleksandr Urakov lldb_es_i386, // ES 44758657e5SAleksandr Urakov lldb_cs_i386, // CS 45758657e5SAleksandr Urakov lldb_ss_i386, // SS 46758657e5SAleksandr Urakov lldb_ds_i386, // DS 47758657e5SAleksandr Urakov lldb_fs_i386, // FS 48758657e5SAleksandr Urakov lldb_gs_i386, // GS 49758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IP 50758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FLAGS 51758657e5SAleksandr Urakov lldb_eip_i386, // EIP 52758657e5SAleksandr Urakov lldb_eflags_i386, // EFLAGS 53758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 54758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 55758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMP 56758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMPH 57758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // QUOTE 58758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR3 59758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR4 60758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR5 61758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR6 62758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR7 63758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 64758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 65758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 66758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 67758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 68758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 69758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 70758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 71758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 72758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 73758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 74758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR0 75758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR1 76758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR2 77758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR3 78758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR4 79758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 80758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 81758657e5SAleksandr Urakov lldb_dr0_i386, // DR0 82758657e5SAleksandr Urakov lldb_dr1_i386, // DR1 83758657e5SAleksandr Urakov lldb_dr2_i386, // DR2 84758657e5SAleksandr Urakov lldb_dr3_i386, // DR3 85758657e5SAleksandr Urakov lldb_dr4_i386, // DR4 86758657e5SAleksandr Urakov lldb_dr5_i386, // DR5 87758657e5SAleksandr Urakov lldb_dr6_i386, // DR6 88758657e5SAleksandr Urakov lldb_dr7_i386, // DR7 89758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 90758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 91758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 92758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 93758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTR 94758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTL 95758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTR 96758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTL 97758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // LDTR 98758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TR 99758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO1 100758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO2 101758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO3 102758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO4 103758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO5 104758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO6 105758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO7 106758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO8 107758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO9 108758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 109758657e5SAleksandr Urakov lldb_st0_i386, // ST0 110758657e5SAleksandr Urakov lldb_st1_i386, // ST1 111758657e5SAleksandr Urakov lldb_st2_i386, // ST2 112758657e5SAleksandr Urakov lldb_st3_i386, // ST3 113758657e5SAleksandr Urakov lldb_st4_i386, // ST4 114758657e5SAleksandr Urakov lldb_st5_i386, // ST5 115758657e5SAleksandr Urakov lldb_st6_i386, // ST6 116758657e5SAleksandr Urakov lldb_st7_i386, // ST7 117758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CTRL 118758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // STAT 119758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TAG 120758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPIP 121758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPCS 122758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDO 123758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDS 124758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // ISEM 125758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEIP 126758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEDO 127758657e5SAleksandr Urakov lldb_mm0_i386, // MM0 128758657e5SAleksandr Urakov lldb_mm1_i386, // MM1 129758657e5SAleksandr Urakov lldb_mm2_i386, // MM2 130758657e5SAleksandr Urakov lldb_mm3_i386, // MM3 131758657e5SAleksandr Urakov lldb_mm4_i386, // MM4 132758657e5SAleksandr Urakov lldb_mm5_i386, // MM5 133758657e5SAleksandr Urakov lldb_mm6_i386, // MM6 134758657e5SAleksandr Urakov lldb_mm7_i386, // MM7 135758657e5SAleksandr Urakov lldb_xmm0_i386, // XMM0 136758657e5SAleksandr Urakov lldb_xmm1_i386, // XMM1 137758657e5SAleksandr Urakov lldb_xmm2_i386, // XMM2 138758657e5SAleksandr Urakov lldb_xmm3_i386, // XMM3 139758657e5SAleksandr Urakov lldb_xmm4_i386, // XMM4 140758657e5SAleksandr Urakov lldb_xmm5_i386, // XMM5 141758657e5SAleksandr Urakov lldb_xmm6_i386, // XMM6 142758657e5SAleksandr Urakov lldb_xmm7_i386 // XMM7 143758657e5SAleksandr Urakov }; 144758657e5SAleksandr Urakov 145758657e5SAleksandr Urakov static const uint32_t g_code_view_to_lldb_registers_x86_64[] = { 146758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // NONE 147758657e5SAleksandr Urakov lldb_al_x86_64, // AL 148758657e5SAleksandr Urakov lldb_cl_x86_64, // CL 149758657e5SAleksandr Urakov lldb_dl_x86_64, // DL 150758657e5SAleksandr Urakov lldb_bl_x86_64, // BL 151758657e5SAleksandr Urakov lldb_ah_x86_64, // AH 152758657e5SAleksandr Urakov lldb_ch_x86_64, // CH 153758657e5SAleksandr Urakov lldb_dh_x86_64, // DH 154758657e5SAleksandr Urakov lldb_bh_x86_64, // BH 155758657e5SAleksandr Urakov lldb_ax_x86_64, // AX 156758657e5SAleksandr Urakov lldb_cx_x86_64, // CX 157758657e5SAleksandr Urakov lldb_dx_x86_64, // DX 158758657e5SAleksandr Urakov lldb_bx_x86_64, // BX 159758657e5SAleksandr Urakov lldb_sp_x86_64, // SP 160758657e5SAleksandr Urakov lldb_bp_x86_64, // BP 161758657e5SAleksandr Urakov lldb_si_x86_64, // SI 162758657e5SAleksandr Urakov lldb_di_x86_64, // DI 163758657e5SAleksandr Urakov lldb_eax_x86_64, // EAX 164758657e5SAleksandr Urakov lldb_ecx_x86_64, // ECX 165758657e5SAleksandr Urakov lldb_edx_x86_64, // EDX 166758657e5SAleksandr Urakov lldb_ebx_x86_64, // EBX 167758657e5SAleksandr Urakov lldb_esp_x86_64, // ESP 168758657e5SAleksandr Urakov lldb_ebp_x86_64, // EBP 169758657e5SAleksandr Urakov lldb_esi_x86_64, // ESI 170758657e5SAleksandr Urakov lldb_edi_x86_64, // EDI 171758657e5SAleksandr Urakov lldb_es_x86_64, // ES 172758657e5SAleksandr Urakov lldb_cs_x86_64, // CS 173758657e5SAleksandr Urakov lldb_ss_x86_64, // SS 174758657e5SAleksandr Urakov lldb_ds_x86_64, // DS 175758657e5SAleksandr Urakov lldb_fs_x86_64, // FS 176758657e5SAleksandr Urakov lldb_gs_x86_64, // GS 177758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IP 178758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FLAGS 179758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EIP 180758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EFLAGS 181758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 182758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 183758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMP 184758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMPH 185758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // QUOTE 186758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR3 187758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR4 188758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR5 189758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR6 190758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR7 191758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 192758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 193758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 194758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 195758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 196758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 197758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 198758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 199758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 200758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 201758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 202758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR0 203758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR1 204758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR2 205758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR3 206758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR4 207758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 208758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 209758657e5SAleksandr Urakov lldb_dr0_x86_64, // DR0 210758657e5SAleksandr Urakov lldb_dr1_x86_64, // DR1 211758657e5SAleksandr Urakov lldb_dr2_x86_64, // DR2 212758657e5SAleksandr Urakov lldb_dr3_x86_64, // DR3 213758657e5SAleksandr Urakov lldb_dr4_x86_64, // DR4 214758657e5SAleksandr Urakov lldb_dr5_x86_64, // DR5 215758657e5SAleksandr Urakov lldb_dr6_x86_64, // DR6 216758657e5SAleksandr Urakov lldb_dr7_x86_64, // DR7 217758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 218758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 219758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 220758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 221758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTR 222758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTL 223758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTR 224758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTL 225758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // LDTR 226758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TR 227758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO1 228758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO2 229758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO3 230758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO4 231758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO5 232758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO6 233758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO7 234758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO8 235758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO9 236758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 237758657e5SAleksandr Urakov lldb_st0_x86_64, // ST0 238758657e5SAleksandr Urakov lldb_st1_x86_64, // ST1 239758657e5SAleksandr Urakov lldb_st2_x86_64, // ST2 240758657e5SAleksandr Urakov lldb_st3_x86_64, // ST3 241758657e5SAleksandr Urakov lldb_st4_x86_64, // ST4 242758657e5SAleksandr Urakov lldb_st5_x86_64, // ST5 243758657e5SAleksandr Urakov lldb_st6_x86_64, // ST6 244758657e5SAleksandr Urakov lldb_st7_x86_64, // ST7 245758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CTRL 246758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // STAT 247758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TAG 248758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPIP 249758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPCS 250758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDO 251758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDS 252758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // ISEM 253758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEIP 254758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEDO 255758657e5SAleksandr Urakov lldb_mm0_x86_64, // MM0 256758657e5SAleksandr Urakov lldb_mm1_x86_64, // MM1 257758657e5SAleksandr Urakov lldb_mm2_x86_64, // MM2 258758657e5SAleksandr Urakov lldb_mm3_x86_64, // MM3 259758657e5SAleksandr Urakov lldb_mm4_x86_64, // MM4 260758657e5SAleksandr Urakov lldb_mm5_x86_64, // MM5 261758657e5SAleksandr Urakov lldb_mm6_x86_64, // MM6 262758657e5SAleksandr Urakov lldb_mm7_x86_64, // MM7 263758657e5SAleksandr Urakov lldb_xmm0_x86_64, // XMM0 264758657e5SAleksandr Urakov lldb_xmm1_x86_64, // XMM1 265758657e5SAleksandr Urakov lldb_xmm2_x86_64, // XMM2 266758657e5SAleksandr Urakov lldb_xmm3_x86_64, // XMM3 267758657e5SAleksandr Urakov lldb_xmm4_x86_64, // XMM4 268758657e5SAleksandr Urakov lldb_xmm5_x86_64, // XMM5 269758657e5SAleksandr Urakov lldb_xmm6_x86_64, // XMM6 270758657e5SAleksandr Urakov lldb_xmm7_x86_64, // XMM7 271758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 272758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 273758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 274758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 275758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 276758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 277758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 278758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 279758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 280758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 281758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 282758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 283758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 284758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 285758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 286758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 287758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, 288758657e5SAleksandr Urakov lldb_mxcsr_x86_64, // MXCSR 289758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EDXEAX 290758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 291758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 292758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, 293758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM0L 294758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM1L 295758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM2L 296758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM3L 297758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM4L 298758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM5L 299758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM6L 300758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM7L 301758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM0H 302758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM1H 303758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM2H 304758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM3H 305758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM4H 306758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM5H 307758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM6H 308758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM7H 309758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM00 310758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM01 311758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM10 312758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM11 313758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM20 314758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM21 315758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM30 316758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM31 317758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM40 318758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM41 319758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM50 320758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM51 321758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM60 322758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM61 323758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM70 324758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM71 325758657e5SAleksandr Urakov lldb_xmm8_x86_64, // XMM8 326758657e5SAleksandr Urakov lldb_xmm9_x86_64, // XMM9 327758657e5SAleksandr Urakov lldb_xmm10_x86_64, // XMM10 328758657e5SAleksandr Urakov lldb_xmm11_x86_64, // XMM11 329758657e5SAleksandr Urakov lldb_xmm12_x86_64, // XMM12 330758657e5SAleksandr Urakov lldb_xmm13_x86_64, // XMM13 331758657e5SAleksandr Urakov lldb_xmm14_x86_64, // XMM14 332758657e5SAleksandr Urakov lldb_xmm15_x86_64, // XMM15 333758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 334758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 335758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 336758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 337758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 338758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 339758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 340758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 341758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 342758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 343758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 344758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 345758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 346758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 347758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 348758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 349758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 350758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 351758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 352758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 353758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 354758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, 355758657e5SAleksandr Urakov lldb_sil_x86_64, // SIL 356758657e5SAleksandr Urakov lldb_dil_x86_64, // DIL 357758657e5SAleksandr Urakov lldb_bpl_x86_64, // BPL 358758657e5SAleksandr Urakov lldb_spl_x86_64, // SPL 359758657e5SAleksandr Urakov lldb_rax_x86_64, // RAX 360758657e5SAleksandr Urakov lldb_rbx_x86_64, // RBX 361758657e5SAleksandr Urakov lldb_rcx_x86_64, // RCX 362758657e5SAleksandr Urakov lldb_rdx_x86_64, // RDX 363758657e5SAleksandr Urakov lldb_rsi_x86_64, // RSI 364758657e5SAleksandr Urakov lldb_rdi_x86_64, // RDI 365758657e5SAleksandr Urakov lldb_rbp_x86_64, // RBP 366758657e5SAleksandr Urakov lldb_rsp_x86_64, // RSP 367758657e5SAleksandr Urakov lldb_r8_x86_64, // R8 368758657e5SAleksandr Urakov lldb_r9_x86_64, // R9 369758657e5SAleksandr Urakov lldb_r10_x86_64, // R10 370758657e5SAleksandr Urakov lldb_r11_x86_64, // R11 371758657e5SAleksandr Urakov lldb_r12_x86_64, // R12 372758657e5SAleksandr Urakov lldb_r13_x86_64, // R13 373758657e5SAleksandr Urakov lldb_r14_x86_64, // R14 374758657e5SAleksandr Urakov lldb_r15_x86_64, // R15 375758657e5SAleksandr Urakov lldb_r8l_x86_64, // R8B 376758657e5SAleksandr Urakov lldb_r9l_x86_64, // R9B 377758657e5SAleksandr Urakov lldb_r10l_x86_64, // R10B 378758657e5SAleksandr Urakov lldb_r11l_x86_64, // R11B 379758657e5SAleksandr Urakov lldb_r12l_x86_64, // R12B 380758657e5SAleksandr Urakov lldb_r13l_x86_64, // R13B 381758657e5SAleksandr Urakov lldb_r14l_x86_64, // R14B 382758657e5SAleksandr Urakov lldb_r15l_x86_64, // R15B 383758657e5SAleksandr Urakov lldb_r8w_x86_64, // R8W 384758657e5SAleksandr Urakov lldb_r9w_x86_64, // R9W 385758657e5SAleksandr Urakov lldb_r10w_x86_64, // R10W 386758657e5SAleksandr Urakov lldb_r11w_x86_64, // R11W 387758657e5SAleksandr Urakov lldb_r12w_x86_64, // R12W 388758657e5SAleksandr Urakov lldb_r13w_x86_64, // R13W 389758657e5SAleksandr Urakov lldb_r14w_x86_64, // R14W 390758657e5SAleksandr Urakov lldb_r15w_x86_64, // R15W 391758657e5SAleksandr Urakov lldb_r8d_x86_64, // R8D 392758657e5SAleksandr Urakov lldb_r9d_x86_64, // R9D 393758657e5SAleksandr Urakov lldb_r10d_x86_64, // R10D 394758657e5SAleksandr Urakov lldb_r11d_x86_64, // R11D 395758657e5SAleksandr Urakov lldb_r12d_x86_64, // R12D 396758657e5SAleksandr Urakov lldb_r13d_x86_64, // R13D 397758657e5SAleksandr Urakov lldb_r14d_x86_64, // R14D 398758657e5SAleksandr Urakov lldb_r15d_x86_64, // R15D 399758657e5SAleksandr Urakov lldb_ymm0_x86_64, // AMD64_YMM0 400758657e5SAleksandr Urakov lldb_ymm1_x86_64, // AMD64_YMM1 401758657e5SAleksandr Urakov lldb_ymm2_x86_64, // AMD64_YMM2 402758657e5SAleksandr Urakov lldb_ymm3_x86_64, // AMD64_YMM3 403758657e5SAleksandr Urakov lldb_ymm4_x86_64, // AMD64_YMM4 404758657e5SAleksandr Urakov lldb_ymm5_x86_64, // AMD64_YMM5 405758657e5SAleksandr Urakov lldb_ymm6_x86_64, // AMD64_YMM6 406758657e5SAleksandr Urakov lldb_ymm7_x86_64, // AMD64_YMM7 407758657e5SAleksandr Urakov lldb_ymm8_x86_64, // AMD64_YMM8 408758657e5SAleksandr Urakov lldb_ymm9_x86_64, // AMD64_YMM9 409758657e5SAleksandr Urakov lldb_ymm10_x86_64, // AMD64_YMM10 410758657e5SAleksandr Urakov lldb_ymm11_x86_64, // AMD64_YMM11 411758657e5SAleksandr Urakov lldb_ymm12_x86_64, // AMD64_YMM12 412758657e5SAleksandr Urakov lldb_ymm13_x86_64, // AMD64_YMM13 413758657e5SAleksandr Urakov lldb_ymm14_x86_64, // AMD64_YMM14 414758657e5SAleksandr Urakov lldb_ymm15_x86_64, // AMD64_YMM15 415758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 416758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 417758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 418758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, 419758657e5SAleksandr Urakov lldb_bnd0_x86_64, // BND0 420758657e5SAleksandr Urakov lldb_bnd1_x86_64, // BND1 421758657e5SAleksandr Urakov lldb_bnd2_x86_64 // BND2 422758657e5SAleksandr Urakov }; 423758657e5SAleksandr Urakov 424758657e5SAleksandr Urakov uint32_t lldb_private::npdb::GetLLDBRegisterNumber( 425758657e5SAleksandr Urakov llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) { 426758657e5SAleksandr Urakov switch (arch_type) { 427758657e5SAleksandr Urakov case llvm::Triple::x86: 428758657e5SAleksandr Urakov if (static_cast<uint16_t>(register_id) < 429758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86) / 430758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86[0])) 431758657e5SAleksandr Urakov return g_code_view_to_lldb_registers_x86[static_cast<uint16_t>( 432758657e5SAleksandr Urakov register_id)]; 433758657e5SAleksandr Urakov 434758657e5SAleksandr Urakov switch (register_id) { 435758657e5SAleksandr Urakov case llvm::codeview::RegisterId::MXCSR: 436758657e5SAleksandr Urakov return lldb_mxcsr_i386; 437758657e5SAleksandr Urakov case llvm::codeview::RegisterId::BND0: 438758657e5SAleksandr Urakov return lldb_bnd0_i386; 439758657e5SAleksandr Urakov case llvm::codeview::RegisterId::BND1: 440758657e5SAleksandr Urakov return lldb_bnd1_i386; 441758657e5SAleksandr Urakov case llvm::codeview::RegisterId::BND2: 442758657e5SAleksandr Urakov return lldb_bnd2_i386; 443758657e5SAleksandr Urakov default: 444758657e5SAleksandr Urakov return LLDB_INVALID_REGNUM; 445758657e5SAleksandr Urakov } 446758657e5SAleksandr Urakov case llvm::Triple::x86_64: 447758657e5SAleksandr Urakov if (static_cast<uint16_t>(register_id) < 448758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86_64) / 449758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86_64[0])) 450758657e5SAleksandr Urakov return g_code_view_to_lldb_registers_x86_64[static_cast<uint16_t>( 451758657e5SAleksandr Urakov register_id)]; 452758657e5SAleksandr Urakov 453758657e5SAleksandr Urakov return LLDB_INVALID_REGNUM; 454758657e5SAleksandr Urakov default: 455758657e5SAleksandr Urakov return LLDB_INVALID_REGNUM; 456758657e5SAleksandr Urakov } 457758657e5SAleksandr Urakov } 458