* 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 37a14a6..029915e 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 e877f37..52a4ef6 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 32581e9..8c9bca0 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 d0f0f50..124022a 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);