//===-- CodeViewRegisterMapping.cpp ---------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "CodeViewRegisterMapping.h" #include "lldb/lldb-defines.h" #include "Plugins/Process/Utility/lldb-arm64-register-enums.h" #include "Plugins/Process/Utility/lldb-x86-register-enums.h" using namespace lldb_private; static const uint32_t g_code_view_to_lldb_registers_arm64[] = { LLDB_INVALID_REGNUM, // NONE LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, gpr_w0_arm64, // ARM64_W0, 10) gpr_w1_arm64, // ARM64_W1, 11) gpr_w2_arm64, // ARM64_W2, 12) gpr_w3_arm64, // ARM64_W3, 13) gpr_w4_arm64, // ARM64_W4, 14) gpr_w5_arm64, // ARM64_W5, 15) gpr_w6_arm64, // ARM64_W6, 16) gpr_w7_arm64, // ARM64_W7, 17) gpr_w8_arm64, // ARM64_W8, 18) gpr_w9_arm64, // ARM64_W9, 19) gpr_w10_arm64, // ARM64_W10, 20) gpr_w11_arm64, // ARM64_W11, 21) gpr_w12_arm64, // ARM64_W12, 22) gpr_w13_arm64, // ARM64_W13, 23) gpr_w14_arm64, // ARM64_W14, 24) gpr_w15_arm64, // ARM64_W15, 25) gpr_w16_arm64, // ARM64_W16, 26) gpr_w17_arm64, // ARM64_W17, 27) gpr_w18_arm64, // ARM64_W18, 28) gpr_w19_arm64, // ARM64_W19, 29) gpr_w20_arm64, // ARM64_W20, 30) gpr_w21_arm64, // ARM64_W21, 31) gpr_w22_arm64, // ARM64_W22, 32) gpr_w23_arm64, // ARM64_W23, 33) gpr_w24_arm64, // ARM64_W24, 34) gpr_w25_arm64, // ARM64_W25, 35) gpr_w26_arm64, // ARM64_W26, 36) gpr_w27_arm64, // ARM64_W27, 37) gpr_w28_arm64, // ARM64_W28, 38) LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, gpr_x0_arm64, // ARM64_X0, 50) gpr_x1_arm64, // ARM64_X1, 51) gpr_x2_arm64, // ARM64_X2, 52) gpr_x3_arm64, // ARM64_X3, 53) gpr_x4_arm64, // ARM64_X4, 54) gpr_x5_arm64, // ARM64_X5, 55) gpr_x6_arm64, // ARM64_X6, 56) gpr_x7_arm64, // ARM64_X7, 57) gpr_x8_arm64, // ARM64_X8, 58) gpr_x9_arm64, // ARM64_X9, 59) gpr_x10_arm64, // ARM64_X10, 60) gpr_x11_arm64, // ARM64_X11, 61) gpr_x12_arm64, // ARM64_X12, 62) gpr_x13_arm64, // ARM64_X13, 63) gpr_x14_arm64, // ARM64_X14, 64) gpr_x15_arm64, // ARM64_X15, 65) gpr_x16_arm64, // ARM64_X16, 66) gpr_x17_arm64, // ARM64_X17, 67) gpr_x18_arm64, // ARM64_X18, 68) gpr_x19_arm64, // ARM64_X19, 69) gpr_x20_arm64, // ARM64_X20, 70) gpr_x21_arm64, // ARM64_X21, 71) gpr_x22_arm64, // ARM64_X22, 72) gpr_x23_arm64, // ARM64_X23, 73) gpr_x24_arm64, // ARM64_X24, 74) gpr_x25_arm64, // ARM64_X25, 75) gpr_x26_arm64, // ARM64_X26, 76) gpr_x27_arm64, // ARM64_X27, 77) gpr_x28_arm64, // ARM64_X28, 78) gpr_fp_arm64, // ARM64_FP, 79) gpr_lr_arm64, // ARM64_LR, 80) gpr_sp_arm64, // ARM64_SP, 81) LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, gpr_cpsr_arm64, // ARM64_NZCV, 90) LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, fpu_s0_arm64, // (ARM64_S0, 100) fpu_s1_arm64, // (ARM64_S1, 101) fpu_s2_arm64, // (ARM64_S2, 102) fpu_s3_arm64, // (ARM64_S3, 103) fpu_s4_arm64, // (ARM64_S4, 104) fpu_s5_arm64, // (ARM64_S5, 105) fpu_s6_arm64, // (ARM64_S6, 106) fpu_s7_arm64, // (ARM64_S7, 107) fpu_s8_arm64, // (ARM64_S8, 108) fpu_s9_arm64, // (ARM64_S9, 109) fpu_s10_arm64, // (ARM64_S10, 110) fpu_s11_arm64, // (ARM64_S11, 111) fpu_s12_arm64, // (ARM64_S12, 112) fpu_s13_arm64, // (ARM64_S13, 113) fpu_s14_arm64, // (ARM64_S14, 114) fpu_s15_arm64, // (ARM64_S15, 115) fpu_s16_arm64, // (ARM64_S16, 116) fpu_s17_arm64, // (ARM64_S17, 117) fpu_s18_arm64, // (ARM64_S18, 118) fpu_s19_arm64, // (ARM64_S19, 119) fpu_s20_arm64, // (ARM64_S20, 120) fpu_s21_arm64, // (ARM64_S21, 121) fpu_s22_arm64, // (ARM64_S22, 122) fpu_s23_arm64, // (ARM64_S23, 123) fpu_s24_arm64, // (ARM64_S24, 124) fpu_s25_arm64, // (ARM64_S25, 125) fpu_s26_arm64, // (ARM64_S26, 126) fpu_s27_arm64, // (ARM64_S27, 127) fpu_s28_arm64, // (ARM64_S28, 128) fpu_s29_arm64, // (ARM64_S29, 129) fpu_s30_arm64, // (ARM64_S30, 130) fpu_s31_arm64, // (ARM64_S31, 131) LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, fpu_d0_arm64, // (ARM64_D0, 140) fpu_d1_arm64, // (ARM64_D1, 141) fpu_d2_arm64, // (ARM64_D2, 142) fpu_d3_arm64, // (ARM64_D3, 143) fpu_d4_arm64, // (ARM64_D4, 144) fpu_d5_arm64, // (ARM64_D5, 145) fpu_d6_arm64, // (ARM64_D6, 146) fpu_d7_arm64, // (ARM64_D7, 147) fpu_d8_arm64, // (ARM64_D8, 148) fpu_d9_arm64, // (ARM64_D9, 149) fpu_d10_arm64, // (ARM64_D10, 150) fpu_d11_arm64, // (ARM64_D11, 151) fpu_d12_arm64, // (ARM64_D12, 152) fpu_d13_arm64, // (ARM64_D13, 153) fpu_d14_arm64, // (ARM64_D14, 154) fpu_d15_arm64, // (ARM64_D15, 155) fpu_d16_arm64, // (ARM64_D16, 156) fpu_d17_arm64, // (ARM64_D17, 157) fpu_d18_arm64, // (ARM64_D18, 158) fpu_d19_arm64, // (ARM64_D19, 159) fpu_d20_arm64, // (ARM64_D20, 160) fpu_d21_arm64, // (ARM64_D21, 161) fpu_d22_arm64, // (ARM64_D22, 162) fpu_d23_arm64, // (ARM64_D23, 163) fpu_d24_arm64, // (ARM64_D24, 164) fpu_d25_arm64, // (ARM64_D25, 165) fpu_d26_arm64, // (ARM64_D26, 166) fpu_d27_arm64, // (ARM64_D27, 167) fpu_d28_arm64, // (ARM64_D28, 168) fpu_d29_arm64, // (ARM64_D29, 169) fpu_d30_arm64, // (ARM64_D30, 170) fpu_d31_arm64, // (ARM64_D31, 171) LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, fpu_v0_arm64, // (ARM64_Q0, 180) fpu_v1_arm64, // (ARM64_Q1, 181) fpu_v2_arm64, // (ARM64_Q2, 182) fpu_v3_arm64, // (ARM64_Q3, 183) fpu_v4_arm64, // (ARM64_Q4, 184) fpu_v5_arm64, // (ARM64_Q5, 185) fpu_v6_arm64, // (ARM64_Q6, 186) fpu_v7_arm64, // (ARM64_Q7, 187) fpu_v8_arm64, // (ARM64_Q8, 188) fpu_v9_arm64, // (ARM64_Q9, 189) fpu_v10_arm64, // (ARM64_Q10, 190) fpu_v11_arm64, // (ARM64_Q11, 191) fpu_v12_arm64, // (ARM64_Q12, 192) fpu_v13_arm64, // (ARM64_Q13, 193) fpu_v14_arm64, // (ARM64_Q14, 194) fpu_v15_arm64, // (ARM64_Q15, 195) fpu_v16_arm64, // (ARM64_Q16, 196) fpu_v17_arm64, // (ARM64_Q17, 197) fpu_v18_arm64, // (ARM64_Q18, 198) fpu_v19_arm64, // (ARM64_Q19, 199) fpu_v20_arm64, // (ARM64_Q20, 200) fpu_v21_arm64, // (ARM64_Q21, 201) fpu_v22_arm64, // (ARM64_Q22, 202) fpu_v23_arm64, // (ARM64_Q23, 203) fpu_v24_arm64, // (ARM64_Q24, 204) fpu_v25_arm64, // (ARM64_Q25, 205) fpu_v26_arm64, // (ARM64_Q26, 206) fpu_v27_arm64, // (ARM64_Q27, 207) fpu_v28_arm64, // (ARM64_Q28, 208) fpu_v29_arm64, // (ARM64_Q29, 209) fpu_v30_arm64, // (ARM64_Q30, 210) fpu_v31_arm64, // (ARM64_Q31, 211) LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, fpu_fpsr_arm64 // ARM64_FPSR, 220) }; static const uint32_t g_code_view_to_lldb_registers_x86[] = { LLDB_INVALID_REGNUM, // NONE lldb_al_i386, // AL lldb_cl_i386, // CL lldb_dl_i386, // DL lldb_bl_i386, // BL lldb_ah_i386, // AH lldb_ch_i386, // CH lldb_dh_i386, // DH lldb_bh_i386, // BH lldb_ax_i386, // AX lldb_cx_i386, // CX lldb_dx_i386, // DX lldb_bx_i386, // BX lldb_sp_i386, // SP lldb_bp_i386, // BP lldb_si_i386, // SI lldb_di_i386, // DI lldb_eax_i386, // EAX lldb_ecx_i386, // ECX lldb_edx_i386, // EDX lldb_ebx_i386, // EBX lldb_esp_i386, // ESP lldb_ebp_i386, // EBP lldb_esi_i386, // ESI lldb_edi_i386, // EDI lldb_es_i386, // ES lldb_cs_i386, // CS lldb_ss_i386, // SS lldb_ds_i386, // DS lldb_fs_i386, // FS lldb_gs_i386, // GS LLDB_INVALID_REGNUM, // IP LLDB_INVALID_REGNUM, // FLAGS lldb_eip_i386, // EIP lldb_eflags_i386, // EFLAGS LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // TEMP LLDB_INVALID_REGNUM, // TEMPH LLDB_INVALID_REGNUM, // QUOTE LLDB_INVALID_REGNUM, // PCDR3 LLDB_INVALID_REGNUM, // PCDR4 LLDB_INVALID_REGNUM, // PCDR5 LLDB_INVALID_REGNUM, // PCDR6 LLDB_INVALID_REGNUM, // PCDR7 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // CR0 LLDB_INVALID_REGNUM, // CR1 LLDB_INVALID_REGNUM, // CR2 LLDB_INVALID_REGNUM, // CR3 LLDB_INVALID_REGNUM, // CR4 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_dr0_i386, // DR0 lldb_dr1_i386, // DR1 lldb_dr2_i386, // DR2 lldb_dr3_i386, // DR3 lldb_dr4_i386, // DR4 lldb_dr5_i386, // DR5 lldb_dr6_i386, // DR6 lldb_dr7_i386, // DR7 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // GDTR LLDB_INVALID_REGNUM, // GDTL LLDB_INVALID_REGNUM, // IDTR LLDB_INVALID_REGNUM, // IDTL LLDB_INVALID_REGNUM, // LDTR LLDB_INVALID_REGNUM, // TR LLDB_INVALID_REGNUM, // PSEUDO1 LLDB_INVALID_REGNUM, // PSEUDO2 LLDB_INVALID_REGNUM, // PSEUDO3 LLDB_INVALID_REGNUM, // PSEUDO4 LLDB_INVALID_REGNUM, // PSEUDO5 LLDB_INVALID_REGNUM, // PSEUDO6 LLDB_INVALID_REGNUM, // PSEUDO7 LLDB_INVALID_REGNUM, // PSEUDO8 LLDB_INVALID_REGNUM, // PSEUDO9 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_st0_i386, // ST0 lldb_st1_i386, // ST1 lldb_st2_i386, // ST2 lldb_st3_i386, // ST3 lldb_st4_i386, // ST4 lldb_st5_i386, // ST5 lldb_st6_i386, // ST6 lldb_st7_i386, // ST7 LLDB_INVALID_REGNUM, // CTRL LLDB_INVALID_REGNUM, // STAT LLDB_INVALID_REGNUM, // TAG LLDB_INVALID_REGNUM, // FPIP LLDB_INVALID_REGNUM, // FPCS LLDB_INVALID_REGNUM, // FPDO LLDB_INVALID_REGNUM, // FPDS LLDB_INVALID_REGNUM, // ISEM LLDB_INVALID_REGNUM, // FPEIP LLDB_INVALID_REGNUM, // FPEDO lldb_mm0_i386, // MM0 lldb_mm1_i386, // MM1 lldb_mm2_i386, // MM2 lldb_mm3_i386, // MM3 lldb_mm4_i386, // MM4 lldb_mm5_i386, // MM5 lldb_mm6_i386, // MM6 lldb_mm7_i386, // MM7 lldb_xmm0_i386, // XMM0 lldb_xmm1_i386, // XMM1 lldb_xmm2_i386, // XMM2 lldb_xmm3_i386, // XMM3 lldb_xmm4_i386, // XMM4 lldb_xmm5_i386, // XMM5 lldb_xmm6_i386, // XMM6 lldb_xmm7_i386 // XMM7 }; static const uint32_t g_code_view_to_lldb_registers_x86_64[] = { LLDB_INVALID_REGNUM, // NONE lldb_al_x86_64, // AL lldb_cl_x86_64, // CL lldb_dl_x86_64, // DL lldb_bl_x86_64, // BL lldb_ah_x86_64, // AH lldb_ch_x86_64, // CH lldb_dh_x86_64, // DH lldb_bh_x86_64, // BH lldb_ax_x86_64, // AX lldb_cx_x86_64, // CX lldb_dx_x86_64, // DX lldb_bx_x86_64, // BX lldb_sp_x86_64, // SP lldb_bp_x86_64, // BP lldb_si_x86_64, // SI lldb_di_x86_64, // DI lldb_eax_x86_64, // EAX lldb_ecx_x86_64, // ECX lldb_edx_x86_64, // EDX lldb_ebx_x86_64, // EBX lldb_esp_x86_64, // ESP lldb_ebp_x86_64, // EBP lldb_esi_x86_64, // ESI lldb_edi_x86_64, // EDI lldb_es_x86_64, // ES lldb_cs_x86_64, // CS lldb_ss_x86_64, // SS lldb_ds_x86_64, // DS lldb_fs_x86_64, // FS lldb_gs_x86_64, // GS LLDB_INVALID_REGNUM, // IP LLDB_INVALID_REGNUM, // FLAGS LLDB_INVALID_REGNUM, // EIP LLDB_INVALID_REGNUM, // EFLAGS LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // TEMP LLDB_INVALID_REGNUM, // TEMPH LLDB_INVALID_REGNUM, // QUOTE LLDB_INVALID_REGNUM, // PCDR3 LLDB_INVALID_REGNUM, // PCDR4 LLDB_INVALID_REGNUM, // PCDR5 LLDB_INVALID_REGNUM, // PCDR6 LLDB_INVALID_REGNUM, // PCDR7 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // CR0 LLDB_INVALID_REGNUM, // CR1 LLDB_INVALID_REGNUM, // CR2 LLDB_INVALID_REGNUM, // CR3 LLDB_INVALID_REGNUM, // CR4 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_dr0_x86_64, // DR0 lldb_dr1_x86_64, // DR1 lldb_dr2_x86_64, // DR2 lldb_dr3_x86_64, // DR3 lldb_dr4_x86_64, // DR4 lldb_dr5_x86_64, // DR5 lldb_dr6_x86_64, // DR6 lldb_dr7_x86_64, // DR7 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // GDTR LLDB_INVALID_REGNUM, // GDTL LLDB_INVALID_REGNUM, // IDTR LLDB_INVALID_REGNUM, // IDTL LLDB_INVALID_REGNUM, // LDTR LLDB_INVALID_REGNUM, // TR LLDB_INVALID_REGNUM, // PSEUDO1 LLDB_INVALID_REGNUM, // PSEUDO2 LLDB_INVALID_REGNUM, // PSEUDO3 LLDB_INVALID_REGNUM, // PSEUDO4 LLDB_INVALID_REGNUM, // PSEUDO5 LLDB_INVALID_REGNUM, // PSEUDO6 LLDB_INVALID_REGNUM, // PSEUDO7 LLDB_INVALID_REGNUM, // PSEUDO8 LLDB_INVALID_REGNUM, // PSEUDO9 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_st0_x86_64, // ST0 lldb_st1_x86_64, // ST1 lldb_st2_x86_64, // ST2 lldb_st3_x86_64, // ST3 lldb_st4_x86_64, // ST4 lldb_st5_x86_64, // ST5 lldb_st6_x86_64, // ST6 lldb_st7_x86_64, // ST7 LLDB_INVALID_REGNUM, // CTRL LLDB_INVALID_REGNUM, // STAT LLDB_INVALID_REGNUM, // TAG LLDB_INVALID_REGNUM, // FPIP LLDB_INVALID_REGNUM, // FPCS LLDB_INVALID_REGNUM, // FPDO LLDB_INVALID_REGNUM, // FPDS LLDB_INVALID_REGNUM, // ISEM LLDB_INVALID_REGNUM, // FPEIP LLDB_INVALID_REGNUM, // FPEDO lldb_mm0_x86_64, // MM0 lldb_mm1_x86_64, // MM1 lldb_mm2_x86_64, // MM2 lldb_mm3_x86_64, // MM3 lldb_mm4_x86_64, // MM4 lldb_mm5_x86_64, // MM5 lldb_mm6_x86_64, // MM6 lldb_mm7_x86_64, // MM7 lldb_xmm0_x86_64, // XMM0 lldb_xmm1_x86_64, // XMM1 lldb_xmm2_x86_64, // XMM2 lldb_xmm3_x86_64, // XMM3 lldb_xmm4_x86_64, // XMM4 lldb_xmm5_x86_64, // XMM5 lldb_xmm6_x86_64, // XMM6 lldb_xmm7_x86_64, // XMM7 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_mxcsr_x86_64, // MXCSR LLDB_INVALID_REGNUM, // EDXEAX LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, // EMM0L LLDB_INVALID_REGNUM, // EMM1L LLDB_INVALID_REGNUM, // EMM2L LLDB_INVALID_REGNUM, // EMM3L LLDB_INVALID_REGNUM, // EMM4L LLDB_INVALID_REGNUM, // EMM5L LLDB_INVALID_REGNUM, // EMM6L LLDB_INVALID_REGNUM, // EMM7L LLDB_INVALID_REGNUM, // EMM0H LLDB_INVALID_REGNUM, // EMM1H LLDB_INVALID_REGNUM, // EMM2H LLDB_INVALID_REGNUM, // EMM3H LLDB_INVALID_REGNUM, // EMM4H LLDB_INVALID_REGNUM, // EMM5H LLDB_INVALID_REGNUM, // EMM6H LLDB_INVALID_REGNUM, // EMM7H LLDB_INVALID_REGNUM, // MM00 LLDB_INVALID_REGNUM, // MM01 LLDB_INVALID_REGNUM, // MM10 LLDB_INVALID_REGNUM, // MM11 LLDB_INVALID_REGNUM, // MM20 LLDB_INVALID_REGNUM, // MM21 LLDB_INVALID_REGNUM, // MM30 LLDB_INVALID_REGNUM, // MM31 LLDB_INVALID_REGNUM, // MM40 LLDB_INVALID_REGNUM, // MM41 LLDB_INVALID_REGNUM, // MM50 LLDB_INVALID_REGNUM, // MM51 LLDB_INVALID_REGNUM, // MM60 LLDB_INVALID_REGNUM, // MM61 LLDB_INVALID_REGNUM, // MM70 LLDB_INVALID_REGNUM, // MM71 lldb_xmm8_x86_64, // XMM8 lldb_xmm9_x86_64, // XMM9 lldb_xmm10_x86_64, // XMM10 lldb_xmm11_x86_64, // XMM11 lldb_xmm12_x86_64, // XMM12 lldb_xmm13_x86_64, // XMM13 lldb_xmm14_x86_64, // XMM14 lldb_xmm15_x86_64, // XMM15 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_sil_x86_64, // SIL lldb_dil_x86_64, // DIL lldb_bpl_x86_64, // BPL lldb_spl_x86_64, // SPL lldb_rax_x86_64, // RAX lldb_rbx_x86_64, // RBX lldb_rcx_x86_64, // RCX lldb_rdx_x86_64, // RDX lldb_rsi_x86_64, // RSI lldb_rdi_x86_64, // RDI lldb_rbp_x86_64, // RBP lldb_rsp_x86_64, // RSP lldb_r8_x86_64, // R8 lldb_r9_x86_64, // R9 lldb_r10_x86_64, // R10 lldb_r11_x86_64, // R11 lldb_r12_x86_64, // R12 lldb_r13_x86_64, // R13 lldb_r14_x86_64, // R14 lldb_r15_x86_64, // R15 lldb_r8l_x86_64, // R8B lldb_r9l_x86_64, // R9B lldb_r10l_x86_64, // R10B lldb_r11l_x86_64, // R11B lldb_r12l_x86_64, // R12B lldb_r13l_x86_64, // R13B lldb_r14l_x86_64, // R14B lldb_r15l_x86_64, // R15B lldb_r8w_x86_64, // R8W lldb_r9w_x86_64, // R9W lldb_r10w_x86_64, // R10W lldb_r11w_x86_64, // R11W lldb_r12w_x86_64, // R12W lldb_r13w_x86_64, // R13W lldb_r14w_x86_64, // R14W lldb_r15w_x86_64, // R15W lldb_r8d_x86_64, // R8D lldb_r9d_x86_64, // R9D lldb_r10d_x86_64, // R10D lldb_r11d_x86_64, // R11D lldb_r12d_x86_64, // R12D lldb_r13d_x86_64, // R13D lldb_r14d_x86_64, // R14D lldb_r15d_x86_64, // R15D lldb_ymm0_x86_64, // AMD64_YMM0 lldb_ymm1_x86_64, // AMD64_YMM1 lldb_ymm2_x86_64, // AMD64_YMM2 lldb_ymm3_x86_64, // AMD64_YMM3 lldb_ymm4_x86_64, // AMD64_YMM4 lldb_ymm5_x86_64, // AMD64_YMM5 lldb_ymm6_x86_64, // AMD64_YMM6 lldb_ymm7_x86_64, // AMD64_YMM7 lldb_ymm8_x86_64, // AMD64_YMM8 lldb_ymm9_x86_64, // AMD64_YMM9 lldb_ymm10_x86_64, // AMD64_YMM10 lldb_ymm11_x86_64, // AMD64_YMM11 lldb_ymm12_x86_64, // AMD64_YMM12 lldb_ymm13_x86_64, // AMD64_YMM13 lldb_ymm14_x86_64, // AMD64_YMM14 lldb_ymm15_x86_64, // AMD64_YMM15 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_bnd0_x86_64, // BND0 lldb_bnd1_x86_64, // BND1 lldb_bnd2_x86_64 // BND2 }; uint32_t lldb_private::npdb::GetLLDBRegisterNumber( llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) { switch (arch_type) { case llvm::Triple::aarch64: if (static_cast(register_id) < sizeof(g_code_view_to_lldb_registers_arm64) / sizeof(g_code_view_to_lldb_registers_arm64[0])) return g_code_view_to_lldb_registers_arm64[static_cast( register_id)]; return LLDB_INVALID_REGNUM; case llvm::Triple::x86: if (static_cast(register_id) < sizeof(g_code_view_to_lldb_registers_x86) / sizeof(g_code_view_to_lldb_registers_x86[0])) return g_code_view_to_lldb_registers_x86[static_cast( register_id)]; switch (register_id) { case llvm::codeview::RegisterId::MXCSR: return lldb_mxcsr_i386; case llvm::codeview::RegisterId::BND0: return lldb_bnd0_i386; case llvm::codeview::RegisterId::BND1: return lldb_bnd1_i386; case llvm::codeview::RegisterId::BND2: return lldb_bnd2_i386; default: return LLDB_INVALID_REGNUM; } case llvm::Triple::x86_64: if (static_cast(register_id) < sizeof(g_code_view_to_lldb_registers_x86_64) / sizeof(g_code_view_to_lldb_registers_x86_64[0])) return g_code_view_to_lldb_registers_x86_64[static_cast( register_id)]; return LLDB_INVALID_REGNUM; default: return LLDB_INVALID_REGNUM; } } uint32_t lldb_private::npdb::GetRegisterSize(llvm::codeview::RegisterId register_id) { switch(register_id) { case llvm::codeview::RegisterId::AL: case llvm::codeview::RegisterId::BL: case llvm::codeview::RegisterId::CL: case llvm::codeview::RegisterId::DL: case llvm::codeview::RegisterId::AH: case llvm::codeview::RegisterId::BH: case llvm::codeview::RegisterId::CH: case llvm::codeview::RegisterId::DH: case llvm::codeview::RegisterId::SIL: case llvm::codeview::RegisterId::DIL: case llvm::codeview::RegisterId::BPL: case llvm::codeview::RegisterId::SPL: case llvm::codeview::RegisterId::R8B: case llvm::codeview::RegisterId::R9B: case llvm::codeview::RegisterId::R10B: case llvm::codeview::RegisterId::R11B: case llvm::codeview::RegisterId::R12B: case llvm::codeview::RegisterId::R13B: case llvm::codeview::RegisterId::R14B: case llvm::codeview::RegisterId::R15B: return 1; case llvm::codeview::RegisterId::AX: case llvm::codeview::RegisterId::BX: case llvm::codeview::RegisterId::CX: case llvm::codeview::RegisterId::DX: case llvm::codeview::RegisterId::SP: case llvm::codeview::RegisterId::BP: case llvm::codeview::RegisterId::SI: case llvm::codeview::RegisterId::DI: case llvm::codeview::RegisterId::R8W: case llvm::codeview::RegisterId::R9W: case llvm::codeview::RegisterId::R10W: case llvm::codeview::RegisterId::R11W: case llvm::codeview::RegisterId::R12W: case llvm::codeview::RegisterId::R13W: case llvm::codeview::RegisterId::R14W: case llvm::codeview::RegisterId::R15W: return 2; case llvm::codeview::RegisterId::EAX: case llvm::codeview::RegisterId::EBX: case llvm::codeview::RegisterId::ECX: case llvm::codeview::RegisterId::EDX: case llvm::codeview::RegisterId::ESP: case llvm::codeview::RegisterId::EBP: case llvm::codeview::RegisterId::ESI: case llvm::codeview::RegisterId::EDI: case llvm::codeview::RegisterId::R8D: case llvm::codeview::RegisterId::R9D: case llvm::codeview::RegisterId::R10D: case llvm::codeview::RegisterId::R11D: case llvm::codeview::RegisterId::R12D: case llvm::codeview::RegisterId::R13D: case llvm::codeview::RegisterId::R14D: case llvm::codeview::RegisterId::R15D: return 4; case llvm::codeview::RegisterId::RAX: case llvm::codeview::RegisterId::RBX: case llvm::codeview::RegisterId::RCX: case llvm::codeview::RegisterId::RDX: case llvm::codeview::RegisterId::RSI: case llvm::codeview::RegisterId::RDI: case llvm::codeview::RegisterId::RBP: case llvm::codeview::RegisterId::RSP: case llvm::codeview::RegisterId::R8: case llvm::codeview::RegisterId::R9: case llvm::codeview::RegisterId::R10: case llvm::codeview::RegisterId::R11: case llvm::codeview::RegisterId::R12: case llvm::codeview::RegisterId::R13: case llvm::codeview::RegisterId::R14: case llvm::codeview::RegisterId::R15: return 8; case llvm::codeview::RegisterId::XMM0: case llvm::codeview::RegisterId::XMM1: case llvm::codeview::RegisterId::XMM2: case llvm::codeview::RegisterId::XMM3: case llvm::codeview::RegisterId::XMM4: case llvm::codeview::RegisterId::XMM5: case llvm::codeview::RegisterId::XMM6: case llvm::codeview::RegisterId::XMM7: case llvm::codeview::RegisterId::XMM8: case llvm::codeview::RegisterId::XMM9: case llvm::codeview::RegisterId::XMM10: case llvm::codeview::RegisterId::XMM11: case llvm::codeview::RegisterId::XMM12: case llvm::codeview::RegisterId::XMM13: case llvm::codeview::RegisterId::XMM14: case llvm::codeview::RegisterId::XMM15: return 16; default: return 0; } }