21#include "llvm/Support/Compiler.h"
44 "g_gpr_regnums_i386 has wrong number of register infos");
62 "g_lldb_regnums_i386 has wrong number of register infos");
73 " g_avx_regnums_i386 has wrong number of register infos");
119 "g_gpr_regnums_x86_64 has wrong number of register infos");
144 "g_lldb_regnums_x86_64 has wrong number of register infos");
157 "g_avx_regnums_x86_64 has wrong number of register infos");
389 bool generic_fpr =
IsFPR(reg);
392 return generic_fpr ||
IsAVX(reg);
397 Thread &thread, uint32_t concrete_frame_idx,
425 assert(reg <
GetRegInfo().num_registers &&
"Invalid register number.");
436 assert(reg <
GetRegInfo().num_registers &&
"Invalid register number.");
441 size_t num_registers =
445 return num_registers;
484 case llvm::Triple::x86:
486 case llvm::Triple::x86_64:
489 assert(
false &&
"Unhandled target architecture.");
497 assert(reg <
GetRegInfo().num_registers &&
"Invalid register offset.");
539 return (set_index < num_sets);
constexpr size_t k_num_register_sets
static const RegisterSet g_reg_sets_i386[]
static const RegisterSet g_reg_sets_x86_64[]
const uint32_t g_lldb_regnums_i386[]
static const uint32_t g_gpr_regnums_x86_64[]
static const RegisterSet g_reg_sets_i386[k_num_register_sets]
static const uint32_t g_lldb_regnums_x86_64[]
@ k_num_extended_register_sets
const uint32_t g_gpr_regnums_i386[]
static const RegisterSet g_reg_sets_x86_64[k_num_register_sets]
const uint32_t g_avx_regnums_i386[]
static const uint32_t g_avx_regnums_x86_64[]
static uint32_t g_invalidate_r8[]
std::unique_ptr< lldb_private::RegisterInfoInterface > m_register_info_up
static uint32_t g_invalidate_r14[]
static uint32_t g_contained_fip[]
static uint32_t g_invalidate_rdi[]
static uint32_t g_invalidate_st4_32[]
static uint32_t g_invalidate_r15[]
static uint32_t g_contained_st4_64[]
static uint32_t g_contained_rcx[]
static uint32_t g_contained_edx[]
static uint32_t g_invalidate_st1_64[]
static uint32_t g_contained_st5_32[]
size_t GetRegisterSetCount() override
static uint32_t g_contained_st0_32[]
static uint32_t g_invalidate_r10[]
static uint32_t g_contained_rbp[]
static uint32_t g_contained_r12[]
static uint32_t g_contained_r9[]
static uint32_t g_invalidate_st1_32[]
void InvalidateAllRegisters() override
~RegisterContextPOSIX_x86() override
static uint32_t g_invalidate_rcx[]
static uint32_t g_contained_rbx[]
static uint32_t g_contained_ecx[]
static uint32_t g_contained_r8[]
static uint32_t g_contained_r11[]
const lldb_private::RegisterInfo * GetRegisterInfoAtIndex(size_t reg) override
static uint32_t g_invalidate_rdx[]
static uint32_t g_invalidate_st7_64[]
static uint32_t g_invalidate_st5_64[]
static uint32_t g_contained_rax[]
bool CopyXSTATEtoYMM(uint32_t reg, lldb::ByteOrder byte_order)
static uint32_t g_invalidate_ecx[]
static uint32_t g_invalidate_st5_32[]
static uint32_t g_invalidate_rsi[]
static uint32_t g_contained_st4_32[]
static uint32_t g_contained_st1_64[]
static uint32_t g_contained_rdx[]
static uint32_t g_contained_r15[]
static uint32_t g_invalidate_ebx[]
static uint32_t g_invalidate_rsp[]
virtual size_t GetFXSAVEOffset()
static uint32_t g_contained_esi[]
static uint32_t g_invalidate_esi[]
static uint32_t g_invalidate_st6_64[]
static uint32_t g_invalidate_st2_32[]
static uint32_t g_invalidate_eax[]
lldb_private::YMM m_ymm_set
static uint32_t g_contained_st6_32[]
static uint32_t g_contained_r10[]
virtual size_t GetGPRSize()
static uint32_t g_invalidate_rbp[]
static uint32_t g_contained_st5_64[]
static uint32_t g_contained_eax[]
static uint32_t g_contained_st3_64[]
static uint32_t g_contained_st1_32[]
static uint32_t g_invalidate_r13[]
static uint32_t g_contained_st7_64[]
virtual unsigned GetRegisterOffset(unsigned reg)
static uint32_t g_invalidate_edx[]
static uint32_t g_invalidate_fip[]
static uint32_t g_invalidate_rbx[]
static uint32_t g_contained_st6_64[]
static uint32_t g_contained_fdp[]
static uint32_t g_invalidate_st3_64[]
static uint32_t g_invalidate_edi[]
static uint32_t g_invalidate_r9[]
virtual bool IsRegisterSetAvailable(size_t set_index)
static uint32_t g_contained_st2_32[]
static uint32_t g_contained_st0_64[]
static uint32_t g_contained_rsi[]
static uint32_t g_invalidate_st7_32[]
static uint32_t g_contained_rsp[]
static uint32_t g_contained_rdi[]
static uint32_t g_contained_r13[]
const lldb_private::RegisterSet * GetRegisterSet(size_t set) override
static uint32_t g_contained_ebp[]
static uint32_t g_contained_esp[]
static uint32_t g_invalidate_st4_64[]
static uint32_t g_contained_ebx[]
virtual const lldb_private::RegisterInfo * GetRegisterInfo()
static uint32_t g_invalidate_fdp[]
static uint32_t g_invalidate_st0_32[]
static uint32_t g_invalidate_esp[]
static uint32_t g_contained_st2_64[]
RegisterContextPOSIX_x86(lldb_private::Thread &thread, uint32_t concrete_frame_idx, lldb_private::RegisterInfoInterface *register_info)
static uint32_t g_invalidate_rax[]
virtual unsigned GetRegisterSize(unsigned reg)
static uint32_t g_invalidate_st3_32[]
virtual lldb_private::RegInfo & GetRegInfo()
static uint32_t g_invalidate_st6_32[]
static uint32_t g_invalidate_st0_64[]
static uint32_t g_invalidate_r12[]
const char * GetRegisterName(unsigned reg)
size_t GetRegisterCount() override
static uint32_t g_invalidate_r11[]
static uint32_t g_invalidate_st2_64[]
static uint32_t g_invalidate_ebp[]
static uint32_t g_contained_edi[]
bool CopyYMMtoXSTATE(uint32_t reg, lldb::ByteOrder byte_order)
static uint32_t g_contained_r14[]
static uint32_t g_contained_st7_32[]
static uint32_t g_contained_st3_32[]
RegisterInfo interface to patch RegisterInfo structure for archs.
#define LLDB_INVALID_REGNUM
A class that represents a running process on the host machine.
RegInfo & GetRegInfoShared(llvm::Triple::ArchType arch_type, bool with_base)
void YMMToXState(const YMMReg &input, void *xmm_bytes, void *ymmh_bytes)
@ k_num_avx_registers_i386
@ k_num_fpr_registers_i386
@ k_num_gpr_registers_i386
YMMReg XStateToYMM(const void *xmm_bytes, const void *ymmh_bytes)
@ k_num_fpr_registers_x86_64
@ k_num_avx_registers_x86_64
@ k_num_gpr_registers_x86_64
ByteOrder
Byte ordering definitions.
uint32_t num_gpr_registers
uint32_t num_fpr_registers
uint32_t num_avx_registers
Every register is described in detail including its name, alternate name (optional),...
uint32_t byte_offset
The byte offset in the register context data where this register's value is found.
uint32_t byte_size
Size in bytes of the register.
const char * name
Name of this register, can't be NULL.
Registers are grouped into register sets.