This is the mail archive of the
gdb-patches@sourceware.cygnus.com
mailing list for the GDB project.
RFA: NetBSD/i386 core dump support
- To: gdb-patches at sourceware dot cygnus dot com
- Subject: RFA: NetBSD/i386 core dump support
- From: jtc at redback dot com (J.T. Conklin)
- Date: 23 Mar 2000 15:45:01 -0800
- Reply-To: jtc at redback dot com
I submit the enclosed patch for approval.
This change enables core dump support on NetBSD/i386 and adds floating
point register support to fetch_core_registers().
2000-03-23 J.T. Conklin <jtc@redback.com>
* i386nbsd-nat.c (fetch_core_registers): Read fp registers.
(i386nbsd_core_fns, _initialize_i386nbsd_nat): Added.
Index: i386nbsd-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/i386nbsd-nat.c,v
retrieving revision 1.1
diff -c -3 -p -r1.1 i386nbsd-nat.c
*** i386nbsd-nat.c 2000/03/22 01:36:31 1.1
--- i386nbsd-nat.c 2000/03/23 23:35:03
*************** store_inferior_registers (regno)
*** 152,158 ****
struct md_core
{
struct reg intreg;
! struct fpreg freg;
};
void
--- 152,158 ----
struct md_core
{
struct reg intreg;
! struct env387 freg;
};
void
*************** fetch_core_registers (core_reg_sect, cor
*** 167,172 ****
/* integer registers */
memcpy (®isters[REGISTER_BYTE (0)], &core_reg->intreg,
sizeof (struct reg));
/* floating point registers */
! /* XXX */
}
--- 167,209 ----
/* integer registers */
memcpy (®isters[REGISTER_BYTE (0)], &core_reg->intreg,
sizeof (struct reg));
+
/* floating point registers */
! RF (FP0_REGNUM, core_reg->freg.regs[0]);
! RF (FP0_REGNUM + 1, core_reg->freg.regs[1]);
! RF (FP0_REGNUM + 2, core_reg->freg.regs[2]);
! RF (FP0_REGNUM + 3, core_reg->freg.regs[3]);
! RF (FP0_REGNUM + 4, core_reg->freg.regs[4]);
! RF (FP0_REGNUM + 5, core_reg->freg.regs[5]);
! RF (FP0_REGNUM + 6, core_reg->freg.regs[6]);
! RF (FP0_REGNUM + 7, core_reg->freg.regs[7]);
!
! RF (FCTRL_REGNUM, core_reg->freg.control);
! RF (FSTAT_REGNUM, core_reg->freg.status);
! RF (FTAG_REGNUM, core_reg->freg.tag);
! RF (FCS_REGNUM, core_reg->freg.code_seg);
! RF (FCOFF_REGNUM, core_reg->freg.eip);
! RF (FDS_REGNUM, core_reg->freg.operand_seg);
! RF (FDOFF_REGNUM, core_reg->freg.operand);
! RF (FOP_REGNUM, core_reg->freg.opcode);
!
! registers_fetched ();
! }
!
! /* Register that we are able to handle i386nbsd core file formats.
! FIXME: is this really bfd_target_unknown_flavour? */
!
! static struct core_fns i386nbsd_core_fns =
! {
! bfd_target_unknown_flavour, /* core_flavour */
! default_check_format, /* check_format */
! default_core_sniffer, /* core_sniffer */
! fetch_core_registers, /* core_read_registers */
! NULL /* next */
! };
!
! void
! _initialize_i386nbsd_nat ()
! {
! add_core_fns (&i386nbsd_core_fns);
}
--
J.T. Conklin
RedBack Networks