static void mips_fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { enum mips_abi abi = mips_abi (gdbarch); /* Generic FreeBSD support. */ fbsd_init_abi (info, gdbarch); set_gdbarch_software_single_step (gdbarch, mips_software_single_step); switch (abi) { case MIPS_ABI_O32: tramp_frame_prepend_unwinder (gdbarch, &mips_fbsd_sigframe); break; case MIPS_ABI_N32: tramp_frame_prepend_unwinder (gdbarch, &mipsn32_fbsd_sigframe); break; case MIPS_ABI_N64: tramp_frame_prepend_unwinder (gdbarch, &mips64_fbsd_sigframe); break; } set_gdbarch_iterate_over_regset_sections (gdbarch, mips_fbsd_iterate_over_regset_sections); /* FreeBSD/mips has SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets (gdbarch, (gdbarch_ptr_bit (gdbarch) == 32 ? mips_fbsd_ilp32_fetch_link_map_offsets : mips_fbsd_lp64_fetch_link_map_offsets)); }
static void i386fbsd4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Generic FreeBSD support. */ fbsd_init_abi (info, gdbarch); /* Inherit stuff from older releases. We assume that FreeBSD 4.0-RELEASE always uses ELF. */ i386fbsd_init_abi (info, gdbarch); /* FreeBSD 4.0 introduced a new `struct reg'. */ tdep->gregset_reg_offset = i386fbsd4_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386fbsd4_r_reg_offset); tdep->sizeof_gregset = 19 * 4; /* FreeBSD 4.0 introduced a new `struct sigcontext'. */ tdep->sc_reg_offset = i386fbsd4_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (i386fbsd4_sc_reg_offset); tdep->xsave_xcr0_offset = I386_FBSD_XSAVE_XCR0_OFFSET; /* Iterate over core file register note sections. */ set_gdbarch_iterate_over_regset_sections (gdbarch, i386fbsd_iterate_over_regset_sections); set_gdbarch_core_read_description (gdbarch, i386fbsd_core_read_description); }
static void ppcfbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Generic FreeBSD support. */ fbsd_init_abi (info, gdbarch); /* FreeBSD doesn't support the 128-bit `long double' from the psABI. */ set_gdbarch_long_double_bit (gdbarch, 64); set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double); if (tdep->wordsize == 4) { set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_ilp32_fetch_link_map_offsets); frame_unwind_append_unwinder (gdbarch, &ppcfbsd_sigtramp_frame_unwind); set_gdbarch_gcore_bfd_target (gdbarch, "elf32-powerpc"); } if (tdep->wordsize == 8) { set_gdbarch_convert_from_func_ptr_addr (gdbarch, ppc64_convert_from_func_ptr_addr); set_gdbarch_elf_make_msymbol_special (gdbarch, ppc64_elf_make_msymbol_special); set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code); set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); set_gdbarch_gcore_bfd_target (gdbarch, "elf64-powerpc"); } set_gdbarch_iterate_over_regset_sections (gdbarch, ppcfbsd_iterate_over_regset_sections); set_gdbarch_fetch_tls_load_module_address (gdbarch, svr4_fetch_objfile_link_map); set_gdbarch_get_thread_local_address (gdbarch, ppcfbsd_get_thread_local_address); }
static void i386fbsd4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Generic FreeBSD support. */ fbsd_init_abi (info, gdbarch); /* Inherit stuff from older releases. We assume that FreeBSD 4.0-RELEASE always uses ELF. */ i386fbsd_init_abi (info, gdbarch); /* FreeBSD 4.0 introduced a new `struct reg'. */ tdep->gregset_reg_offset = i386fbsd4_r_reg_offset; tdep->gregset_num_regs = ARRAY_SIZE (i386fbsd4_r_reg_offset); tdep->sizeof_gregset = 19 * 4; /* FreeBSD 4.0 introduced a new `struct sigcontext'. */ tdep->sc_reg_offset = i386fbsd4_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (i386fbsd4_sc_reg_offset); }
static void sparc64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); /* Generic FreeBSD support. */ fbsd_init_abi (info, gdbarch); tdep->gregset = &sparc64fbsd_gregset; tdep->sizeof_gregset = 256; tdep->fpregset = &sparc64fbsd_fpregset; tdep->sizeof_fpregset = 272; frame_unwind_append_unwinder (gdbarch, &sparc64fbsd_sigtramp_frame_unwind); sparc64_init_abi (info, gdbarch); /* FreeBSD/sparc64 has SVR4-style shared libraries. */ set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); }