+2004-12-28 Jim Blandy <jimb@redhat.com>
+
+ * remote.c (fetch_register_using_p): Recognize a register value
+ starting with 'x' as indicating an unfetchable register.
+
2004-12-27 Mark Kettenis <kettenis@gnu.org>
* config/mips/obsd64.mh (NATDEPFILES): Unwrap line.
p += hexnumstr (p, regnum);
*p++ = '\0';
remote_send (buf, rs->remote_packet_size);
- if (buf[0] != 0 && buf[0] != 'E')
+
+ /* If the stub didn't recognize the packet, or if we got an error,
+ tell our caller. */
+ if (buf[0] == '\0' || buf[0] == 'E')
+ return 0;
+
+ /* If this register is unfetchable, tell the regcache. */
+ if (buf[0] == 'x')
{
- p = buf;
- i = 0;
- while (p[0] != 0)
- {
- if (p[1] == 0)
- {
- error ("fetch_register_using_p: early buf termination");
- return 0;
- }
- regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]);
- p += 2;
- }
- regcache_raw_supply (current_regcache, regnum, regp);
+ regcache_raw_supply (current_regcache, regnum, NULL);
+ set_register_cached (regnum, -1);
return 1;
}
- return 0;
+ /* Otherwise, parse and supply the value. */
+ p = buf;
+ i = 0;
+ while (p[0] != 0)
+ {
+ if (p[1] == 0)
+ {
+ error("fetch_register_using_p: early buf termination");
+ return 0;
+ }
+
+ regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]);
+ p += 2;
+ }
+ regcache_raw_supply (current_regcache, regnum, regp);
+ return 1;
}
static void