projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use remote-utils facilities for baud_rate
[deliverable/binutils-gdb.git]
/
gdb
/
remote.c
diff --git
a/gdb/remote.c
b/gdb/remote.c
index c2945adb8afccb418a295ce7e45a315c6a34f145..efdc7d94a07a1fe1a9d12a000c28ce5ea3191704 100644
(file)
--- a/
gdb/remote.c
+++ b/
gdb/remote.c
@@
-133,6
+133,7
@@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "gdb-stabs.h"
#include "dcache.h"
#include "gdb-stabs.h"
#include "dcache.h"
+#include "remote-utils.h"
#if !defined(DONT_USE_REMOTE)
#ifdef USG
#if !defined(DONT_USE_REMOTE)
#ifdef USG
@@
-220,6
+221,10
@@
static int timeout = 2;
int icache;
#endif
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. */
/* 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,16
+298,10
@@
device is attached to the remote system (e.g. /dev/ttya).");
if (!remote_desc)
perror_with_name (name);
if (!remote_desc)
perror_with_name (name);
- if (
baud_rate
)
+ if (
SERIAL_SETBAUDRATE (remote_desc, sr_get_baud_rate())
)
{
{
- int rate;
-
- if (sscanf (baud_rate, "%d", &rate) == 1)
- if (SERIAL_SETBAUDRATE (remote_desc, rate))
- {
- SERIAL_CLOSE (remote_desc);
- perror_with_name (name);
- }
+ SERIAL_CLOSE (remote_desc);
+ perror_with_name (name);
}
SERIAL_RAW (remote_desc);
}
SERIAL_RAW (remote_desc);
@@
-576,6
+575,9
@@
remote_wait (status)
return 0;
}
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 */
/* Read the remote registers into the block REGS. */
/* Currently we just read all the registers, so we don't use regno. */
/* ARGSUSED */
@@
-591,6
+593,9
@@
remote_fetch_registers (regno)
sprintf (buf, "g");
remote_send (buf);
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. */
/* 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
+603,29
@@
remote_fetch_registers (regno)
p = buf;
for (i = 0; i < REGISTER_BYTES; i++)
{
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;
}
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, ®s[REGISTER_BYTE(i)]);
}
for (i = 0; i < NUM_REGS; i++)
supply_register (i, ®s[REGISTER_BYTE(i)]);
}
@@
-635,7
+658,8
@@
remote_store_registers (regno)
each byte encoded as two hex characters. */
p = buf + 1;
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);
{
*p++ = tohex ((registers[i] >> 4) & 0xf);
*p++ = tohex (registers[i] & 0xf);
This page took
0.024323 seconds
and
4
git commands to generate.