26#include <sys/ptrace.h>
27#include "gdbsupport/gdb_wait.h"
28#ifdef HAVE_MACHINE_REG_H
29#include <machine/reg.h>
52#ifdef HAVE_MACHINE_REG_H
54typedef struct reg gregset_t;
55typedef struct fpreg fpregset_t;
57typedef struct regs gregset_t;
58typedef struct fp_status fpregset_t;
66#define PTRACE_GETREGS PT_GETREGS
70#define PTRACE_SETREGS PT_SETREGS
73#ifndef PTRACE_GETFPREGS
74#define PTRACE_GETFPREGS PT_GETFPREGS
77#ifndef PTRACE_SETFPREGS
78#define PTRACE_SETFPREGS PT_SETFPREGS
87 return ptrace (request, ptid.pid (), addr, ptid.lwp ());
98 struct regcache *, int ,
const void *);
100 const struct regcache *, int,
void *);
102 struct regcache *, int ,
const void *);
104 const struct regcache *, int ,
void *);
158 gdb_byte zero[8] = { 0 };
169 perror_with_name (_(
"Couldn't get registers"));
173 scoped_restore restore_inferior_ptid
186 perror_with_name (_(
"Couldn't get floating point status"));
204 perror_with_name (_(
"Couldn't get registers"));
209 perror_with_name (_(
"Couldn't write registers"));
221 scoped_restore restore_inferior_ptid
233 fpregset_t fpregs, saved_fpregs;
236 perror_with_name (_(
"Couldn't get floating-point registers"));
238 memcpy (&saved_fpregs, &fpregs,
sizeof (fpregs));
245 if (memcmp (&saved_fpregs, &fpregs,
sizeof (fpregs)) != 0)
249 perror_with_name (_(
"Couldn't write floating-point registers"));
263 const char *annex, gdb_byte *readbuf,
264 const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
265 ULONGEST *xfered_len)
267 unsigned long wcookie = 0;
268 char *buf = (
char *)&wcookie;
271 gdb_assert (readbuf && writebuf == NULL);
273 if (offset ==
sizeof (
unsigned long))
275 if (offset >
sizeof (
unsigned long))
289 gdb_assert (
sizeof (wcookie) ==
sizeof (register_t));
295 perror_with_name (_(
"Couldn't get StackGhost cookie"));
306 if (len >
sizeof (
unsigned long) - offset)
307 len =
sizeof (
unsigned long) - offset;
309 memcpy (readbuf, buf + offset, len);
310 *xfered_len = (ULONGEST) len;
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
pid_t get_ptrace_pid(ptid_t ptid)
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
int sparc32_fpregset_supplies_p(struct gdbarch *gdbarch, int regnum)
const struct sparc_gregmap * sparc_gregmap
void(* sparc_collect_gregset)(const struct sparc_gregmap *, const struct regcache *, int, void *)
int(* sparc_fpregset_supplies_p)(struct gdbarch *, int)
void _initialize_sparc_nat()
void sparc_store_inferior_registers(process_stratum_target *proc_target, regcache *regcache, int regnum)
int sparc32_gregset_supplies_p(struct gdbarch *gdbarch, int regnum)
const struct sparc_fpregmap * sparc_fpregmap
static PTRACE_TYPE_RET gdb_ptrace(PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr)
void(* sparc_collect_fpregset)(const struct sparc_fpregmap *, const struct regcache *, int, void *)
int(* sparc_gregset_supplies_p)(struct gdbarch *, int)
void(* sparc_supply_fpregset)(const struct sparc_fpregmap *, struct regcache *, int, const void *)
void(* sparc_supply_gregset)(const struct sparc_gregmap *, struct regcache *, int, const void *)
void sparc_fetch_inferior_registers(process_stratum_target *proc_target, regcache *regcache, int regnum)
enum target_xfer_status sparc_xfer_wcookie(enum target_object object, const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
void sparc_collect_rwindow(const struct regcache *regcache, CORE_ADDR sp, int regnum)
void sparc32_supply_gregset(const struct sparc_gregmap *gregmap, struct regcache *regcache, int regnum, const void *gregs)
const struct sparc_fpregmap sparc32_sunos4_fpregmap
const struct sparc_gregmap sparc32_sunos4_gregmap
void sparc32_supply_fpregset(const struct sparc_fpregmap *fpregmap, struct regcache *regcache, int regnum, const void *fpregs)
void sparc32_collect_fpregset(const struct sparc_fpregmap *fpregmap, const struct regcache *regcache, int regnum, void *fpregs)
void sparc32_collect_gregset(const struct sparc_gregmap *gregmap, const struct regcache *regcache, int regnum, void *gregs)