From 6bafbdfbf6fc1e8f64b10d6b4d340401001d00c8 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 15 May 1996 14:28:34 +0000 Subject: * coffread.c (coff_symtab_read): Handle C_LABEL symbols like C_STAT symbols. * h8300-tdep.c (h8300_pop_frame): Reset $sp and $pc correctly. Flush cached frames just before exiting. * remote-sim.c (gdbsim_resume): Complain if the program isn't being run. * config/h8300/tm-h8300.h (BELIEVE_PCC_PROMOTION): Define. Fix some bugs exposed by the testsuite. HMSE. --- gdb/h8300-tdep.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'gdb/h8300-tdep.c') diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c index 32581e9..8c9bca0 100644 --- a/gdb/h8300-tdep.c +++ b/gdb/h8300-tdep.c @@ -377,11 +377,17 @@ h8300_pop_frame () for (regnum = 0; regnum < 8; regnum++) { - if (fsr.regs[regnum]) + /* Don't forget SP_REGNUM is a frame_saved_regs struct is the + actual value we want, not the address of the value we want. */ + if (fsr.regs[regnum] && regnum != SP_REGNUM) write_register (regnum, read_memory_integer(fsr.regs[regnum], BINWORD)); - - flush_cached_frames (); + else if (fsr.regs[regnum] && regnum == SP_REGNUM) + write_register (regnum, fsr.regs[regnum]); } + + /* Don't forget the update the PC too! */ + write_pc (frame->from_pc); + flush_cached_frames (); } -- cgit v1.1