[ob] Don't clobber inferior_ptid in read_pc_pid
Daniel Jacobowitz
drow@false.org
Sat Feb 28 17:35:00 GMT 2004
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");
More information about the Gdb-patches
mailing list