LLDB mainline
|
#include <RegisterContextDarwin_x86_64.h>
Classes | |
struct | EXC |
struct | FPU |
struct | GPR |
struct | MMSReg |
struct | XMMReg |
Protected Types | |
enum | { GPRRegSet = 4 , FPURegSet = 5 , EXCRegSet = 6 } |
enum | { GPRWordCount = sizeof(GPR) / sizeof(uint32_t) , FPUWordCount = sizeof(FPU) / sizeof(uint32_t) , EXCWordCount = sizeof(EXC) / sizeof(uint32_t) } |
enum | { Read = 0 , Write = 1 , kNumErrors = 2 } |
Protected Member Functions | |
void | InvalidateAllRegisterStates () |
int | GetError (int flavor, uint32_t err_idx) const |
bool | SetError (int flavor, uint32_t err_idx, int err) |
bool | RegisterSetIsCached (int set) const |
void | LogGPR (lldb_private::Log *log, const char *format,...) |
int | ReadGPR (bool force) |
int | ReadFPU (bool force) |
int | ReadEXC (bool force) |
int | WriteGPR () |
int | WriteFPU () |
int | WriteEXC () |
virtual int | DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)=0 |
virtual int | DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)=0 |
virtual int | DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)=0 |
virtual int | DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)=0 |
virtual int | DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)=0 |
virtual int | DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)=0 |
int | ReadRegisterSet (uint32_t set, bool force) |
int | WriteRegisterSet (uint32_t set) |
Protected Member Functions inherited from lldb_private::RegisterContext | |
virtual bool | BehavesLikeZerothFrame () const |
Indicates that this frame is currently executing code, that the PC value is not a return-pc but an actual executing instruction. |
Static Protected Member Functions | |
static uint32_t | GetRegisterNumber (uint32_t reg_kind, uint32_t reg_num) |
static int | GetSetForNativeRegNum (int reg_num) |
static size_t | GetRegisterInfosCount () |
static const lldb_private::RegisterInfo * | GetRegisterInfos () |
Protected Attributes | |
GPR | gpr |
FPU | fpu |
EXC | exc |
int | gpr_errs [2] |
int | fpu_errs [2] |
int | exc_errs [2] |
Protected Attributes inherited from lldb_private::RegisterContext | |
Thread & | m_thread |
uint32_t | m_concrete_frame_idx |
uint32_t | m_stop_id |
Definition at line 15 of file RegisterContextDarwin_x86_64.h.
|
protected |
Enumerator | |
---|---|
GPRWordCount | |
FPUWordCount | |
EXCWordCount |
Definition at line 110 of file RegisterContextDarwin_x86_64.h.
|
protected |
Enumerator | |
---|---|
GPRRegSet | |
FPURegSet | |
EXCRegSet |
Definition at line 108 of file RegisterContextDarwin_x86_64.h.
|
protected |
Enumerator | |
---|---|
Read | |
Write | |
kNumErrors |
Definition at line 116 of file RegisterContextDarwin_x86_64.h.
RegisterContextDarwin_x86_64::RegisterContextDarwin_x86_64 | ( | lldb_private::Thread & | thread, |
uint32_t | concrete_frame_idx ) |
Definition at line 454 of file RegisterContextDarwin_x86_64.cpp.
References exc, exc_errs, fpu, fpu_errs, gpr, gpr_errs, kNumErrors, and lldb_private::RegisterContext::RegisterContext().
Referenced by RegisterContextDarwin_x86_64_Mach::RegisterContextDarwin_x86_64_Mach(), and RegisterContextKDP_x86_64::RegisterContextKDP_x86_64().
|
overridedefault |
|
overridevirtual |
Convert from a given register numbering scheme to the lldb register numbering scheme.
There may be multiple ways to enumerate the registers for a given architecture. ABI references will specify one to be used with DWARF, the register numberings from process plugin, there may be a variation used for eh_frame unwind instructions (e.g. on Darwin), and so on. Register 5 by itself is meaningless - RegisterKind enumeration tells you what context that number should be translated as.
Inside lldb, register numbers are in the eRegisterKindLLDB scheme; arguments which take a register number should take one in that scheme.
eRegisterKindGeneric is a special numbering scheme which gives us constant values for the pc, frame register, stack register, etc., for use within lldb. They may not be defined for all architectures but it allows generic code to translate these common registers into the lldb numbering scheme.
This method translates a given register kind + register number into the eRegisterKindLLDB register numbering.
[in] | kind | The register numbering scheme (RegisterKind) that the following register number is in. |
[in] | num | A register number in the 'kind' register numbering scheme. |
Reimplemented from lldb_private::RegisterContext.
Definition at line 923 of file RegisterContextDarwin_x86_64.cpp.
References ehframe_dwarf_fpu_stmm0, ehframe_dwarf_fpu_stmm1, ehframe_dwarf_fpu_stmm2, ehframe_dwarf_fpu_stmm3, ehframe_dwarf_fpu_stmm4, ehframe_dwarf_fpu_stmm5, ehframe_dwarf_fpu_stmm6, ehframe_dwarf_fpu_stmm7, ehframe_dwarf_fpu_xmm0, ehframe_dwarf_fpu_xmm1, ehframe_dwarf_fpu_xmm10, ehframe_dwarf_fpu_xmm11, ehframe_dwarf_fpu_xmm12, ehframe_dwarf_fpu_xmm13, ehframe_dwarf_fpu_xmm14, ehframe_dwarf_fpu_xmm15, ehframe_dwarf_fpu_xmm2, ehframe_dwarf_fpu_xmm3, ehframe_dwarf_fpu_xmm4, ehframe_dwarf_fpu_xmm5, ehframe_dwarf_fpu_xmm6, ehframe_dwarf_fpu_xmm7, ehframe_dwarf_fpu_xmm8, ehframe_dwarf_fpu_xmm9, ehframe_dwarf_gpr_r10, ehframe_dwarf_gpr_r11, ehframe_dwarf_gpr_r12, ehframe_dwarf_gpr_r13, ehframe_dwarf_gpr_r14, ehframe_dwarf_gpr_r15, ehframe_dwarf_gpr_r8, ehframe_dwarf_gpr_r9, ehframe_dwarf_gpr_rax, ehframe_dwarf_gpr_rbp, ehframe_dwarf_gpr_rbx, ehframe_dwarf_gpr_rcx, ehframe_dwarf_gpr_rdi, ehframe_dwarf_gpr_rdx, ehframe_dwarf_gpr_rip, ehframe_dwarf_gpr_rsi, ehframe_dwarf_gpr_rsp, lldb::eRegisterKindDWARF, lldb::eRegisterKindEHFrame, lldb::eRegisterKindGeneric, lldb::eRegisterKindLLDB, fpu_stmm0, fpu_stmm1, fpu_stmm2, fpu_stmm3, fpu_stmm4, fpu_stmm5, fpu_stmm6, fpu_stmm7, fpu_xmm0, fpu_xmm1, fpu_xmm10, fpu_xmm11, fpu_xmm12, fpu_xmm13, fpu_xmm14, fpu_xmm15, fpu_xmm2, fpu_xmm3, fpu_xmm4, fpu_xmm5, fpu_xmm6, fpu_xmm7, fpu_xmm8, fpu_xmm9, gpr_r10, gpr_r11, gpr_r12, gpr_r13, gpr_r14, gpr_r15, gpr_r8, gpr_r9, gpr_rax, gpr_rbp, gpr_rbx, gpr_rcx, gpr_rdi, gpr_rdx, gpr_rflags, gpr_rip, gpr_rsi, gpr_rsp, LLDB_INVALID_REGNUM, LLDB_REGNUM_GENERIC_FLAGS, LLDB_REGNUM_GENERIC_FP, LLDB_REGNUM_GENERIC_PC, LLDB_REGNUM_GENERIC_RA, and LLDB_REGNUM_GENERIC_SP.
|
protectedpure virtual |
Implemented in RegisterContextDarwin_x86_64_Mach, RegisterContextKDP_x86_64, and RegisterContextMach_x86_64.
References exc.
Referenced by ReadEXC().
|
protectedpure virtual |
Implemented in RegisterContextDarwin_x86_64_Mach, RegisterContextKDP_x86_64, and RegisterContextMach_x86_64.
References fpu.
Referenced by ReadFPU().
|
protectedpure virtual |
Implemented in RegisterContextDarwin_x86_64_Mach, RegisterContextKDP_x86_64, and RegisterContextMach_x86_64.
References gpr.
Referenced by ReadGPR().
|
protectedpure virtual |
Implemented in RegisterContextDarwin_x86_64_Mach, RegisterContextKDP_x86_64, and RegisterContextMach_x86_64.
References exc.
Referenced by WriteEXC().
|
protectedpure virtual |
Implemented in RegisterContextDarwin_x86_64_Mach, RegisterContextKDP_x86_64, and RegisterContextMach_x86_64.
References fpu.
Referenced by WriteFPU().
|
protectedpure virtual |
Implemented in RegisterContextDarwin_x86_64_Mach, RegisterContextKDP_x86_64, and RegisterContextMach_x86_64.
References gpr.
Referenced by WriteGPR().
|
inlineprotected |
Definition at line 131 of file RegisterContextDarwin_x86_64.h.
References exc_errs, EXCRegSet, fpu_errs, FPURegSet, gpr_errs, GPRRegSet, and kNumErrors.
Referenced by ReadEXC(), ReadFPU(), ReadGPR(), RegisterSetIsCached(), WriteEXC(), WriteFPU(), and WriteGPR().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 471 of file RegisterContextDarwin_x86_64.cpp.
References k_num_register_infos, and k_num_registers.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 477 of file RegisterContextDarwin_x86_64.cpp.
References g_register_infos, k_num_register_infos, and k_num_registers.
|
staticprotected |
Definition at line 489 of file RegisterContextDarwin_x86_64.cpp.
References g_register_infos.
|
staticprotected |
Definition at line 484 of file RegisterContextDarwin_x86_64.cpp.
References k_num_register_infos.
|
staticprotected |
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 530 of file RegisterContextDarwin_x86_64.cpp.
References g_reg_sets, and k_num_regsets.
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 525 of file RegisterContextDarwin_x86_64.cpp.
References k_num_regsets.
|
staticprotected |
Definition at line 536 of file RegisterContextDarwin_x86_64.cpp.
References exc_trapno, EXCRegSet, fpu_fcw, FPURegSet, GPRRegSet, and k_num_registers.
Referenced by ReadRegister(), and WriteRegister().
Reimplemented from lldb_private::RegisterContext.
Definition at line 1032 of file RegisterContextDarwin_x86_64.cpp.
References gpr, ReadGPR(), and WriteGPR().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Reimplemented in RegisterContextDarwin_x86_64_Mach.
Definition at line 467 of file RegisterContextDarwin_x86_64.cpp.
References InvalidateAllRegisterStates().
|
inlineprotected |
Definition at line 125 of file RegisterContextDarwin_x86_64.h.
References EXCRegSet, FPURegSet, GPRRegSet, Read, and SetError().
Referenced by InvalidateAllRegisters().
|
protected |
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 883 of file RegisterContextDarwin_x86_64.cpp.
References exc, fpu, gpr, ReadEXC(), ReadFPU(), ReadGPR(), and REG_CONTEXT_SIZE.
|
protected |
Definition at line 562 of file RegisterContextDarwin_x86_64.cpp.
References DoReadEXC(), exc, EXCRegSet, GetError(), lldb_private::RegisterContext::GetThreadID(), Read, RegisterSetIsCached(), and SetError().
Referenced by ReadAllRegisterValues(), and ReadRegisterSet().
|
protected |
Definition at line 554 of file RegisterContextDarwin_x86_64.cpp.
References DoReadFPU(), fpu, FPURegSet, GetError(), lldb_private::RegisterContext::GetThreadID(), Read, RegisterSetIsCached(), and SetError().
Referenced by ReadAllRegisterValues(), and ReadRegisterSet().
|
protected |
Definition at line 546 of file RegisterContextDarwin_x86_64.cpp.
References DoReadGPR(), GetError(), lldb_private::RegisterContext::GetThreadID(), gpr, GPRRegSet, Read, RegisterSetIsCached(), and SetError().
Referenced by HardwareSingleStep(), ReadAllRegisterValues(), and ReadRegisterSet().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 632 of file RegisterContextDarwin_x86_64.cpp.
References lldb_private::RegisterInfo::byte_size, lldb::eRegisterKindLLDB, exc, exc_err, exc_faultvaddr, exc_trapno, fpu, fpu_cs, fpu_dp, fpu_ds, fpu_fcw, fpu_fop, fpu_fsw, fpu_ftw, fpu_ip, fpu_mxcsr, fpu_mxcsrmask, fpu_stmm0, fpu_stmm1, fpu_stmm2, fpu_stmm3, fpu_stmm4, fpu_stmm5, fpu_stmm6, fpu_stmm7, fpu_xmm0, fpu_xmm1, fpu_xmm10, fpu_xmm11, fpu_xmm12, fpu_xmm13, fpu_xmm14, fpu_xmm15, fpu_xmm2, fpu_xmm3, fpu_xmm4, fpu_xmm5, fpu_xmm6, fpu_xmm7, fpu_xmm8, fpu_xmm9, GetSetForNativeRegNum(), gpr, gpr_cs, gpr_fs, gpr_gs, gpr_r10, gpr_r11, gpr_r12, gpr_r13, gpr_r14, gpr_r15, gpr_r8, gpr_r9, gpr_rax, gpr_rbp, gpr_rbx, gpr_rcx, gpr_rdi, gpr_rdx, gpr_rflags, gpr_rip, gpr_rsi, gpr_rsp, lldb_private::endian::InlHostByteOrder(), lldb_private::RegisterInfo::kinds, ReadRegisterSet(), and lldb_private::RegisterValue::SetBytes().
|
protected |
Definition at line 603 of file RegisterContextDarwin_x86_64.cpp.
References EXCRegSet, FPURegSet, GPRRegSet, ReadEXC(), ReadFPU(), and ReadGPR().
Referenced by ReadRegister(), and WriteRegister().
|
inlineprotected |
Definition at line 171 of file RegisterContextDarwin_x86_64.h.
References GetError(), and Read.
Referenced by ReadEXC(), ReadFPU(), ReadGPR(), WriteEXC(), WriteFPU(), and WriteGPR().
|
inlineprotected |
Definition at line 149 of file RegisterContextDarwin_x86_64.h.
References exc_errs, EXCRegSet, fpu_errs, FPURegSet, gpr_errs, GPRRegSet, and kNumErrors.
Referenced by InvalidateAllRegisterStates(), ReadEXC(), ReadFPU(), ReadGPR(), RegisterContextDarwin_x86_64_Mach::SetRegisterDataFrom_LC_THREAD(), WriteEXC(), WriteFPU(), and WriteGPR().
|
overridevirtual |
Reimplemented from lldb_private::RegisterContext.
Definition at line 900 of file RegisterContextDarwin_x86_64.cpp.
References exc, fpu, gpr, REG_CONTEXT_SIZE, WriteEXC(), WriteFPU(), and WriteGPR().
|
protected |
Definition at line 592 of file RegisterContextDarwin_x86_64.cpp.
References DoWriteEXC(), exc, EXCRegSet, GetError(), lldb_private::RegisterContext::GetThreadID(), Read, RegisterSetIsCached(), SetError(), and Write.
Referenced by WriteAllRegisterValues(), and WriteRegisterSet().
|
protected |
Definition at line 581 of file RegisterContextDarwin_x86_64.cpp.
References DoWriteFPU(), fpu, FPURegSet, GetError(), lldb_private::RegisterContext::GetThreadID(), Read, RegisterSetIsCached(), SetError(), and Write.
Referenced by WriteAllRegisterValues(), and WriteRegisterSet().
|
protected |
Definition at line 570 of file RegisterContextDarwin_x86_64.cpp.
References DoWriteGPR(), GetError(), lldb_private::RegisterContext::GetThreadID(), gpr, GPRRegSet, Read, RegisterSetIsCached(), SetError(), and Write.
Referenced by HardwareSingleStep(), WriteAllRegisterValues(), and WriteRegisterSet().
|
overridevirtual |
Implements lldb_private::RegisterContext.
Definition at line 757 of file RegisterContextDarwin_x86_64.cpp.
References lldb::eRegisterKindLLDB, exc, exc_err, exc_faultvaddr, exc_trapno, fpu, fpu_cs, fpu_dp, fpu_ds, fpu_fcw, fpu_fop, fpu_fsw, fpu_ftw, fpu_ip, fpu_mxcsr, fpu_mxcsrmask, fpu_stmm0, fpu_stmm1, fpu_stmm2, fpu_stmm3, fpu_stmm4, fpu_stmm5, fpu_stmm6, fpu_stmm7, fpu_xmm0, fpu_xmm1, fpu_xmm10, fpu_xmm11, fpu_xmm12, fpu_xmm13, fpu_xmm14, fpu_xmm15, fpu_xmm2, fpu_xmm3, fpu_xmm4, fpu_xmm5, fpu_xmm6, fpu_xmm7, fpu_xmm8, fpu_xmm9, lldb_private::RegisterValue::GetAsUInt16(), lldb_private::RegisterValue::GetAsUInt32(), lldb_private::RegisterValue::GetAsUInt64(), lldb_private::RegisterValue::GetAsUInt8(), lldb_private::RegisterValue::GetBytes(), lldb_private::RegisterValue::GetByteSize(), GetSetForNativeRegNum(), gpr, gpr_cs, gpr_fs, gpr_gs, gpr_r10, gpr_r11, gpr_r12, gpr_r13, gpr_r14, gpr_r15, gpr_r8, gpr_r9, gpr_rax, gpr_rbp, gpr_rbx, gpr_rcx, gpr_rdi, gpr_rdx, gpr_rflags, gpr_rip, gpr_rsi, gpr_rsp, lldb_private::RegisterInfo::kinds, ReadRegisterSet(), and WriteRegisterSet().
|
protected |
Definition at line 617 of file RegisterContextDarwin_x86_64.cpp.
References EXCRegSet, FPURegSet, GPRRegSet, WriteEXC(), WriteFPU(), and WriteGPR().
Referenced by WriteRegister().
|
protected |
Definition at line 120 of file RegisterContextDarwin_x86_64.h.
Referenced by DoReadEXC(), RegisterContextDarwin_x86_64_Mach::DoReadEXC(), RegisterContextKDP_x86_64::DoReadEXC(), RegisterContextMach_x86_64::DoReadEXC(), DoWriteEXC(), RegisterContextDarwin_x86_64_Mach::DoWriteEXC(), RegisterContextKDP_x86_64::DoWriteEXC(), RegisterContextMach_x86_64::DoWriteEXC(), ReadAllRegisterValues(), ReadEXC(), ReadRegister(), RegisterContextDarwin_x86_64(), RegisterContextDarwin_x86_64_Mach::SetRegisterDataFrom_LC_THREAD(), WriteAllRegisterValues(), WriteEXC(), WriteRegister(), and RegisterContextKDP_x86_64::~RegisterContextKDP_x86_64().
|
protected |
Definition at line 123 of file RegisterContextDarwin_x86_64.h.
Referenced by GetError(), RegisterContextDarwin_x86_64(), and SetError().
|
protected |
Definition at line 119 of file RegisterContextDarwin_x86_64.h.
Referenced by DoReadFPU(), RegisterContextDarwin_x86_64_Mach::DoReadFPU(), RegisterContextKDP_x86_64::DoReadFPU(), RegisterContextMach_x86_64::DoReadFPU(), DoWriteFPU(), RegisterContextDarwin_x86_64_Mach::DoWriteFPU(), RegisterContextKDP_x86_64::DoWriteFPU(), RegisterContextMach_x86_64::DoWriteFPU(), ReadAllRegisterValues(), ReadFPU(), ReadRegister(), RegisterContextDarwin_x86_64(), WriteAllRegisterValues(), WriteFPU(), WriteRegister(), and RegisterContextKDP_x86_64::~RegisterContextKDP_x86_64().
|
protected |
Definition at line 122 of file RegisterContextDarwin_x86_64.h.
Referenced by GetError(), RegisterContextDarwin_x86_64(), and SetError().
|
protected |
Definition at line 118 of file RegisterContextDarwin_x86_64.h.
Referenced by DoReadGPR(), RegisterContextDarwin_x86_64_Mach::DoReadGPR(), RegisterContextKDP_x86_64::DoReadGPR(), RegisterContextMach_x86_64::DoReadGPR(), DoWriteGPR(), RegisterContextDarwin_x86_64_Mach::DoWriteGPR(), RegisterContextKDP_x86_64::DoWriteGPR(), RegisterContextMach_x86_64::DoWriteGPR(), HardwareSingleStep(), ReadAllRegisterValues(), ReadGPR(), ReadRegister(), RegisterContextDarwin_x86_64(), RegisterContextDarwin_x86_64_Mach::SetRegisterDataFrom_LC_THREAD(), WriteAllRegisterValues(), WriteGPR(), WriteRegister(), and RegisterContextKDP_x86_64::~RegisterContextKDP_x86_64().
|
protected |
Definition at line 121 of file RegisterContextDarwin_x86_64.h.
Referenced by GetError(), RegisterContextDarwin_x86_64(), and SetError().