diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2008-08-22 14:47:13 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2008-08-22 14:47:13 +0000 |
commit | 24a73cce8b28e42bdc79285fec5532ec4787c8d0 (patch) | |
tree | 928e8fda4905a88569ce35536b3cf5f624a04f1e /gdb | |
parent | e0bb1c1c26100adf76647b45e24aedd73a355b5e (diff) | |
download | gdb-24a73cce8b28e42bdc79285fec5532ec4787c8d0.zip gdb-24a73cce8b28e42bdc79285fec5532ec4787c8d0.tar.gz gdb-24a73cce8b28e42bdc79285fec5532ec4787c8d0.tar.bz2 |
* infrun.c (adjust_pc_after_break): Do not call get_thread_regcache
if the thread has already exited.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infrun.c | 16 |
2 files changed, 14 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 155fb66..c127010 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-08-22 Ulrich Weigand <uweigand@de.ibm.com> + + * infrun.c (adjust_pc_after_break): Do not call get_thread_regcache + if the thread has already exited. + 2008-08-22 Pedro Alves <pedro@codesourcery.com> * infrun.c (proceed): Move back setting previous_inferior_ptid diff --git a/gdb/infrun.c b/gdb/infrun.c index de1827e..d6c49ab 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1750,15 +1750,10 @@ context_switch_to (ptid_t ptid) static void adjust_pc_after_break (struct execution_control_state *ecs) { - struct regcache *regcache = get_thread_regcache (ecs->ptid); - struct gdbarch *gdbarch = get_regcache_arch (regcache); + struct regcache *regcache; + struct gdbarch *gdbarch; CORE_ADDR breakpoint_pc; - /* If this target does not decrement the PC after breakpoints, then - we have nothing to do. */ - if (gdbarch_decr_pc_after_break (gdbarch) == 0) - return; - /* If we've hit a breakpoint, we'll normally be stopped with SIGTRAP. If we aren't, just return. @@ -1786,6 +1781,13 @@ adjust_pc_after_break (struct execution_control_state *ecs) if (ecs->ws.value.sig != TARGET_SIGNAL_TRAP) return; + /* If this target does not decrement the PC after breakpoints, then + we have nothing to do. */ + regcache = get_thread_regcache (ecs->ptid); + gdbarch = get_regcache_arch (regcache); + if (gdbarch_decr_pc_after_break (gdbarch) == 0) + return; + /* Find the location where (if we've hit a breakpoint) the breakpoint would be. */ breakpoint_pc = regcache_read_pc (regcache) |