diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/config/mips/tm-mips.h | 4 | ||||
-rw-r--r-- | gdb/mips-tdep.c | 26 |
3 files changed, 15 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a01c38fc6c5..7424ccf4c22 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2002-08-20 Michael Snyder <msnyder@redhat.com> + * mips-tdep.c (mips_in_return_stub): Make static. + (mips_gdbarch_init): Set in_solib_return_trampoline. + * config/mips/tm-mips.h (IN_SOLIB_RETURN_TRAMPOLINE): Delete. + +2002-08-20 Michael Snyder <msnyder@redhat.com> + * gdbarch.sh (IN_SOLIB_RETURN_TRAMPOLINE): Add. * gdbarch.c, gdbarch.h: Regenerate. * arch-utils.c, arch-utils.h (generic_in_solib_return_trampoline): diff --git a/gdb/config/mips/tm-mips.h b/gdb/config/mips/tm-mips.h index b3015e344e6..89784fe97c8 100644 --- a/gdb/config/mips/tm-mips.h +++ b/gdb/config/mips/tm-mips.h @@ -218,11 +218,7 @@ extern void fixup_sigtramp (void); extern char *mips_read_processor_type (void); /* Functions for dealing with MIPS16 call and return stubs. */ -#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) mips_in_return_stub (pc, name) #define IGNORE_HELPER_CALL(pc) mips_ignore_helper (pc) -extern int mips_in_call_stub (CORE_ADDR pc, char *name); -extern int mips_in_return_stub (CORE_ADDR pc, char *name); -extern CORE_ADDR mips_skip_stub (CORE_ADDR pc); extern int mips_ignore_helper (CORE_ADDR pc); #ifndef TARGET_MIPS diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 79ce0424b4c..3a99744c2e0 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -3773,21 +3773,13 @@ mips_pop_frame (void) if (frame->saved_regs == NULL) FRAME_INIT_SAVED_REGS (frame); for (regnum = 0; regnum < NUM_REGS; regnum++) - if (regnum != SP_REGNUM && regnum != PC_REGNUM - && frame->saved_regs[regnum]) - { - /* Floating point registers must not be sign extended, - in case MIPS_SAVED_REGSIZE = 4 but sizeof (FP0_REGNUM) == 8. */ - - if (FP0_REGNUM <= regnum && regnum < FP0_REGNUM + 32) - write_register (regnum, - read_memory_unsigned_integer (frame->saved_regs[regnum], - MIPS_SAVED_REGSIZE)); - else - write_register (regnum, - read_memory_integer (frame->saved_regs[regnum], - MIPS_SAVED_REGSIZE)); - } + { + if (regnum != SP_REGNUM && regnum != PC_REGNUM + && frame->saved_regs[regnum]) + write_register (regnum, + read_memory_integer (frame->saved_regs[regnum], + MIPS_SAVED_REGSIZE)); + } write_register (SP_REGNUM, new_sp); flush_cached_frames (); @@ -5338,7 +5330,7 @@ mips_in_call_stub (CORE_ADDR pc, char *name) /* Return non-zero if the PC is inside a return thunk (aka stub or trampoline). This implements the IN_SOLIB_RETURN_TRAMPOLINE macro. */ -int +static int mips_in_return_stub (CORE_ADDR pc, char *name) { CORE_ADDR start_addr; @@ -6011,7 +6003,7 @@ mips_gdbarch_init (struct gdbarch_info info, set_gdbarch_skip_trampoline_code (gdbarch, mips_skip_stub); set_gdbarch_in_solib_call_trampoline (gdbarch, mips_in_call_stub); - /* set_gdbarch_in_solib_return_trampoline (gdbarch, mips_in_return_stub); */ + set_gdbarch_in_solib_return_trampoline (gdbarch, mips_in_return_stub); return gdbarch; } |