* monitor.c (monitor_insert_breakpoint): Handle bi-endian machines.
authorDavid Edelsohn <dje.gcc@gmail.com>
Tue, 10 Dec 1996 01:32:17 +0000 (01:32 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Tue, 10 Dec 1996 01:32:17 +0000 (01:32 +0000)
gdb/ChangeLog
gdb/monitor.c

index 3fe324272b48357bc930e7e41d8ffab3e62464bf..c3963a7a502425a65eae845271a0d044547bd077 100644 (file)
@@ -1,3 +1,7 @@
+Mon Dec  9 17:12:19 1996  Doug Evans  <dje@canuck.cygnus.com>
+
+       * monitor.c (monitor_insert_breakpoint): Handle bi-endian machines.
+
 Mon Dec  9 15:58:51 1996  Mark Alexander  <marka@cygnus.com>
 
        * config/mips/tm-mips.h: Get rid of call-dummy code.
index 1b5553a2a34d9eed7cb4fd83e8cff78d74052fa7..b7a56aa57d33c65b3205b240a0576f58ac2b2dba 100644 (file)
@@ -459,14 +459,13 @@ monitor_expect_regexp (pat, buf, buflen)
    o give your command
    o *then* wait for the prompt.
 
-   Thus the last thing that a procedure does with the serial line
-   will be an monitor_expect_prompt().  Exception:  monitor_resume does not
-   wait for the prompt, because the terminal is being handed over
-   to the inferior.  However, the next thing which happens after that
-   is a monitor_wait which does wait for the prompt.
-   Note that this includes abnormal exit, e.g. error().  This is
-   necessary to prevent getting into states from which we can't
-   recover.  */
+   Thus the last thing that a procedure does with the serial line will
+   be an monitor_expect_prompt().  Exception: monitor_resume does not
+   wait for the prompt, because the terminal is being handed over to
+   the inferior.  However, the next thing which happens after that is
+   a monitor_wait which does wait for the prompt.  Note that this
+   includes abnormal exit, e.g. error().  This is necessary to prevent
+   getting into states from which we can't recover.  */
 
 int
 monitor_expect_prompt (buf, buflen)
@@ -1168,32 +1167,33 @@ monitor_read_memory_single (memaddr, myaddr, len)
       cmd = current_monitor->getmem.cmdb;
     }
 
-/* Send the examine command.  */
+  /* Send the examine command.  */
 
   monitor_printf (cmd, memaddr);
 
-/* If RESP_DELIM is specified, we search for that as a leading delimiter for
-   the register value.  Otherwise, we just start searching from the start of
-   the buf.  */
+  /* If RESP_DELIM is specified, we search for that as a leading
+     delimiter for the memory value.  Otherwise, we just start
+     searching from the start of the buf.  */
 
   if (current_monitor->getmem.resp_delim)
     monitor_expect_regexp (&getmem_resp_delim_pattern, NULL, 0);
 
-/* Now, read the appropriate number of hex digits for this loc, skipping
-   spaces.  */
+  /* Now, read the appropriate number of hex digits for this loc,
+     skipping spaces.  */
 
-  /* Skip leading spaces and "0x" if MO_HEX_PREFIX flag is set */
+  /* Skip leading spaces and "0x" if MO_HEX_PREFIX flag is set. */
   if (current_monitor->flags & MO_HEX_PREFIX) 
     {
       int c;
+
       c = readchar (timeout);
       while (c == ' ')
        c = readchar (timeout);
       if ((c == '0') && ((c = readchar (timeout)) == 'x'))
        ;
       else
-         error ("monitor_read_memory_single (0x%x):  bad response from monitor: %.*s%c.",
-                memaddr, i, membuf, c);
+       error ("monitor_read_memory_single (0x%x):  bad response from monitor: %.*s%c.",
+              memaddr, i, membuf, c);
     }
   for (i = 0; i < len * 2; i++)
     {
@@ -1270,20 +1270,21 @@ monitor_read_memory (memaddr, myaddr, len)
 
   len = min (len, 16);
 
-/* See if xfer would cross a 16 byte boundary.  If so, clip it.  */
+  /* See if xfer would cross a 16 byte boundary.  If so, clip it.  */
   if (((memaddr ^ (memaddr + len - 1)) & ~0xf) != 0)
     len = ((memaddr + len) & ~0xf) - memaddr;
 
- /* send the memory examine command */
 /* send the memory examine command */
 
   if (current_monitor->flags & MO_GETMEM_NEEDS_RANGE)
     monitor_printf (current_monitor->getmem.cmdb, memaddr, memaddr + len - 1);
   else
     monitor_printf (current_monitor->getmem.cmdb, memaddr, len);
 
-/* If TERM is present, we wait for that to show up.  Also, (if TERM is
-   present), we will send TERM_CMD if that is present.  In any case, we collect
-   all of the output into buf, and then wait for the normal prompt.  */
+  /* If TERM is present, we wait for that to show up.  Also, (if TERM
+     is present), we will send TERM_CMD if that is present.  In any
+     case, we collect all of the output into buf, and then wait for
+     the normal prompt.  */
 
   if (current_monitor->getmem.term)
     {
@@ -1305,9 +1306,9 @@ monitor_read_memory (memaddr, myaddr, len)
 
   p = buf;
 
-  /* If RESP_DELIM is specified, we search for that as a leading delimiter for
-     the values.  Otherwise, we just start searching from the start of the buf.
-   */
+  /* If RESP_DELIM is specified, we search for that as a leading
+     delimiter for the values.  Otherwise, we just start searching
+     from the start of the buf.  */
 
   if (current_monitor->getmem.resp_delim)
     {
@@ -1420,7 +1421,13 @@ monitor_insert_breakpoint (addr, shadow)
      char *shadow;
 {
   int i;
+  /* This is only used to compute the size of a breakpoint.  */
+#ifdef BREAKPOINT
   static unsigned char break_insn[] = BREAKPOINT;
+#else
+  /* In the bi-endian case we assume breakpoints are the same size.  */
+  static unsigned char break_insn[] = BIG_BREAKPOINT;
+#endif
 
   for (i = 0; i < NUM_MONITOR_BREAKPOINTS; i++)
     {