* coffread.c (coff_symtab_read): Handle C_LABEL symbols like
authorJeff Law <law@redhat.com>
Wed, 15 May 1996 14:28:34 +0000 (14:28 +0000)
committerJeff Law <law@redhat.com>
Wed, 15 May 1996 14:28:34 +0000 (14:28 +0000)
        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
gdb/config/h8300/tm-h8300.h
gdb/h8300-tdep.c
gdb/remote-sim.c

index 37a14a6e17491bbd78c785eb8a2b9cb302886f93..029915eda53b4e5bc056670d6acc7eb3fa97c35b 100644 (file)
@@ -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.
index e877f37993db7c0b76093ef1547cf6cf19a9e5b4..52a4ef6c61d2e304156f8bd5f6da94e5613bceaf 100644 (file)
@@ -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
index 32581e99dc724707d6bca402f1dd0c5ec921ff11..8c9bca08a60cbbcb81dd5621c3171a4a5d9fa1c7 100644 (file)
@@ -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 ();
 }
 
 
index d0f0f50daa9a1a7948e3b928288f7618db774a01..124022accb85ab20eecb54a9b836dd2f9fa72042 100644 (file)
@@ -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);