This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[ob] Don't clobber inferior_ptid in read_pc_pid
- From: Daniel Jacobowitz <drow at false dot org>
- To: gdb-patches at sources dot redhat dot com
- Date: Sat, 28 Feb 2004 12:35:41 -0500
- Subject: [ob] Don't clobber inferior_ptid in read_pc_pid
Another issue found in testing on arm-linux. A return was added to this
function back in June; if we return from the middle of it, we leave
inferior_ptid set to the wrong thread. This causes a "!ptid_equal
(ecs->ptid, inferior_ptid)" test to fail, since we called read_pc_pid
with ecs->ptid. That leads to not calling context_switch; which clobbers
the stepping range for the previous thread; which causes stepping to stop
unexpectedly.
I'll commit this patch as obvious in a day or two.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2004-02-28 Daniel Jacobowitz <drow@mvista.com>
* regcache.c (read_pc_pid): Restore inferior_ptid after reading
PC_REGNUM.
Index: gdb/regcache.c
===================================================================
RCS file: /big/fsf/rsync/src-cvs/src/gdb/regcache.c,v
retrieving revision 1.108
diff -u -p -r1.108 regcache.c
--- gdb/regcache.c 15 Feb 2004 15:22:06 -0000 1.108
+++ gdb/regcache.c 27 Feb 2004 19:31:13 -0000
@@ -1332,8 +1332,7 @@ read_pc_pid (ptid_t ptid)
else if (PC_REGNUM >= 0)
{
CORE_ADDR raw_val = read_register_pid (PC_REGNUM, ptid);
- CORE_ADDR pc_val = ADDR_BITS_REMOVE (raw_val);
- return pc_val;
+ pc_val = ADDR_BITS_REMOVE (raw_val);
}
else
internal_error (__FILE__, __LINE__, "read_pc_pid: Unable to find PC");