diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/config/h8300/tm-h8300.h | 2 | ||||
-rw-r--r-- | gdb/h8300-tdep.c | 12 | ||||
-rw-r--r-- | gdb/remote-sim.c | 3 |
4 files changed, 24 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 37a14a6..029915e 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 e877f37..52a4ef6 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 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 (); } diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index d0f0f50..124022a 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); |