From d6020d455dd9fc75ecbe87da82d99ffe05f1dab4 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Fri, 4 Oct 2002 22:17:36 +0000 Subject: 2002-10-04 Michael Snyder * m32r-stub.c (handle_exception): Make sure exception is "trap" before treating it as a single-step event. --- gdb/m32r-stub.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'gdb/m32r-stub.c') diff --git a/gdb/m32r-stub.c b/gdb/m32r-stub.c index a691a65..2e69b44 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; -- cgit v1.1