9#if defined(__i386__) || defined(__x86_64__)
11#ifndef lldb_NativeRegisterContextFreeBSD_x86_64_h
12#define lldb_NativeRegisterContextFreeBSD_x86_64_h
16#include <sys/ptrace.h>
18#include <machine/reg.h>
29#define LLDB_INVALID_XSAVE_OFFSET UINT32_MAX
32namespace process_freebsd {
34class NativeProcessFreeBSD;
36class NativeRegisterContextFreeBSD_x86_64
37 :
public NativeRegisterContextFreeBSD,
38 public NativeRegisterContextDBReg_x86 {
40 NativeRegisterContextFreeBSD_x86_64(
const ArchSpec &target_arch,
41 NativeThreadFreeBSD &native_thread);
42 uint32_t GetRegisterSetCount()
const override;
44 const RegisterSet *GetRegisterSet(uint32_t set_index)
const override;
46 Status ReadRegister(
const RegisterInfo *reg_info,
47 RegisterValue ®_value)
override;
49 Status WriteRegister(
const RegisterInfo *reg_info,
50 const RegisterValue ®_value)
override;
57 CopyHardwareWatchpointsFrom(NativeRegisterContextFreeBSD &source)
override;
67 MaxRegSet = MPXRegSet,
71 std::array<uint8_t,
sizeof(
struct reg)> m_gpr;
72 std::array<uint8_t, 512> m_fpr;
73 std::array<uint8_t,
sizeof(
struct dbreg)> m_dbr;
74 std::vector<uint8_t> m_xsave;
75 std::array<uint32_t, MaxRegSet + 1> m_xsave_offsets;
76 std::array<size_t, MaxRegSet + 1> m_regset_offsets;
78 std::optional<RegSetKind> GetSetForNativeRegNum(uint32_t reg_num)
const;
80 Status ReadRegisterSet(RegSetKind set);
81 Status WriteRegisterSet(RegSetKind set);
83 uint8_t *GetOffsetRegSetData(RegSetKind set,
size_t reg_offset);
89 std::optional<YMMSplitPtr> GetYMMSplitReg(uint32_t reg);
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::DataBuffer > DataBufferSP
std::shared_ptr< lldb_private::WritableDataBuffer > WritableDataBufferSP