brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.5 KiB · 3c10d4a Raw
749 lines · cpp
1//===-- CodeViewRegisterMapping.cpp ---------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "CodeViewRegisterMapping.h"10 11#include "lldb/lldb-defines.h"12 13#include "Plugins/Process/Utility/lldb-arm64-register-enums.h"14#include "Plugins/Process/Utility/lldb-x86-register-enums.h"15 16using namespace lldb_private;17 18static const uint32_t g_code_view_to_lldb_registers_arm64[] = {19    LLDB_INVALID_REGNUM, // NONE20    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,21    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,22    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,23    gpr_w0_arm64,  // ARM64_W0, 10)24    gpr_w1_arm64,  // ARM64_W1, 11)25    gpr_w2_arm64,  // ARM64_W2, 12)26    gpr_w3_arm64,  // ARM64_W3, 13)27    gpr_w4_arm64,  // ARM64_W4, 14)28    gpr_w5_arm64,  // ARM64_W5, 15)29    gpr_w6_arm64,  // ARM64_W6, 16)30    gpr_w7_arm64,  // ARM64_W7, 17)31    gpr_w8_arm64,  // ARM64_W8, 18)32    gpr_w9_arm64,  // ARM64_W9, 19)33    gpr_w10_arm64, // ARM64_W10, 20)34    gpr_w11_arm64, // ARM64_W11, 21)35    gpr_w12_arm64, // ARM64_W12, 22)36    gpr_w13_arm64, // ARM64_W13, 23)37    gpr_w14_arm64, // ARM64_W14, 24)38    gpr_w15_arm64, // ARM64_W15, 25)39    gpr_w16_arm64, // ARM64_W16, 26)40    gpr_w17_arm64, // ARM64_W17, 27)41    gpr_w18_arm64, // ARM64_W18, 28)42    gpr_w19_arm64, // ARM64_W19, 29)43    gpr_w20_arm64, // ARM64_W20, 30)44    gpr_w21_arm64, // ARM64_W21, 31)45    gpr_w22_arm64, // ARM64_W22, 32)46    gpr_w23_arm64, // ARM64_W23, 33)47    gpr_w24_arm64, // ARM64_W24, 34)48    gpr_w25_arm64, // ARM64_W25, 35)49    gpr_w26_arm64, // ARM64_W26, 36)50    gpr_w27_arm64, // ARM64_W27, 37)51    gpr_w28_arm64, // ARM64_W28, 38)52    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,53    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,54    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,55    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,56    gpr_x0_arm64,  // ARM64_X0, 50)57    gpr_x1_arm64,  // ARM64_X1, 51)58    gpr_x2_arm64,  // ARM64_X2, 52)59    gpr_x3_arm64,  // ARM64_X3, 53)60    gpr_x4_arm64,  // ARM64_X4, 54)61    gpr_x5_arm64,  // ARM64_X5, 55)62    gpr_x6_arm64,  // ARM64_X6, 56)63    gpr_x7_arm64,  // ARM64_X7, 57)64    gpr_x8_arm64,  // ARM64_X8, 58)65    gpr_x9_arm64,  // ARM64_X9, 59)66    gpr_x10_arm64, // ARM64_X10, 60)67    gpr_x11_arm64, // ARM64_X11, 61)68    gpr_x12_arm64, // ARM64_X12, 62)69    gpr_x13_arm64, // ARM64_X13, 63)70    gpr_x14_arm64, // ARM64_X14, 64)71    gpr_x15_arm64, // ARM64_X15, 65)72    gpr_x16_arm64, // ARM64_X16, 66)73    gpr_x17_arm64, // ARM64_X17, 67)74    gpr_x18_arm64, // ARM64_X18, 68)75    gpr_x19_arm64, // ARM64_X19, 69)76    gpr_x20_arm64, // ARM64_X20, 70)77    gpr_x21_arm64, // ARM64_X21, 71)78    gpr_x22_arm64, // ARM64_X22, 72)79    gpr_x23_arm64, // ARM64_X23, 73)80    gpr_x24_arm64, // ARM64_X24, 74)81    gpr_x25_arm64, // ARM64_X25, 75)82    gpr_x26_arm64, // ARM64_X26, 76)83    gpr_x27_arm64, // ARM64_X27, 77)84    gpr_x28_arm64, // ARM64_X28, 78)85    gpr_fp_arm64,  // ARM64_FP, 79)86    gpr_lr_arm64,  // ARM64_LR, 80)87    gpr_sp_arm64,  // ARM64_SP, 81)88    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,89    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,90    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,91    gpr_cpsr_arm64, // ARM64_NZCV, 90)92    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,93    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,94    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,95    fpu_s0_arm64,  // (ARM64_S0, 100)96    fpu_s1_arm64,  // (ARM64_S1, 101)97    fpu_s2_arm64,  // (ARM64_S2, 102)98    fpu_s3_arm64,  // (ARM64_S3, 103)99    fpu_s4_arm64,  // (ARM64_S4, 104)100    fpu_s5_arm64,  // (ARM64_S5, 105)101    fpu_s6_arm64,  // (ARM64_S6, 106)102    fpu_s7_arm64,  // (ARM64_S7, 107)103    fpu_s8_arm64,  // (ARM64_S8, 108)104    fpu_s9_arm64,  // (ARM64_S9, 109)105    fpu_s10_arm64, // (ARM64_S10, 110)106    fpu_s11_arm64, // (ARM64_S11, 111)107    fpu_s12_arm64, // (ARM64_S12, 112)108    fpu_s13_arm64, // (ARM64_S13, 113)109    fpu_s14_arm64, // (ARM64_S14, 114)110    fpu_s15_arm64, // (ARM64_S15, 115)111    fpu_s16_arm64, // (ARM64_S16, 116)112    fpu_s17_arm64, // (ARM64_S17, 117)113    fpu_s18_arm64, // (ARM64_S18, 118)114    fpu_s19_arm64, // (ARM64_S19, 119)115    fpu_s20_arm64, // (ARM64_S20, 120)116    fpu_s21_arm64, // (ARM64_S21, 121)117    fpu_s22_arm64, // (ARM64_S22, 122)118    fpu_s23_arm64, // (ARM64_S23, 123)119    fpu_s24_arm64, // (ARM64_S24, 124)120    fpu_s25_arm64, // (ARM64_S25, 125)121    fpu_s26_arm64, // (ARM64_S26, 126)122    fpu_s27_arm64, // (ARM64_S27, 127)123    fpu_s28_arm64, // (ARM64_S28, 128)124    fpu_s29_arm64, // (ARM64_S29, 129)125    fpu_s30_arm64, // (ARM64_S30, 130)126    fpu_s31_arm64, // (ARM64_S31, 131)127    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,128    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,129    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,130    fpu_d0_arm64,  // (ARM64_D0, 140)131    fpu_d1_arm64,  // (ARM64_D1, 141)132    fpu_d2_arm64,  // (ARM64_D2, 142)133    fpu_d3_arm64,  // (ARM64_D3, 143)134    fpu_d4_arm64,  // (ARM64_D4, 144)135    fpu_d5_arm64,  // (ARM64_D5, 145)136    fpu_d6_arm64,  // (ARM64_D6, 146)137    fpu_d7_arm64,  // (ARM64_D7, 147)138    fpu_d8_arm64,  // (ARM64_D8, 148)139    fpu_d9_arm64,  // (ARM64_D9, 149)140    fpu_d10_arm64, // (ARM64_D10, 150)141    fpu_d11_arm64, // (ARM64_D11, 151)142    fpu_d12_arm64, // (ARM64_D12, 152)143    fpu_d13_arm64, // (ARM64_D13, 153)144    fpu_d14_arm64, // (ARM64_D14, 154)145    fpu_d15_arm64, // (ARM64_D15, 155)146    fpu_d16_arm64, // (ARM64_D16, 156)147    fpu_d17_arm64, // (ARM64_D17, 157)148    fpu_d18_arm64, // (ARM64_D18, 158)149    fpu_d19_arm64, // (ARM64_D19, 159)150    fpu_d20_arm64, // (ARM64_D20, 160)151    fpu_d21_arm64, // (ARM64_D21, 161)152    fpu_d22_arm64, // (ARM64_D22, 162)153    fpu_d23_arm64, // (ARM64_D23, 163)154    fpu_d24_arm64, // (ARM64_D24, 164)155    fpu_d25_arm64, // (ARM64_D25, 165)156    fpu_d26_arm64, // (ARM64_D26, 166)157    fpu_d27_arm64, // (ARM64_D27, 167)158    fpu_d28_arm64, // (ARM64_D28, 168)159    fpu_d29_arm64, // (ARM64_D29, 169)160    fpu_d30_arm64, // (ARM64_D30, 170)161    fpu_d31_arm64, // (ARM64_D31, 171)162    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,163    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,164    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,165    fpu_v0_arm64,  // (ARM64_Q0, 180)166    fpu_v1_arm64,  // (ARM64_Q1, 181)167    fpu_v2_arm64,  // (ARM64_Q2, 182)168    fpu_v3_arm64,  // (ARM64_Q3, 183)169    fpu_v4_arm64,  // (ARM64_Q4, 184)170    fpu_v5_arm64,  // (ARM64_Q5, 185)171    fpu_v6_arm64,  // (ARM64_Q6, 186)172    fpu_v7_arm64,  // (ARM64_Q7, 187)173    fpu_v8_arm64,  // (ARM64_Q8, 188)174    fpu_v9_arm64,  // (ARM64_Q9, 189)175    fpu_v10_arm64, // (ARM64_Q10, 190)176    fpu_v11_arm64, // (ARM64_Q11, 191)177    fpu_v12_arm64, // (ARM64_Q12, 192)178    fpu_v13_arm64, // (ARM64_Q13, 193)179    fpu_v14_arm64, // (ARM64_Q14, 194)180    fpu_v15_arm64, // (ARM64_Q15, 195)181    fpu_v16_arm64, // (ARM64_Q16, 196)182    fpu_v17_arm64, // (ARM64_Q17, 197)183    fpu_v18_arm64, // (ARM64_Q18, 198)184    fpu_v19_arm64, // (ARM64_Q19, 199)185    fpu_v20_arm64, // (ARM64_Q20, 200)186    fpu_v21_arm64, // (ARM64_Q21, 201)187    fpu_v22_arm64, // (ARM64_Q22, 202)188    fpu_v23_arm64, // (ARM64_Q23, 203)189    fpu_v24_arm64, // (ARM64_Q24, 204)190    fpu_v25_arm64, // (ARM64_Q25, 205)191    fpu_v26_arm64, // (ARM64_Q26, 206)192    fpu_v27_arm64, // (ARM64_Q27, 207)193    fpu_v28_arm64, // (ARM64_Q28, 208)194    fpu_v29_arm64, // (ARM64_Q29, 209)195    fpu_v30_arm64, // (ARM64_Q30, 210)196    fpu_v31_arm64, // (ARM64_Q31, 211)197    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,198    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,199    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,200    fpu_fpsr_arm64 // ARM64_FPSR, 220)201};202 203static const uint32_t g_code_view_to_lldb_registers_x86[] = {204    LLDB_INVALID_REGNUM, // NONE205    lldb_al_i386,        // AL206    lldb_cl_i386,        // CL207    lldb_dl_i386,        // DL208    lldb_bl_i386,        // BL209    lldb_ah_i386,        // AH210    lldb_ch_i386,        // CH211    lldb_dh_i386,        // DH212    lldb_bh_i386,        // BH213    lldb_ax_i386,        // AX214    lldb_cx_i386,        // CX215    lldb_dx_i386,        // DX216    lldb_bx_i386,        // BX217    lldb_sp_i386,        // SP218    lldb_bp_i386,        // BP219    lldb_si_i386,        // SI220    lldb_di_i386,        // DI221    lldb_eax_i386,       // EAX222    lldb_ecx_i386,       // ECX223    lldb_edx_i386,       // EDX224    lldb_ebx_i386,       // EBX225    lldb_esp_i386,       // ESP226    lldb_ebp_i386,       // EBP227    lldb_esi_i386,       // ESI228    lldb_edi_i386,       // EDI229    lldb_es_i386,        // ES230    lldb_cs_i386,        // CS231    lldb_ss_i386,        // SS232    lldb_ds_i386,        // DS233    lldb_fs_i386,        // FS234    lldb_gs_i386,        // GS235    LLDB_INVALID_REGNUM, // IP236    LLDB_INVALID_REGNUM, // FLAGS237    lldb_eip_i386,       // EIP238    lldb_eflags_i386,    // EFLAGS239    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,240    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,241    LLDB_INVALID_REGNUM, // TEMP242    LLDB_INVALID_REGNUM, // TEMPH243    LLDB_INVALID_REGNUM, // QUOTE244    LLDB_INVALID_REGNUM, // PCDR3245    LLDB_INVALID_REGNUM, // PCDR4246    LLDB_INVALID_REGNUM, // PCDR5247    LLDB_INVALID_REGNUM, // PCDR6248    LLDB_INVALID_REGNUM, // PCDR7249    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,250    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,251    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,252    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,253    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,254    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,255    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,256    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,257    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,258    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,259    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,260    LLDB_INVALID_REGNUM, // CR0261    LLDB_INVALID_REGNUM, // CR1262    LLDB_INVALID_REGNUM, // CR2263    LLDB_INVALID_REGNUM, // CR3264    LLDB_INVALID_REGNUM, // CR4265    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,266    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,267    lldb_dr0_i386, // DR0268    lldb_dr1_i386, // DR1269    lldb_dr2_i386, // DR2270    lldb_dr3_i386, // DR3271    lldb_dr4_i386, // DR4272    lldb_dr5_i386, // DR5273    lldb_dr6_i386, // DR6274    lldb_dr7_i386, // DR7275    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,276    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,277    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,278    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,279    LLDB_INVALID_REGNUM, // GDTR280    LLDB_INVALID_REGNUM, // GDTL281    LLDB_INVALID_REGNUM, // IDTR282    LLDB_INVALID_REGNUM, // IDTL283    LLDB_INVALID_REGNUM, // LDTR284    LLDB_INVALID_REGNUM, // TR285    LLDB_INVALID_REGNUM, // PSEUDO1286    LLDB_INVALID_REGNUM, // PSEUDO2287    LLDB_INVALID_REGNUM, // PSEUDO3288    LLDB_INVALID_REGNUM, // PSEUDO4289    LLDB_INVALID_REGNUM, // PSEUDO5290    LLDB_INVALID_REGNUM, // PSEUDO6291    LLDB_INVALID_REGNUM, // PSEUDO7292    LLDB_INVALID_REGNUM, // PSEUDO8293    LLDB_INVALID_REGNUM, // PSEUDO9294    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,295    lldb_st0_i386,       // ST0296    lldb_st1_i386,       // ST1297    lldb_st2_i386,       // ST2298    lldb_st3_i386,       // ST3299    lldb_st4_i386,       // ST4300    lldb_st5_i386,       // ST5301    lldb_st6_i386,       // ST6302    lldb_st7_i386,       // ST7303    LLDB_INVALID_REGNUM, // CTRL304    LLDB_INVALID_REGNUM, // STAT305    LLDB_INVALID_REGNUM, // TAG306    LLDB_INVALID_REGNUM, // FPIP307    LLDB_INVALID_REGNUM, // FPCS308    LLDB_INVALID_REGNUM, // FPDO309    LLDB_INVALID_REGNUM, // FPDS310    LLDB_INVALID_REGNUM, // ISEM311    LLDB_INVALID_REGNUM, // FPEIP312    LLDB_INVALID_REGNUM, // FPEDO313    lldb_mm0_i386,       // MM0314    lldb_mm1_i386,       // MM1315    lldb_mm2_i386,       // MM2316    lldb_mm3_i386,       // MM3317    lldb_mm4_i386,       // MM4318    lldb_mm5_i386,       // MM5319    lldb_mm6_i386,       // MM6320    lldb_mm7_i386,       // MM7321    lldb_xmm0_i386,      // XMM0322    lldb_xmm1_i386,      // XMM1323    lldb_xmm2_i386,      // XMM2324    lldb_xmm3_i386,      // XMM3325    lldb_xmm4_i386,      // XMM4326    lldb_xmm5_i386,      // XMM5327    lldb_xmm6_i386,      // XMM6328    lldb_xmm7_i386       // XMM7329};330 331static const uint32_t g_code_view_to_lldb_registers_x86_64[] = {332    LLDB_INVALID_REGNUM, // NONE333    lldb_al_x86_64,      // AL334    lldb_cl_x86_64,      // CL335    lldb_dl_x86_64,      // DL336    lldb_bl_x86_64,      // BL337    lldb_ah_x86_64,      // AH338    lldb_ch_x86_64,      // CH339    lldb_dh_x86_64,      // DH340    lldb_bh_x86_64,      // BH341    lldb_ax_x86_64,      // AX342    lldb_cx_x86_64,      // CX343    lldb_dx_x86_64,      // DX344    lldb_bx_x86_64,      // BX345    lldb_sp_x86_64,      // SP346    lldb_bp_x86_64,      // BP347    lldb_si_x86_64,      // SI348    lldb_di_x86_64,      // DI349    lldb_eax_x86_64,     // EAX350    lldb_ecx_x86_64,     // ECX351    lldb_edx_x86_64,     // EDX352    lldb_ebx_x86_64,     // EBX353    lldb_esp_x86_64,     // ESP354    lldb_ebp_x86_64,     // EBP355    lldb_esi_x86_64,     // ESI356    lldb_edi_x86_64,     // EDI357    lldb_es_x86_64,      // ES358    lldb_cs_x86_64,      // CS359    lldb_ss_x86_64,      // SS360    lldb_ds_x86_64,      // DS361    lldb_fs_x86_64,      // FS362    lldb_gs_x86_64,      // GS363    LLDB_INVALID_REGNUM, // IP364    LLDB_INVALID_REGNUM, // FLAGS365    LLDB_INVALID_REGNUM, // EIP366    LLDB_INVALID_REGNUM, // EFLAGS367    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,368    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,369    LLDB_INVALID_REGNUM, // TEMP370    LLDB_INVALID_REGNUM, // TEMPH371    LLDB_INVALID_REGNUM, // QUOTE372    LLDB_INVALID_REGNUM, // PCDR3373    LLDB_INVALID_REGNUM, // PCDR4374    LLDB_INVALID_REGNUM, // PCDR5375    LLDB_INVALID_REGNUM, // PCDR6376    LLDB_INVALID_REGNUM, // PCDR7377    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,378    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,379    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,380    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,381    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,382    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,383    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,384    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,385    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,386    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,387    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,388    LLDB_INVALID_REGNUM, // CR0389    LLDB_INVALID_REGNUM, // CR1390    LLDB_INVALID_REGNUM, // CR2391    LLDB_INVALID_REGNUM, // CR3392    LLDB_INVALID_REGNUM, // CR4393    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,394    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,395    lldb_dr0_x86_64, // DR0396    lldb_dr1_x86_64, // DR1397    lldb_dr2_x86_64, // DR2398    lldb_dr3_x86_64, // DR3399    lldb_dr4_x86_64, // DR4400    lldb_dr5_x86_64, // DR5401    lldb_dr6_x86_64, // DR6402    lldb_dr7_x86_64, // DR7403    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,404    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,405    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,406    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,407    LLDB_INVALID_REGNUM, // GDTR408    LLDB_INVALID_REGNUM, // GDTL409    LLDB_INVALID_REGNUM, // IDTR410    LLDB_INVALID_REGNUM, // IDTL411    LLDB_INVALID_REGNUM, // LDTR412    LLDB_INVALID_REGNUM, // TR413    LLDB_INVALID_REGNUM, // PSEUDO1414    LLDB_INVALID_REGNUM, // PSEUDO2415    LLDB_INVALID_REGNUM, // PSEUDO3416    LLDB_INVALID_REGNUM, // PSEUDO4417    LLDB_INVALID_REGNUM, // PSEUDO5418    LLDB_INVALID_REGNUM, // PSEUDO6419    LLDB_INVALID_REGNUM, // PSEUDO7420    LLDB_INVALID_REGNUM, // PSEUDO8421    LLDB_INVALID_REGNUM, // PSEUDO9422    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,423    lldb_st0_x86_64,     // ST0424    lldb_st1_x86_64,     // ST1425    lldb_st2_x86_64,     // ST2426    lldb_st3_x86_64,     // ST3427    lldb_st4_x86_64,     // ST4428    lldb_st5_x86_64,     // ST5429    lldb_st6_x86_64,     // ST6430    lldb_st7_x86_64,     // ST7431    LLDB_INVALID_REGNUM, // CTRL432    LLDB_INVALID_REGNUM, // STAT433    LLDB_INVALID_REGNUM, // TAG434    LLDB_INVALID_REGNUM, // FPIP435    LLDB_INVALID_REGNUM, // FPCS436    LLDB_INVALID_REGNUM, // FPDO437    LLDB_INVALID_REGNUM, // FPDS438    LLDB_INVALID_REGNUM, // ISEM439    LLDB_INVALID_REGNUM, // FPEIP440    LLDB_INVALID_REGNUM, // FPEDO441    lldb_mm0_x86_64,     // MM0442    lldb_mm1_x86_64,     // MM1443    lldb_mm2_x86_64,     // MM2444    lldb_mm3_x86_64,     // MM3445    lldb_mm4_x86_64,     // MM4446    lldb_mm5_x86_64,     // MM5447    lldb_mm6_x86_64,     // MM6448    lldb_mm7_x86_64,     // MM7449    lldb_xmm0_x86_64,    // XMM0450    lldb_xmm1_x86_64,    // XMM1451    lldb_xmm2_x86_64,    // XMM2452    lldb_xmm3_x86_64,    // XMM3453    lldb_xmm4_x86_64,    // XMM4454    lldb_xmm5_x86_64,    // XMM5455    lldb_xmm6_x86_64,    // XMM6456    lldb_xmm7_x86_64,    // XMM7457    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,458    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,459    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,460    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,461    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,462    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,463    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,464    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,465    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,466    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,467    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,468    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,469    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,470    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,471    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,472    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,473    LLDB_INVALID_REGNUM,474    lldb_mxcsr_x86_64,   // MXCSR475    LLDB_INVALID_REGNUM, // EDXEAX476    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,477    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,478    LLDB_INVALID_REGNUM,479    LLDB_INVALID_REGNUM, // EMM0L480    LLDB_INVALID_REGNUM, // EMM1L481    LLDB_INVALID_REGNUM, // EMM2L482    LLDB_INVALID_REGNUM, // EMM3L483    LLDB_INVALID_REGNUM, // EMM4L484    LLDB_INVALID_REGNUM, // EMM5L485    LLDB_INVALID_REGNUM, // EMM6L486    LLDB_INVALID_REGNUM, // EMM7L487    LLDB_INVALID_REGNUM, // EMM0H488    LLDB_INVALID_REGNUM, // EMM1H489    LLDB_INVALID_REGNUM, // EMM2H490    LLDB_INVALID_REGNUM, // EMM3H491    LLDB_INVALID_REGNUM, // EMM4H492    LLDB_INVALID_REGNUM, // EMM5H493    LLDB_INVALID_REGNUM, // EMM6H494    LLDB_INVALID_REGNUM, // EMM7H495    LLDB_INVALID_REGNUM, // MM00496    LLDB_INVALID_REGNUM, // MM01497    LLDB_INVALID_REGNUM, // MM10498    LLDB_INVALID_REGNUM, // MM11499    LLDB_INVALID_REGNUM, // MM20500    LLDB_INVALID_REGNUM, // MM21501    LLDB_INVALID_REGNUM, // MM30502    LLDB_INVALID_REGNUM, // MM31503    LLDB_INVALID_REGNUM, // MM40504    LLDB_INVALID_REGNUM, // MM41505    LLDB_INVALID_REGNUM, // MM50506    LLDB_INVALID_REGNUM, // MM51507    LLDB_INVALID_REGNUM, // MM60508    LLDB_INVALID_REGNUM, // MM61509    LLDB_INVALID_REGNUM, // MM70510    LLDB_INVALID_REGNUM, // MM71511    lldb_xmm8_x86_64,    // XMM8512    lldb_xmm9_x86_64,    // XMM9513    lldb_xmm10_x86_64,   // XMM10514    lldb_xmm11_x86_64,   // XMM11515    lldb_xmm12_x86_64,   // XMM12516    lldb_xmm13_x86_64,   // XMM13517    lldb_xmm14_x86_64,   // XMM14518    lldb_xmm15_x86_64,   // XMM15519    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,520    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,521    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,522    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,523    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,524    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,525    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,526    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,527    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,528    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,529    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,530    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,531    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,532    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,533    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,534    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,535    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,536    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,537    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,538    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,539    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,540    LLDB_INVALID_REGNUM,541    lldb_sil_x86_64,   // SIL542    lldb_dil_x86_64,   // DIL543    lldb_bpl_x86_64,   // BPL544    lldb_spl_x86_64,   // SPL545    lldb_rax_x86_64,   // RAX546    lldb_rbx_x86_64,   // RBX547    lldb_rcx_x86_64,   // RCX548    lldb_rdx_x86_64,   // RDX549    lldb_rsi_x86_64,   // RSI550    lldb_rdi_x86_64,   // RDI551    lldb_rbp_x86_64,   // RBP552    lldb_rsp_x86_64,   // RSP553    lldb_r8_x86_64,    // R8554    lldb_r9_x86_64,    // R9555    lldb_r10_x86_64,   // R10556    lldb_r11_x86_64,   // R11557    lldb_r12_x86_64,   // R12558    lldb_r13_x86_64,   // R13559    lldb_r14_x86_64,   // R14560    lldb_r15_x86_64,   // R15561    lldb_r8l_x86_64,   // R8B562    lldb_r9l_x86_64,   // R9B563    lldb_r10l_x86_64,  // R10B564    lldb_r11l_x86_64,  // R11B565    lldb_r12l_x86_64,  // R12B566    lldb_r13l_x86_64,  // R13B567    lldb_r14l_x86_64,  // R14B568    lldb_r15l_x86_64,  // R15B569    lldb_r8w_x86_64,   // R8W570    lldb_r9w_x86_64,   // R9W571    lldb_r10w_x86_64,  // R10W572    lldb_r11w_x86_64,  // R11W573    lldb_r12w_x86_64,  // R12W574    lldb_r13w_x86_64,  // R13W575    lldb_r14w_x86_64,  // R14W576    lldb_r15w_x86_64,  // R15W577    lldb_r8d_x86_64,   // R8D578    lldb_r9d_x86_64,   // R9D579    lldb_r10d_x86_64,  // R10D580    lldb_r11d_x86_64,  // R11D581    lldb_r12d_x86_64,  // R12D582    lldb_r13d_x86_64,  // R13D583    lldb_r14d_x86_64,  // R14D584    lldb_r15d_x86_64,  // R15D585    lldb_ymm0_x86_64,  // AMD64_YMM0586    lldb_ymm1_x86_64,  // AMD64_YMM1587    lldb_ymm2_x86_64,  // AMD64_YMM2588    lldb_ymm3_x86_64,  // AMD64_YMM3589    lldb_ymm4_x86_64,  // AMD64_YMM4590    lldb_ymm5_x86_64,  // AMD64_YMM5591    lldb_ymm6_x86_64,  // AMD64_YMM6592    lldb_ymm7_x86_64,  // AMD64_YMM7593    lldb_ymm8_x86_64,  // AMD64_YMM8594    lldb_ymm9_x86_64,  // AMD64_YMM9595    lldb_ymm10_x86_64, // AMD64_YMM10596    lldb_ymm11_x86_64, // AMD64_YMM11597    lldb_ymm12_x86_64, // AMD64_YMM12598    lldb_ymm13_x86_64, // AMD64_YMM13599    lldb_ymm14_x86_64, // AMD64_YMM14600    lldb_ymm15_x86_64, // AMD64_YMM15601    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,602    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,603    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,604    LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,605    lldb_bnd0_x86_64, // BND0606    lldb_bnd1_x86_64, // BND1607    lldb_bnd2_x86_64  // BND2608};609 610uint32_t lldb_private::npdb::GetLLDBRegisterNumber(611    llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) {612  switch (arch_type) {613  case llvm::Triple::aarch64:614    if (static_cast<uint16_t>(register_id) <615        sizeof(g_code_view_to_lldb_registers_arm64) /616            sizeof(g_code_view_to_lldb_registers_arm64[0]))617      return g_code_view_to_lldb_registers_arm64[static_cast<uint16_t>(618          register_id)];619 620    return LLDB_INVALID_REGNUM;621  case llvm::Triple::x86:622    if (static_cast<uint16_t>(register_id) <623        sizeof(g_code_view_to_lldb_registers_x86) /624            sizeof(g_code_view_to_lldb_registers_x86[0]))625      return g_code_view_to_lldb_registers_x86[static_cast<uint16_t>(626          register_id)];627 628    switch (register_id) {629    case llvm::codeview::RegisterId::MXCSR:630      return lldb_mxcsr_i386;631    case llvm::codeview::RegisterId::BND0:632      return lldb_bnd0_i386;633    case llvm::codeview::RegisterId::BND1:634      return lldb_bnd1_i386;635    case llvm::codeview::RegisterId::BND2:636      return lldb_bnd2_i386;637    default:638      return LLDB_INVALID_REGNUM;639    }640  case llvm::Triple::x86_64:641    if (static_cast<uint16_t>(register_id) <642        sizeof(g_code_view_to_lldb_registers_x86_64) /643            sizeof(g_code_view_to_lldb_registers_x86_64[0]))644      return g_code_view_to_lldb_registers_x86_64[static_cast<uint16_t>(645          register_id)];646 647    return LLDB_INVALID_REGNUM;648  default:649    return LLDB_INVALID_REGNUM;650  }651}652 653uint32_t654lldb_private::npdb::GetRegisterSize(llvm::codeview::RegisterId register_id) {655  switch(register_id) {656    case llvm::codeview::RegisterId::AL:657    case llvm::codeview::RegisterId::BL:658    case llvm::codeview::RegisterId::CL:659    case llvm::codeview::RegisterId::DL:660    case llvm::codeview::RegisterId::AH:661    case llvm::codeview::RegisterId::BH:662    case llvm::codeview::RegisterId::CH:663    case llvm::codeview::RegisterId::DH:664    case llvm::codeview::RegisterId::SIL:665    case llvm::codeview::RegisterId::DIL:666    case llvm::codeview::RegisterId::BPL:667    case llvm::codeview::RegisterId::SPL:668    case llvm::codeview::RegisterId::R8B:669    case llvm::codeview::RegisterId::R9B:670    case llvm::codeview::RegisterId::R10B:671    case llvm::codeview::RegisterId::R11B:672    case llvm::codeview::RegisterId::R12B:673    case llvm::codeview::RegisterId::R13B:674    case llvm::codeview::RegisterId::R14B:675    case llvm::codeview::RegisterId::R15B:676      return 1;677    case llvm::codeview::RegisterId::AX:678    case llvm::codeview::RegisterId::BX:679    case llvm::codeview::RegisterId::CX:680    case llvm::codeview::RegisterId::DX:681    case llvm::codeview::RegisterId::SP:682    case llvm::codeview::RegisterId::BP:683    case llvm::codeview::RegisterId::SI:684    case llvm::codeview::RegisterId::DI:685    case llvm::codeview::RegisterId::R8W:686    case llvm::codeview::RegisterId::R9W:687    case llvm::codeview::RegisterId::R10W:688    case llvm::codeview::RegisterId::R11W:689    case llvm::codeview::RegisterId::R12W:690    case llvm::codeview::RegisterId::R13W:691    case llvm::codeview::RegisterId::R14W:692    case llvm::codeview::RegisterId::R15W:693      return 2;694    case llvm::codeview::RegisterId::EAX:695    case llvm::codeview::RegisterId::EBX:696    case llvm::codeview::RegisterId::ECX:697    case llvm::codeview::RegisterId::EDX:698    case llvm::codeview::RegisterId::ESP:699    case llvm::codeview::RegisterId::EBP:700    case llvm::codeview::RegisterId::ESI:701    case llvm::codeview::RegisterId::EDI:702    case llvm::codeview::RegisterId::R8D:703    case llvm::codeview::RegisterId::R9D:704    case llvm::codeview::RegisterId::R10D:705    case llvm::codeview::RegisterId::R11D:706    case llvm::codeview::RegisterId::R12D:707    case llvm::codeview::RegisterId::R13D:708    case llvm::codeview::RegisterId::R14D:709    case llvm::codeview::RegisterId::R15D:710      return 4;711    case llvm::codeview::RegisterId::RAX:712    case llvm::codeview::RegisterId::RBX:713    case llvm::codeview::RegisterId::RCX:714    case llvm::codeview::RegisterId::RDX:715    case llvm::codeview::RegisterId::RSI:716    case llvm::codeview::RegisterId::RDI:717    case llvm::codeview::RegisterId::RBP:718    case llvm::codeview::RegisterId::RSP:719    case llvm::codeview::RegisterId::R8:720    case llvm::codeview::RegisterId::R9:721    case llvm::codeview::RegisterId::R10:722    case llvm::codeview::RegisterId::R11:723    case llvm::codeview::RegisterId::R12:724    case llvm::codeview::RegisterId::R13:725    case llvm::codeview::RegisterId::R14:726    case llvm::codeview::RegisterId::R15:727      return 8;728    case llvm::codeview::RegisterId::XMM0:729    case llvm::codeview::RegisterId::XMM1:730    case llvm::codeview::RegisterId::XMM2:731    case llvm::codeview::RegisterId::XMM3:732    case llvm::codeview::RegisterId::XMM4:733    case llvm::codeview::RegisterId::XMM5:734    case llvm::codeview::RegisterId::XMM6:735    case llvm::codeview::RegisterId::XMM7:736    case llvm::codeview::RegisterId::XMM8:737    case llvm::codeview::RegisterId::XMM9:738    case llvm::codeview::RegisterId::XMM10:739    case llvm::codeview::RegisterId::XMM11:740    case llvm::codeview::RegisterId::XMM12:741    case llvm::codeview::RegisterId::XMM13:742    case llvm::codeview::RegisterId::XMM14:743    case llvm::codeview::RegisterId::XMM15:744      return 16;745    default:746      return 0;747  }748}749