27#include <sys/ptrace.h>
28#include <sys/sysctl.h>
30#include <machine/reg.h>
36#include "gdbsupport/x86-xstate.h"
50#ifdef PT_GETXSTATE_INFO
51static size_t xsave_len;
88static const struct regset *
104#if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
110 if (fetch_register_set<struct reg> (
regcache,
regnum, PT_GETREGS, gregset))
148#ifdef PT_GETXSTATE_INFO
151 void *xstateregs = alloca (xsave_len);
176#if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
182 if (store_register_set<struct reg> (
regcache,
regnum, PT_GETREGS, PT_SETREGS,
225#ifdef PT_GETXSTATE_INFO
228 void *xstateregs = alloca (xsave_len);
255#include <machine/pcb.h>
256#include <osreldate.h>
273 if (pcb->pcb_rsp == 0)
285#if (__FreeBSD_version < 800075) && (__FreeBSD_kernel_version < 800075)
306#ifdef PT_GETXSTATE_INFO
307 static int xsave_probed;
308 static uint64_t xcr0;
316 is64 = (regs.r_cs == GSEL (GUCODE_SEL, SEL_UPL));
317#ifdef PT_GETXSTATE_INFO
320 struct ptrace_xstate_info
info;
325 xsave_len =
info.xsave_len;
326 xcr0 =
info.xsave_mask;
static int amd64fbsd_supply_pcb(struct regcache *regcache, struct pcb *pcb)
void _initialize_amd64fbsd_nat()
static const struct regset * find_gregset(struct gdbarch *gdbarch)
static const struct regset amd64_fbsd32_gregset
static amd64_fbsd_nat_target the_amd64_fbsd_nat_target
static const struct regcache_map_entry amd64_fbsd32_gregmap[]
const struct regset amd64_fbsd_gregset
void amd64_collect_xsave(const struct regcache *regcache, int regnum, void *xsave, int gcore)
const struct target_desc * amd64_target_description(uint64_t xcr0, bool segments)
void amd64_supply_fxsave(struct regcache *regcache, int regnum, const void *fxsave)
void amd64_supply_xsave(struct regcache *regcache, int regnum, const void *xsave)
void amd64_collect_fxsave(const struct regcache *regcache, int regnum, void *fxsave)
void bsd_kvm_add_target(int(*supply_pcb)(struct regcache *, struct pcb *))
void fetch_registers(struct regcache *, int) override
const struct target_desc * read_description() override
void store_registers(struct regcache *, int) override
const target_info & info() const override
void raw_collect(int regnum, void *buf) const override
void raw_supply(int regnum, const void *buf) override
#define ptrace(request, pid, addr, data)
const struct bfd_arch_info * gdbarch_bfd_arch_info(struct gdbarch *gdbarch)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
const struct target_desc * i386_target_description(uint64_t xcr0, bool segments)
void add_inf_child_target(inf_child_target *target)
pid_t get_ptrace_pid(ptid_t ptid)
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
void regcache_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *buf, size_t size)
void perror_with_name(const char *string)