aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/remote-utils.c6
-rw-r--r--gdb/remote.c38
3 files changed, 49 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 014bd59..92e2fa8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+Mon Sep 13 16:06:43 1993 Jim Kingdon (kingdon@cirdan.cygnus.com)
+
+ * remote.c: Define remote_debug to 0 and #if 0 baud_rate. Temporary
+ hack so this file compiles again.
+
+ * remote-utils.c (gr_multi_scan): Cast return value from alloca.
+ (gr_multi_scan): #if 0 never-reached return(-1).
+
+ * remote-udi.c (udi_wait): Return inferior_pid not 0.
+
Mon Sep 13 14:14:35 1993 K. Richard Pixley (rich@sendai.cygnus.com)
Collect some remote things into remote-utils.
diff --git a/gdb/remote-utils.c b/gdb/remote-utils.c
index 0b570fd..290e73f 100644
--- a/gdb/remote-utils.c
+++ b/gdb/remote-utils.c
@@ -535,7 +535,7 @@ gr_multi_scan (list, passthrough)
swallowed_p = swallowed = alloca(max_length << 1);
/* and a list of pointers to current scan points. */
- plist = alloca(string_count * sizeof(*plist));
+ plist = (char **) alloca (string_count * sizeof(*plist));
/* and initialize */
for (i = 0; i < string_count; ++i)
@@ -579,8 +579,10 @@ gr_multi_scan (list, passthrough)
swallowed_p = swallowed;
}
}
-
+#if 0
+ /* Never reached. */
return(-1);
+#endif
}
/* Get ready to modify the registers array. On machines which store
diff --git a/gdb/remote.c b/gdb/remote.c
index c2945ad..7775b62 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -220,6 +220,10 @@ static int timeout = 2;
int icache;
#endif
+/* FIXME: This is a hack which lets this file compile. It should be getting
+ this setting from remote-utils.c. */
+#define remote_debug (0)
+
/* Descriptor for I/O to remote machine. Initialize it to NULL so that
remote_open knows that we don't have a file open when the program
starts. */
@@ -293,6 +297,8 @@ device is attached to the remote system (e.g. /dev/ttya).");
if (!remote_desc)
perror_with_name (name);
+#if 0
+ /* FIXME: This should be using remote-utils.c. */
if (baud_rate)
{
int rate;
@@ -304,6 +310,7 @@ device is attached to the remote system (e.g. /dev/ttya).");
perror_with_name (name);
}
}
+#endif
SERIAL_RAW (remote_desc);
@@ -576,6 +583,9 @@ remote_wait (status)
return 0;
}
+/* Number of bytes of registers this stub implements. */
+static int register_bytes_found;
+
/* Read the remote registers into the block REGS. */
/* Currently we just read all the registers, so we don't use regno. */
/* ARGSUSED */
@@ -591,6 +601,9 @@ remote_fetch_registers (regno)
sprintf (buf, "g");
remote_send (buf);
+ /* Unimplemented registers read as all bits zero. */
+ memset (regs, 0, REGISTER_BYTES);
+
/* Reply describes registers byte by byte, each byte encoded as two
hex characters. Suck them all up, then supply them to the
register cacheing/storage mechanism. */
@@ -598,11 +611,29 @@ remote_fetch_registers (regno)
p = buf;
for (i = 0; i < REGISTER_BYTES; i++)
{
- if (p[0] == 0 || p[1] == 0)
- error ("Remote reply is too short: %s", buf);
+ if (p[0] == 0)
+ break;
+ if (p[1] == 0)
+ {
+ warning ("Remote reply is of odd length: %s", buf);
+ /* Don't change register_bytes_found in this case, and don't
+ print a second warning. */
+ goto supply_them;
+ }
regs[i] = fromhex (p[0]) * 16 + fromhex (p[1]);
p += 2;
}
+
+ if (i != register_bytes_found)
+ {
+ register_bytes_found = i;
+#ifdef REGISTER_BYTES_OK
+ if (!REGISTER_BYTES_OK (i))
+ warning ("Remote reply is too short: %s", buf);
+#endif
+ }
+
+ supply_them:
for (i = 0; i < NUM_REGS; i++)
supply_register (i, &regs[REGISTER_BYTE(i)]);
}
@@ -635,7 +666,8 @@ remote_store_registers (regno)
each byte encoded as two hex characters. */
p = buf + 1;
- for (i = 0; i < REGISTER_BYTES; i++)
+ /* remote_prepare_to_store insures that register_bytes_found gets set. */
+ for (i = 0; i < register_bytes_found; i++)
{
*p++ = tohex ((registers[i] >> 4) & 0xf);
*p++ = tohex (registers[i] & 0xf);