From 6bafbdfbf6fc1e8f64b10d6b4d340401001d00c8 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 15 May 1996 14:28:34 +0000 Subject: [PATCH] * 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/ChangeLog | 10 ++++++++++ gdb/config/h8300/tm-h8300.h | 2 ++ gdb/h8300-tdep.c | 12 +++++++++--- gdb/remote-sim.c | 3 +++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 37a14a6e174..029915eda53 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +Wed May 15 08:25:12 1996 Jeffrey A Law (law@cygnus.com) + + * 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. + Tue May 14 18:05:16 1996 Stu Grossman (grossman@critters.cygnus.com) * procfs.c (procfs_thread_alive procfs_stop): Make static. diff --git a/gdb/config/h8300/tm-h8300.h b/gdb/config/h8300/tm-h8300.h index e877f37993d..52a4ef6c61d 100644 --- a/gdb/config/h8300/tm-h8300.h +++ b/gdb/config/h8300/tm-h8300.h @@ -256,3 +256,5 @@ typedef unsigned short INSN_WORD; #define NUM_REALREGS 10 #define NOP { 0x01, 0x80} /* A sleep insn */ + +#define BELIEVE_PCC_PROMOTION 1 diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c index 32581e99dc7..8c9bca08a60 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 (); } diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index d0f0f50daa9..124022accb8 100644 --- a/gdb/remote-sim.c +++ b/gdb/remote-sim.c @@ -280,6 +280,9 @@ gdbsim_resume (pid, step, siggnal) int pid, step; enum target_signal siggnal; { + if (inferior_pid != 42) + error ("The program is not being run."); + if (sr_get_debug ()) printf_filtered ("gdbsim_resume: step %d, signal %d\n", step, siggnal); -- 2.30.2