1 //===-- CodeViewRegisterMapping.cpp ---------------------------------------===//
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-exception
7 //===----------------------------------------------------------------------===//
9 #include "CodeViewRegisterMapping.h"
11 #include "lldb/lldb-defines.h"
13 #include "Plugins/Process/Utility/lldb-arm64-register-enums.h"
14 #include "Plugins/Process/Utility/lldb-x86-register-enums.h"
16 using namespace lldb_private
;
18 static const uint32_t g_code_view_to_lldb_registers_arm64
[] = {
19 LLDB_INVALID_REGNUM
, // NONE
20 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)
203 static const uint32_t g_code_view_to_lldb_registers_x86
[] = {
204 LLDB_INVALID_REGNUM
, // NONE
221 lldb_eax_i386
, // EAX
222 lldb_ecx_i386
, // ECX
223 lldb_edx_i386
, // EDX
224 lldb_ebx_i386
, // EBX
225 lldb_esp_i386
, // ESP
226 lldb_ebp_i386
, // EBP
227 lldb_esi_i386
, // ESI
228 lldb_edi_i386
, // EDI
235 LLDB_INVALID_REGNUM
, // IP
236 LLDB_INVALID_REGNUM
, // FLAGS
237 lldb_eip_i386
, // EIP
238 lldb_eflags_i386
, // EFLAGS
239 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
240 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
241 LLDB_INVALID_REGNUM
, // TEMP
242 LLDB_INVALID_REGNUM
, // TEMPH
243 LLDB_INVALID_REGNUM
, // QUOTE
244 LLDB_INVALID_REGNUM
, // PCDR3
245 LLDB_INVALID_REGNUM
, // PCDR4
246 LLDB_INVALID_REGNUM
, // PCDR5
247 LLDB_INVALID_REGNUM
, // PCDR6
248 LLDB_INVALID_REGNUM
, // PCDR7
249 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
, // CR0
261 LLDB_INVALID_REGNUM
, // CR1
262 LLDB_INVALID_REGNUM
, // CR2
263 LLDB_INVALID_REGNUM
, // CR3
264 LLDB_INVALID_REGNUM
, // CR4
265 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
266 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
267 lldb_dr0_i386
, // DR0
268 lldb_dr1_i386
, // DR1
269 lldb_dr2_i386
, // DR2
270 lldb_dr3_i386
, // DR3
271 lldb_dr4_i386
, // DR4
272 lldb_dr5_i386
, // DR5
273 lldb_dr6_i386
, // DR6
274 lldb_dr7_i386
, // DR7
275 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
, // GDTR
280 LLDB_INVALID_REGNUM
, // GDTL
281 LLDB_INVALID_REGNUM
, // IDTR
282 LLDB_INVALID_REGNUM
, // IDTL
283 LLDB_INVALID_REGNUM
, // LDTR
284 LLDB_INVALID_REGNUM
, // TR
285 LLDB_INVALID_REGNUM
, // PSEUDO1
286 LLDB_INVALID_REGNUM
, // PSEUDO2
287 LLDB_INVALID_REGNUM
, // PSEUDO3
288 LLDB_INVALID_REGNUM
, // PSEUDO4
289 LLDB_INVALID_REGNUM
, // PSEUDO5
290 LLDB_INVALID_REGNUM
, // PSEUDO6
291 LLDB_INVALID_REGNUM
, // PSEUDO7
292 LLDB_INVALID_REGNUM
, // PSEUDO8
293 LLDB_INVALID_REGNUM
, // PSEUDO9
294 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
295 lldb_st0_i386
, // ST0
296 lldb_st1_i386
, // ST1
297 lldb_st2_i386
, // ST2
298 lldb_st3_i386
, // ST3
299 lldb_st4_i386
, // ST4
300 lldb_st5_i386
, // ST5
301 lldb_st6_i386
, // ST6
302 lldb_st7_i386
, // ST7
303 LLDB_INVALID_REGNUM
, // CTRL
304 LLDB_INVALID_REGNUM
, // STAT
305 LLDB_INVALID_REGNUM
, // TAG
306 LLDB_INVALID_REGNUM
, // FPIP
307 LLDB_INVALID_REGNUM
, // FPCS
308 LLDB_INVALID_REGNUM
, // FPDO
309 LLDB_INVALID_REGNUM
, // FPDS
310 LLDB_INVALID_REGNUM
, // ISEM
311 LLDB_INVALID_REGNUM
, // FPEIP
312 LLDB_INVALID_REGNUM
, // FPEDO
313 lldb_mm0_i386
, // MM0
314 lldb_mm1_i386
, // MM1
315 lldb_mm2_i386
, // MM2
316 lldb_mm3_i386
, // MM3
317 lldb_mm4_i386
, // MM4
318 lldb_mm5_i386
, // MM5
319 lldb_mm6_i386
, // MM6
320 lldb_mm7_i386
, // MM7
321 lldb_xmm0_i386
, // XMM0
322 lldb_xmm1_i386
, // XMM1
323 lldb_xmm2_i386
, // XMM2
324 lldb_xmm3_i386
, // XMM3
325 lldb_xmm4_i386
, // XMM4
326 lldb_xmm5_i386
, // XMM5
327 lldb_xmm6_i386
, // XMM6
328 lldb_xmm7_i386
// XMM7
331 static const uint32_t g_code_view_to_lldb_registers_x86_64
[] = {
332 LLDB_INVALID_REGNUM
, // NONE
333 lldb_al_x86_64
, // AL
334 lldb_cl_x86_64
, // CL
335 lldb_dl_x86_64
, // DL
336 lldb_bl_x86_64
, // BL
337 lldb_ah_x86_64
, // AH
338 lldb_ch_x86_64
, // CH
339 lldb_dh_x86_64
, // DH
340 lldb_bh_x86_64
, // BH
341 lldb_ax_x86_64
, // AX
342 lldb_cx_x86_64
, // CX
343 lldb_dx_x86_64
, // DX
344 lldb_bx_x86_64
, // BX
345 lldb_sp_x86_64
, // SP
346 lldb_bp_x86_64
, // BP
347 lldb_si_x86_64
, // SI
348 lldb_di_x86_64
, // DI
349 lldb_eax_x86_64
, // EAX
350 lldb_ecx_x86_64
, // ECX
351 lldb_edx_x86_64
, // EDX
352 lldb_ebx_x86_64
, // EBX
353 lldb_esp_x86_64
, // ESP
354 lldb_ebp_x86_64
, // EBP
355 lldb_esi_x86_64
, // ESI
356 lldb_edi_x86_64
, // EDI
357 lldb_es_x86_64
, // ES
358 lldb_cs_x86_64
, // CS
359 lldb_ss_x86_64
, // SS
360 lldb_ds_x86_64
, // DS
361 lldb_fs_x86_64
, // FS
362 lldb_gs_x86_64
, // GS
363 LLDB_INVALID_REGNUM
, // IP
364 LLDB_INVALID_REGNUM
, // FLAGS
365 LLDB_INVALID_REGNUM
, // EIP
366 LLDB_INVALID_REGNUM
, // EFLAGS
367 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
368 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
369 LLDB_INVALID_REGNUM
, // TEMP
370 LLDB_INVALID_REGNUM
, // TEMPH
371 LLDB_INVALID_REGNUM
, // QUOTE
372 LLDB_INVALID_REGNUM
, // PCDR3
373 LLDB_INVALID_REGNUM
, // PCDR4
374 LLDB_INVALID_REGNUM
, // PCDR5
375 LLDB_INVALID_REGNUM
, // PCDR6
376 LLDB_INVALID_REGNUM
, // PCDR7
377 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
, // CR0
389 LLDB_INVALID_REGNUM
, // CR1
390 LLDB_INVALID_REGNUM
, // CR2
391 LLDB_INVALID_REGNUM
, // CR3
392 LLDB_INVALID_REGNUM
, // CR4
393 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
394 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
395 lldb_dr0_x86_64
, // DR0
396 lldb_dr1_x86_64
, // DR1
397 lldb_dr2_x86_64
, // DR2
398 lldb_dr3_x86_64
, // DR3
399 lldb_dr4_x86_64
, // DR4
400 lldb_dr5_x86_64
, // DR5
401 lldb_dr6_x86_64
, // DR6
402 lldb_dr7_x86_64
, // DR7
403 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
, // GDTR
408 LLDB_INVALID_REGNUM
, // GDTL
409 LLDB_INVALID_REGNUM
, // IDTR
410 LLDB_INVALID_REGNUM
, // IDTL
411 LLDB_INVALID_REGNUM
, // LDTR
412 LLDB_INVALID_REGNUM
, // TR
413 LLDB_INVALID_REGNUM
, // PSEUDO1
414 LLDB_INVALID_REGNUM
, // PSEUDO2
415 LLDB_INVALID_REGNUM
, // PSEUDO3
416 LLDB_INVALID_REGNUM
, // PSEUDO4
417 LLDB_INVALID_REGNUM
, // PSEUDO5
418 LLDB_INVALID_REGNUM
, // PSEUDO6
419 LLDB_INVALID_REGNUM
, // PSEUDO7
420 LLDB_INVALID_REGNUM
, // PSEUDO8
421 LLDB_INVALID_REGNUM
, // PSEUDO9
422 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
423 lldb_st0_x86_64
, // ST0
424 lldb_st1_x86_64
, // ST1
425 lldb_st2_x86_64
, // ST2
426 lldb_st3_x86_64
, // ST3
427 lldb_st4_x86_64
, // ST4
428 lldb_st5_x86_64
, // ST5
429 lldb_st6_x86_64
, // ST6
430 lldb_st7_x86_64
, // ST7
431 LLDB_INVALID_REGNUM
, // CTRL
432 LLDB_INVALID_REGNUM
, // STAT
433 LLDB_INVALID_REGNUM
, // TAG
434 LLDB_INVALID_REGNUM
, // FPIP
435 LLDB_INVALID_REGNUM
, // FPCS
436 LLDB_INVALID_REGNUM
, // FPDO
437 LLDB_INVALID_REGNUM
, // FPDS
438 LLDB_INVALID_REGNUM
, // ISEM
439 LLDB_INVALID_REGNUM
, // FPEIP
440 LLDB_INVALID_REGNUM
, // FPEDO
441 lldb_mm0_x86_64
, // MM0
442 lldb_mm1_x86_64
, // MM1
443 lldb_mm2_x86_64
, // MM2
444 lldb_mm3_x86_64
, // MM3
445 lldb_mm4_x86_64
, // MM4
446 lldb_mm5_x86_64
, // MM5
447 lldb_mm6_x86_64
, // MM6
448 lldb_mm7_x86_64
, // MM7
449 lldb_xmm0_x86_64
, // XMM0
450 lldb_xmm1_x86_64
, // XMM1
451 lldb_xmm2_x86_64
, // XMM2
452 lldb_xmm3_x86_64
, // XMM3
453 lldb_xmm4_x86_64
, // XMM4
454 lldb_xmm5_x86_64
, // XMM5
455 lldb_xmm6_x86_64
, // XMM6
456 lldb_xmm7_x86_64
, // XMM7
457 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
,
474 lldb_mxcsr_x86_64
, // MXCSR
475 LLDB_INVALID_REGNUM
, // EDXEAX
476 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
477 LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
, LLDB_INVALID_REGNUM
,
479 LLDB_INVALID_REGNUM
, // EMM0L
480 LLDB_INVALID_REGNUM
, // EMM1L
481 LLDB_INVALID_REGNUM
, // EMM2L
482 LLDB_INVALID_REGNUM
, // EMM3L
483 LLDB_INVALID_REGNUM
, // EMM4L
484 LLDB_INVALID_REGNUM
, // EMM5L
485 LLDB_INVALID_REGNUM
, // EMM6L
486 LLDB_INVALID_REGNUM
, // EMM7L
487 LLDB_INVALID_REGNUM
, // EMM0H
488 LLDB_INVALID_REGNUM
, // EMM1H
489 LLDB_INVALID_REGNUM
, // EMM2H
490 LLDB_INVALID_REGNUM
, // EMM3H
491 LLDB_INVALID_REGNUM
, // EMM4H
492 LLDB_INVALID_REGNUM
, // EMM5H
493 LLDB_INVALID_REGNUM
, // EMM6H
494 LLDB_INVALID_REGNUM
, // EMM7H
495 LLDB_INVALID_REGNUM
, // MM00
496 LLDB_INVALID_REGNUM
, // MM01
497 LLDB_INVALID_REGNUM
, // MM10
498 LLDB_INVALID_REGNUM
, // MM11
499 LLDB_INVALID_REGNUM
, // MM20
500 LLDB_INVALID_REGNUM
, // MM21
501 LLDB_INVALID_REGNUM
, // MM30
502 LLDB_INVALID_REGNUM
, // MM31
503 LLDB_INVALID_REGNUM
, // MM40
504 LLDB_INVALID_REGNUM
, // MM41
505 LLDB_INVALID_REGNUM
, // MM50
506 LLDB_INVALID_REGNUM
, // MM51
507 LLDB_INVALID_REGNUM
, // MM60
508 LLDB_INVALID_REGNUM
, // MM61
509 LLDB_INVALID_REGNUM
, // MM70
510 LLDB_INVALID_REGNUM
, // MM71
511 lldb_xmm8_x86_64
, // XMM8
512 lldb_xmm9_x86_64
, // XMM9
513 lldb_xmm10_x86_64
, // XMM10
514 lldb_xmm11_x86_64
, // XMM11
515 lldb_xmm12_x86_64
, // XMM12
516 lldb_xmm13_x86_64
, // XMM13
517 lldb_xmm14_x86_64
, // XMM14
518 lldb_xmm15_x86_64
, // XMM15
519 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
,
541 lldb_sil_x86_64
, // SIL
542 lldb_dil_x86_64
, // DIL
543 lldb_bpl_x86_64
, // BPL
544 lldb_spl_x86_64
, // SPL
545 lldb_rax_x86_64
, // RAX
546 lldb_rbx_x86_64
, // RBX
547 lldb_rcx_x86_64
, // RCX
548 lldb_rdx_x86_64
, // RDX
549 lldb_rsi_x86_64
, // RSI
550 lldb_rdi_x86_64
, // RDI
551 lldb_rbp_x86_64
, // RBP
552 lldb_rsp_x86_64
, // RSP
553 lldb_r8_x86_64
, // R8
554 lldb_r9_x86_64
, // R9
555 lldb_r10_x86_64
, // R10
556 lldb_r11_x86_64
, // R11
557 lldb_r12_x86_64
, // R12
558 lldb_r13_x86_64
, // R13
559 lldb_r14_x86_64
, // R14
560 lldb_r15_x86_64
, // R15
561 lldb_r8l_x86_64
, // R8B
562 lldb_r9l_x86_64
, // R9B
563 lldb_r10l_x86_64
, // R10B
564 lldb_r11l_x86_64
, // R11B
565 lldb_r12l_x86_64
, // R12B
566 lldb_r13l_x86_64
, // R13B
567 lldb_r14l_x86_64
, // R14B
568 lldb_r15l_x86_64
, // R15B
569 lldb_r8w_x86_64
, // R8W
570 lldb_r9w_x86_64
, // R9W
571 lldb_r10w_x86_64
, // R10W
572 lldb_r11w_x86_64
, // R11W
573 lldb_r12w_x86_64
, // R12W
574 lldb_r13w_x86_64
, // R13W
575 lldb_r14w_x86_64
, // R14W
576 lldb_r15w_x86_64
, // R15W
577 lldb_r8d_x86_64
, // R8D
578 lldb_r9d_x86_64
, // R9D
579 lldb_r10d_x86_64
, // R10D
580 lldb_r11d_x86_64
, // R11D
581 lldb_r12d_x86_64
, // R12D
582 lldb_r13d_x86_64
, // R13D
583 lldb_r14d_x86_64
, // R14D
584 lldb_r15d_x86_64
, // R15D
585 lldb_ymm0_x86_64
, // AMD64_YMM0
586 lldb_ymm1_x86_64
, // AMD64_YMM1
587 lldb_ymm2_x86_64
, // AMD64_YMM2
588 lldb_ymm3_x86_64
, // AMD64_YMM3
589 lldb_ymm4_x86_64
, // AMD64_YMM4
590 lldb_ymm5_x86_64
, // AMD64_YMM5
591 lldb_ymm6_x86_64
, // AMD64_YMM6
592 lldb_ymm7_x86_64
, // AMD64_YMM7
593 lldb_ymm8_x86_64
, // AMD64_YMM8
594 lldb_ymm9_x86_64
, // AMD64_YMM9
595 lldb_ymm10_x86_64
, // AMD64_YMM10
596 lldb_ymm11_x86_64
, // AMD64_YMM11
597 lldb_ymm12_x86_64
, // AMD64_YMM12
598 lldb_ymm13_x86_64
, // AMD64_YMM13
599 lldb_ymm14_x86_64
, // AMD64_YMM14
600 lldb_ymm15_x86_64
, // AMD64_YMM15
601 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
, // BND0
606 lldb_bnd1_x86_64
, // BND1
607 lldb_bnd2_x86_64
// BND2
610 uint32_t lldb_private::npdb::GetLLDBRegisterNumber(
611 llvm::Triple::ArchType arch_type
, llvm::codeview::RegisterId register_id
) {
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>(
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>(
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
;
638 return LLDB_INVALID_REGNUM
;
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>(
647 return LLDB_INVALID_REGNUM
;
649 return LLDB_INVALID_REGNUM
;
654 lldb_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
:
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
:
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
:
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
:
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
: