aboutsummaryrefslogtreecommitdiff
path: root/gdb/monitor.c
diff options
context:
space:
mode:
authorStu Grossman <grossman@cygnus>1995-03-08 00:06:55 +0000
committerStu Grossman <grossman@cygnus>1995-03-08 00:06:55 +0000
commit8f07823450a59b484c348b048dc74e1d81242062 (patch)
tree1a304c5eb3f14031e5d2d1a44bdd8b3119600570 /gdb/monitor.c
parentab204453e674dc941389cf4eb81b230ee641cad9 (diff)
downloadgdb-8f07823450a59b484c348b048dc74e1d81242062.zip
gdb-8f07823450a59b484c348b048dc74e1d81242062.tar.gz
gdb-8f07823450a59b484c348b048dc74e1d81242062.tar.bz2
* monitor.c: More general cleanups. Add prototypes, remove
unused routines. Fix bug with wrong number of args to error().
Diffstat (limited to 'gdb/monitor.c')
-rw-r--r--gdb/monitor.c164
1 files changed, 26 insertions, 138 deletions
diff --git a/gdb/monitor.c b/gdb/monitor.c
index 270f107..42d23da 100644
--- a/gdb/monitor.c
+++ b/gdb/monitor.c
@@ -42,8 +42,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "gdbcmd.h"
#include "inferior.h"
-static void make_xmodem_packet ();
-static void print_xmodem_packet ();
+static void monitor_command PARAMS ((char *args, int fromtty));
+static void monitor_load_srec PARAMS ((char *args, int protocol));
+static int getacknak PARAMS ((int byte));
+
+static void make_xmodem_packet PARAMS ((unsigned char *packet,
+ unsigned char *data,
+ int len));
+static void print_xmodem_packet PARAMS ((char *packet));
static void monitor_load_ascii_srec PARAMS ((char *file, int fromtty));
@@ -54,10 +60,10 @@ static int monitor_make_srec PARAMS ((char *buffer, int type,
static void monitor_fetch_register PARAMS ((int regno));
static void monitor_store_register PARAMS ((int regno));
-static int from_hex ();
+static int from_hex PARAMS ((int a));
static unsigned long get_hex_word PARAMS ((void));
-struct monitor_ops *current_monitor;
+static struct monitor_ops *current_monitor;
static char *loadtype_str = "srec";
static char *loadproto_str = "none";
@@ -83,8 +89,6 @@ static int expect_prompt PARAMS ((char *buf, int buflen));
static serial_t monitor_desc = NULL;
-static void monitor_load_srec ();
-
/* These definitions are for xmodem protocol. */
#define SOH 0x01
@@ -266,72 +270,6 @@ expect_prompt (buf, buflen)
return expect (PROMPT, buf, buflen);
}
-/* Ignore junk characters. Returns a 1 if junk, 0 otherwise. */
-
-static int
-junk (ch)
- char ch;
-{
- switch (ch)
- {
- case '\0':
- case ' ':
- case '-':
- case '\t':
- case '\r':
- case '\n':
- return 1;
- default:
- return 0;
- }
-}
-
-/* Get a hex digit from the remote system & return its value. If
- ignore is nonzero, ignore spaces, newline & tabs. */
-
-static int
-get_hex_digit (ignore)
- int ignore;
-{
- static int ch;
-
- while (1)
- {
- ch = readchar (timeout);
- if (junk (ch))
- continue;
-
- if (ch >= '0' && ch <= '9')
- return ch - '0';
- else if (ch >= 'A' && ch <= 'F')
- return ch - 'A' + 10;
- else if (ch >= 'a' && ch <= 'f')
- return ch - 'a' + 10;
- else if (ch == ' ' && ignore)
- ;
- else
- {
- expect_prompt (NULL, 0);
- error ("Invalid hex digit from remote system. (0x%x)", ch);
- }
- }
-}
-
-/* Get a byte from monitor and put it in *BYT. Accept any number of
- leading spaces. */
-
-static void
-get_hex_byte (byt)
- char *byt;
-{
- int val;
-
- val = get_hex_digit (1) << 4;
-
- val |= get_hex_digit (0);
- *byt = val;
-}
-
/* Get N 32-bit words from remote, each preceded by a space, and put
them in registers starting at REGNO. */
@@ -359,50 +297,11 @@ get_hex_word ()
return val;
}
-/* This is called not only when we first attach, but also when the
- user types "run" after having attached. */
-
-void
-monitor_create_inferior (execfile, args, env)
- char *execfile;
- char *args;
- char **env;
-{
- int entry_pt;
-
- if (args && *args)
- error ("Can't pass arguments to remote MONITOR process");
-
- if (execfile == 0 || exec_bfd == 0)
- error ("No exec file specified");
-
- entry_pt = (int) bfd_get_start_address (exec_bfd);
-
- /* The "process" (board) is already stopped awaiting our commands, and
- the program is already downloaded. We just set its PC and go. */
-
- clear_proceed_status ();
-
- /* Tell wait_for_inferior that we've started a new process. */
- init_wait_for_inferior ();
-
- /* Set up the "saved terminal modes" of the inferior
- based on what modes we are starting it with. */
- target_terminal_init ();
-
- /* Install inferior's terminal modes. */
- target_terminal_inferior ();
-
- /* insert_step_breakpoint (); FIXME, do we need this? */
-
- /* Let 'er rip... */
- proceed ((CORE_ADDR)entry_pt, TARGET_SIGNAL_DEFAULT, 0);
-}
-
/* Open a connection to a remote debugger. NAME is the filename used
for communication. */
static char *dev_name;
+static struct target_ops *targ_ops;
void
monitor_open (args, mon_ops, from_tty)
@@ -410,7 +309,6 @@ monitor_open (args, mon_ops, from_tty)
struct monitor_ops *mon_ops;
int from_tty;
{
- struct target_ops *targ_ops;
char *name;
int i;
@@ -557,20 +455,6 @@ monitor_wait (pid, status)
return inferior_pid;
}
-/* Return the name of register number regno in the form input and output by
- monitor. Currently, register_names just happens to contain exactly what
- monitor wants. Lets take advantage of that just as long as possible! */
-
-static char *
-get_reg_name (regno)
- int regno;
-{
- if (regno < 0 || regno > NUM_REGS)
- return NULL;
- else
- return REGNAMES (regno);
-}
-
/* Fetch register REGNO, or all registers if REGNO is -1. Returns
errno value. */
@@ -585,7 +469,7 @@ monitor_fetch_register (regno)
char *name;
int resp_len;
- name = get_reg_name (regno);
+ name = REGNAMES (regno);
if (!name)
return;
@@ -603,7 +487,8 @@ monitor_fetch_register (regno)
resp_len = expect (current_monitor->getreg.term, buf, sizeof buf); /* get response */
if (resp_len <= 0)
- error ("monitor_fetch_register (%d): excessive response from monitor: %.*s.", resp_len, buf);
+ error ("monitor_fetch_register (%d): excessive response from monitor: %.*s.",
+ regno, resp_len, buf);
if (current_monitor->getreg.term_cmd)
{
@@ -624,7 +509,8 @@ monitor_fetch_register (regno)
{
p = strstr (buf, current_monitor->getreg.resp_delim);
if (!p)
- error ("monitor_fetch_register (%d): bad response from monitor: %.*s.", resp_len, buf);
+ error ("monitor_fetch_register (%d): bad response from monitor: %.*s.",
+ regno, resp_len, buf);
p += strlen (current_monitor->getreg.resp_delim);
}
else
@@ -634,7 +520,7 @@ monitor_fetch_register (regno)
if (val == 0 && p == p1)
error ("monitor_fetch_register (%d): bad value from monitor: %.*s.",
- resp_len, buf);
+ regno, resp_len, buf);
/* supply register stores in target byte order, so swap here */
@@ -668,7 +554,7 @@ monitor_store_register (regno)
char *name;
unsigned LONGEST val;
- name = get_reg_name (regno);
+ name = REGNAMES (regno);
if (!name)
return;
@@ -770,7 +656,8 @@ monitor_read_memory (memaddr, myaddr, len)
resp_len = expect (current_monitor->getmem.term, buf, sizeof buf); /* get response */
if (resp_len <= 0)
- error ("monitor_read_memory (%d): excessive response from monitor: %.*s.", resp_len, buf);
+ error ("monitor_read_memory (0x%x): excessive response from monitor: %.*s.",
+ memaddr, resp_len, buf);
if (current_monitor->getmem.term_cmd)
{
@@ -790,7 +677,8 @@ monitor_read_memory (memaddr, myaddr, len)
{
p = strstr (buf, current_monitor->getmem.resp_delim);
if (!p)
- error ("monitor_read_memory (%d): bad response from monitor: %.*s.", resp_len, buf);
+ error ("monitor_read_memory (0x%x): bad response from monitor: %.*s.",
+ memaddr, resp_len, buf);
p += strlen (current_monitor->getmem.resp_delim);
}
else
@@ -799,7 +687,7 @@ monitor_read_memory (memaddr, myaddr, len)
val = strtoul (p, &p1, 16);
if (val == 0 && p == p1)
- error ("monitor_read_memory (%d): bad value from monitor: %.*s.",
+ error ("monitor_read_memory (0x%x): bad value from monitor: %.*s.", memaddr,
resp_len, buf);
*myaddr = val;
@@ -839,7 +727,7 @@ monitor_kill (args, from_tty)
void
monitor_mourn_inferior ()
{
- remove_breakpoints ();
+ unpush_target (targ_ops);
generic_mourn_inferior (); /* Do all the proper things now */
}
@@ -1021,7 +909,7 @@ monitor_load_ascii_srec (file, fromtty)
is placed on the users terminal until the prompt is seen. FIXME: We
read the characters ourseleves here cause of a nasty echo. */
-void
+static void
monitor_command (args, fromtty)
char *args;
int fromtty;
@@ -1206,7 +1094,7 @@ monitor_load_srec (args, protocol)
*** Command syntax error
*/
-int
+static int
getacknak (byte)
int byte;
{