26#include <sys/ptrace.h>
27#include <machine/reg.h>
28#include <machine/frame.h>
42 gdb_assert (data == 0);
45 return ptrace (request, ptid.pid (), addr, ptid.lwp ());
58#define REG_OFFSET(member) offsetof (struct reg, member)
79#ifdef HAVE_STRUCT_REG_R_FS
84#ifdef HAVE_STRUCT_REG_R_GS
92#define GETREGS_SUPPLIES(regnum) \
93 ((0 <= (regnum) && (regnum) <= 15))
105 const char *regs = (
const char *) gregs;
125 char *regs = (
char *) gregs;
153 perror_with_name (_(
"Couldn't get registers"));
177 perror_with_name (_(
"Couldn't get floating point status"));
197 perror_with_name (_(
"Couldn't get registers"));
202 perror_with_name (_(
"Couldn't write registers"));
223 perror_with_name (_(
"Couldn't write XMM registers"));
230 perror_with_name (_(
"Couldn't get floating point status"));
236 perror_with_name (_(
"Couldn't write floating point status"));
252#define SC_REG_OFFSET i386obsd_sc_reg_offset
263#define SC_PC_OFFSET SC_REG_OFFSET[I386_EIP_REGNUM]
264#define SC_SP_OFFSET SC_REG_OFFSET[I386_ESP_REGNUM]
265#define SC_FP_OFFSET SC_REG_OFFSET[I386_EBP_REGNUM]
269 int offset = offsetof (
struct sigcontext, sc_pc);
271 if (SC_PC_OFFSET != offset)
274offsetof (struct sigcontext, sc_pc) yields %d instead of %d.\n\
275Please report this to <bug-gdb@gnu.org>."),
276 offset, SC_PC_OFFSET);
279 SC_PC_OFFSET = offset;
282 offset = offsetof (
struct sigcontext, sc_sp);
284 if (SC_SP_OFFSET != offset)
287offsetof (struct sigcontext, sc_sp) yields %d instead of %d.\n\
288Please report this to <bug-gdb@gnu.org>."),
289 offset, SC_SP_OFFSET);
292 SC_SP_OFFSET = offset;
295 offset = offsetof (
struct sigcontext, sc_fp);
297 if (SC_FP_OFFSET != offset)
300offsetof (struct sigcontext, sc_fp) yields %d instead of %d.\n\
301Please report this to <bug-gdb@gnu.org>."),
302 offset, SC_FP_OFFSET);
305 SC_FP_OFFSET = offset;
void raw_collect(int regnum, void *buf) const override
void raw_supply(int regnum, const void *buf) override
#define ptrace(request, pid, addr, data)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
static void i386bsd_supply_gregset(struct regcache *regcache, const void *gregs)
static PTRACE_TYPE_RET gdb_ptrace(PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr, PTRACE_TYPE_ARG4 data)
void i386bsd_store_inferior_registers(struct regcache *regcache, int regnum)
static void i386bsd_collect_gregset(const struct regcache *regcache, void *gregs, int regnum)
void _initialize_i386bsd_nat()
void i386bsd_fetch_inferior_registers(struct regcache *regcache, int regnum)
static int i386bsd_r_reg_offset[]
#define GETREGS_SUPPLIES(regnum)
#define REG_OFFSET(member)
static int have_ptrace_xmmregs
void i387_supply_fxsave(struct regcache *regcache, int regnum, const void *fxsave)
void i387_collect_fxsave(const struct regcache *regcache, int regnum, void *fxsave)
void i387_supply_fsave(struct regcache *regcache, int regnum, const void *fsave)
void i387_collect_fsave(const struct regcache *regcache, int regnum, void *fsave)
pid_t get_ptrace_pid(ptid_t ptid)