aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2008-08-22 14:47:13 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2008-08-22 14:47:13 +0000
commit24a73cce8b28e42bdc79285fec5532ec4787c8d0 (patch)
tree928e8fda4905a88569ce35536b3cf5f624a04f1e /gdb
parente0bb1c1c26100adf76647b45e24aedd73a355b5e (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--gdb/infrun.c16
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)