static void i386obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously OpenBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); /* OpenBSD has a different `struct reg'. */ tdep->gregset_reg_offset = i386obsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386obsd_r_reg_offset); tdep->sizeof_gregset = 16 * 4; /* OpenBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; /* OpenBSD uses a different memory layout. */ tdep->sigtramp_start = i386obsd_sigtramp_start_addr; tdep->sigtramp_end = i386obsd_sigtramp_end_addr; tdep->sigtramp_p = i386obsd_sigtramp_p; /* OpenBSD has a `struct sigcontext' that's different from the original 4.3 BSD. */ tdep->sc_reg_offset = i386obsd_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (i386obsd_sc_reg_offset); }
static void i386nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously NetBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); /* NetBSD has a different `struct reg'. */ tdep->gregset_reg_offset = i386nbsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386nbsd_r_reg_offset); tdep->sizeof_gregset = 16 * 4; /* NetBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; /* NetBSD uses tramp_frame sniffers for signal trampolines. */ tdep->sigcontext_addr= 0; tdep->sigtramp_start = 0; tdep->sigtramp_end = 0; tdep->sigtramp_p = 0; tdep->sc_reg_offset = 0; tdep->sc_num_regs = 0; tramp_frame_prepend_unwinder (gdbarch, &i386nbsd_sigtramp_sc16); tramp_frame_prepend_unwinder (gdbarch, &i386nbsd_sigtramp_sc2); tramp_frame_prepend_unwinder (gdbarch, &i386nbsd_sigtramp_si2); tramp_frame_prepend_unwinder (gdbarch, &i386nbsd_sigtramp_si31); tramp_frame_prepend_unwinder (gdbarch, &i386nbsd_sigtramp_si4); }
static void i386fbsdaout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously FreeBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); /* FreeBSD has a different `struct reg', and reserves some space for its FPU emulator in `struct fpreg'. */ tdep->gregset_reg_offset = i386fbsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386fbsd_r_reg_offset); tdep->sizeof_gregset = 18 * 4; tdep->sizeof_fpregset = 176; /* FreeBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; /* FreeBSD uses a different memory layout. */ tdep->sigtramp_start = i386fbsd_sigtramp_start_addr; tdep->sigtramp_end = i386fbsd_sigtramp_end_addr; /* FreeBSD has a more complete `struct sigcontext'. */ tdep->sc_reg_offset = i386fbsd_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (i386fbsd_sc_reg_offset); /* FreeBSD provides a user-level threads implementation. */ bsd_uthread_set_supply_uthread (gdbarch, i386fbsd_supply_uthread); bsd_uthread_set_collect_uthread (gdbarch, i386fbsd_collect_uthread); }
static void amd64dfly_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* DragonFly is BSD-based. */ i386bsd_init_abi (info, gdbarch); tdep->gregset_reg_offset = amd64dfly_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (amd64dfly_r_reg_offset); tdep->sizeof_gregset = 25 * 8; amd64_init_abi (info, gdbarch); tdep->sigtramp_start = amd64dfly_sigtramp_start_addr; tdep->sigtramp_end = amd64dfly_sigtramp_end_addr; tdep->sigcontext_addr = amd64dfly_sigcontext_addr; tdep->sc_reg_offset = amd64dfly_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (amd64dfly_sc_reg_offset); /* DragonFly provides a user-level threads implementation. */ bsd_uthread_set_supply_uthread (gdbarch, amd64dfly_supply_uthread); bsd_uthread_set_collect_uthread (gdbarch, amd64dfly_collect_uthread); /* DragonFly uses SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); }
static void i386obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously OpenBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); /* OpenBSD has a different `struct reg'. */ tdep->gregset_reg_offset = i386obsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386obsd_r_reg_offset); tdep->sizeof_gregset = 16 * 4; /* OpenBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; /* OpenBSD uses a different memory layout. */ tdep->sigtramp_start = i386obsd_sigtramp_start_addr; tdep->sigtramp_end = i386obsd_sigtramp_end_addr; tdep->sigtramp_p = i386obsd_sigtramp_p; /* OpenBSD has a `struct sigcontext' that's different from the original 4.3 BSD. */ tdep->sc_reg_offset = i386obsd_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (i386obsd_sc_reg_offset); /* OpenBSD provides a user-level threads implementation. */ bsd_uthread_set_supply_uthread (gdbarch, i386obsd_supply_uthread); bsd_uthread_set_collect_uthread (gdbarch, i386obsd_collect_uthread); /* Unwind kernel trap frames correctly. */ frame_unwind_prepend_unwinder (gdbarch, &i386obsd_trapframe_unwind); }
static void i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously FreeBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); /* FreeBSD has a different `struct reg', and reserves some space for its FPU emulator in `struct fpreg'. */ tdep->gregset_reg_offset = i386fbsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386fbsd_r_reg_offset); tdep->sizeof_gregset = 18 * 4; tdep->sizeof_fpregset = 176; /* FreeBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; tdep->sigtramp_p = i386fbsd_sigtramp_p; /* FreeBSD uses a different memory layout. */ tdep->sigtramp_start = i386fbsd_sigtramp_start_addr; tdep->sigtramp_end = i386fbsd_sigtramp_end_addr; /* FreeBSD has a more complete `struct sigcontext'. */ tdep->sc_reg_offset = i386fbsd_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (i386fbsd_sc_reg_offset); i386_elf_init_abi (info, gdbarch); /* FreeBSD uses SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_ilp32_fetch_link_map_offsets); }
static void i386fbsdaout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously FreeBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); /* FreeBSD uses -freg-struct-return by default. */ tdep->struct_return = reg_struct_return; /* FreeBSD uses a different memory layout. */ tdep->sigtramp_start = i386fbsd_sigtramp_start; tdep->sigtramp_end = i386fbsd_sigtramp_end; }
static void amd64dfly_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); i386bsd_init_abi (info, gdbarch); tdep->gregset_reg_offset = amd64dfly_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (amd64dfly_r_reg_offset); tdep->sizeof_gregset = 25 * 8; amd64_init_abi (info, gdbarch); tdep->sigtramp_start = amd64dfly_sigtramp_start_addr; tdep->sigtramp_end = amd64dfly_sigtramp_end_addr; tdep->sigcontext_addr = amd64dfly_sigcontext_addr; tdep->sc_reg_offset = amd64dfly_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (amd64dfly_sc_reg_offset); set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); }
void amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Obviously FreeBSD is BSD-based. */ i386bsd_init_abi (info, gdbarch); tdep->gregset_reg_offset = amd64fbsd_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (amd64fbsd_r_reg_offset); tdep->sizeof_gregset = 22 * 8; amd64_init_abi (info, gdbarch); tdep->sigtramp_start = amd64fbsd_sigtramp_start_addr; tdep->sigtramp_end = amd64fbsd_sigtramp_end_addr; tdep->sigcontext_addr = amd64fbsd_sigcontext_addr; tdep->sc_reg_offset = amd64fbsd_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (amd64fbsd_sc_reg_offset); /* FreeBSD uses SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); }