2000-03-24 J.T. Conklin <jtc@redback.com>

* i386/tm-nbsd.h (USE_STRUCT_CONVENTION): Define.
        * i386nbsd-nat.c (i386nbsd_use_struct_convention): New function.
        (fetch_core_registers): Read fp registers.
        (i386nbsd_core_fns, _initialize_i386nbsd_nat): Added.
This commit is contained in:
J.T. Conklin 2000-03-24 23:06:57 +00:00
parent c1790a9d97
commit 76a2220988
3 changed files with 61 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2000-03-24 J.T. Conklin <jtc@redback.com>
* i386/tm-nbsd.h (USE_STRUCT_CONVENTION): Define.
* i386nbsd-nat.c (i386nbsd_use_struct_convention): New function.
(fetch_core_registers): Read fp registers.
(i386nbsd_core_fns, _initialize_i386nbsd_nat): Added.
2000-03-24 Jonathan Larmour <jlarmour@redhat.co.uk>
* arm-tdep.c (thumb_skip_prologue): Take function end addr argument

View File

@ -26,6 +26,11 @@
#include "i386/tm-i386bsd.h"
#include "tm-nbsd.h"
extern use_struct_convention_fn i386nbsd_use_struct_convention;
#define USE_STRUCT_CONVENTION(gcc_p, type) \
i386nbsd_use_struct_convention(gcc_p, type)
#define JB_ELEMENT_SIZE sizeof(int) /* jmp_buf[_JBLEN] is array of ints */
#define JB_PC 0 /* Setjmp()'s return PC saved here */

View File

@ -148,11 +148,20 @@ store_inferior_registers (regno)
ptrace (PT_SETFPREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_fpregisters, 0);
}
int
i386nbsd_use_struct_convention (int gcc_p, struct type *type)
{
return !(TYPE_LENGTH (type) == 1
|| TYPE_LENGTH (type) == 2
|| TYPE_LENGTH (type) == 4
|| TYPE_LENGTH (type) == 8);
}
struct md_core
{
struct reg intreg;
struct fpreg freg;
struct env387 freg;
};
void
@ -167,6 +176,43 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, ignore)
/* integer registers */
memcpy (&registers[REGISTER_BYTE (0)], &core_reg->intreg,
sizeof (struct reg));
/* floating point registers */
/* XXX */
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);
}