26 #include <sys/types.h>
27 #include <sys/ptrace.h>
28 #include <sys/sysctl.h>
30 #include <machine/reg.h>
40 #define REG_OFFSET(member) offsetof (struct reg, member)
97 #include <machine/pcb.h>
98 #include <osreldate.h>
115 if (pcb->pcb_rsp == 0)
127 #if (__FreeBSD_version < 800075) && (__FreeBSD_kernel_version < 800075)
148 #ifdef HAVE_PT_GETDBREGS
159 #ifdef PT_GETXSTATE_INFO
160 static int xsave_probed;
161 static uint64_t xcr0;
169 is64 = (regs.r_cs == GSEL (GUCODE_SEL, SEL_UPL));
170 #ifdef PT_GETXSTATE_INFO
173 struct ptrace_xstate_info info;
179 xcr0 = info.xsave_mask;
213 #ifdef HAVE_PT_GETDBREGS
241 #define SC_REG_OFFSET amd64fbsd_sc_reg_offset
247 #define SC_RIP_OFFSET SC_REG_OFFSET[AMD64_RIP_REGNUM]
248 #define SC_RSP_OFFSET SC_REG_OFFSET[AMD64_RSP_REGNUM]
249 #define SC_RBP_OFFSET SC_REG_OFFSET[AMD64_RBP_REGNUM]
253 offset = offsetof (
struct sigcontext, sc_rip);
258 offsetof (struct sigcontext, sc_rip) yields %d instead of %d.\n\
259 Please report this to <bug-gdb@gnu.org>."),
266 offset = offsetof (
struct sigcontext, sc_rsp);
271 offsetof (struct sigcontext, sc_rsp) yields %d instead of %d.\n\
272 Please report this to <bug-gdb@gnu.org>."),
279 offset = offsetof (
struct sigcontext, sc_rbp);
284 offsetof (struct sigcontext, sc_rbp) yields %d instead of %d.\n\
285 Please report this to <bug-gdb@gnu.org>."),
291 #ifdef KERN_PROC_SIGTRAMP
303 struct kinfo_sigtramp kst;
308 mib[2] = KERN_PROC_SIGTRAMP;
311 if (sysctl (mib, 4, &kst, &len, NULL, 0) == 0)
const struct target_desc *(* to_read_description)(struct target_ops *ops) TARGET_DEFAULT_RETURN(NULL)
#define REG_OFFSET(member)
static int amd64fbsd32_r_reg_offset[I386_NUM_GREGS]
void fbsd_nat_add_target(struct target_ops *t)
void warning(const char *fmt,...)
static int amd64fbsd_supply_pcb(struct regcache *regcache, struct pcb *pcb)
struct target_desc * tdesc_amd64
void amd64bsd_dr_set_addr(int regnum, CORE_ADDR addr)
static int amd64fbsd64_r_reg_offset[]
void(* set_control)(unsigned long)
struct x86_dr_low_type x86_dr_low
CORE_ADDR amd64fbsd_sigtramp_start_addr
CORE_ADDR(* get_addr)(int)
size_t amd64bsd_xsave_len
int * amd64_native_gregset32_reg_offset
void(* set_addr)(int, CORE_ADDR)
static const struct target_desc * amd64fbsd_read_description(struct target_ops *ops)
unsigned long(* get_status)(void)
int * amd64_native_gregset64_reg_offset
struct target_ops * amd64bsd_target(void)
struct target_desc * tdesc_i386
void amd64bsd_dr_set_control(unsigned long control)
unsigned long amd64bsd_dr_get_status(void)
unsigned long amd64bsd_dr_get_control(void)
void _initialize_amd64fbsd_nat(void)
unsigned long(* get_control)(void)
int ptid_get_pid(ptid_t ptid)
void(* to_mourn_inferior)(struct target_ops *) TARGET_DEFAULT_FUNC(default_mourn_inferior)
void void void void void void void void void perror_with_name(const char *string) ATTRIBUTE_NORETURN
static void amd64fbsd_mourn_inferior(struct target_ops *ops)
CORE_ADDR amd64bsd_dr_get_addr(int regnum)
void regcache_raw_supply(struct regcache *regcache, int regnum, const void *buf)
void x86_set_debug_register_length(int len)
CORE_ADDR amd64fbsd_sigtramp_end_addr
void x86_use_watchpoints(struct target_ops *t)
void bsd_kvm_add_target(int(*supply_pcb)(struct regcache *, struct pcb *))
void x86_cleanup_dregs(void)
static void(* super_mourn_inferior)(struct target_ops *ops)
const struct target_desc * amd64_target_description(uint64_t xcr0)
const struct target_desc * i386_target_description(uint64_t xcr0)
const ULONGEST const LONGEST len