#include "defs.h"
#include "arch-utils.h"
+#include "floatformat.h"
#include "osabi.h"
#include "regcache.h"
#include "regset.h"
ppc_collect_fpregset (regset, regcache, regnum, gregs, len);
}
-/* OpenBS/powerpc register set. */
+/* OpenBSD/powerpc register set. */
struct regset ppcobsd_gregset =
{
},
ppcobsd_sigtramp_cache_init
};
-
\f
+
static void
ppcobsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
+ /* OpenBSD doesn't support the 128-bit `long double' from the psABI. */
+ set_gdbarch_long_double_bit (gdbarch, 64);
+ set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
+
+ /* OpenBSD currently uses a broken GCC. */
+ set_gdbarch_return_value (gdbarch, ppc_sysv_abi_broken_return_value);
+
/* OpenBSD uses SVR4-style shared libraries. */
set_solib_svr4_fetch_link_map_offsets
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
gdbarch_register_osabi_sniffer (bfd_arch_powerpc, bfd_target_unknown_flavour,
ppcobsd_core_osabi_sniffer);
+ gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_OPENBSD_ELF,
+ ppcobsd_init_abi);
gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_OPENBSD_ELF,
ppcobsd_init_abi);