aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/config/h8300/tm-h8300.h2
-rw-r--r--gdb/h8300-tdep.c12
-rw-r--r--gdb/remote-sim.c3
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);