This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] mips_pop_frame
- From: Michael Snyder <msnyder at redhat dot com>
- To: Andrew Cagney <ac131313 at ges dot redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com, cagney at redhat dot com
- Date: Tue, 17 Sep 2002 13:54:22 -0700
- Subject: Re: [RFA] mips_pop_frame
- Organization: Red Hat, Inc.
- References: <3D59740A.72B5965E@redhat.com> <3D754C77.7CF30B6A@redhat.com> <3D80FD1F.1000102@ges.redhat.com>
Andrew Cagney wrote:
>
> >> Index: mips-tdep.c
> >> ===================================================================
> >> RCS file: /cvs/src/src/gdb/mips-tdep.c,v
> >> retrieving revision 1.99
> >> diff -p -r1.99 mips-tdep.c
> >> *** mips-tdep.c 10 Aug 2002 01:09:10 -0000 1.99
> >> --- mips-tdep.c 13 Aug 2002 21:18:06 -0000
> >> *************** mips_pop_frame (void)
> >> *** 3134,3146 ****
> >> 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])
> >> ! write_register (regnum,
> >> ! read_memory_integer (frame->saved_regs[regnum],
> >> ! MIPS_SAVED_REGSIZE));
> >> ! }
> >> write_register (SP_REGNUM, new_sp);
> >> flush_cached_frames ();
> >>
> >> --- 3136,3157 ----
> >> 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));
> >> ! }
> >> !
> >> write_register (SP_REGNUM, new_sp);
> >> flush_cached_frames ();
>
> So that's why the FP registers are wrong! Yes, fine.
>
Committed. Thanks.