Path: blob/main/contrib/llvm-project/lldb/source/Plugins/SymbolFile/NativePDB/CodeViewRegisterMapping.cpp
96380 views
//===-- CodeViewRegisterMapping.cpp ---------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "CodeViewRegisterMapping.h"910#include "lldb/lldb-defines.h"1112#include "Plugins/Process/Utility/lldb-arm64-register-enums.h"13#include "Plugins/Process/Utility/lldb-x86-register-enums.h"1415using namespace lldb_private;1617static const uint32_t g_code_view_to_lldb_registers_arm64[] = {18LLDB_INVALID_REGNUM, // NONE19LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,20LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,21LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,22gpr_w0_arm64, // ARM64_W0, 10)23gpr_w1_arm64, // ARM64_W1, 11)24gpr_w2_arm64, // ARM64_W2, 12)25gpr_w3_arm64, // ARM64_W3, 13)26gpr_w4_arm64, // ARM64_W4, 14)27gpr_w5_arm64, // ARM64_W5, 15)28gpr_w6_arm64, // ARM64_W6, 16)29gpr_w7_arm64, // ARM64_W7, 17)30gpr_w8_arm64, // ARM64_W8, 18)31gpr_w9_arm64, // ARM64_W9, 19)32gpr_w10_arm64, // ARM64_W10, 20)33gpr_w11_arm64, // ARM64_W11, 21)34gpr_w12_arm64, // ARM64_W12, 22)35gpr_w13_arm64, // ARM64_W13, 23)36gpr_w14_arm64, // ARM64_W14, 24)37gpr_w15_arm64, // ARM64_W15, 25)38gpr_w16_arm64, // ARM64_W16, 26)39gpr_w17_arm64, // ARM64_W17, 27)40gpr_w18_arm64, // ARM64_W18, 28)41gpr_w19_arm64, // ARM64_W19, 29)42gpr_w20_arm64, // ARM64_W20, 30)43gpr_w21_arm64, // ARM64_W21, 31)44gpr_w22_arm64, // ARM64_W22, 32)45gpr_w23_arm64, // ARM64_W23, 33)46gpr_w24_arm64, // ARM64_W24, 34)47gpr_w25_arm64, // ARM64_W25, 35)48gpr_w26_arm64, // ARM64_W26, 36)49gpr_w27_arm64, // ARM64_W27, 37)50gpr_w28_arm64, // ARM64_W28, 38)51LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,52LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,53LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,54LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,55gpr_x0_arm64, // ARM64_X0, 50)56gpr_x1_arm64, // ARM64_X1, 51)57gpr_x2_arm64, // ARM64_X2, 52)58gpr_x3_arm64, // ARM64_X3, 53)59gpr_x4_arm64, // ARM64_X4, 54)60gpr_x5_arm64, // ARM64_X5, 55)61gpr_x6_arm64, // ARM64_X6, 56)62gpr_x7_arm64, // ARM64_X7, 57)63gpr_x8_arm64, // ARM64_X8, 58)64gpr_x9_arm64, // ARM64_X9, 59)65gpr_x10_arm64, // ARM64_X10, 60)66gpr_x11_arm64, // ARM64_X11, 61)67gpr_x12_arm64, // ARM64_X12, 62)68gpr_x13_arm64, // ARM64_X13, 63)69gpr_x14_arm64, // ARM64_X14, 64)70gpr_x15_arm64, // ARM64_X15, 65)71gpr_x16_arm64, // ARM64_X16, 66)72gpr_x17_arm64, // ARM64_X17, 67)73gpr_x18_arm64, // ARM64_X18, 68)74gpr_x19_arm64, // ARM64_X19, 69)75gpr_x20_arm64, // ARM64_X20, 70)76gpr_x21_arm64, // ARM64_X21, 71)77gpr_x22_arm64, // ARM64_X22, 72)78gpr_x23_arm64, // ARM64_X23, 73)79gpr_x24_arm64, // ARM64_X24, 74)80gpr_x25_arm64, // ARM64_X25, 75)81gpr_x26_arm64, // ARM64_X26, 76)82gpr_x27_arm64, // ARM64_X27, 77)83gpr_x28_arm64, // ARM64_X28, 78)84gpr_fp_arm64, // ARM64_FP, 79)85gpr_lr_arm64, // ARM64_LR, 80)86gpr_sp_arm64, // ARM64_SP, 81)87LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,88LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,89LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,90gpr_cpsr_arm64, // ARM64_NZCV, 90)91LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,92LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,93LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,94fpu_s0_arm64, // (ARM64_S0, 100)95fpu_s1_arm64, // (ARM64_S1, 101)96fpu_s2_arm64, // (ARM64_S2, 102)97fpu_s3_arm64, // (ARM64_S3, 103)98fpu_s4_arm64, // (ARM64_S4, 104)99fpu_s5_arm64, // (ARM64_S5, 105)100fpu_s6_arm64, // (ARM64_S6, 106)101fpu_s7_arm64, // (ARM64_S7, 107)102fpu_s8_arm64, // (ARM64_S8, 108)103fpu_s9_arm64, // (ARM64_S9, 109)104fpu_s10_arm64, // (ARM64_S10, 110)105fpu_s11_arm64, // (ARM64_S11, 111)106fpu_s12_arm64, // (ARM64_S12, 112)107fpu_s13_arm64, // (ARM64_S13, 113)108fpu_s14_arm64, // (ARM64_S14, 114)109fpu_s15_arm64, // (ARM64_S15, 115)110fpu_s16_arm64, // (ARM64_S16, 116)111fpu_s17_arm64, // (ARM64_S17, 117)112fpu_s18_arm64, // (ARM64_S18, 118)113fpu_s19_arm64, // (ARM64_S19, 119)114fpu_s20_arm64, // (ARM64_S20, 120)115fpu_s21_arm64, // (ARM64_S21, 121)116fpu_s22_arm64, // (ARM64_S22, 122)117fpu_s23_arm64, // (ARM64_S23, 123)118fpu_s24_arm64, // (ARM64_S24, 124)119fpu_s25_arm64, // (ARM64_S25, 125)120fpu_s26_arm64, // (ARM64_S26, 126)121fpu_s27_arm64, // (ARM64_S27, 127)122fpu_s28_arm64, // (ARM64_S28, 128)123fpu_s29_arm64, // (ARM64_S29, 129)124fpu_s30_arm64, // (ARM64_S30, 130)125fpu_s31_arm64, // (ARM64_S31, 131)126LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,127LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,128LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,129fpu_d0_arm64, // (ARM64_D0, 140)130fpu_d1_arm64, // (ARM64_D1, 141)131fpu_d2_arm64, // (ARM64_D2, 142)132fpu_d3_arm64, // (ARM64_D3, 143)133fpu_d4_arm64, // (ARM64_D4, 144)134fpu_d5_arm64, // (ARM64_D5, 145)135fpu_d6_arm64, // (ARM64_D6, 146)136fpu_d7_arm64, // (ARM64_D7, 147)137fpu_d8_arm64, // (ARM64_D8, 148)138fpu_d9_arm64, // (ARM64_D9, 149)139fpu_d10_arm64, // (ARM64_D10, 150)140fpu_d11_arm64, // (ARM64_D11, 151)141fpu_d12_arm64, // (ARM64_D12, 152)142fpu_d13_arm64, // (ARM64_D13, 153)143fpu_d14_arm64, // (ARM64_D14, 154)144fpu_d15_arm64, // (ARM64_D15, 155)145fpu_d16_arm64, // (ARM64_D16, 156)146fpu_d17_arm64, // (ARM64_D17, 157)147fpu_d18_arm64, // (ARM64_D18, 158)148fpu_d19_arm64, // (ARM64_D19, 159)149fpu_d20_arm64, // (ARM64_D20, 160)150fpu_d21_arm64, // (ARM64_D21, 161)151fpu_d22_arm64, // (ARM64_D22, 162)152fpu_d23_arm64, // (ARM64_D23, 163)153fpu_d24_arm64, // (ARM64_D24, 164)154fpu_d25_arm64, // (ARM64_D25, 165)155fpu_d26_arm64, // (ARM64_D26, 166)156fpu_d27_arm64, // (ARM64_D27, 167)157fpu_d28_arm64, // (ARM64_D28, 168)158fpu_d29_arm64, // (ARM64_D29, 169)159fpu_d30_arm64, // (ARM64_D30, 170)160fpu_d31_arm64, // (ARM64_D31, 171)161LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,162LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,163LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,164fpu_v0_arm64, // (ARM64_Q0, 180)165fpu_v1_arm64, // (ARM64_Q1, 181)166fpu_v2_arm64, // (ARM64_Q2, 182)167fpu_v3_arm64, // (ARM64_Q3, 183)168fpu_v4_arm64, // (ARM64_Q4, 184)169fpu_v5_arm64, // (ARM64_Q5, 185)170fpu_v6_arm64, // (ARM64_Q6, 186)171fpu_v7_arm64, // (ARM64_Q7, 187)172fpu_v8_arm64, // (ARM64_Q8, 188)173fpu_v9_arm64, // (ARM64_Q9, 189)174fpu_v10_arm64, // (ARM64_Q10, 190)175fpu_v11_arm64, // (ARM64_Q11, 191)176fpu_v12_arm64, // (ARM64_Q12, 192)177fpu_v13_arm64, // (ARM64_Q13, 193)178fpu_v14_arm64, // (ARM64_Q14, 194)179fpu_v15_arm64, // (ARM64_Q15, 195)180fpu_v16_arm64, // (ARM64_Q16, 196)181fpu_v17_arm64, // (ARM64_Q17, 197)182fpu_v18_arm64, // (ARM64_Q18, 198)183fpu_v19_arm64, // (ARM64_Q19, 199)184fpu_v20_arm64, // (ARM64_Q20, 200)185fpu_v21_arm64, // (ARM64_Q21, 201)186fpu_v22_arm64, // (ARM64_Q22, 202)187fpu_v23_arm64, // (ARM64_Q23, 203)188fpu_v24_arm64, // (ARM64_Q24, 204)189fpu_v25_arm64, // (ARM64_Q25, 205)190fpu_v26_arm64, // (ARM64_Q26, 206)191fpu_v27_arm64, // (ARM64_Q27, 207)192fpu_v28_arm64, // (ARM64_Q28, 208)193fpu_v29_arm64, // (ARM64_Q29, 209)194fpu_v30_arm64, // (ARM64_Q30, 210)195fpu_v31_arm64, // (ARM64_Q31, 211)196LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,197LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,198LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,199fpu_fpsr_arm64 // ARM64_FPSR, 220)200};201202static const uint32_t g_code_view_to_lldb_registers_x86[] = {203LLDB_INVALID_REGNUM, // NONE204lldb_al_i386, // AL205lldb_cl_i386, // CL206lldb_dl_i386, // DL207lldb_bl_i386, // BL208lldb_ah_i386, // AH209lldb_ch_i386, // CH210lldb_dh_i386, // DH211lldb_bh_i386, // BH212lldb_ax_i386, // AX213lldb_cx_i386, // CX214lldb_dx_i386, // DX215lldb_bx_i386, // BX216lldb_sp_i386, // SP217lldb_bp_i386, // BP218lldb_si_i386, // SI219lldb_di_i386, // DI220lldb_eax_i386, // EAX221lldb_ecx_i386, // ECX222lldb_edx_i386, // EDX223lldb_ebx_i386, // EBX224lldb_esp_i386, // ESP225lldb_ebp_i386, // EBP226lldb_esi_i386, // ESI227lldb_edi_i386, // EDI228lldb_es_i386, // ES229lldb_cs_i386, // CS230lldb_ss_i386, // SS231lldb_ds_i386, // DS232lldb_fs_i386, // FS233lldb_gs_i386, // GS234LLDB_INVALID_REGNUM, // IP235LLDB_INVALID_REGNUM, // FLAGS236lldb_eip_i386, // EIP237lldb_eflags_i386, // EFLAGS238LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,239LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,240LLDB_INVALID_REGNUM, // TEMP241LLDB_INVALID_REGNUM, // TEMPH242LLDB_INVALID_REGNUM, // QUOTE243LLDB_INVALID_REGNUM, // PCDR3244LLDB_INVALID_REGNUM, // PCDR4245LLDB_INVALID_REGNUM, // PCDR5246LLDB_INVALID_REGNUM, // PCDR6247LLDB_INVALID_REGNUM, // PCDR7248LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,249LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,250LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,251LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,252LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,253LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,254LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,255LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,256LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,257LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,258LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,259LLDB_INVALID_REGNUM, // CR0260LLDB_INVALID_REGNUM, // CR1261LLDB_INVALID_REGNUM, // CR2262LLDB_INVALID_REGNUM, // CR3263LLDB_INVALID_REGNUM, // CR4264LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,265LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,266lldb_dr0_i386, // DR0267lldb_dr1_i386, // DR1268lldb_dr2_i386, // DR2269lldb_dr3_i386, // DR3270lldb_dr4_i386, // DR4271lldb_dr5_i386, // DR5272lldb_dr6_i386, // DR6273lldb_dr7_i386, // DR7274LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,275LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,276LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,277LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,278LLDB_INVALID_REGNUM, // GDTR279LLDB_INVALID_REGNUM, // GDTL280LLDB_INVALID_REGNUM, // IDTR281LLDB_INVALID_REGNUM, // IDTL282LLDB_INVALID_REGNUM, // LDTR283LLDB_INVALID_REGNUM, // TR284LLDB_INVALID_REGNUM, // PSEUDO1285LLDB_INVALID_REGNUM, // PSEUDO2286LLDB_INVALID_REGNUM, // PSEUDO3287LLDB_INVALID_REGNUM, // PSEUDO4288LLDB_INVALID_REGNUM, // PSEUDO5289LLDB_INVALID_REGNUM, // PSEUDO6290LLDB_INVALID_REGNUM, // PSEUDO7291LLDB_INVALID_REGNUM, // PSEUDO8292LLDB_INVALID_REGNUM, // PSEUDO9293LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,294lldb_st0_i386, // ST0295lldb_st1_i386, // ST1296lldb_st2_i386, // ST2297lldb_st3_i386, // ST3298lldb_st4_i386, // ST4299lldb_st5_i386, // ST5300lldb_st6_i386, // ST6301lldb_st7_i386, // ST7302LLDB_INVALID_REGNUM, // CTRL303LLDB_INVALID_REGNUM, // STAT304LLDB_INVALID_REGNUM, // TAG305LLDB_INVALID_REGNUM, // FPIP306LLDB_INVALID_REGNUM, // FPCS307LLDB_INVALID_REGNUM, // FPDO308LLDB_INVALID_REGNUM, // FPDS309LLDB_INVALID_REGNUM, // ISEM310LLDB_INVALID_REGNUM, // FPEIP311LLDB_INVALID_REGNUM, // FPEDO312lldb_mm0_i386, // MM0313lldb_mm1_i386, // MM1314lldb_mm2_i386, // MM2315lldb_mm3_i386, // MM3316lldb_mm4_i386, // MM4317lldb_mm5_i386, // MM5318lldb_mm6_i386, // MM6319lldb_mm7_i386, // MM7320lldb_xmm0_i386, // XMM0321lldb_xmm1_i386, // XMM1322lldb_xmm2_i386, // XMM2323lldb_xmm3_i386, // XMM3324lldb_xmm4_i386, // XMM4325lldb_xmm5_i386, // XMM5326lldb_xmm6_i386, // XMM6327lldb_xmm7_i386 // XMM7328};329330static const uint32_t g_code_view_to_lldb_registers_x86_64[] = {331LLDB_INVALID_REGNUM, // NONE332lldb_al_x86_64, // AL333lldb_cl_x86_64, // CL334lldb_dl_x86_64, // DL335lldb_bl_x86_64, // BL336lldb_ah_x86_64, // AH337lldb_ch_x86_64, // CH338lldb_dh_x86_64, // DH339lldb_bh_x86_64, // BH340lldb_ax_x86_64, // AX341lldb_cx_x86_64, // CX342lldb_dx_x86_64, // DX343lldb_bx_x86_64, // BX344lldb_sp_x86_64, // SP345lldb_bp_x86_64, // BP346lldb_si_x86_64, // SI347lldb_di_x86_64, // DI348lldb_eax_x86_64, // EAX349lldb_ecx_x86_64, // ECX350lldb_edx_x86_64, // EDX351lldb_ebx_x86_64, // EBX352lldb_esp_x86_64, // ESP353lldb_ebp_x86_64, // EBP354lldb_esi_x86_64, // ESI355lldb_edi_x86_64, // EDI356lldb_es_x86_64, // ES357lldb_cs_x86_64, // CS358lldb_ss_x86_64, // SS359lldb_ds_x86_64, // DS360lldb_fs_x86_64, // FS361lldb_gs_x86_64, // GS362LLDB_INVALID_REGNUM, // IP363LLDB_INVALID_REGNUM, // FLAGS364LLDB_INVALID_REGNUM, // EIP365LLDB_INVALID_REGNUM, // EFLAGS366LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,367LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,368LLDB_INVALID_REGNUM, // TEMP369LLDB_INVALID_REGNUM, // TEMPH370LLDB_INVALID_REGNUM, // QUOTE371LLDB_INVALID_REGNUM, // PCDR3372LLDB_INVALID_REGNUM, // PCDR4373LLDB_INVALID_REGNUM, // PCDR5374LLDB_INVALID_REGNUM, // PCDR6375LLDB_INVALID_REGNUM, // PCDR7376LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,377LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,378LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,379LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,380LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,381LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,382LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,383LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,384LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,385LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,386LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,387LLDB_INVALID_REGNUM, // CR0388LLDB_INVALID_REGNUM, // CR1389LLDB_INVALID_REGNUM, // CR2390LLDB_INVALID_REGNUM, // CR3391LLDB_INVALID_REGNUM, // CR4392LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,393LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,394lldb_dr0_x86_64, // DR0395lldb_dr1_x86_64, // DR1396lldb_dr2_x86_64, // DR2397lldb_dr3_x86_64, // DR3398lldb_dr4_x86_64, // DR4399lldb_dr5_x86_64, // DR5400lldb_dr6_x86_64, // DR6401lldb_dr7_x86_64, // DR7402LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,403LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,404LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,405LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,406LLDB_INVALID_REGNUM, // GDTR407LLDB_INVALID_REGNUM, // GDTL408LLDB_INVALID_REGNUM, // IDTR409LLDB_INVALID_REGNUM, // IDTL410LLDB_INVALID_REGNUM, // LDTR411LLDB_INVALID_REGNUM, // TR412LLDB_INVALID_REGNUM, // PSEUDO1413LLDB_INVALID_REGNUM, // PSEUDO2414LLDB_INVALID_REGNUM, // PSEUDO3415LLDB_INVALID_REGNUM, // PSEUDO4416LLDB_INVALID_REGNUM, // PSEUDO5417LLDB_INVALID_REGNUM, // PSEUDO6418LLDB_INVALID_REGNUM, // PSEUDO7419LLDB_INVALID_REGNUM, // PSEUDO8420LLDB_INVALID_REGNUM, // PSEUDO9421LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,422lldb_st0_x86_64, // ST0423lldb_st1_x86_64, // ST1424lldb_st2_x86_64, // ST2425lldb_st3_x86_64, // ST3426lldb_st4_x86_64, // ST4427lldb_st5_x86_64, // ST5428lldb_st6_x86_64, // ST6429lldb_st7_x86_64, // ST7430LLDB_INVALID_REGNUM, // CTRL431LLDB_INVALID_REGNUM, // STAT432LLDB_INVALID_REGNUM, // TAG433LLDB_INVALID_REGNUM, // FPIP434LLDB_INVALID_REGNUM, // FPCS435LLDB_INVALID_REGNUM, // FPDO436LLDB_INVALID_REGNUM, // FPDS437LLDB_INVALID_REGNUM, // ISEM438LLDB_INVALID_REGNUM, // FPEIP439LLDB_INVALID_REGNUM, // FPEDO440lldb_mm0_x86_64, // MM0441lldb_mm1_x86_64, // MM1442lldb_mm2_x86_64, // MM2443lldb_mm3_x86_64, // MM3444lldb_mm4_x86_64, // MM4445lldb_mm5_x86_64, // MM5446lldb_mm6_x86_64, // MM6447lldb_mm7_x86_64, // MM7448lldb_xmm0_x86_64, // XMM0449lldb_xmm1_x86_64, // XMM1450lldb_xmm2_x86_64, // XMM2451lldb_xmm3_x86_64, // XMM3452lldb_xmm4_x86_64, // XMM4453lldb_xmm5_x86_64, // XMM5454lldb_xmm6_x86_64, // XMM6455lldb_xmm7_x86_64, // XMM7456LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,457LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,458LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,459LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,460LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,461LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,462LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,463LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,464LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,465LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,466LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,467LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,468LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,469LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,470LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,471LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,472LLDB_INVALID_REGNUM,473lldb_mxcsr_x86_64, // MXCSR474LLDB_INVALID_REGNUM, // EDXEAX475LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,476LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,477LLDB_INVALID_REGNUM,478LLDB_INVALID_REGNUM, // EMM0L479LLDB_INVALID_REGNUM, // EMM1L480LLDB_INVALID_REGNUM, // EMM2L481LLDB_INVALID_REGNUM, // EMM3L482LLDB_INVALID_REGNUM, // EMM4L483LLDB_INVALID_REGNUM, // EMM5L484LLDB_INVALID_REGNUM, // EMM6L485LLDB_INVALID_REGNUM, // EMM7L486LLDB_INVALID_REGNUM, // EMM0H487LLDB_INVALID_REGNUM, // EMM1H488LLDB_INVALID_REGNUM, // EMM2H489LLDB_INVALID_REGNUM, // EMM3H490LLDB_INVALID_REGNUM, // EMM4H491LLDB_INVALID_REGNUM, // EMM5H492LLDB_INVALID_REGNUM, // EMM6H493LLDB_INVALID_REGNUM, // EMM7H494LLDB_INVALID_REGNUM, // MM00495LLDB_INVALID_REGNUM, // MM01496LLDB_INVALID_REGNUM, // MM10497LLDB_INVALID_REGNUM, // MM11498LLDB_INVALID_REGNUM, // MM20499LLDB_INVALID_REGNUM, // MM21500LLDB_INVALID_REGNUM, // MM30501LLDB_INVALID_REGNUM, // MM31502LLDB_INVALID_REGNUM, // MM40503LLDB_INVALID_REGNUM, // MM41504LLDB_INVALID_REGNUM, // MM50505LLDB_INVALID_REGNUM, // MM51506LLDB_INVALID_REGNUM, // MM60507LLDB_INVALID_REGNUM, // MM61508LLDB_INVALID_REGNUM, // MM70509LLDB_INVALID_REGNUM, // MM71510lldb_xmm8_x86_64, // XMM8511lldb_xmm9_x86_64, // XMM9512lldb_xmm10_x86_64, // XMM10513lldb_xmm11_x86_64, // XMM11514lldb_xmm12_x86_64, // XMM12515lldb_xmm13_x86_64, // XMM13516lldb_xmm14_x86_64, // XMM14517lldb_xmm15_x86_64, // XMM15518LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,519LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,520LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,521LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,522LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,523LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,524LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,525LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,526LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,527LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,528LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,529LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,530LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,531LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,532LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,533LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,534LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,535LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,536LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,537LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,538LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,539LLDB_INVALID_REGNUM,540lldb_sil_x86_64, // SIL541lldb_dil_x86_64, // DIL542lldb_bpl_x86_64, // BPL543lldb_spl_x86_64, // SPL544lldb_rax_x86_64, // RAX545lldb_rbx_x86_64, // RBX546lldb_rcx_x86_64, // RCX547lldb_rdx_x86_64, // RDX548lldb_rsi_x86_64, // RSI549lldb_rdi_x86_64, // RDI550lldb_rbp_x86_64, // RBP551lldb_rsp_x86_64, // RSP552lldb_r8_x86_64, // R8553lldb_r9_x86_64, // R9554lldb_r10_x86_64, // R10555lldb_r11_x86_64, // R11556lldb_r12_x86_64, // R12557lldb_r13_x86_64, // R13558lldb_r14_x86_64, // R14559lldb_r15_x86_64, // R15560lldb_r8l_x86_64, // R8B561lldb_r9l_x86_64, // R9B562lldb_r10l_x86_64, // R10B563lldb_r11l_x86_64, // R11B564lldb_r12l_x86_64, // R12B565lldb_r13l_x86_64, // R13B566lldb_r14l_x86_64, // R14B567lldb_r15l_x86_64, // R15B568lldb_r8w_x86_64, // R8W569lldb_r9w_x86_64, // R9W570lldb_r10w_x86_64, // R10W571lldb_r11w_x86_64, // R11W572lldb_r12w_x86_64, // R12W573lldb_r13w_x86_64, // R13W574lldb_r14w_x86_64, // R14W575lldb_r15w_x86_64, // R15W576lldb_r8d_x86_64, // R8D577lldb_r9d_x86_64, // R9D578lldb_r10d_x86_64, // R10D579lldb_r11d_x86_64, // R11D580lldb_r12d_x86_64, // R12D581lldb_r13d_x86_64, // R13D582lldb_r14d_x86_64, // R14D583lldb_r15d_x86_64, // R15D584lldb_ymm0_x86_64, // AMD64_YMM0585lldb_ymm1_x86_64, // AMD64_YMM1586lldb_ymm2_x86_64, // AMD64_YMM2587lldb_ymm3_x86_64, // AMD64_YMM3588lldb_ymm4_x86_64, // AMD64_YMM4589lldb_ymm5_x86_64, // AMD64_YMM5590lldb_ymm6_x86_64, // AMD64_YMM6591lldb_ymm7_x86_64, // AMD64_YMM7592lldb_ymm8_x86_64, // AMD64_YMM8593lldb_ymm9_x86_64, // AMD64_YMM9594lldb_ymm10_x86_64, // AMD64_YMM10595lldb_ymm11_x86_64, // AMD64_YMM11596lldb_ymm12_x86_64, // AMD64_YMM12597lldb_ymm13_x86_64, // AMD64_YMM13598lldb_ymm14_x86_64, // AMD64_YMM14599lldb_ymm15_x86_64, // AMD64_YMM15600LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,601LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,602LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,603LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,604lldb_bnd0_x86_64, // BND0605lldb_bnd1_x86_64, // BND1606lldb_bnd2_x86_64 // BND2607};608609uint32_t lldb_private::npdb::GetLLDBRegisterNumber(610llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) {611switch (arch_type) {612case llvm::Triple::aarch64:613if (static_cast<uint16_t>(register_id) <614sizeof(g_code_view_to_lldb_registers_arm64) /615sizeof(g_code_view_to_lldb_registers_arm64[0]))616return g_code_view_to_lldb_registers_arm64[static_cast<uint16_t>(617register_id)];618619return LLDB_INVALID_REGNUM;620case llvm::Triple::x86:621if (static_cast<uint16_t>(register_id) <622sizeof(g_code_view_to_lldb_registers_x86) /623sizeof(g_code_view_to_lldb_registers_x86[0]))624return g_code_view_to_lldb_registers_x86[static_cast<uint16_t>(625register_id)];626627switch (register_id) {628case llvm::codeview::RegisterId::MXCSR:629return lldb_mxcsr_i386;630case llvm::codeview::RegisterId::BND0:631return lldb_bnd0_i386;632case llvm::codeview::RegisterId::BND1:633return lldb_bnd1_i386;634case llvm::codeview::RegisterId::BND2:635return lldb_bnd2_i386;636default:637return LLDB_INVALID_REGNUM;638}639case llvm::Triple::x86_64:640if (static_cast<uint16_t>(register_id) <641sizeof(g_code_view_to_lldb_registers_x86_64) /642sizeof(g_code_view_to_lldb_registers_x86_64[0]))643return g_code_view_to_lldb_registers_x86_64[static_cast<uint16_t>(644register_id)];645646return LLDB_INVALID_REGNUM;647default:648return LLDB_INVALID_REGNUM;649}650}651652uint32_t653lldb_private::npdb::GetRegisterSize(llvm::codeview::RegisterId register_id) {654switch(register_id) {655case llvm::codeview::RegisterId::AL:656case llvm::codeview::RegisterId::BL:657case llvm::codeview::RegisterId::CL:658case llvm::codeview::RegisterId::DL:659case llvm::codeview::RegisterId::AH:660case llvm::codeview::RegisterId::BH:661case llvm::codeview::RegisterId::CH:662case llvm::codeview::RegisterId::DH:663case llvm::codeview::RegisterId::SIL:664case llvm::codeview::RegisterId::DIL:665case llvm::codeview::RegisterId::BPL:666case llvm::codeview::RegisterId::SPL:667case llvm::codeview::RegisterId::R8B:668case llvm::codeview::RegisterId::R9B:669case llvm::codeview::RegisterId::R10B:670case llvm::codeview::RegisterId::R11B:671case llvm::codeview::RegisterId::R12B:672case llvm::codeview::RegisterId::R13B:673case llvm::codeview::RegisterId::R14B:674case llvm::codeview::RegisterId::R15B:675return 1;676case llvm::codeview::RegisterId::AX:677case llvm::codeview::RegisterId::BX:678case llvm::codeview::RegisterId::CX:679case llvm::codeview::RegisterId::DX:680case llvm::codeview::RegisterId::SP:681case llvm::codeview::RegisterId::BP:682case llvm::codeview::RegisterId::SI:683case llvm::codeview::RegisterId::DI:684case llvm::codeview::RegisterId::R8W:685case llvm::codeview::RegisterId::R9W:686case llvm::codeview::RegisterId::R10W:687case llvm::codeview::RegisterId::R11W:688case llvm::codeview::RegisterId::R12W:689case llvm::codeview::RegisterId::R13W:690case llvm::codeview::RegisterId::R14W:691case llvm::codeview::RegisterId::R15W:692return 2;693case llvm::codeview::RegisterId::EAX:694case llvm::codeview::RegisterId::EBX:695case llvm::codeview::RegisterId::ECX:696case llvm::codeview::RegisterId::EDX:697case llvm::codeview::RegisterId::ESP:698case llvm::codeview::RegisterId::EBP:699case llvm::codeview::RegisterId::ESI:700case llvm::codeview::RegisterId::EDI:701case llvm::codeview::RegisterId::R8D:702case llvm::codeview::RegisterId::R9D:703case llvm::codeview::RegisterId::R10D:704case llvm::codeview::RegisterId::R11D:705case llvm::codeview::RegisterId::R12D:706case llvm::codeview::RegisterId::R13D:707case llvm::codeview::RegisterId::R14D:708case llvm::codeview::RegisterId::R15D:709return 4;710case llvm::codeview::RegisterId::RAX:711case llvm::codeview::RegisterId::RBX:712case llvm::codeview::RegisterId::RCX:713case llvm::codeview::RegisterId::RDX:714case llvm::codeview::RegisterId::RSI:715case llvm::codeview::RegisterId::RDI:716case llvm::codeview::RegisterId::RBP:717case llvm::codeview::RegisterId::RSP:718case llvm::codeview::RegisterId::R8:719case llvm::codeview::RegisterId::R9:720case llvm::codeview::RegisterId::R10:721case llvm::codeview::RegisterId::R11:722case llvm::codeview::RegisterId::R12:723case llvm::codeview::RegisterId::R13:724case llvm::codeview::RegisterId::R14:725case llvm::codeview::RegisterId::R15:726return 8;727case llvm::codeview::RegisterId::XMM0:728case llvm::codeview::RegisterId::XMM1:729case llvm::codeview::RegisterId::XMM2:730case llvm::codeview::RegisterId::XMM3:731case llvm::codeview::RegisterId::XMM4:732case llvm::codeview::RegisterId::XMM5:733case llvm::codeview::RegisterId::XMM6:734case llvm::codeview::RegisterId::XMM7:735case llvm::codeview::RegisterId::XMM8:736case llvm::codeview::RegisterId::XMM9:737case llvm::codeview::RegisterId::XMM10:738case llvm::codeview::RegisterId::XMM11:739case llvm::codeview::RegisterId::XMM12:740case llvm::codeview::RegisterId::XMM13:741case llvm::codeview::RegisterId::XMM14:742case llvm::codeview::RegisterId::XMM15:743return 16;744default:745return 0;746}747}748749750