2002-10-04 Michael Snyder <msnyder@redhat.com>
authorMichael Snyder <msnyder@vmware.com>
Fri, 4 Oct 2002 22:17:36 +0000 (22:17 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 4 Oct 2002 22:17:36 +0000 (22:17 +0000)
* m32r-stub.c (handle_exception): Make sure exception is "trap"
before treating it as a single-step event.

gdb/ChangeLog
gdb/m32r-stub.c

index a479f5fd2560fbc039ec764b7506fe5275d0f2aa..6a70cf425d6987ba71507367482d355e63a3d560 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-04  Michael Snyder  <msnyder@redhat.com>
+
+       * m32r-stub.c (handle_exception): Make sure exception is "trap"
+       before treating it as a single-step event.
+
 2002-10-03  Adam Fedor  <fedor@gnu.org>
 
        * objc-lang.c: ARI fixes.  Change string.h to gdb_string.h.
 
 2002-09-22  Fernando Nasser  <fnasser@redhat.com>
 
-       * source.c (get_current__or_default_source_symtab_and_line): Initialize
+       * source.c (get_current_or_default_source_symtab_and_line): Initialize
        sal.pc and sal.end fields.
        (get_current_or_default_source_symtab_and_line): Ditto.
        * breakpoint.c (parse_breakpoint_sals): Use correct accessor function
@@ -10397,9 +10402,9 @@ Wed Apr 24 14:22:21 2002  Andrew Cagney  <cagney@redhat.com>
        * breakpoint.c (break_at_finish_command): Export.
        (break_at_finish_at_depth_command): Export.
        (tbreak_at_finish_command): Export.
-       (_initialize_breakpoint): Delete "xbreak" and "tbreak" commands.
+       (_initialize_breakpoint): Delete "xbreak" and "txbreak" commands.
        * hppa-tdep.c (_initialize_hppa_tdep): Add "xbreak" and
-       "tbreak" commands, which are HPPA specific.
+       "txbreak" commands, which are HPPA specific.
 
        * printcmd.c (disassemble_command): Remove an ancient
        artifact of an old merge.
index a691a657a23b8025144180444f70fb196d856879..2e69b4403ea56d336c5df2bf3458329c977be13b 100644 (file)
@@ -210,8 +210,16 @@ handle_exception(int exceptionVector)
   unsigned char   buf[16];
   int binary;
 
-  if (!finish_from_step())
-    return;            /* "false step": let the target continue */
+  /* Do not call finish_from_step() if this is not a trap #1
+   * (breakpoint trap).  Without this check, the finish_from_step()
+   * might interpret a system call trap as a single step trap.  This
+   * can happen if: the stub receives 's' and exits, but an interrupt
+   * was pending; the interrupt is now handled and causes the stub to
+   * be reentered because some function makes a system call.  
+   */
+  if (exceptionVector == 1)    /* Trap exception? */
+    if (!finish_from_step())   /* Go see if stepping state needs update. */
+      return;          /* "false step": let the target continue */
 
   gdb_m32r_vector = exceptionVector;