summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@specifix.com>2002-10-04 22:17:36 +0000
committerMichael Snyder <msnyder@specifix.com>2002-10-04 22:17:36 +0000
commit30f46bcfbec7f46f2b7f11bd7fbaaa5da01aaf09 (patch)
treef82c0d79f73e5b6e0002b78338fc5d7df371c6fb
parent64b1d393ce13ea37b7c16095a56573742c2b5b21 (diff)
downloadgdb-30f46bcfbec7f46f2b7f11bd7fbaaa5da01aaf09.tar.gz
2002-10-04 Michael Snyder <msnyder@redhat.com>drow-cplus-branchpoint
* m32r-stub.c (handle_exception): Make sure exception is "trap" before treating it as a single-step event.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/m32r-stub.c12
2 files changed, 18 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a479f5fd256..6a70cf425d6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
@@ -308,7 +313,7 @@
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.
diff --git a/gdb/m32r-stub.c b/gdb/m32r-stub.c
index a691a657a23..2e69b4403ea 100644
--- a/gdb/m32r-stub.c
+++ b/gdb/m32r-stub.c
@@ -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;