mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 20:14:06 +08:00
* monitor.c (monitor_insert_breakpoint): Handle bi-endian machines.
This commit is contained in:
parent
509ffa78cf
commit
15f13cd0ec
@ -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.
|
||||
|
@ -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++)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user