38#define MIPS_FBSD_NUM_GREGS 40
44#define MIPS_FBSD_NUM_FPREGS 34
72 const void *fpregs,
size_t regsize)
75 const gdb_byte *regs = (
const gdb_byte *) fpregs;
79 for (i = 0; i <= 32; i++)
82 regs + i * regsize, regsize);
85 regs + 32 * regsize, regsize);
92 regs + 33 * regsize, regsize);
101 const void *gregs,
size_t regsize)
104 const gdb_byte *regs = (
const gdb_byte *) gregs;
118 void *fpregs,
size_t regsize)
121 gdb_byte *regs = (gdb_byte *) fpregs;
125 for (i = 0; i < 32; i++)
128 regs + i * regsize, regsize);
131 regs + 32 * regsize, regsize);
136 regs + 33 * regsize, regsize);
145 void *gregs,
size_t regsize)
148 gdb_byte *regs = (gdb_byte *) gregs;
163 int regnum,
const void *fpregs,
size_t len)
180 int regnum,
void *fpregs,
size_t len)
196 const void *gregs,
size_t len)
213 int regnum,
void *gregs,
size_t len)
256#define FBSD_SYS_sigreturn 417
258#define MIPS_INST_LI_V0_SIGRETURN 0x24020000 + FBSD_SYS_sigreturn
259#define MIPS_INST_SYSCALL 0x0000000c
260#define MIPS_INST_BREAK 0x0000000d
262#define O32_SIGFRAME_UCONTEXT_OFFSET (16)
263#define O32_SIGSET_T_SIZE (16)
265#define O32_UCONTEXT_ONSTACK (O32_SIGSET_T_SIZE)
266#define O32_UCONTEXT_PC (O32_UCONTEXT_ONSTACK + 4)
267#define O32_UCONTEXT_REGS (O32_UCONTEXT_PC + 4)
268#define O32_UCONTEXT_SR (O32_UCONTEXT_REGS + 4 * 32)
269#define O32_UCONTEXT_LO (O32_UCONTEXT_SR + 4)
270#define O32_UCONTEXT_HI (O32_UCONTEXT_LO + 4)
271#define O32_UCONTEXT_FPUSED (O32_UCONTEXT_HI + 4)
272#define O32_UCONTEXT_FPREGS (O32_UCONTEXT_FPUSED + 4)
274#define O32_UCONTEXT_REG_SIZE 4
284 CORE_ADDR sp, ucontext_addr, addr;
337#define MIPS_INST_ADDIU_A0_SP_O32 (0x27a40000 \
338 + O32_SIGFRAME_UCONTEXT_OFFSET)
354#define N64_SIGFRAME_UCONTEXT_OFFSET (32)
355#define N64_SIGSET_T_SIZE (16)
357#define N64_UCONTEXT_ONSTACK (N64_SIGSET_T_SIZE)
358#define N64_UCONTEXT_PC (N64_UCONTEXT_ONSTACK + 8)
359#define N64_UCONTEXT_REGS (N64_UCONTEXT_PC + 8)
360#define N64_UCONTEXT_SR (N64_UCONTEXT_REGS + 8 * 32)
361#define N64_UCONTEXT_LO (N64_UCONTEXT_SR + 8)
362#define N64_UCONTEXT_HI (N64_UCONTEXT_LO + 8)
363#define N64_UCONTEXT_FPUSED (N64_UCONTEXT_HI + 8)
364#define N64_UCONTEXT_FPREGS (N64_UCONTEXT_FPUSED + 8)
366#define N64_UCONTEXT_REG_SIZE 8
376 CORE_ADDR sp, ucontext_addr, addr;
429#define MIPS_INST_ADDIU_A0_SP_N32 (0x27a40000 \
430 + N64_SIGFRAME_UCONTEXT_OFFSET)
446#define MIPS_INST_DADDIU_A0_SP_N64 (0x67a40000 \
447 + N64_SIGFRAME_UCONTEXT_OFFSET)
void raw_collect_integer(int regnum, gdb_byte *addr, int addr_len, bool is_signed) const
void raw_supply_integer(int regnum, const gdb_byte *addr, int addr_len, bool is_signed)
static ULONGEST extract_unsigned_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
CORE_ADDR fbsd_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
void fbsd_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
LONGEST get_frame_register_signed(frame_info_ptr frame, int regnum)
CORE_ADDR frame_unwind_caller_pc(frame_info_ptr this_frame)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
frame_info_ptr get_current_frame(void)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void set_gdbarch_software_single_step(struct gdbarch *gdbarch, gdbarch_software_single_step_ftype *software_single_step)
int gdbarch_num_regs(struct gdbarch *gdbarch)
int gdbarch_fp0_regnum(struct gdbarch *gdbarch)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver)
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections)
void iterate_over_regset_sections_cb(const char *sect_name, int supply_size, int collect_size, const struct regset *regset, const char *human_name, void *cb_data)
struct bound_minimal_symbol lookup_bound_minimal_symbol(const char *name)
#define N64_UCONTEXT_REGS
static CORE_ADDR mips_fbsd_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
#define MIPS_FBSD_NUM_FPREGS
static struct link_map_offsets * mips_fbsd_lp64_fetch_link_map_offsets(void)
#define MIPS_INST_DADDIU_A0_SP_N64
#define O32_SIGFRAME_UCONTEXT_OFFSET
void mips_fbsd_supply_gregs(struct regcache *regcache, int regnum, const void *gregs, size_t regsize)
#define N64_UCONTEXT_REG_SIZE
#define N64_UCONTEXT_FPUSED
void mips_fbsd_collect_gregs(const struct regcache *regcache, int regnum, void *gregs, size_t regsize)
static void mips_fbsd_collect_fpregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len)
static struct link_map_offsets * mips_fbsd_ilp32_fetch_link_map_offsets(void)
static const struct tramp_frame mips64_fbsd_sigframe
#define N64_SIGFRAME_UCONTEXT_OFFSET
static void mips_fbsd_iterate_over_regset_sections(struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
void mips_fbsd_collect_fpregs(const struct regcache *regcache, int regnum, void *fpregs, size_t regsize)
#define MIPS_INST_LI_V0_SIGRETURN
static const struct tramp_frame mipsn32_fbsd_sigframe
#define N64_UCONTEXT_FPREGS
static void mips_fbsd_supply_gregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
static void mips_fbsd_collect_reg(const struct regcache *regcache, int regnum, void *addr, size_t len)
#define O32_UCONTEXT_FPREGS
#define O32_UCONTEXT_FPUSED
#define O32_UCONTEXT_REGS
void mips_fbsd_supply_fpregs(struct regcache *regcache, int regnum, const void *fpregs, size_t regsize)
static const struct regset mips_fbsd_gregset
static void mips64_fbsd_sigframe_init(const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *cache, CORE_ADDR func)
static const struct regset mips_fbsd_fpregset
static void mips_fbsd_collect_gregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len)
static void mips_fbsd_supply_fpregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len)
#define MIPS_INST_SYSCALL
#define O32_UCONTEXT_REG_SIZE
#define MIPS_FBSD_NUM_GREGS
static void mips_fbsd_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static void mips_fbsd_sigframe_init(const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *cache, CORE_ADDR func)
static void mips_fbsd_supply_reg(struct regcache *regcache, int regnum, const void *addr, size_t len)
#define MIPS_INST_ADDIU_A0_SP_N32
void _initialize_mips_fbsd_tdep()
static const struct tramp_frame mips_fbsd_sigframe
#define MIPS_INST_ADDIU_A0_SP_O32
std::vector< CORE_ADDR > mips_software_single_step(struct regcache *regcache)
const struct mips_regnum * mips_regnum(struct gdbarch *gdbarch)
unsigned int mips_abi_regsize(struct gdbarch *gdbarch)
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
void(* func)(remote_target *remote, char *)
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
CORE_ADDR value_address() const
struct minimal_symbol * minsym
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
void trad_frame_set_reg_addr(struct trad_frame_cache *this_trad_cache, int regnum, CORE_ADDR addr)
void trad_frame_set_id(struct trad_frame_cache *this_trad_cache, struct frame_id this_id)
void tramp_frame_prepend_unwinder(struct gdbarch *gdbarch, const struct tramp_frame *tramp_frame)
#define TRAMP_SENTINEL_INSN