aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Noer <noer@cygnus>1997-08-21 23:10:34 +0000
committerGeoffrey Noer <noer@cygnus>1997-08-21 23:10:34 +0000
commit61a0d0227a46112b2b93b84506b937f1c6eca7ab (patch)
treebcad77955cf7d0388057527c91aca0eaa119b711
parentf483cb11c89c720da94839211f61338f3bd93fd6 (diff)
downloadgdb-61a0d0227a46112b2b93b84506b937f1c6eca7ab.zip
gdb-61a0d0227a46112b2b93b84506b937f1c6eca7ab.tar.gz
gdb-61a0d0227a46112b2b93b84506b937f1c6eca7ab.tar.bz2
Thu Aug 21 14:56:04 1997 Geoffrey Noer <noer@cygnus.com>
* ppc-bdm.c (bdm_ppc_wait): stop printfing ecr, der * ocd.c: initialize remote_timeout (ocd_wait): while looping, call ocd_do_command with OCD_AYT (ocd_get_packet): remove find_packet goto. If there isn't an 0x55 at the start, something is quite wrong so error out instead of advancing in the packet and trying again. If checksum is invalid, print error message instead of trying again. * ser-ocd.c (ocd_readchar): error if we attempt to read past the end of the from_wiggler_buffer.
-rw-r--r--gdb/ChangeLog19
-rw-r--r--gdb/ocd.c40
-rw-r--r--gdb/ppc-bdm.c2
-rw-r--r--gdb/ser-ocd.c15
4 files changed, 50 insertions, 26 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c2c1229..0c1eb20 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,22 @@
+Thu Aug 21 14:56:04 1997 Geoffrey Noer <noer@cygnus.com>
+
+ * ppc-bdm.c (bdm_ppc_wait): stop printfing ecr, der
+ * ocd.c: initialize remote_timeout
+ (ocd_wait): while looping, call ocd_do_command with OCD_AYT
+ (ocd_get_packet): remove find_packet goto. If there isn't
+ an 0x55 at the start, something is quite wrong so error out
+ instead of advancing in the packet and trying again. If checksum
+ is invalid, print error message instead of trying again.
+ * ser-ocd.c (ocd_readchar): error if we attempt to read past
+ the end of the from_wiggler_buffer.
+
+Tue Aug 19 08:41:36 1997 Fred Fish <fnf@cygnus.com>
+
+ * objfiles.c (objfile_relocate): Add call to breakpoint_re_set
+ after relocations are complete.
+ * remote-vx.c (vx_add_symbols): Remove call to breakpoint_re_set,
+ this is now done in objfile_relocate.
+
Mon Aug 18 17:29:54 1997 Ian Lance Taylor <ian@cygnus.com>
* win32-nat.c (handle_exception): Return a value indicating
diff --git a/gdb/ocd.c b/gdb/ocd.c
index a853080..268d7bb 100644
--- a/gdb/ocd.c
+++ b/gdb/ocd.c
@@ -74,9 +74,10 @@ static int last_run_status;
other form of hairy serial connection, I would think 2 seconds would
be plenty. */
-/* Changed to allow option to set timeout value.
- was static int remote_timeout = 2; */
-extern int remote_timeout;
+/* FIXME: Change to allow option to set timeout value on a per target
+ basis.
+
+static int remote_timeout = 2;
/* Descriptor for I/O to remote machine. Initialize it to NULL so that
ocd_open knows that we don't have a file open when the program
@@ -196,9 +197,12 @@ ocd_start_remote (dummy)
ocd_stop ();
#if 1
+ /* When using a target box, we want to asynchronously return status when
+ target stops. The OCD_SET_CTL_FLAGS command is ignored by Wigglers.dll
+ when using a parallel Wiggler */
buf[0] = OCD_SET_CTL_FLAGS;
buf[1] = 0;
- buf[2] = 1; /* Asynchronously return status when target stops */
+ buf[2] = 1;
ocd_put_packet (buf, 3);
p = ocd_get_packet (buf[0], &pktlen, remote_timeout);
@@ -446,22 +450,23 @@ int
ocd_wait ()
{
unsigned char *p;
- int error_code, status;
+ int error_code;
int pktlen;
+ char buf[1];
ocd_interrupt_flag = 0;
- /* Target may already be stopped by the time we get here. */
-
-/* if (!(last_run_status & OCD_FLAG_BDM)) */
+ /* Target might already be stopped by the time we get here. */
+ /* If we aren't already stopped, we need to loop until we've dropped
+ back into BDM mode */
- /* Loop until we've dropped back into BDM mode */
while (!(last_run_status & OCD_FLAG_BDM))
{
- ofunc = (void (*)()) signal (SIGINT, ocd_interrupt);
-
+ buf[0] = OCD_AYT;
+ ocd_put_packet (buf, 1);
p = ocd_get_packet (OCD_AYT, &pktlen, -1);
+ ofunc = (void (*)()) signal (SIGINT, ocd_interrupt);
signal (SIGINT, ofunc);
if (pktlen < 2)
@@ -477,10 +482,6 @@ ocd_wait ()
error ("OCD device lost VCC at BDM interface.");
else if (last_run_status & OCD_FLAG_CABLE_DISC)
error ("OCD device cable appears to have been disconnected.");
-#if 0
- if (!(last_run_status & OCD_FLAG_BDM))
- error ("OCD device woke up, but wasn't stopped: 0x%x", status);
-#endif
}
if (ocd_interrupt_flag)
@@ -1034,15 +1035,13 @@ ocd_get_packet (cmd, lenp, timeout)
unsigned char *packet_ptr;
unsigned char checksum;
- find_packet:
-
ch = readchar (timeout);
if (ch < 0)
error ("ocd_get_packet (readchar): %d", ch);
if (ch != 0x55)
- goto find_packet;
+ error ("ocd_get_packet (readchar): %d", ch);
/* Found the start of a packet */
@@ -1133,8 +1132,7 @@ ocd_get_packet (cmd, lenp, timeout)
len = 257;
break;
default:
- fprintf_filtered (gdb_stderr, "Unknown packet type 0x%x\n", ch);
- goto find_packet;
+ error ("ocd_get_packet: unknown packet type 0x%x\n", ch);
}
}
@@ -1162,7 +1160,7 @@ ocd_get_packet (cmd, lenp, timeout)
}
if (checksum != 0)
- goto find_packet;
+ error ("ocd_get_packet: bad packet checksum");
if (cmd != -1 && cmd != packet[0])
error ("Response phase error. Got 0x%x, expected 0x%x", packet[0], cmd);
diff --git a/gdb/ppc-bdm.c b/gdb/ppc-bdm.c
index 5ca012f..6731e9a 100644
--- a/gdb/ppc-bdm.c
+++ b/gdb/ppc-bdm.c
@@ -116,6 +116,7 @@ bdm_ppc_wait (pid, target_status)
target_status->value.sig = TARGET_SIGNAL_TRAP; /* XXX for now */
+#if 0
{
unsigned long ecr, der;
@@ -123,6 +124,7 @@ bdm_ppc_wait (pid, target_status)
der = ocd_read_bdm_register (149); /* Read the debug enables register */
fprintf_unfiltered (gdb_stdout, "ecr = 0x%x, der = 0x%x\n", ecr, der);
}
+#endif
return inferior_pid;
}
diff --git a/gdb/ser-ocd.c b/gdb/ser-ocd.c
index 4008a87..08239bb 100644
--- a/gdb/ser-ocd.c
+++ b/gdb/ser-ocd.c
@@ -81,21 +81,26 @@ ocd_raw (scb)
/* Always in raw mode */
}
-/* We need a buffer to store responses from the Wigglers.dll */
-#define WIGGLER_BUFF_SIZE 512
-unsigned char from_wiggler_buffer[WIGGLER_BUFF_SIZE];
-unsigned char * wiggler_buffer_ptr; /* curr spot in buffer */
-
static void
ocd_readremote ()
{
}
+/* We need a buffer to store responses from the Wigglers.dll */
+#define WIGGLER_BUFF_SIZE 512
+unsigned char from_wiggler_buffer[WIGGLER_BUFF_SIZE];
+unsigned char * wiggler_buffer_ptr; /* curr spot in buffer */
+
static int
ocd_readchar (scb, timeout)
serial_t scb;
int timeout;
{
+ /* Catch attempts at reading past the end of the buffer */
+ if (wiggler_buffer_ptr >
+ (from_wiggler_buffer + (sizeof (char *) * WIGGLER_BUFF_SIZE)))
+ error ("ocd_readchar asked to read past the end of the buffer!");
+
return (int) *wiggler_buffer_ptr++; /* return curr char and increment ptr */
}