LLDB  mainline
RegisterContextMinidump_ARM.cpp
Go to the documentation of this file.
1 //===-- RegisterContextMinidump_ARM.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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
10 
16 #include "lldb/lldb-enumerations.h"
17 
18 // C includes
19 #include <cassert>
20 
21 // C++ includes
22 
23 using namespace lldb;
24 using namespace lldb_private;
25 using namespace minidump;
26 
27 #define INV LLDB_INVALID_REGNUM
28 #define OFFSET(r) (offsetof(RegisterContextMinidump_ARM::Context, r))
29 
30 #define DEF_R(i) \
31  { \
32  "r" #i, nullptr, 4, OFFSET(r) + i * 4, eEncodingUint, eFormatHex, \
33  {ehframe_r##i, dwarf_r##i, INV, INV, reg_r##i}, nullptr, nullptr, \
34  }
35 
36 #define DEF_R_ARG(i, n) \
37  { \
38  "r" #i, "arg" #n, 4, OFFSET(r) + i * 4, eEncodingUint, eFormatHex, \
39  {ehframe_r##i, dwarf_r##i, LLDB_REGNUM_GENERIC_ARG1 + i, INV, \
40  reg_r##i}, \
41  nullptr, nullptr, \
42  }
43 
44 #define DEF_D(i) \
45  { \
46  "d" #i, nullptr, 8, OFFSET(d) + i * 8, eEncodingVector, \
47  eFormatVectorOfUInt8, {dwarf_d##i, dwarf_d##i, INV, INV, reg_d##i}, \
48  nullptr, nullptr, \
49  }
50 
51 #define DEF_S(i) \
52  { \
53  "s" #i, nullptr, 4, OFFSET(s) + i * 4, eEncodingIEEE754, eFormatFloat, \
54  {dwarf_s##i, dwarf_s##i, INV, INV, reg_s##i}, nullptr, nullptr, \
55  }
56 
57 #define DEF_Q(i) \
58  { \
59  "q" #i, nullptr, 16, OFFSET(q) + i * 16, eEncodingVector, \
60  eFormatVectorOfUInt8, {dwarf_q##i, dwarf_q##i, INV, INV, reg_q##i}, \
61  nullptr, nullptr, \
62  }
63 
64 // Zero based LLDB register numbers for this register context
65 enum {
66  // General Purpose Registers
84  // Floating Point Registers
167 };
168 
169 static RegisterInfo g_reg_info_apple_fp = {
170  "fp",
171  "r7",
172  4,
173  OFFSET(r) + 7 * 4,
175  eFormatHex,
177  nullptr,
178  nullptr,
179 };
180 
181 static RegisterInfo g_reg_info_fp = {
182  "fp",
183  "r11",
184  4,
185  OFFSET(r) + 11 * 4,
187  eFormatHex,
189  nullptr,
190  nullptr,
191 };
192 
193 // Register info definitions for this register context
194 static RegisterInfo g_reg_infos[] = {
195  DEF_R_ARG(0, 1),
196  DEF_R_ARG(1, 2),
197  DEF_R_ARG(2, 3),
198  DEF_R_ARG(3, 4),
199  DEF_R(4),
200  DEF_R(5),
201  DEF_R(6),
202  DEF_R(7),
203  DEF_R(8),
204  DEF_R(9),
205  DEF_R(10),
206  DEF_R(11),
207  DEF_R(12),
208  {"sp",
209  "r13",
210  4,
211  OFFSET(r) + 13 * 4,
213  eFormatHex,
215  nullptr,
216  nullptr,
217  },
218  {"lr",
219  "r14",
220  4,
221  OFFSET(r) + 14 * 4,
223  eFormatHex,
225  nullptr,
226  nullptr,
227  },
228  {"pc",
229  "r15",
230  4,
231  OFFSET(r) + 15 * 4,
233  eFormatHex,
235  nullptr,
236  nullptr,
237  },
238  {"cpsr",
239  "psr",
240  4,
241  OFFSET(cpsr),
243  eFormatHex,
245  nullptr,
246  nullptr,
247  },
248  {"fpscr",
249  nullptr,
250  8,
251  OFFSET(fpscr),
253  eFormatHex,
254  {INV, INV, INV, INV, reg_fpscr},
255  nullptr,
256  nullptr,
257  },
258  DEF_D(0),
259  DEF_D(1),
260  DEF_D(2),
261  DEF_D(3),
262  DEF_D(4),
263  DEF_D(5),
264  DEF_D(6),
265  DEF_D(7),
266  DEF_D(8),
267  DEF_D(9),
268  DEF_D(10),
269  DEF_D(11),
270  DEF_D(12),
271  DEF_D(13),
272  DEF_D(14),
273  DEF_D(15),
274  DEF_D(16),
275  DEF_D(17),
276  DEF_D(18),
277  DEF_D(19),
278  DEF_D(20),
279  DEF_D(21),
280  DEF_D(22),
281  DEF_D(23),
282  DEF_D(24),
283  DEF_D(25),
284  DEF_D(26),
285  DEF_D(27),
286  DEF_D(28),
287  DEF_D(29),
288  DEF_D(30),
289  DEF_D(31),
290  DEF_S(0),
291  DEF_S(1),
292  DEF_S(2),
293  DEF_S(3),
294  DEF_S(4),
295  DEF_S(5),
296  DEF_S(6),
297  DEF_S(7),
298  DEF_S(8),
299  DEF_S(9),
300  DEF_S(10),
301  DEF_S(11),
302  DEF_S(12),
303  DEF_S(13),
304  DEF_S(14),
305  DEF_S(15),
306  DEF_S(16),
307  DEF_S(17),
308  DEF_S(18),
309  DEF_S(19),
310  DEF_S(20),
311  DEF_S(21),
312  DEF_S(22),
313  DEF_S(23),
314  DEF_S(24),
315  DEF_S(25),
316  DEF_S(26),
317  DEF_S(27),
318  DEF_S(28),
319  DEF_S(29),
320  DEF_S(30),
321  DEF_S(31),
322  DEF_Q(0),
323  DEF_Q(1),
324  DEF_Q(2),
325  DEF_Q(3),
326  DEF_Q(4),
327  DEF_Q(5),
328  DEF_Q(6),
329  DEF_Q(7),
330  DEF_Q(8),
331  DEF_Q(9),
332  DEF_Q(10),
333  DEF_Q(11),
334  DEF_Q(12),
335  DEF_Q(13),
336  DEF_Q(14),
337  DEF_Q(15)};
338 
339 constexpr size_t k_num_reg_infos = llvm::array_lengthof(g_reg_infos);
340 
341 // ARM general purpose registers.
343  reg_r0,
344  reg_r1,
345  reg_r2,
346  reg_r3,
347  reg_r4,
348  reg_r5,
349  reg_r6,
350  reg_r7,
351  reg_r8,
352  reg_r9,
353  reg_r10,
354  reg_r11,
355  reg_r12,
356  reg_sp,
357  reg_lr,
358  reg_pc,
359  reg_cpsr,
360  LLDB_INVALID_REGNUM // register sets need to end with this flag
361 };
363  reg_fpscr,
364  reg_d0,
365  reg_d1,
366  reg_d2,
367  reg_d3,
368  reg_d4,
369  reg_d5,
370  reg_d6,
371  reg_d7,
372  reg_d8,
373  reg_d9,
374  reg_d10,
375  reg_d11,
376  reg_d12,
377  reg_d13,
378  reg_d14,
379  reg_d15,
380  reg_d16,
381  reg_d17,
382  reg_d18,
383  reg_d19,
384  reg_d20,
385  reg_d21,
386  reg_d22,
387  reg_d23,
388  reg_d24,
389  reg_d25,
390  reg_d26,
391  reg_d27,
392  reg_d28,
393  reg_d29,
394  reg_d30,
395  reg_d31,
396  reg_s0,
397  reg_s1,
398  reg_s2,
399  reg_s3,
400  reg_s4,
401  reg_s5,
402  reg_s6,
403  reg_s7,
404  reg_s8,
405  reg_s9,
406  reg_s10,
407  reg_s11,
408  reg_s12,
409  reg_s13,
410  reg_s14,
411  reg_s15,
412  reg_s16,
413  reg_s17,
414  reg_s18,
415  reg_s19,
416  reg_s20,
417  reg_s21,
418  reg_s22,
419  reg_s23,
420  reg_s24,
421  reg_s25,
422  reg_s26,
423  reg_s27,
424  reg_s28,
425  reg_s29,
426  reg_s30,
427  reg_s31,
428  reg_q0,
429  reg_q1,
430  reg_q2,
431  reg_q3,
432  reg_q4,
433  reg_q5,
434  reg_q6,
435  reg_q7,
436  reg_q8,
437  reg_q9,
438  reg_q10,
439  reg_q11,
440  reg_q12,
441  reg_q13,
442  reg_q14,
443  reg_q15,
444  LLDB_INVALID_REGNUM // register sets need to end with this flag
445 };
446 
447 // Skip the last LLDB_INVALID_REGNUM in each count below by subtracting 1
448 constexpr size_t k_num_gpr_regs = llvm::array_lengthof(g_gpr_regnums) - 1;
449 constexpr size_t k_num_fpu_regs = llvm::array_lengthof(g_fpu_regnums) - 1;
450 
451 static RegisterSet g_reg_sets[] = {
452  {"General Purpose Registers", "gpr", k_num_gpr_regs, g_gpr_regnums},
453  {"Floating Point Registers", "fpu", k_num_fpu_regs, g_fpu_regnums},
454 };
455 
456 constexpr size_t k_num_reg_sets = llvm::array_lengthof(g_reg_sets);
457 
458 RegisterContextMinidump_ARM::RegisterContextMinidump_ARM(
459  lldb_private::Thread &thread, const DataExtractor &data, bool apple)
460  : RegisterContext(thread, 0), m_apple(apple) {
461  lldb::offset_t offset = 0;
462  m_regs.context_flags = data.GetU32(&offset);
463  for (unsigned i = 0; i < llvm::array_lengthof(m_regs.r); ++i)
464  m_regs.r[i] = data.GetU32(&offset);
465  m_regs.cpsr = data.GetU32(&offset);
466  m_regs.fpscr = data.GetU64(&offset);
467  for (unsigned i = 0; i < llvm::array_lengthof(m_regs.d); ++i)
468  m_regs.d[i] = data.GetU64(&offset);
470 }
471 
473  return k_num_regs;
474 }
475 
476 // Used for unit testing so we can verify register info is filled in for
477 // all register flavors (DWARF, EH Frame, generic, etc).
479  return GetRegisterCountStatic();
480 }
481 
482 // Used for unit testing so we can verify register info is filled in.
483 const RegisterInfo *
485  bool apple) {
486  if (reg < k_num_reg_infos) {
487  if (apple) {
488  if (reg == reg_r7)
489  return &g_reg_info_apple_fp;
490  } else {
491  if (reg == reg_r11)
492  return &g_reg_info_fp;
493  }
494  return &g_reg_infos[reg];
495  }
496  return nullptr;
497 }
498 
499 const RegisterInfo *
502 }
503 
505  return k_num_reg_sets;
506 }
507 
509  if (set < k_num_reg_sets)
510  return &g_reg_sets[set];
511  return nullptr;
512 }
513 
515  if (reg < k_num_reg_infos)
516  return g_reg_infos[reg].name;
517  return nullptr;
518 }
519 
520 bool RegisterContextMinidump_ARM::ReadRegister(const RegisterInfo *reg_info,
521  RegisterValue &reg_value) {
522  Status error;
523  reg_value.SetFromMemoryData(
524  reg_info, (const uint8_t *)&m_regs + reg_info->byte_offset,
525  reg_info->byte_size, lldb::eByteOrderLittle, error);
526  return error.Success();
527 }
528 
530  const RegisterValue &) {
531  return false;
532 }
533 
535  lldb::RegisterKind kind, uint32_t num) {
536  for (size_t i = 0; i < k_num_regs; ++i) {
537  if (g_reg_infos[i].kinds[kind] == num)
538  return i;
539  }
540  return LLDB_INVALID_REGNUM;
541 }
reg_s19
@ reg_s19
Definition: RegisterContextMinidump_ARM.cpp:137
reg_r11
@ reg_r11
Definition: RegisterContextMinidump_ARM.cpp:78
lldb_private::minidump::RegisterContextMinidump_ARM::WriteRegister
bool WriteRegister(const RegisterInfo *reg_info, const RegisterValue &reg_value) override
Definition: RegisterContextMinidump_ARM.cpp:529
reg_d25
@ reg_d25
Definition: RegisterContextMinidump_ARM.cpp:111
reg_d19
@ reg_d19
Definition: RegisterContextMinidump_ARM.cpp:105
dwarf_sp
@ dwarf_sp
Definition: ARM_DWARF_Registers.h:28
reg_q0
@ reg_q0
Definition: RegisterContextMinidump_ARM.cpp:150
reg_q2
@ reg_q2
Definition: RegisterContextMinidump_ARM.cpp:152
DEF_Q
#define DEF_Q(i)
Definition: RegisterContextMinidump_ARM.cpp:57
reg_r6
@ reg_r6
Definition: RegisterContextMinidump_ARM.cpp:73
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterSetCount
size_t GetRegisterSetCount() override
Definition: RegisterContextMinidump_ARM.cpp:504
reg_s10
@ reg_s10
Definition: RegisterContextMinidump_ARM.cpp:128
g_fpu_regnums
const uint32_t g_fpu_regnums[]
Definition: RegisterContextMinidump_ARM.cpp:362
lldb_private::minidump::RegisterContextMinidump_ARM::m_apple
const bool m_apple
Definition: RegisterContextMinidump_ARM.h:93
reg_s28
@ reg_s28
Definition: RegisterContextMinidump_ARM.cpp:146
RegisterContextMinidump_ARM.h
reg_q5
@ reg_q5
Definition: RegisterContextMinidump_ARM.cpp:155
LLDB_INVALID_REGNUM
#define LLDB_INVALID_REGNUM
Definition: lldb-defines.h:91
reg_s14
@ reg_s14
Definition: RegisterContextMinidump_ARM.cpp:132
reg_d17
@ reg_d17
Definition: RegisterContextMinidump_ARM.cpp:103
reg_r5
@ reg_r5
Definition: RegisterContextMinidump_ARM.cpp:72
lldb_private::RegisterValue
Definition: RegisterValue.h:28
reg_q12
@ reg_q12
Definition: RegisterContextMinidump_ARM.cpp:162
ehframe_cpsr
@ ehframe_cpsr
Definition: ARM_ehframe_Registers.h:33
reg_r3
@ reg_r3
Definition: RegisterContextMinidump_ARM.cpp:70
reg_d14
@ reg_d14
Definition: RegisterContextMinidump_ARM.cpp:100
reg_d13
@ reg_d13
Definition: RegisterContextMinidump_ARM.cpp:99
reg_d12
@ reg_d12
Definition: RegisterContextMinidump_ARM.cpp:98
reg_s15
@ reg_s15
Definition: RegisterContextMinidump_ARM.cpp:133
reg_s29
@ reg_s29
Definition: RegisterContextMinidump_ARM.cpp:147
reg_d31
@ reg_d31
Definition: RegisterContextMinidump_ARM.cpp:117
reg_s1
@ reg_s1
Definition: RegisterContextMinidump_ARM.cpp:119
reg_s25
@ reg_s25
Definition: RegisterContextMinidump_ARM.cpp:143
g_gpr_regnums
const uint32_t g_gpr_regnums[]
Definition: RegisterContextMinidump_ARM.cpp:342
reg_s8
@ reg_s8
Definition: RegisterContextMinidump_ARM.cpp:126
reg_r8
@ reg_r8
Definition: RegisterContextMinidump_ARM.cpp:75
OFFSET
#define OFFSET(r)
Definition: RegisterContextMinidump_ARM.cpp:28
reg_d29
@ reg_d29
Definition: RegisterContextMinidump_ARM.cpp:115
reg_q1
@ reg_q1
Definition: RegisterContextMinidump_ARM.cpp:151
reg_q4
@ reg_q4
Definition: RegisterContextMinidump_ARM.cpp:154
reg_s4
@ reg_s4
Definition: RegisterContextMinidump_ARM.cpp:122
reg_r0
@ reg_r0
Definition: RegisterContextMinidump_ARM.cpp:67
lldb::offset_t
uint64_t offset_t
Definition: lldb-types.h:87
RegisterValue.h
lldb_private::minidump::RegisterContextMinidump_ARM::Context::r
uint32_t r[16]
Definition: RegisterContextMinidump_ARM.h:74
lldb_private::minidump::RegisterContextMinidump_ARM::m_regs
Context m_regs
Definition: RegisterContextMinidump_ARM.h:92
reg_s6
@ reg_s6
Definition: RegisterContextMinidump_ARM.cpp:124
k_num_reg_sets
constexpr size_t k_num_reg_sets
Definition: RegisterContextMinidump_ARM.cpp:456
g_reg_sets
static RegisterSet g_reg_sets[]
Definition: RegisterContextMinidump_ARM.cpp:451
lldb_private::DataExtractor::GetU64
uint64_t GetU64(lldb::offset_t *offset_ptr) const
Extract a uint64_t value from *offset_ptr.
Definition: DataExtractor.cpp:476
reg_q6
@ reg_q6
Definition: RegisterContextMinidump_ARM.cpp:156
g_reg_infos
static RegisterInfo g_reg_infos[]
Definition: RegisterContextMinidump_ARM.cpp:194
reg_d10
@ reg_d10
Definition: RegisterContextMinidump_ARM.cpp:96
INV
#define INV
Definition: RegisterContextMinidump_ARM.cpp:27
lldb_private::minidump::RegisterContextMinidump_ARM::Context::cpsr
uint32_t cpsr
Definition: RegisterContextMinidump_ARM.h:75
reg_d1
@ reg_d1
Definition: RegisterContextMinidump_ARM.cpp:87
reg_s11
@ reg_s11
Definition: RegisterContextMinidump_ARM.cpp:129
dwarf_pc
@ dwarf_pc
Definition: ABISysV_mips.cpp:75
reg_d26
@ reg_d26
Definition: RegisterContextMinidump_ARM.cpp:112
LLDB_REGNUM_GENERIC_FLAGS
#define LLDB_REGNUM_GENERIC_FLAGS
Definition: lldb-defines.h:67
error
static llvm::raw_ostream & error(Stream &strm)
Definition: CommandReturnObject.cpp:17
reg_r9
@ reg_r9
Definition: RegisterContextMinidump_ARM.cpp:76
DEF_R
#define DEF_R(i)
Definition: RegisterContextMinidump_ARM.cpp:30
ARM_ehframe_Registers.h
k_num_fpu_regs
constexpr size_t k_num_fpu_regs
Definition: RegisterContextMinidump_ARM.cpp:449
LLDBAssert.h
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterInfoAtIndexStatic
static const lldb_private::RegisterInfo * GetRegisterInfoAtIndexStatic(size_t reg, bool apple)
Definition: RegisterContextMinidump_ARM.cpp:484
reg_s2
@ reg_s2
Definition: RegisterContextMinidump_ARM.cpp:120
lldb_private::DataExtractor
Definition: DataExtractor.h:48
reg_d16
@ reg_d16
Definition: RegisterContextMinidump_ARM.cpp:102
lldb_private::minidump::RegisterContextMinidump_ARM::Context::context_flags
uint32_t context_flags
Definition: RegisterContextMinidump_ARM.h:73
reg_sp
@ reg_sp
Definition: RegisterContextMinidump_ARM.cpp:80
lldb_private::Thread
Definition: Thread.h:60
k_num_reg_infos
constexpr size_t k_num_reg_infos
Definition: RegisterContextMinidump_ARM.cpp:339
reg_q9
@ reg_q9
Definition: RegisterContextMinidump_ARM.cpp:159
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterCountStatic
static size_t GetRegisterCountStatic()
Definition: RegisterContextMinidump_ARM.cpp:472
reg_pc
@ reg_pc
Definition: RegisterContextMinidump_ARM.cpp:82
reg_d24
@ reg_d24
Definition: RegisterContextMinidump_ARM.cpp:110
reg_s7
@ reg_s7
Definition: RegisterContextMinidump_ARM.cpp:125
reg_q11
@ reg_q11
Definition: RegisterContextMinidump_ARM.cpp:161
dwarf_r7
@ dwarf_r7
Definition: ABISysV_mips.cpp:45
lldb::eEncodingUint
@ eEncodingUint
unsigned integer
Definition: lldb-enumerations.h:148
reg_q7
@ reg_q7
Definition: RegisterContextMinidump_ARM.cpp:157
g_reg_info_apple_fp
static RegisterInfo g_reg_info_apple_fp
Definition: RegisterContextMinidump_ARM.cpp:169
reg_r2
@ reg_r2
Definition: RegisterContextMinidump_ARM.cpp:69
arm64_dwarf::cpsr
@ cpsr
Definition: ARM64_DWARF_Registers.h:53
lldb-enumerations.h
reg_s20
@ reg_s20
Definition: RegisterContextMinidump_ARM.cpp:138
reg_s0
@ reg_s0
Definition: RegisterContextMinidump_ARM.cpp:118
reg_s31
@ reg_s31
Definition: RegisterContextMinidump_ARM.cpp:149
lldb_private::minidump::RegisterContextMinidump_ARM::ConvertRegisterKindToRegisterNumber
uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind, uint32_t num) override
Convert from a given register numbering scheme to the lldb register numbering scheme.
Definition: RegisterContextMinidump_ARM.cpp:534
k_num_gpr_regs
constexpr size_t k_num_gpr_regs
Definition: RegisterContextMinidump_ARM.cpp:448
reg_s22
@ reg_s22
Definition: RegisterContextMinidump_ARM.cpp:140
reg_q14
@ reg_q14
Definition: RegisterContextMinidump_ARM.cpp:164
lldb_private::minidump::RegisterContextMinidump_ARM::Context::d
uint64_t d[32]
Definition: RegisterContextMinidump_ARM.h:78
set
set(option_framework FRAMEWORK) endif() if(LLDB_ENABLE_PYTHON) get_target_property(python_bindings_dir swig_wrapper_python BINARY_DIR) set(lldb_python_wrapper $
Definition: API/CMakeLists.txt:9
reg_d7
@ reg_d7
Definition: RegisterContextMinidump_ARM.cpp:93
dwarf_lr
@ dwarf_lr
Definition: ABISysV_ppc.cpp:105
reg_s17
@ reg_s17
Definition: RegisterContextMinidump_ARM.cpp:135
reg_d3
@ reg_d3
Definition: RegisterContextMinidump_ARM.cpp:89
reg_s27
@ reg_s27
Definition: RegisterContextMinidump_ARM.cpp:145
lldb_private::RegisterContext
Definition: RegisterContext.h:17
reg_d5
@ reg_d5
Definition: RegisterContextMinidump_ARM.cpp:91
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterCount
size_t GetRegisterCount() override
Definition: RegisterContextMinidump_ARM.cpp:478
ARM_DWARF_Registers.h
ehframe_r11
@ ehframe_r11
Definition: ARM_ehframe_Registers.h:28
lldb::RegisterKind
RegisterKind
Register numbering types.
Definition: lldb-enumerations.h:227
reg_d2
@ reg_d2
Definition: RegisterContextMinidump_ARM.cpp:88
dwarf_cpsr
@ dwarf_cpsr
Definition: ARM_DWARF_Registers.h:31
reg_q10
@ reg_q10
Definition: RegisterContextMinidump_ARM.cpp:160
reg_d28
@ reg_d28
Definition: RegisterContextMinidump_ARM.cpp:114
reg_s21
@ reg_s21
Definition: RegisterContextMinidump_ARM.cpp:139
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterName
const char * GetRegisterName(unsigned reg)
Definition: RegisterContextMinidump_ARM.cpp:514
ehframe_pc
@ ehframe_pc
Definition: ARM_ehframe_Registers.h:32
lldbassert
#define lldbassert(x)
Definition: LLDBAssert.h:15
DEF_R_ARG
#define DEF_R_ARG(i, n)
Definition: RegisterContextMinidump_ARM.cpp:36
lldb_private::RegisterValue::SetFromMemoryData
uint32_t SetFromMemoryData(const RegisterInfo *reg_info, const void *src, uint32_t src_len, lldb::ByteOrder src_byte_order, Status &error)
Definition: RegisterValue.cpp:84
reg_s23
@ reg_s23
Definition: RegisterContextMinidump_ARM.cpp:141
reg_s16
@ reg_s16
Definition: RegisterContextMinidump_ARM.cpp:134
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterInfoAtIndex
const lldb_private::RegisterInfo * GetRegisterInfoAtIndex(size_t reg) override
Definition: RegisterContextMinidump_ARM.cpp:500
reg_d9
@ reg_d9
Definition: RegisterContextMinidump_ARM.cpp:95
lldb_private::Status
Definition: Status.h:44
lldb_private::minidump::RegisterContextMinidump_ARM::Context::fpscr
uint64_t fpscr
Definition: RegisterContextMinidump_ARM.h:76
ehframe_sp
@ ehframe_sp
Definition: ARM_ehframe_Registers.h:30
reg_q15
@ reg_q15
Definition: RegisterContextMinidump_ARM.cpp:165
reg_d0
@ reg_d0
Definition: RegisterContextMinidump_ARM.cpp:86
reg_q3
@ reg_q3
Definition: RegisterContextMinidump_ARM.cpp:153
uint32_t
reg_r4
@ reg_r4
Definition: RegisterContextMinidump_ARM.cpp:71
LLDB_REGNUM_GENERIC_SP
#define LLDB_REGNUM_GENERIC_SP
Definition: lldb-defines.h:64
reg_d4
@ reg_d4
Definition: RegisterContextMinidump_ARM.cpp:90
reg_d23
@ reg_d23
Definition: RegisterContextMinidump_ARM.cpp:109
reg_d8
@ reg_d8
Definition: RegisterContextMinidump_ARM.cpp:94
reg_s3
@ reg_s3
Definition: RegisterContextMinidump_ARM.cpp:121
ehframe_lr
@ ehframe_lr
Definition: ARM_ehframe_Registers.h:31
dwarf_r11
@ dwarf_r11
Definition: ABISysV_mips.cpp:49
reg_d20
@ reg_d20
Definition: RegisterContextMinidump_ARM.cpp:106
reg_r7
@ reg_r7
Definition: RegisterContextMinidump_ARM.cpp:74
lldb_private::DataExtractor::GetU32
uint32_t GetU32(lldb::offset_t *offset_ptr) const
Extract a uint32_t value from *offset_ptr.
Definition: DataExtractor.cpp:427
reg_d11
@ reg_d11
Definition: RegisterContextMinidump_ARM.cpp:97
DEF_S
#define DEF_S(i)
Definition: RegisterContextMinidump_ARM.cpp:51
DataExtractor.h
lldb_private::minidump::RegisterContextMinidump_ARM::GetRegisterSet
const lldb_private::RegisterSet * GetRegisterSet(size_t set) override
Definition: RegisterContextMinidump_ARM.cpp:508
reg_r10
@ reg_r10
Definition: RegisterContextMinidump_ARM.cpp:77
lldb_private::minidump::RegisterContextMinidump_ARM::ReadRegister
bool ReadRegister(const RegisterInfo *reg_info, RegisterValue &reg_value) override
Definition: RegisterContextMinidump_ARM.cpp:520
lldb_private
A class that represents a running process on the host machine.
Definition: SBCommandInterpreterRunOptions.h:16
lldb::eFormatHex
@ eFormatHex
Definition: lldb-enumerations.h:169
reg_s30
@ reg_s30
Definition: RegisterContextMinidump_ARM.cpp:148
reg_r12
@ reg_r12
Definition: RegisterContextMinidump_ARM.cpp:79
LLDB_REGNUM_GENERIC_FP
#define LLDB_REGNUM_GENERIC_FP
Definition: lldb-defines.h:65
reg_s12
@ reg_s12
Definition: RegisterContextMinidump_ARM.cpp:130
DEF_D
#define DEF_D(i)
Definition: RegisterContextMinidump_ARM.cpp:44
reg_d6
@ reg_d6
Definition: RegisterContextMinidump_ARM.cpp:92
LLDB_REGNUM_GENERIC_PC
#define LLDB_REGNUM_GENERIC_PC
Definition: lldb-defines.h:63
reg_d30
@ reg_d30
Definition: RegisterContextMinidump_ARM.cpp:116
reg_q8
@ reg_q8
Definition: RegisterContextMinidump_ARM.cpp:158
reg_s18
@ reg_s18
Definition: RegisterContextMinidump_ARM.cpp:136
reg_d22
@ reg_d22
Definition: RegisterContextMinidump_ARM.cpp:108
ehframe_r7
@ ehframe_r7
Definition: ARM_ehframe_Registers.h:24
reg_d21
@ reg_d21
Definition: RegisterContextMinidump_ARM.cpp:107
reg_s13
@ reg_s13
Definition: RegisterContextMinidump_ARM.cpp:131
reg_s26
@ reg_s26
Definition: RegisterContextMinidump_ARM.cpp:144
reg_lr
@ reg_lr
Definition: RegisterContextMinidump_ARM.cpp:81
reg_s9
@ reg_s9
Definition: RegisterContextMinidump_ARM.cpp:127
lldb::eByteOrderLittle
@ eByteOrderLittle
Definition: lldb-enumerations.h:142
reg_cpsr
@ reg_cpsr
Definition: RegisterContextMinidump_ARM.cpp:83
reg_s24
@ reg_s24
Definition: RegisterContextMinidump_ARM.cpp:142
lldb
Definition: SBAddress.h:15
reg_d27
@ reg_d27
Definition: RegisterContextMinidump_ARM.cpp:113
reg_s5
@ reg_s5
Definition: RegisterContextMinidump_ARM.cpp:123
reg_q13
@ reg_q13
Definition: RegisterContextMinidump_ARM.cpp:163
reg_r1
@ reg_r1
Definition: RegisterContextMinidump_ARM.cpp:68
reg_d15
@ reg_d15
Definition: RegisterContextMinidump_ARM.cpp:101
k_num_regs
@ k_num_regs
Definition: RegisterContextMinidump_ARM.cpp:166
reg_d18
@ reg_d18
Definition: RegisterContextMinidump_ARM.cpp:104
g_reg_info_fp
static RegisterInfo g_reg_info_fp
Definition: RegisterContextMinidump_ARM.cpp:181
reg_fpscr
@ reg_fpscr
Definition: RegisterContextMinidump_ARM.cpp:85
LLDB_REGNUM_GENERIC_RA
#define LLDB_REGNUM_GENERIC_RA
Definition: lldb-defines.h:66