1 /* Remote debugging interface for boot monitors, for GDB.
3 Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
4 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
6 Contributed by Cygnus Support. Written by Rob Savoye for Cygnus.
7 Resurrected from the ashes by Stu Grossman.
9 This file is part of GDB.
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 59 Temple Place - Suite 330,
24 Boston, MA 02111-1307, USA. */
26 /* This file was derived from various remote-* modules. It is a collection
27 of generic support functions so GDB can talk directly to a ROM based
28 monitor. This saves use from having to hack an exception based handler
29 into existence, and makes for quick porting.
31 This module talks to a debug monitor called 'MONITOR', which
32 We communicate with MONITOR via either a direct serial line, or a TCP
33 (or possibly TELNET) stream to a terminal multiplexor,
34 which in turn talks to the target board. */
36 /* FIXME 32x64: This code assumes that registers and addresses are at
37 most 32 bits long. If they can be larger, you will need to declare
38 values as LONGEST and use %llx or some such to print values when
39 building commands to send to the monitor. Since we don't know of
40 any actual 64-bit targets with ROM monitors that use this code,
41 it's not an issue right now. -sts 4/18/96 */
46 #include "exceptions.h"
49 #include "gdb_string.h"
50 #include <sys/types.h>
56 #include "gdb_regex.h"
60 static char *dev_name
;
61 static struct target_ops
*targ_ops
;
63 static void monitor_vsprintf (char *sndbuf
, char *pattern
, va_list args
);
65 static int readchar (int timeout
);
67 static void monitor_fetch_register (int regno
);
68 static void monitor_store_register (int regno
);
70 static void monitor_printable_string (char *newstr
, char *oldstr
, int len
);
71 static void monitor_error (char *function
, char *message
, CORE_ADDR memaddr
, int len
, char *string
, int final_char
);
72 static void monitor_detach (char *args
, int from_tty
);
73 static void monitor_resume (ptid_t ptid
, int step
, enum target_signal sig
);
74 static void monitor_interrupt (int signo
);
75 static void monitor_interrupt_twice (int signo
);
76 static void monitor_interrupt_query (void);
77 static void monitor_wait_cleanup (void *old_timeout
);
79 static ptid_t
monitor_wait (ptid_t ptid
, struct target_waitstatus
*status
);
80 static void monitor_fetch_registers (int regno
);
81 static void monitor_store_registers (int regno
);
82 static void monitor_prepare_to_store (void);
83 static int monitor_xfer_memory (CORE_ADDR memaddr
, char *myaddr
, int len
,
85 struct mem_attrib
*attrib
,
86 struct target_ops
*target
);
87 static void monitor_files_info (struct target_ops
*ops
);
88 static int monitor_insert_breakpoint (CORE_ADDR addr
, char *shadow
);
89 static int monitor_remove_breakpoint (CORE_ADDR addr
, char *shadow
);
90 static void monitor_kill (void);
91 static void monitor_load (char *file
, int from_tty
);
92 static void monitor_mourn_inferior (void);
93 static void monitor_stop (void);
95 static int monitor_read_memory (CORE_ADDR addr
, char *myaddr
, int len
);
96 static int monitor_write_memory (CORE_ADDR addr
, char *myaddr
, int len
);
97 static int monitor_write_memory_bytes (CORE_ADDR addr
, char *myaddr
, int len
);
98 static int monitor_write_memory_block (CORE_ADDR memaddr
,
99 char *myaddr
, int len
);
100 static int monitor_expect_regexp (struct re_pattern_buffer
*pat
,
101 char *buf
, int buflen
);
102 static void monitor_dump_regs (void);
104 static int from_hex (int a
);
105 static unsigned long get_hex_word (void);
107 static void parse_register_dump (char *, int);
109 static struct monitor_ops
*current_monitor
;
111 static int hashmark
; /* flag set by "set hash" */
113 static int timeout
= 30;
115 static int in_monitor_wait
= 0; /* Non-zero means we are in monitor_wait() */
117 static void (*ofunc
) (); /* Old SIGINT signal handler */
119 static CORE_ADDR
*breakaddr
;
121 /* Descriptor for I/O to remote machine. Initialize it to NULL so
122 that monitor_open knows that we don't have a file open when the
125 static struct serial
*monitor_desc
= NULL
;
127 /* Pointer to regexp pattern matching data */
129 static struct re_pattern_buffer register_pattern
;
130 static char register_fastmap
[256];
132 static struct re_pattern_buffer getmem_resp_delim_pattern
;
133 static char getmem_resp_delim_fastmap
[256];
135 static struct re_pattern_buffer setmem_resp_delim_pattern
;
136 static char setmem_resp_delim_fastmap
[256];
138 static struct re_pattern_buffer setreg_resp_delim_pattern
;
139 static char setreg_resp_delim_fastmap
[256];
141 static int dump_reg_flag
; /* Non-zero means do a dump_registers cmd when
142 monitor_wait wakes up. */
144 static int first_time
= 0; /* is this the first time we're executing after
145 gaving created the child proccess? */
147 #define TARGET_BUF_SIZE 2048
149 /* Monitor specific debugging information. Typically only useful to
150 the developer of a new monitor interface. */
152 static void monitor_debug (const char *fmt
, ...) ATTR_FORMAT(printf
, 1, 2);
154 static int monitor_debug_p
= 0;
156 /* NOTE: This file alternates between monitor_debug_p and remote_debug
157 when determining if debug information is printed. Perhaps this
158 could be simplified. */
161 monitor_debug (const char *fmt
, ...)
166 va_start (args
, fmt
);
167 vfprintf_filtered (gdb_stdlog
, fmt
, args
);
173 /* Convert a string into a printable representation, Return # byte in
174 the new string. When LEN is >0 it specifies the size of the
175 string. Otherwize strlen(oldstr) is used. */
178 monitor_printable_string (char *newstr
, char *oldstr
, int len
)
184 len
= strlen (oldstr
);
186 for (i
= 0; i
< len
; i
++)
197 sprintf (newstr
, "\\x%02x", ch
& 0xff);
236 /* Print monitor errors with a string, converting the string to printable
240 monitor_error (char *function
, char *message
,
241 CORE_ADDR memaddr
, int len
, char *string
, int final_char
)
243 int real_len
= (len
== 0 && string
!= (char *) 0) ? strlen (string
) : len
;
244 char *safe_string
= alloca ((real_len
* 4) + 1);
245 monitor_printable_string (safe_string
, string
, real_len
);
248 error (_("%s (0x%s): %s: %s%c"), function
, paddr_nz (memaddr
), message
, safe_string
, final_char
);
250 error (_("%s (0x%s): %s: %s"), function
, paddr_nz (memaddr
), message
, safe_string
);
253 /* Convert hex digit A to a number. */
258 if (a
>= '0' && a
<= '9')
260 else if (a
>= 'a' && a
<= 'f')
262 else if (a
>= 'A' && a
<= 'F')
265 error (_("Invalid hex digit %d"), a
);
268 /* monitor_vsprintf - similar to vsprintf but handles 64-bit addresses
270 This function exists to get around the problem that many host platforms
271 don't have a printf that can print 64-bit addresses. The %A format
272 specification is recognized as a special case, and causes the argument
273 to be printed as a 64-bit hexadecimal address.
275 Only format specifiers of the form "[0-9]*[a-z]" are recognized.
276 If it is a '%s' format, the argument is a string; otherwise the
277 argument is assumed to be a long integer.
279 %% is also turned into a single %.
283 monitor_vsprintf (char *sndbuf
, char *pattern
, va_list args
)
293 for (p
= pattern
; *p
; p
++)
297 /* Copy the format specifier to a separate buffer. */
299 for (i
= 1; *p
>= '0' && *p
<= '9' && i
< (int) sizeof (format
) - 2;
302 format
[i
] = fmt
= *p
;
303 format
[i
+ 1] = '\0';
305 /* Fetch the next argument and print it. */
309 strcpy (sndbuf
, "%");
312 arg_addr
= va_arg (args
, CORE_ADDR
);
313 strcpy (sndbuf
, paddr_nz (arg_addr
));
316 arg_string
= va_arg (args
, char *);
317 sprintf (sndbuf
, format
, arg_string
);
320 arg_int
= va_arg (args
, long);
321 sprintf (sndbuf
, format
, arg_int
);
324 sndbuf
+= strlen (sndbuf
);
333 /* monitor_printf_noecho -- Send data to monitor, but don't expect an echo.
334 Works just like printf. */
337 monitor_printf_noecho (char *pattern
,...)
343 va_start (args
, pattern
);
345 monitor_vsprintf (sndbuf
, pattern
, args
);
347 len
= strlen (sndbuf
);
348 if (len
+ 1 > sizeof sndbuf
)
349 internal_error (__FILE__
, __LINE__
, _("failed internal consistency check"));
353 char *safe_string
= (char *) alloca ((strlen (sndbuf
) * 4) + 1);
354 monitor_printable_string (safe_string
, sndbuf
, 0);
355 fprintf_unfiltered (gdb_stdlog
, "sent[%s]\n", safe_string
);
358 monitor_write (sndbuf
, len
);
361 /* monitor_printf -- Send data to monitor and check the echo. Works just like
365 monitor_printf (char *pattern
,...)
371 va_start (args
, pattern
);
373 monitor_vsprintf (sndbuf
, pattern
, args
);
375 len
= strlen (sndbuf
);
376 if (len
+ 1 > sizeof sndbuf
)
377 internal_error (__FILE__
, __LINE__
, _("failed internal consistency check"));
381 char *safe_string
= (char *) alloca ((len
* 4) + 1);
382 monitor_printable_string (safe_string
, sndbuf
, 0);
383 fprintf_unfiltered (gdb_stdlog
, "sent[%s]\n", safe_string
);
386 monitor_write (sndbuf
, len
);
388 /* We used to expect that the next immediate output was the characters we
389 just output, but sometimes some extra junk appeared before the characters
390 we expected, like an extra prompt, or a portmaster sending telnet negotiations.
391 So, just start searching for what we sent, and skip anything unknown. */
392 monitor_debug ("ExpectEcho\n");
393 monitor_expect (sndbuf
, (char *) 0, 0);
397 /* Write characters to the remote system. */
400 monitor_write (char *buf
, int buflen
)
402 if (serial_write (monitor_desc
, buf
, buflen
))
403 fprintf_unfiltered (gdb_stderr
, "serial_write failed: %s\n",
404 safe_strerror (errno
));
408 /* Read a binary character from the remote system, doing all the fancy
409 timeout stuff, but without interpreting the character in any way,
410 and without printing remote debug information. */
413 monitor_readchar (void)
421 c
= serial_readchar (monitor_desc
, timeout
);
424 c
&= 0xff; /* don't lose bit 7 */
431 if (c
== SERIAL_TIMEOUT
)
432 error (_("Timeout reading from remote system."));
434 perror_with_name (_("remote-monitor"));
438 /* Read a character from the remote system, doing all the fancy
442 readchar (int timeout
)
447 last_random
, last_nl
, last_cr
, last_crnl
455 c
= serial_readchar (monitor_desc
, timeout
);
460 /* This seems to interfere with proper function of the
462 if (monitor_debug_p
|| remote_debug
)
467 puts_debug ("read -->", buf
, "<--");
472 /* Canonicialize \n\r combinations into one \r */
473 if ((current_monitor
->flags
& MO_HANDLE_NL
) != 0)
475 if ((c
== '\r' && state
== last_nl
)
476 || (c
== '\n' && state
== last_cr
))
497 if (c
== SERIAL_TIMEOUT
)
499 /* I fail to see how detaching here can be useful */
500 if (in_monitor_wait
) /* Watchdog went off */
502 target_mourn_inferior ();
503 error (_("GDB serial timeout has expired. Target detached."));
507 error (_("Timeout reading from remote system."));
509 perror_with_name (_("remote-monitor"));
512 /* Scan input from the remote system, until STRING is found. If BUF is non-
513 zero, then collect input until we have collected either STRING or BUFLEN-1
514 chars. In either case we terminate BUF with a 0. If input overflows BUF
515 because STRING can't be found, return -1, else return number of chars in BUF
516 (minus the terminating NUL). Note that in the non-overflow case, STRING
517 will be at the end of BUF. */
520 monitor_expect (char *string
, char *buf
, int buflen
)
523 int obuflen
= buflen
;
528 char *safe_string
= (char *) alloca ((strlen (string
) * 4) + 1);
529 monitor_printable_string (safe_string
, string
, 0);
530 fprintf_unfiltered (gdb_stdlog
, "MON Expecting '%s'\n", safe_string
);
545 c
= readchar (timeout
);
552 c
= readchar (timeout
);
554 /* Don't expect any ^C sent to be echoed */
556 if (*p
== '\003' || c
== *p
)
566 return obuflen
- buflen
;
574 /* We got a character that doesn't match the string. We need to
575 back up p, but how far? If we're looking for "..howdy" and the
576 monitor sends "...howdy"? There's certainly a match in there,
577 but when we receive the third ".", we won't find it if we just
578 restart the matching at the beginning of the string.
580 This is a Boyer-Moore kind of situation. We want to reset P to
581 the end of the longest prefix of STRING that is a suffix of
582 what we've read so far. In the example above, that would be
583 ".." --- the longest prefix of "..howdy" that is a suffix of
584 "...". This longest prefix could be the empty string, if C
585 is nowhere to be found in STRING.
587 If this longest prefix is not the empty string, it must contain
588 C, so let's search from the end of STRING for instances of C,
589 and see if the portion of STRING before that is a suffix of
590 what we read before C. Actually, we can search backwards from
591 p, since we know no prefix can be longer than that.
593 Note that we can use STRING itself, along with C, as a record
594 of what we've received so far. :) */
597 for (i
= (p
- string
) - 1; i
>= 0; i
--)
600 /* Is this prefix a suffix of what we've read so far?
602 string[0 .. i-1] == string[p - i, p - 1]? */
603 if (! memcmp (string
, p
- i
, i
))
615 /* Search for a regexp. */
618 monitor_expect_regexp (struct re_pattern_buffer
*pat
, char *buf
, int buflen
)
622 monitor_debug ("MON Expecting regexp\n");
627 mybuf
= alloca (TARGET_BUF_SIZE
);
628 buflen
= TARGET_BUF_SIZE
;
636 if (p
- mybuf
>= buflen
)
637 { /* Buffer about to overflow */
639 /* On overflow, we copy the upper half of the buffer to the lower half. Not
640 great, but it usually works... */
642 memcpy (mybuf
, mybuf
+ buflen
/ 2, buflen
/ 2);
643 p
= mybuf
+ buflen
/ 2;
646 *p
++ = readchar (timeout
);
648 retval
= re_search (pat
, mybuf
, p
- mybuf
, 0, p
- mybuf
, NULL
);
654 /* Keep discarding input until we see the MONITOR prompt.
656 The convention for dealing with the prompt is that you
658 o *then* wait for the prompt.
660 Thus the last thing that a procedure does with the serial line will
661 be an monitor_expect_prompt(). Exception: monitor_resume does not
662 wait for the prompt, because the terminal is being handed over to
663 the inferior. However, the next thing which happens after that is
664 a monitor_wait which does wait for the prompt. Note that this
665 includes abnormal exit, e.g. error(). This is necessary to prevent
666 getting into states from which we can't recover. */
669 monitor_expect_prompt (char *buf
, int buflen
)
671 monitor_debug ("MON Expecting prompt\n");
672 return monitor_expect (current_monitor
->prompt
, buf
, buflen
);
675 /* Get N 32-bit words from remote, each preceded by a space, and put
676 them in registers starting at REGNO. */
687 ch
= readchar (timeout
);
688 while (isspace (ch
));
692 for (i
= 7; i
>= 1; i
--)
694 ch
= readchar (timeout
);
697 val
= (val
<< 4) | from_hex (ch
);
705 compile_pattern (char *pattern
, struct re_pattern_buffer
*compiled_pattern
,
711 compiled_pattern
->fastmap
= fastmap
;
713 tmp
= re_set_syntax (RE_SYNTAX_EMACS
);
714 val
= re_compile_pattern (pattern
,
720 error (_("compile_pattern: Can't compile pattern string `%s': %s!"), pattern
, val
);
723 re_compile_fastmap (compiled_pattern
);
726 /* Open a connection to a remote debugger. NAME is the filename used
727 for communication. */
730 monitor_open (char *args
, struct monitor_ops
*mon_ops
, int from_tty
)
735 if (mon_ops
->magic
!= MONITOR_OPS_MAGIC
)
736 error (_("Magic number of monitor_ops struct wrong."));
738 targ_ops
= mon_ops
->target
;
739 name
= targ_ops
->to_shortname
;
742 error (_("Use `target %s DEVICE-NAME' to use a serial port, or \n\
743 `target %s HOST-NAME:PORT-NUMBER' to use a network connection."), name
, name
);
745 target_preopen (from_tty
);
747 /* Setup pattern for register dump */
749 if (mon_ops
->register_pattern
)
750 compile_pattern (mon_ops
->register_pattern
, ®ister_pattern
,
753 if (mon_ops
->getmem
.resp_delim
)
754 compile_pattern (mon_ops
->getmem
.resp_delim
, &getmem_resp_delim_pattern
,
755 getmem_resp_delim_fastmap
);
757 if (mon_ops
->setmem
.resp_delim
)
758 compile_pattern (mon_ops
->setmem
.resp_delim
, &setmem_resp_delim_pattern
,
759 setmem_resp_delim_fastmap
);
761 if (mon_ops
->setreg
.resp_delim
)
762 compile_pattern (mon_ops
->setreg
.resp_delim
, &setreg_resp_delim_pattern
,
763 setreg_resp_delim_fastmap
);
765 unpush_target (targ_ops
);
769 dev_name
= xstrdup (args
);
771 monitor_desc
= serial_open (dev_name
);
774 perror_with_name (dev_name
);
778 if (serial_setbaudrate (monitor_desc
, baud_rate
))
780 serial_close (monitor_desc
);
781 perror_with_name (dev_name
);
785 serial_raw (monitor_desc
);
787 serial_flush_input (monitor_desc
);
789 /* some systems only work with 2 stop bits */
791 serial_setstopbits (monitor_desc
, mon_ops
->stopbits
);
793 current_monitor
= mon_ops
;
795 /* See if we can wake up the monitor. First, try sending a stop sequence,
796 then send the init strings. Last, remove all breakpoints. */
798 if (current_monitor
->stop
)
801 if ((current_monitor
->flags
& MO_NO_ECHO_ON_OPEN
) == 0)
803 monitor_debug ("EXP Open echo\n");
804 monitor_expect_prompt (NULL
, 0);
808 /* wake up the monitor and see if it's alive */
809 for (p
= mon_ops
->init
; *p
!= NULL
; p
++)
811 /* Some of the characters we send may not be echoed,
812 but we hope to get a prompt at the end of it all. */
814 if ((current_monitor
->flags
& MO_NO_ECHO_ON_OPEN
) == 0)
817 monitor_printf_noecho (*p
);
818 monitor_expect_prompt (NULL
, 0);
821 serial_flush_input (monitor_desc
);
823 /* Alloc breakpoints */
824 if (mon_ops
->set_break
!= NULL
)
826 if (mon_ops
->num_breakpoints
== 0)
827 mon_ops
->num_breakpoints
= 8;
829 breakaddr
= (CORE_ADDR
*) xmalloc (mon_ops
->num_breakpoints
* sizeof (CORE_ADDR
));
830 memset (breakaddr
, 0, mon_ops
->num_breakpoints
* sizeof (CORE_ADDR
));
833 /* Remove all breakpoints */
835 if (mon_ops
->clr_all_break
)
837 monitor_printf (mon_ops
->clr_all_break
);
838 monitor_expect_prompt (NULL
, 0);
842 printf_unfiltered (_("Remote target %s connected to %s\n"), name
, dev_name
);
844 push_target (targ_ops
);
846 inferior_ptid
= pid_to_ptid (42000); /* Make run command think we are busy... */
848 /* Give monitor_wait something to read */
850 monitor_printf (current_monitor
->line_term
);
855 /* Close out all files and local state before this target loses
859 monitor_close (int quitting
)
862 serial_close (monitor_desc
);
864 /* Free breakpoint memory */
865 if (breakaddr
!= NULL
)
874 /* Terminate the open connection to the remote debugger. Use this
875 when you want to detach and do something else with your gdb. */
878 monitor_detach (char *args
, int from_tty
)
880 pop_target (); /* calls monitor_close to do the real work */
882 printf_unfiltered (_("Ending remote %s debugging\n"), target_shortname
);
885 /* Convert VALSTR into the target byte-ordered value of REGNO and store it. */
888 monitor_supply_register (int regno
, char *valstr
)
891 unsigned char regbuf
[MAX_REGISTER_SIZE
];
896 while (p
&& *p
!= '\0')
898 if (*p
== '\r' || *p
== '\n')
909 if (!isxdigit (*p
) && *p
!= 'x')
915 val
+= fromhex (*p
++);
917 monitor_debug ("Supplying Register %d %s\n", regno
, valstr
);
919 if (val
== 0 && valstr
== p
)
920 error (_("monitor_supply_register (%d): bad value from monitor: %s."),
923 /* supply register stores in target byte order, so swap here */
925 store_unsigned_integer (regbuf
, register_size (current_gdbarch
, regno
), val
);
927 regcache_raw_supply (current_regcache
, regno
, regbuf
);
932 /* Tell the remote machine to resume. */
935 monitor_resume (ptid_t ptid
, int step
, enum target_signal sig
)
937 /* Some monitors require a different command when starting a program */
938 monitor_debug ("MON resume\n");
939 if (current_monitor
->flags
& MO_RUN_FIRST_TIME
&& first_time
== 1)
942 monitor_printf ("run\r");
943 if (current_monitor
->flags
& MO_NEED_REGDUMP_AFTER_CONT
)
948 monitor_printf (current_monitor
->step
);
951 if (current_monitor
->continue_hook
)
952 (*current_monitor
->continue_hook
) ();
954 monitor_printf (current_monitor
->cont
);
955 if (current_monitor
->flags
& MO_NEED_REGDUMP_AFTER_CONT
)
960 /* Parse the output of a register dump command. A monitor specific
961 regexp is used to extract individual register descriptions of the
962 form REG=VAL. Each description is split up into a name and a value
963 string which are passed down to monitor specific code. */
966 parse_register_dump (char *buf
, int len
)
968 monitor_debug ("MON Parsing register dump\n");
971 int regnamelen
, vallen
;
973 /* Element 0 points to start of register name, and element 1
974 points to the start of the register value. */
975 struct re_registers register_strings
;
977 memset (®ister_strings
, 0, sizeof (struct re_registers
));
979 if (re_search (®ister_pattern
, buf
, len
, 0, len
,
980 ®ister_strings
) == -1)
983 regnamelen
= register_strings
.end
[1] - register_strings
.start
[1];
984 regname
= buf
+ register_strings
.start
[1];
985 vallen
= register_strings
.end
[2] - register_strings
.start
[2];
986 val
= buf
+ register_strings
.start
[2];
988 current_monitor
->supply_register (regname
, regnamelen
, val
, vallen
);
990 buf
+= register_strings
.end
[0];
991 len
-= register_strings
.end
[0];
995 /* Send ^C to target to halt it. Target will respond, and send us a
999 monitor_interrupt (int signo
)
1001 /* If this doesn't work, try more severe steps. */
1002 signal (signo
, monitor_interrupt_twice
);
1004 if (monitor_debug_p
|| remote_debug
)
1005 fprintf_unfiltered (gdb_stdlog
, "monitor_interrupt called\n");
1010 /* The user typed ^C twice. */
1013 monitor_interrupt_twice (int signo
)
1015 signal (signo
, ofunc
);
1017 monitor_interrupt_query ();
1019 signal (signo
, monitor_interrupt
);
1022 /* Ask the user what to do when an interrupt is received. */
1025 monitor_interrupt_query (void)
1027 target_terminal_ours ();
1029 if (query ("Interrupted while waiting for the program.\n\
1030 Give up (and stop debugging it)? "))
1032 target_mourn_inferior ();
1033 deprecated_throw_reason (RETURN_QUIT
);
1036 target_terminal_inferior ();
1040 monitor_wait_cleanup (void *old_timeout
)
1042 timeout
= *(int *) old_timeout
;
1043 signal (SIGINT
, ofunc
);
1044 in_monitor_wait
= 0;
1050 monitor_wait_filter (char *buf
,
1053 struct target_waitstatus
*status
)
1058 resp_len
= monitor_expect_prompt (buf
, bufmax
);
1059 *ext_resp_len
= resp_len
;
1062 fprintf_unfiltered (gdb_stderr
, "monitor_wait: excessive response from monitor: %s.", buf
);
1064 while (resp_len
< 0);
1066 /* Print any output characters that were preceded by ^O. */
1067 /* FIXME - This would be great as a user settabgle flag */
1068 if (monitor_debug_p
|| remote_debug
1069 || current_monitor
->flags
& MO_PRINT_PROGRAM_OUTPUT
)
1073 for (i
= 0; i
< resp_len
- 1; i
++)
1075 putchar_unfiltered (buf
[++i
]);
1081 /* Wait until the remote machine stops, then return, storing status in
1082 status just as `wait' would. */
1085 monitor_wait (ptid_t ptid
, struct target_waitstatus
*status
)
1087 int old_timeout
= timeout
;
1088 char buf
[TARGET_BUF_SIZE
];
1090 struct cleanup
*old_chain
;
1092 status
->kind
= TARGET_WAITKIND_EXITED
;
1093 status
->value
.integer
= 0;
1095 old_chain
= make_cleanup (monitor_wait_cleanup
, &old_timeout
);
1096 monitor_debug ("MON wait\n");
1099 /* This is somthing other than a maintenance command */
1100 in_monitor_wait
= 1;
1101 timeout
= watchdog
> 0 ? watchdog
: -1;
1103 timeout
= -1; /* Don't time out -- user program is running. */
1106 ofunc
= (void (*)()) signal (SIGINT
, monitor_interrupt
);
1108 if (current_monitor
->wait_filter
)
1109 (*current_monitor
->wait_filter
) (buf
, sizeof (buf
), &resp_len
, status
);
1111 monitor_wait_filter (buf
, sizeof (buf
), &resp_len
, status
);
1113 #if 0 /* Transferred to monitor wait filter */
1116 resp_len
= monitor_expect_prompt (buf
, sizeof (buf
));
1119 fprintf_unfiltered (gdb_stderr
, "monitor_wait: excessive response from monitor: %s.", buf
);
1121 while (resp_len
< 0);
1123 /* Print any output characters that were preceded by ^O. */
1124 /* FIXME - This would be great as a user settabgle flag */
1125 if (monitor_debug_p
|| remote_debug
1126 || current_monitor
->flags
& MO_PRINT_PROGRAM_OUTPUT
)
1130 for (i
= 0; i
< resp_len
- 1; i
++)
1132 putchar_unfiltered (buf
[++i
]);
1136 signal (SIGINT
, ofunc
);
1138 timeout
= old_timeout
;
1140 if (dump_reg_flag
&& current_monitor
->dump_registers
)
1143 monitor_printf (current_monitor
->dump_registers
);
1144 resp_len
= monitor_expect_prompt (buf
, sizeof (buf
));
1147 if (current_monitor
->register_pattern
)
1148 parse_register_dump (buf
, resp_len
);
1150 monitor_debug ("Wait fetching registers after stop\n");
1151 monitor_dump_regs ();
1154 status
->kind
= TARGET_WAITKIND_STOPPED
;
1155 status
->value
.sig
= TARGET_SIGNAL_TRAP
;
1157 discard_cleanups (old_chain
);
1159 in_monitor_wait
= 0;
1161 return inferior_ptid
;
1164 /* Fetch register REGNO, or all registers if REGNO is -1. Returns
1168 monitor_fetch_register (int regno
)
1175 regbuf
= alloca (MAX_REGISTER_SIZE
* 2 + 1);
1176 zerobuf
= alloca (MAX_REGISTER_SIZE
);
1177 memset (zerobuf
, 0, MAX_REGISTER_SIZE
);
1179 if (current_monitor
->regname
!= NULL
)
1180 name
= current_monitor
->regname (regno
);
1182 name
= current_monitor
->regnames
[regno
];
1183 monitor_debug ("MON fetchreg %d '%s'\n", regno
, name
? name
: "(null name)");
1185 if (!name
|| (*name
== '\0'))
1187 monitor_debug ("No register known for %d\n", regno
);
1188 regcache_raw_supply (current_regcache
, regno
, zerobuf
);
1192 /* send the register examine command */
1194 monitor_printf (current_monitor
->getreg
.cmd
, name
);
1196 /* If RESP_DELIM is specified, we search for that as a leading
1197 delimiter for the register value. Otherwise, we just start
1198 searching from the start of the buf. */
1200 if (current_monitor
->getreg
.resp_delim
)
1202 monitor_debug ("EXP getreg.resp_delim\n");
1203 monitor_expect (current_monitor
->getreg
.resp_delim
, NULL
, 0);
1204 /* Handle case of first 32 registers listed in pairs. */
1205 if (current_monitor
->flags
& MO_32_REGS_PAIRED
1206 && (regno
& 1) != 0 && regno
< 32)
1208 monitor_debug ("EXP getreg.resp_delim\n");
1209 monitor_expect (current_monitor
->getreg
.resp_delim
, NULL
, 0);
1213 /* Skip leading spaces and "0x" if MO_HEX_PREFIX flag is set */
1214 if (current_monitor
->flags
& MO_HEX_PREFIX
)
1217 c
= readchar (timeout
);
1219 c
= readchar (timeout
);
1220 if ((c
== '0') && ((c
= readchar (timeout
)) == 'x'))
1223 error (_("Bad value returned from monitor while fetching register %x."),
1227 /* Read upto the maximum number of hex digits for this register, skipping
1228 spaces, but stop reading if something else is seen. Some monitors
1229 like to drop leading zeros. */
1231 for (i
= 0; i
< register_size (current_gdbarch
, regno
) * 2; i
++)
1234 c
= readchar (timeout
);
1236 c
= readchar (timeout
);
1244 regbuf
[i
] = '\000'; /* terminate the number */
1245 monitor_debug ("REGVAL '%s'\n", regbuf
);
1247 /* If TERM is present, we wait for that to show up. Also, (if TERM
1248 is present), we will send TERM_CMD if that is present. In any
1249 case, we collect all of the output into buf, and then wait for
1250 the normal prompt. */
1252 if (current_monitor
->getreg
.term
)
1254 monitor_debug ("EXP getreg.term\n");
1255 monitor_expect (current_monitor
->getreg
.term
, NULL
, 0); /* get response */
1258 if (current_monitor
->getreg
.term_cmd
)
1260 monitor_debug ("EMIT getreg.term.cmd\n");
1261 monitor_printf (current_monitor
->getreg
.term_cmd
);
1263 if (!current_monitor
->getreg
.term
|| /* Already expected or */
1264 current_monitor
->getreg
.term_cmd
) /* ack expected */
1265 monitor_expect_prompt (NULL
, 0); /* get response */
1267 monitor_supply_register (regno
, regbuf
);
1270 /* Sometimes, it takes several commands to dump the registers */
1271 /* This is a primitive for use by variations of monitor interfaces in
1272 case they need to compose the operation.
1275 monitor_dump_reg_block (char *block_cmd
)
1277 char buf
[TARGET_BUF_SIZE
];
1279 monitor_printf (block_cmd
);
1280 resp_len
= monitor_expect_prompt (buf
, sizeof (buf
));
1281 parse_register_dump (buf
, resp_len
);
1286 /* Read the remote registers into the block regs. */
1287 /* Call the specific function if it has been provided */
1290 monitor_dump_regs (void)
1292 char buf
[TARGET_BUF_SIZE
];
1294 if (current_monitor
->dumpregs
)
1295 (*(current_monitor
->dumpregs
)) (); /* call supplied function */
1296 else if (current_monitor
->dump_registers
) /* default version */
1298 monitor_printf (current_monitor
->dump_registers
);
1299 resp_len
= monitor_expect_prompt (buf
, sizeof (buf
));
1300 parse_register_dump (buf
, resp_len
);
1303 internal_error (__FILE__
, __LINE__
, _("failed internal consistency check")); /* Need some way to read registers */
1307 monitor_fetch_registers (int regno
)
1309 monitor_debug ("MON fetchregs\n");
1310 if (current_monitor
->getreg
.cmd
)
1314 monitor_fetch_register (regno
);
1318 for (regno
= 0; regno
< NUM_REGS
; regno
++)
1319 monitor_fetch_register (regno
);
1323 monitor_dump_regs ();
1327 /* Store register REGNO, or all if REGNO == 0. Return errno value. */
1330 monitor_store_register (int regno
)
1335 if (current_monitor
->regname
!= NULL
)
1336 name
= current_monitor
->regname (regno
);
1338 name
= current_monitor
->regnames
[regno
];
1340 if (!name
|| (*name
== '\0'))
1342 monitor_debug ("MON Cannot store unknown register\n");
1346 val
= read_register (regno
);
1347 monitor_debug ("MON storeg %d %s\n", regno
,
1348 phex (val
, register_size (current_gdbarch
, regno
)));
1350 /* send the register deposit command */
1352 if (current_monitor
->flags
& MO_REGISTER_VALUE_FIRST
)
1353 monitor_printf (current_monitor
->setreg
.cmd
, val
, name
);
1354 else if (current_monitor
->flags
& MO_SETREG_INTERACTIVE
)
1355 monitor_printf (current_monitor
->setreg
.cmd
, name
);
1357 monitor_printf (current_monitor
->setreg
.cmd
, name
, val
);
1359 if (current_monitor
->setreg
.resp_delim
)
1361 monitor_debug ("EXP setreg.resp_delim\n");
1362 monitor_expect_regexp (&setreg_resp_delim_pattern
, NULL
, 0);
1363 if (current_monitor
->flags
& MO_SETREG_INTERACTIVE
)
1364 monitor_printf ("%s\r", paddr_nz (val
));
1366 if (current_monitor
->setreg
.term
)
1368 monitor_debug ("EXP setreg.term\n");
1369 monitor_expect (current_monitor
->setreg
.term
, NULL
, 0);
1370 if (current_monitor
->flags
& MO_SETREG_INTERACTIVE
)
1371 monitor_printf ("%s\r", paddr_nz (val
));
1372 monitor_expect_prompt (NULL
, 0);
1375 monitor_expect_prompt (NULL
, 0);
1376 if (current_monitor
->setreg
.term_cmd
) /* Mode exit required */
1378 monitor_debug ("EXP setreg_termcmd\n");
1379 monitor_printf ("%s", current_monitor
->setreg
.term_cmd
);
1380 monitor_expect_prompt (NULL
, 0);
1382 } /* monitor_store_register */
1384 /* Store the remote registers. */
1387 monitor_store_registers (int regno
)
1391 monitor_store_register (regno
);
1395 for (regno
= 0; regno
< NUM_REGS
; regno
++)
1396 monitor_store_register (regno
);
1399 /* Get ready to modify the registers array. On machines which store
1400 individual registers, this doesn't need to do anything. On machines
1401 which store all the registers in one fell swoop, this makes sure
1402 that registers contains all the registers from the program being
1406 monitor_prepare_to_store (void)
1408 /* Do nothing, since we can store individual regs */
1412 monitor_files_info (struct target_ops
*ops
)
1414 printf_unfiltered (_("\tAttached to %s at %d baud.\n"), dev_name
, baud_rate
);
1418 monitor_write_memory (CORE_ADDR memaddr
, char *myaddr
, int len
)
1420 unsigned int val
, hostval
;
1424 monitor_debug ("MON write %d %s\n", len
, paddr (memaddr
));
1426 if (current_monitor
->flags
& MO_ADDR_BITS_REMOVE
)
1427 memaddr
= ADDR_BITS_REMOVE (memaddr
);
1429 /* Use memory fill command for leading 0 bytes. */
1431 if (current_monitor
->fill
)
1433 for (i
= 0; i
< len
; i
++)
1437 if (i
> 4) /* More than 4 zeros is worth doing */
1439 monitor_debug ("MON FILL %d\n", i
);
1440 if (current_monitor
->flags
& MO_FILL_USES_ADDR
)
1441 monitor_printf (current_monitor
->fill
, memaddr
, (memaddr
+ i
) - 1, 0);
1443 monitor_printf (current_monitor
->fill
, memaddr
, i
, 0);
1445 monitor_expect_prompt (NULL
, 0);
1452 /* Can't actually use long longs if VAL is an int (nice idea, though). */
1453 if ((memaddr
& 0x7) == 0 && len
>= 8 && current_monitor
->setmem
.cmdll
)
1456 cmd
= current_monitor
->setmem
.cmdll
;
1460 if ((memaddr
& 0x3) == 0 && len
>= 4 && current_monitor
->setmem
.cmdl
)
1463 cmd
= current_monitor
->setmem
.cmdl
;
1465 else if ((memaddr
& 0x1) == 0 && len
>= 2 && current_monitor
->setmem
.cmdw
)
1468 cmd
= current_monitor
->setmem
.cmdw
;
1473 cmd
= current_monitor
->setmem
.cmdb
;
1476 val
= extract_unsigned_integer (myaddr
, len
);
1480 hostval
= *(unsigned int *) myaddr
;
1481 monitor_debug ("Hostval(%08x) val(%08x)\n", hostval
, val
);
1485 if (current_monitor
->flags
& MO_NO_ECHO_ON_SETMEM
)
1486 monitor_printf_noecho (cmd
, memaddr
, val
);
1487 else if (current_monitor
->flags
& MO_SETMEM_INTERACTIVE
)
1490 monitor_printf_noecho (cmd
, memaddr
);
1492 if (current_monitor
->setmem
.resp_delim
)
1494 monitor_debug ("EXP setmem.resp_delim");
1495 monitor_expect_regexp (&setmem_resp_delim_pattern
, NULL
, 0);
1496 monitor_printf ("%x\r", val
);
1498 if (current_monitor
->setmem
.term
)
1500 monitor_debug ("EXP setmem.term");
1501 monitor_expect (current_monitor
->setmem
.term
, NULL
, 0);
1502 monitor_printf ("%x\r", val
);
1504 if (current_monitor
->setmem
.term_cmd
)
1505 { /* Emit this to get out of the memory editing state */
1506 monitor_printf ("%s", current_monitor
->setmem
.term_cmd
);
1507 /* Drop through to expecting a prompt */
1511 monitor_printf (cmd
, memaddr
, val
);
1513 monitor_expect_prompt (NULL
, 0);
1520 monitor_write_memory_bytes (CORE_ADDR memaddr
, char *myaddr
, int len
)
1526 /* Enter the sub mode */
1527 monitor_printf (current_monitor
->setmem
.cmdb
, memaddr
);
1528 monitor_expect_prompt (NULL
, 0);
1532 monitor_printf ("%x\r", val
);
1536 /* If we wanted to, here we could validate the address */
1537 monitor_expect_prompt (NULL
, 0);
1540 /* Now exit the sub mode */
1541 monitor_printf (current_monitor
->getreg
.term_cmd
);
1542 monitor_expect_prompt (NULL
, 0);
1548 longlongendswap (unsigned char *a
)
1557 *(a
+ i
) = *(a
+ j
);
1562 /* Format 32 chars of long long value, advance the pointer */
1563 static char *hexlate
= "0123456789abcdef";
1565 longlong_hexchars (unsigned long long value
,
1575 static unsigned char disbuf
[8]; /* disassembly buffer */
1576 unsigned char *scan
, *limit
; /* loop controls */
1577 unsigned char c
, nib
;
1582 unsigned long long *dp
;
1583 dp
= (unsigned long long *) scan
;
1586 longlongendswap (disbuf
); /* FIXME: ONly on big endian hosts */
1587 while (scan
< limit
)
1589 c
= *scan
++; /* a byte of our long long value */
1595 leadzero
= 0; /* henceforth we print even zeroes */
1597 nib
= c
>> 4; /* high nibble bits */
1598 *outbuff
++ = hexlate
[nib
];
1599 nib
= c
& 0x0f; /* low nibble bits */
1600 *outbuff
++ = hexlate
[nib
];
1604 } /* longlong_hexchars */
1608 /* I am only going to call this when writing virtual byte streams.
1609 Which possably entails endian conversions
1612 monitor_write_memory_longlongs (CORE_ADDR memaddr
, char *myaddr
, int len
)
1614 static char hexstage
[20]; /* At least 16 digits required, plus null */
1619 llptr
= (unsigned long long *) myaddr
;
1622 monitor_printf (current_monitor
->setmem
.cmdll
, memaddr
);
1623 monitor_expect_prompt (NULL
, 0);
1627 endstring
= longlong_hexchars (*llptr
, hexstage
);
1628 *endstring
= '\0'; /* NUll terminate for printf */
1629 monitor_printf ("%s\r", hexstage
);
1633 /* If we wanted to, here we could validate the address */
1634 monitor_expect_prompt (NULL
, 0);
1637 /* Now exit the sub mode */
1638 monitor_printf (current_monitor
->getreg
.term_cmd
);
1639 monitor_expect_prompt (NULL
, 0);
1645 /* ----- MONITOR_WRITE_MEMORY_BLOCK ---------------------------- */
1646 /* This is for the large blocks of memory which may occur in downloading.
1647 And for monitors which use interactive entry,
1648 And for monitors which do not have other downloading methods.
1649 Without this, we will end up calling monitor_write_memory many times
1650 and do the entry and exit of the sub mode many times
1651 This currently assumes...
1652 MO_SETMEM_INTERACTIVE
1653 ! MO_NO_ECHO_ON_SETMEM
1654 To use this, the you have to patch the monitor_cmds block with
1655 this function. Otherwise, its not tuned up for use by all
1660 monitor_write_memory_block (CORE_ADDR memaddr
, char *myaddr
, int len
)
1664 /* FIXME: This would be a good place to put the zero test */
1666 if ((len
> 8) && (((len
& 0x07)) == 0) && current_monitor
->setmem
.cmdll
)
1668 return monitor_write_memory_longlongs (memaddr
, myaddr
, len
);
1671 written
= monitor_write_memory_bytes (memaddr
, myaddr
, len
);
1675 /* This is an alternate form of monitor_read_memory which is used for monitors
1676 which can only read a single byte/word/etc. at a time. */
1679 monitor_read_memory_single (CORE_ADDR memaddr
, char *myaddr
, int len
)
1682 char membuf
[sizeof (int) * 2 + 1];
1686 monitor_debug ("MON read single\n");
1688 /* Can't actually use long longs (nice idea, though). In fact, the
1689 call to strtoul below will fail if it tries to convert a value
1690 that's too big to fit in a long. */
1691 if ((memaddr
& 0x7) == 0 && len
>= 8 && current_monitor
->getmem
.cmdll
)
1694 cmd
= current_monitor
->getmem
.cmdll
;
1698 if ((memaddr
& 0x3) == 0 && len
>= 4 && current_monitor
->getmem
.cmdl
)
1701 cmd
= current_monitor
->getmem
.cmdl
;
1703 else if ((memaddr
& 0x1) == 0 && len
>= 2 && current_monitor
->getmem
.cmdw
)
1706 cmd
= current_monitor
->getmem
.cmdw
;
1711 cmd
= current_monitor
->getmem
.cmdb
;
1714 /* Send the examine command. */
1716 monitor_printf (cmd
, memaddr
);
1718 /* If RESP_DELIM is specified, we search for that as a leading
1719 delimiter for the memory value. Otherwise, we just start
1720 searching from the start of the buf. */
1722 if (current_monitor
->getmem
.resp_delim
)
1724 monitor_debug ("EXP getmem.resp_delim\n");
1725 monitor_expect_regexp (&getmem_resp_delim_pattern
, NULL
, 0);
1728 /* Now, read the appropriate number of hex digits for this loc,
1731 /* Skip leading spaces and "0x" if MO_HEX_PREFIX flag is set. */
1732 if (current_monitor
->flags
& MO_HEX_PREFIX
)
1736 c
= readchar (timeout
);
1738 c
= readchar (timeout
);
1739 if ((c
== '0') && ((c
= readchar (timeout
)) == 'x'))
1742 monitor_error ("monitor_read_memory_single",
1743 "bad response from monitor",
1744 memaddr
, 0, NULL
, 0);
1749 for (i
= 0; i
< len
* 2; i
++)
1755 c
= readchar (timeout
);
1761 monitor_error ("monitor_read_memory_single",
1762 "bad response from monitor",
1763 memaddr
, i
, membuf
, 0);
1767 membuf
[i
] = '\000'; /* terminate the number */
1770 /* If TERM is present, we wait for that to show up. Also, (if TERM is
1771 present), we will send TERM_CMD if that is present. In any case, we collect
1772 all of the output into buf, and then wait for the normal prompt. */
1774 if (current_monitor
->getmem
.term
)
1776 monitor_expect (current_monitor
->getmem
.term
, NULL
, 0); /* get response */
1778 if (current_monitor
->getmem
.term_cmd
)
1780 monitor_printf (current_monitor
->getmem
.term_cmd
);
1781 monitor_expect_prompt (NULL
, 0);
1785 monitor_expect_prompt (NULL
, 0); /* get response */
1788 val
= strtoul (membuf
, &p
, 16);
1790 if (val
== 0 && membuf
== p
)
1791 monitor_error ("monitor_read_memory_single",
1792 "bad value from monitor",
1793 memaddr
, 0, membuf
, 0);
1795 /* supply register stores in target byte order, so swap here */
1797 store_unsigned_integer (myaddr
, len
, val
);
1802 /* Copy LEN bytes of data from debugger memory at MYADDR to inferior's
1803 memory at MEMADDR. Returns length moved. Currently, we do no more
1804 than 16 bytes at a time. */
1807 monitor_read_memory (CORE_ADDR memaddr
, char *myaddr
, int len
)
1818 monitor_debug ("Zero length call to monitor_read_memory\n");
1822 monitor_debug ("MON read block ta(%s) ha(%lx) %d\n",
1823 paddr_nz (memaddr
), (long) myaddr
, len
);
1825 if (current_monitor
->flags
& MO_ADDR_BITS_REMOVE
)
1826 memaddr
= ADDR_BITS_REMOVE (memaddr
);
1828 if (current_monitor
->flags
& MO_GETMEM_READ_SINGLE
)
1829 return monitor_read_memory_single (memaddr
, myaddr
, len
);
1831 len
= min (len
, 16);
1833 /* Some dumpers align the first data with the preceeding 16
1834 byte boundary. Some print blanks and start at the
1835 requested boundary. EXACT_DUMPADDR
1838 dumpaddr
= (current_monitor
->flags
& MO_EXACT_DUMPADDR
)
1839 ? memaddr
: memaddr
& ~0x0f;
1841 /* See if xfer would cross a 16 byte boundary. If so, clip it. */
1842 if (((memaddr
^ (memaddr
+ len
- 1)) & ~0xf) != 0)
1843 len
= ((memaddr
+ len
) & ~0xf) - memaddr
;
1845 /* send the memory examine command */
1847 if (current_monitor
->flags
& MO_GETMEM_NEEDS_RANGE
)
1848 monitor_printf (current_monitor
->getmem
.cmdb
, memaddr
, memaddr
+ len
);
1849 else if (current_monitor
->flags
& MO_GETMEM_16_BOUNDARY
)
1850 monitor_printf (current_monitor
->getmem
.cmdb
, dumpaddr
);
1852 monitor_printf (current_monitor
->getmem
.cmdb
, memaddr
, len
);
1854 /* If TERM is present, we wait for that to show up. Also, (if TERM
1855 is present), we will send TERM_CMD if that is present. In any
1856 case, we collect all of the output into buf, and then wait for
1857 the normal prompt. */
1859 if (current_monitor
->getmem
.term
)
1861 resp_len
= monitor_expect (current_monitor
->getmem
.term
, buf
, sizeof buf
); /* get response */
1864 monitor_error ("monitor_read_memory",
1865 "excessive response from monitor",
1866 memaddr
, resp_len
, buf
, 0);
1868 if (current_monitor
->getmem
.term_cmd
)
1870 serial_write (monitor_desc
, current_monitor
->getmem
.term_cmd
,
1871 strlen (current_monitor
->getmem
.term_cmd
));
1872 monitor_expect_prompt (NULL
, 0);
1876 resp_len
= monitor_expect_prompt (buf
, sizeof buf
); /* get response */
1880 /* If RESP_DELIM is specified, we search for that as a leading
1881 delimiter for the values. Otherwise, we just start searching
1882 from the start of the buf. */
1884 if (current_monitor
->getmem
.resp_delim
)
1887 struct re_registers resp_strings
;
1888 monitor_debug ("MON getmem.resp_delim %s\n", current_monitor
->getmem
.resp_delim
);
1890 memset (&resp_strings
, 0, sizeof (struct re_registers
));
1892 retval
= re_search (&getmem_resp_delim_pattern
, p
, tmp
, 0, tmp
,
1896 monitor_error ("monitor_read_memory",
1897 "bad response from monitor",
1898 memaddr
, resp_len
, buf
, 0);
1900 p
+= resp_strings
.end
[0];
1902 p
= strstr (p
, current_monitor
->getmem
.resp_delim
);
1904 monitor_error ("monitor_read_memory",
1905 "bad response from monitor",
1906 memaddr
, resp_len
, buf
, 0);
1907 p
+= strlen (current_monitor
->getmem
.resp_delim
);
1910 monitor_debug ("MON scanning %d ,%lx '%s'\n", len
, (long) p
, p
);
1911 if (current_monitor
->flags
& MO_GETMEM_16_BOUNDARY
)
1919 while (!(c
== '\000' || c
== '\n' || c
== '\r') && i
> 0)
1923 if ((dumpaddr
>= memaddr
) && (i
> 0))
1925 val
= fromhex (c
) * 16 + fromhex (*(p
+ 1));
1927 if (monitor_debug_p
|| remote_debug
)
1928 fprintf_unfiltered (gdb_stdlog
, "[%02x]", val
);
1935 ++p
; /* skip a blank or other non hex char */
1939 error (_("Failed to read via monitor"));
1940 if (monitor_debug_p
|| remote_debug
)
1941 fprintf_unfiltered (gdb_stdlog
, "\n");
1942 return fetched
; /* Return the number of bytes actually read */
1944 monitor_debug ("MON scanning bytes\n");
1946 for (i
= len
; i
> 0; i
--)
1948 /* Skip non-hex chars, but bomb on end of string and newlines */
1955 if (*p
== '\000' || *p
== '\n' || *p
== '\r')
1956 monitor_error ("monitor_read_memory",
1957 "badly terminated response from monitor",
1958 memaddr
, resp_len
, buf
, 0);
1962 val
= strtoul (p
, &p1
, 16);
1964 if (val
== 0 && p
== p1
)
1965 monitor_error ("monitor_read_memory",
1966 "bad value from monitor",
1967 memaddr
, resp_len
, buf
, 0);
1980 /* Transfer LEN bytes between target address MEMADDR and GDB address
1981 MYADDR. Returns 0 for success, errno code for failure. TARGET is
1985 monitor_xfer_memory (CORE_ADDR memaddr
, char *myaddr
, int len
, int write
,
1986 struct mem_attrib
*attrib
, struct target_ops
*target
)
1992 if (current_monitor
->flags
& MO_HAS_BLOCKWRITES
)
1993 res
= monitor_write_memory_block(memaddr
, myaddr
, len
);
1995 res
= monitor_write_memory(memaddr
, myaddr
, len
);
1999 res
= monitor_read_memory(memaddr
, myaddr
, len
);
2008 return; /* ignore attempts to kill target system */
2011 /* All we actually do is set the PC to the start address of exec_bfd, and start
2012 the program at that point. */
2015 monitor_create_inferior (char *exec_file
, char *args
, char **env
,
2018 if (args
&& (*args
!= '\000'))
2019 error (_("Args are not supported by the monitor."));
2022 clear_proceed_status ();
2023 proceed (bfd_get_start_address (exec_bfd
), TARGET_SIGNAL_0
, 0);
2026 /* Clean up when a program exits.
2027 The program actually lives on in the remote processor's RAM, and may be
2028 run again without a download. Don't leave it full of breakpoint
2032 monitor_mourn_inferior (void)
2034 unpush_target (targ_ops
);
2035 generic_mourn_inferior (); /* Do all the proper things now */
2038 /* Tell the monitor to add a breakpoint. */
2041 monitor_insert_breakpoint (CORE_ADDR addr
, char *shadow
)
2044 const unsigned char *bp
;
2047 monitor_debug ("MON inst bkpt %s\n", paddr (addr
));
2048 if (current_monitor
->set_break
== NULL
)
2049 error (_("No set_break defined for this monitor"));
2051 if (current_monitor
->flags
& MO_ADDR_BITS_REMOVE
)
2052 addr
= ADDR_BITS_REMOVE (addr
);
2054 /* Determine appropriate breakpoint size for this address. */
2055 bp
= gdbarch_breakpoint_from_pc (current_gdbarch
, &addr
, &bplen
);
2057 for (i
= 0; i
< current_monitor
->num_breakpoints
; i
++)
2059 if (breakaddr
[i
] == 0)
2061 breakaddr
[i
] = addr
;
2062 monitor_read_memory (addr
, shadow
, bplen
);
2063 monitor_printf (current_monitor
->set_break
, addr
);
2064 monitor_expect_prompt (NULL
, 0);
2069 error (_("Too many breakpoints (> %d) for monitor."), current_monitor
->num_breakpoints
);
2072 /* Tell the monitor to remove a breakpoint. */
2075 monitor_remove_breakpoint (CORE_ADDR addr
, char *shadow
)
2079 monitor_debug ("MON rmbkpt %s\n", paddr (addr
));
2080 if (current_monitor
->clr_break
== NULL
)
2081 error (_("No clr_break defined for this monitor"));
2083 if (current_monitor
->flags
& MO_ADDR_BITS_REMOVE
)
2084 addr
= ADDR_BITS_REMOVE (addr
);
2086 for (i
= 0; i
< current_monitor
->num_breakpoints
; i
++)
2088 if (breakaddr
[i
] == addr
)
2091 /* some monitors remove breakpoints based on the address */
2092 if (current_monitor
->flags
& MO_CLR_BREAK_USES_ADDR
)
2093 monitor_printf (current_monitor
->clr_break
, addr
);
2094 else if (current_monitor
->flags
& MO_CLR_BREAK_1_BASED
)
2095 monitor_printf (current_monitor
->clr_break
, i
+ 1);
2097 monitor_printf (current_monitor
->clr_break
, i
);
2098 monitor_expect_prompt (NULL
, 0);
2102 fprintf_unfiltered (gdb_stderr
,
2103 "Can't find breakpoint associated with 0x%s\n",
2108 /* monitor_wait_srec_ack -- wait for the target to send an acknowledgement for
2109 an S-record. Return non-zero if the ACK is received properly. */
2112 monitor_wait_srec_ack (void)
2116 if (current_monitor
->flags
& MO_SREC_ACK_PLUS
)
2118 return (readchar (timeout
) == '+');
2120 else if (current_monitor
->flags
& MO_SREC_ACK_ROTATE
)
2122 /* Eat two backspaces, a "rotating" char (|/-\), and a space. */
2123 if ((ch
= readchar (1)) < 0)
2125 if ((ch
= readchar (1)) < 0)
2127 if ((ch
= readchar (1)) < 0)
2129 if ((ch
= readchar (1)) < 0)
2135 /* monitor_load -- download a file. */
2138 monitor_load (char *file
, int from_tty
)
2140 monitor_debug ("MON load\n");
2142 if (current_monitor
->load_routine
)
2143 current_monitor
->load_routine (monitor_desc
, file
, hashmark
);
2145 { /* The default is ascii S-records */
2147 unsigned long load_offset
;
2150 /* enable user to specify address for downloading as 2nd arg to load */
2151 n
= sscanf (file
, "%s 0x%lx", buf
, &load_offset
);
2157 monitor_printf (current_monitor
->load
);
2158 if (current_monitor
->loadresp
)
2159 monitor_expect (current_monitor
->loadresp
, NULL
, 0);
2161 load_srec (monitor_desc
, file
, (bfd_vma
) load_offset
,
2162 32, SREC_ALL
, hashmark
,
2163 current_monitor
->flags
& MO_SREC_ACK
?
2164 monitor_wait_srec_ack
: NULL
);
2166 monitor_expect_prompt (NULL
, 0);
2169 /* Finally, make the PC point at the start address */
2171 write_pc (bfd_get_start_address (exec_bfd
));
2173 /* There used to be code here which would clear inferior_ptid and
2174 call clear_symtab_users. None of that should be necessary:
2175 monitor targets should behave like remote protocol targets, and
2176 since generic_load does none of those things, this function
2179 Furthermore, clearing inferior_ptid is *incorrect*. After doing
2180 a load, we still have a valid connection to the monitor, with a
2181 live processor state to fiddle with. The user can type
2182 `continue' or `jump *start' and make the program run. If they do
2183 these things, however, GDB will be talking to a running program
2184 while inferior_ptid is null_ptid; this makes things like
2185 reinit_frame_cache very confused. */
2191 monitor_debug ("MON stop\n");
2192 if ((current_monitor
->flags
& MO_SEND_BREAK_ON_STOP
) != 0)
2193 serial_send_break (monitor_desc
);
2194 if (current_monitor
->stop
)
2195 monitor_printf_noecho (current_monitor
->stop
);
2198 /* Put a COMMAND string out to MONITOR. Output from MONITOR is placed
2199 in OUTPUT until the prompt is seen. FIXME: We read the characters
2200 ourseleves here cause of a nasty echo. */
2203 monitor_rcmd (char *command
,
2204 struct ui_file
*outbuf
)
2210 if (monitor_desc
== NULL
)
2211 error (_("monitor target not open."));
2213 p
= current_monitor
->prompt
;
2215 /* Send the command. Note that if no args were supplied, then we're
2216 just sending the monitor a newline, which is sometimes useful. */
2218 monitor_printf ("%s\r", (command
? command
: ""));
2220 resp_len
= monitor_expect_prompt (buf
, sizeof buf
);
2222 fputs_unfiltered (buf
, outbuf
); /* Output the response */
2225 /* Convert hex digit A to a number. */
2231 if (a
>= '0' && a
<= '9')
2233 if (a
>= 'a' && a
<= 'f')
2234 return a
- 'a' + 10;
2235 if (a
>= 'A' && a
<= 'F')
2236 return a
- 'A' + 10;
2238 error (_("Reply contains invalid hex digit 0x%x"), a
);
2243 monitor_get_dev_name (void)
2248 static struct target_ops monitor_ops
;
2251 init_base_monitor_ops (void)
2253 monitor_ops
.to_close
= monitor_close
;
2254 monitor_ops
.to_detach
= monitor_detach
;
2255 monitor_ops
.to_resume
= monitor_resume
;
2256 monitor_ops
.to_wait
= monitor_wait
;
2257 monitor_ops
.to_fetch_registers
= monitor_fetch_registers
;
2258 monitor_ops
.to_store_registers
= monitor_store_registers
;
2259 monitor_ops
.to_prepare_to_store
= monitor_prepare_to_store
;
2260 monitor_ops
.deprecated_xfer_memory
= monitor_xfer_memory
;
2261 monitor_ops
.to_files_info
= monitor_files_info
;
2262 monitor_ops
.to_insert_breakpoint
= monitor_insert_breakpoint
;
2263 monitor_ops
.to_remove_breakpoint
= monitor_remove_breakpoint
;
2264 monitor_ops
.to_kill
= monitor_kill
;
2265 monitor_ops
.to_load
= monitor_load
;
2266 monitor_ops
.to_create_inferior
= monitor_create_inferior
;
2267 monitor_ops
.to_mourn_inferior
= monitor_mourn_inferior
;
2268 monitor_ops
.to_stop
= monitor_stop
;
2269 monitor_ops
.to_rcmd
= monitor_rcmd
;
2270 monitor_ops
.to_stratum
= process_stratum
;
2271 monitor_ops
.to_has_all_memory
= 1;
2272 monitor_ops
.to_has_memory
= 1;
2273 monitor_ops
.to_has_stack
= 1;
2274 monitor_ops
.to_has_registers
= 1;
2275 monitor_ops
.to_has_execution
= 1;
2276 monitor_ops
.to_magic
= OPS_MAGIC
;
2277 } /* init_base_monitor_ops */
2279 /* Init the target_ops structure pointed at by OPS */
2282 init_monitor_ops (struct target_ops
*ops
)
2284 if (monitor_ops
.to_magic
!= OPS_MAGIC
)
2285 init_base_monitor_ops ();
2287 memcpy (ops
, &monitor_ops
, sizeof monitor_ops
);
2290 /* Define additional commands that are usually only used by monitors. */
2292 extern initialize_file_ftype _initialize_remote_monitors
; /* -Wmissing-prototypes */
2295 _initialize_remote_monitors (void)
2297 init_base_monitor_ops ();
2298 add_setshow_boolean_cmd ("hash", no_class
, &hashmark
, _("\
2299 Set display of activity while downloading a file."), _("\
2300 Show display of activity while downloading a file."), _("\
2301 When enabled, a hashmark \'#\' is displayed."),
2303 NULL
, /* FIXME: i18n: */
2304 &setlist
, &showlist
);
2306 add_setshow_zinteger_cmd ("monitor", no_class
, &monitor_debug_p
, _("\
2307 Set debugging of remote monitor communication."), _("\
2308 Show debugging of remote monitor communication."), _("\
2309 When enabled, communication between GDB and the remote monitor\n\
2312 NULL
, /* FIXME: i18n: */
2313 &setdebuglist
, &showdebuglist
);