* irix5-nat.c (fetch_core_registers): Simplify and correct logic.

This commit is contained in:
Daniel Jacobowitz 2006-07-27 21:27:12 +00:00
parent 159f81f32f
commit f58b68aaee
2 changed files with 16 additions and 28 deletions

View File

@ -1,3 +1,8 @@
2006-07-27 Roger Sayle <roger@eyesopen.com>
Daniel Jacobowitz <dan@codesourcery.com>
* irix5-nat.c (fetch_core_registers): Simplify and correct logic.
2006-07-27 Daniel Jacobowitz <dan@codesourcery.com>
* target.h (target_read_stralloc): New prototype.

View File

@ -1,7 +1,7 @@
/* Native support for the SGI Iris running IRIX version 5, for GDB.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
1998, 1999, 2000, 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin.
@ -242,39 +242,22 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
int which, CORE_ADDR reg_addr)
{
char *srcp = core_reg_sect;
int regsize = mips_isa_regsize (current_gdbarch);
int regno;
if (core_reg_size == deprecated_register_bytes ())
{
for (regno = 0; regno < NUM_REGS; regno++)
{
regcache_raw_write (current_regcache, regno, srcp);
srcp += register_size (current_gdbarch, regno);
}
}
else if (mips_isa_regsize (current_gdbarch) == 4 &&
core_reg_size == (2 * mips_isa_regsize (current_gdbarch)) * NUM_REGS)
{
/* This is a core file from a N32 executable, 64 bits are saved
for all registers. */
for (regno = 0; regno < NUM_REGS; regno++)
{
if (regno >= FP0_REGNUM && regno < (FP0_REGNUM + 32))
{
regcache_raw_write (current_regcache, regno, srcp);
}
else
{
regcache_raw_write (current_regcache, regno, srcp + 4);
}
srcp += 8;
}
}
else
/* If regsize is 8, this is a N32 or N64 core file.
If regsize is 4, this is an O32 core file. */
if (core_reg_size != regsize * NUM_REGS)
{
warning (_("wrong size gregset struct in core file"));
return;
}
for (regno = 0; regno < NUM_REGS; regno++)
{
regcache_raw_write (current_regcache, regno, srcp);
srcp += regsize;
}
}
/* Register that we are able to handle irix5 core file formats.