diff options
author | Pedro Alves <palves@redhat.com> | 2008-11-20 17:06:05 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2008-11-20 17:06:05 +0000 |
commit | c7e8a53cdd5cd68ded1e80c52a691791fb28a0e4 (patch) | |
tree | 943c061d08c443e3e661e81d529650256968fd2f /gdb/infrun.c | |
parent | e2fd701eb4e8c8e59741a6a5ae97d759e70e239a (diff) | |
download | gdb-c7e8a53cdd5cd68ded1e80c52a691791fb28a0e4.zip gdb-c7e8a53cdd5cd68ded1e80c52a691791fb28a0e4.tar.gz gdb-c7e8a53cdd5cd68ded1e80c52a691791fb28a0e4.tar.bz2 |
* infrun.c (resume): If following a fork, also reset regcache,
gdbarch and pc.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index 93ee00b..4043e75 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -965,10 +965,13 @@ resume (int step, enum target_signal sig) { int should_resume = 1; struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0); + + /* Note that these must be reset if we follow a fork below. */ struct regcache *regcache = get_current_regcache (); struct gdbarch *gdbarch = get_regcache_arch (regcache); struct thread_info *tp = inferior_thread (); CORE_ADDR pc = regcache_read_pc (regcache); + QUIT; if (debug_infrun) @@ -1057,6 +1060,9 @@ a command like `return' or `jump' to continue execution.")); /* Following a child fork will change our notion of current thread. */ tp = inferior_thread (); + regcache = get_current_regcache (); + gdbarch = get_regcache_arch (regcache); + pc = regcache_read_pc (regcache); break; case TARGET_WAITKIND_EXECD: |