diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infrun.c | 20 |
2 files changed, 16 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b5e75e0..f06ec83 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2010-02-08 Ulrich Weigand <uweigand@de.ibm.com> + + * infrun.c (handle_inferior_event): Do not look up regcache + for exited processes. + Mon Feb 8 13:17:10 2010 Chris Moller <moller@mollerware.com> PR gdb/10728 diff --git a/gdb/infrun.c b/gdb/infrun.c index 8307986..a715596 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2664,7 +2664,6 @@ handle_inferior_event (struct execution_control_state *ecs) { struct frame_info *frame; struct gdbarch *gdbarch; - struct regcache *regcache; int sw_single_step_trap_p = 0; int stopped_by_watchpoint; int stepped_after_stopped_by_watchpoint = 0; @@ -2735,18 +2734,21 @@ handle_inferior_event (struct execution_control_state *ecs) non-executable stack. This happens for call dummy breakpoints for architectures like SPARC that place call dummies on the stack. */ - regcache = get_thread_regcache (ecs->ptid); if (ecs->ws.kind == TARGET_WAITKIND_STOPPED && (ecs->ws.value.sig == TARGET_SIGNAL_ILL || ecs->ws.value.sig == TARGET_SIGNAL_SEGV - || ecs->ws.value.sig == TARGET_SIGNAL_EMT) - && breakpoint_inserted_here_p (get_regcache_aspace (regcache), - regcache_read_pc (regcache))) + || ecs->ws.value.sig == TARGET_SIGNAL_EMT)) { - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, - "infrun: Treating signal as SIGTRAP\n"); - ecs->ws.value.sig = TARGET_SIGNAL_TRAP; + struct regcache *regcache = get_thread_regcache (ecs->ptid); + + if (breakpoint_inserted_here_p (get_regcache_aspace (regcache), + regcache_read_pc (regcache))) + { + if (debug_infrun) + fprintf_unfiltered (gdb_stdlog, + "infrun: Treating signal as SIGTRAP\n"); + ecs->ws.value.sig = TARGET_SIGNAL_TRAP; + } } /* Mark the non-executing threads accordingly. In all-stop, all |