2005-09-26 Paul Brook <paul@codesourcery.com>
[deliverable/binutils-gdb.git] / gdb / remote-st.c
index 049eaec644271445b568deea882573e9a778a43f..e90cbc37a0ceb0b87cd0730f4534ef9e6a070c8a 100644 (file)
@@ -1,5 +1,8 @@
 /* Remote debugging interface for Tandem ST2000 phone switch, for GDB.
-   Copyright 1990, 1991, 1992, 2001 Free Software Foundation, Inc.
+
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000,
+   2001, 2002 Free Software Foundation, Inc.
+
    Contributed by Cygnus Support.  Written by Jim Kingdon for Cygnus.
 
    This file is part of GDB.
@@ -33,7 +36,7 @@
    In reality, this module talks to a debug monitor called 'STDEBUG', which
    runs in a phone switch.  We communicate with STDEBUG via either a direct
    serial line, or a TCP (or possibly TELNET) stream to a terminal multiplexor,
-   which in turn talks to the phone switch. */
+   which in turn talks to the phone switch.  */
 
 #include "defs.h"
 #include "gdbcore.h"
@@ -60,7 +63,7 @@ static int timeout = 24;
    st2000_open knows that we don't have a file open when the program
    starts.  */
 
-static serial_t st2000_desc;
+static struct serial *st2000_desc;
 
 /* Send data to stdebug.  Works just like printf. */
 
@@ -75,8 +78,9 @@ printf_stdebug (char *pattern,...)
   vsprintf (buf, pattern, args);
   va_end (args);
 
-  if (SERIAL_WRITE (st2000_desc, buf, strlen (buf)))
-    fprintf (stderr, "SERIAL_WRITE failed: %s\n", safe_strerror (errno));
+  if (serial_write (st2000_desc, buf, strlen (buf)))
+    fprintf_unfiltered (gdb_stderr, "serial_write failed: %s\n",
+                       safe_strerror (errno));
 }
 
 /* Read a character from the remote system, doing all the fancy timeout
@@ -87,7 +91,7 @@ readchar (int timeout)
 {
   int c;
 
-  c = SERIAL_READCHAR (st2000_desc, timeout);
+  c = serial_readchar (st2000_desc, timeout);
 
 #ifdef LOG_FILE
   putc (c & 0x7f, log_file);
@@ -101,10 +105,10 @@ readchar (int timeout)
       if (timeout == 0)
        return c;               /* Polls shouldn't generate timeout errors */
 
-      error ("Timeout reading from remote system.");
+      error (_("Timeout reading from remote system."));
     }
 
-  perror_with_name ("remote-st2000");
+  perror_with_name (_("remote-st2000"));
 }
 
 /* Scan input from the remote system, until STRING is found.  If DISCARD is
@@ -186,7 +190,7 @@ get_hex_digit (int ignore_space)
       else
        {
          expect_prompt (1);
-         error ("Invalid hex digit from remote system.");
+         error (_("Invalid hex digit from remote system."));
        }
     }
 }
@@ -218,22 +222,23 @@ get_hex_regs (int n, int regno)
       val = 0;
       for (j = 0; j < 8; j++)
        val = (val << 4) + get_hex_digit (j == 0);
-      supply_register (regno++, (char *) &val);
+      regcache_raw_supply (current_regcache, regno++, (char *) &val);
     }
 }
 
 /* This is called not only when we first attach, but also when the
    user types "run" after having attached.  */
 static void
-st2000_create_inferior (char *execfile, char *args, char **env)
+st2000_create_inferior (char *execfile, char *args, char **env,
+                       int from_tty)
 {
   int entry_pt;
 
   if (args && *args)
-    error ("Can't pass arguments to remote STDEBUG process");
+    error (_("Can't pass arguments to remote STDEBUG process"));
 
   if (execfile == 0 || exec_bfd == 0)
-    error ("No executable file specified");
+    error (_("No executable file specified"));
 
   entry_pt = (int) bfd_get_start_address (exec_bfd);
 
@@ -274,26 +279,30 @@ st2000_open (char *args, int from_tty)
   n = sscanf (args, " %s %d %s", dev_name, &baudrate, junk);
 
   if (n != 2)
-    error ("Bad arguments.  Usage: target st2000 <device> <speed>\n\
-or target st2000 <host> <port>\n");
+    error (_("Bad arguments.  Usage: target st2000 <device> <speed>\n\
+or target st2000 <host> <port>\n"));
 
   st2000_close (0);
 
-  st2000_desc = SERIAL_OPEN (dev_name);
+  st2000_desc = serial_open (dev_name);
 
   if (!st2000_desc)
     perror_with_name (dev_name);
 
-  SERIAL_SETBAUDRATE (st2000_desc, baudrate);
+  if (serial_setbaudrate (st2000_desc, baudrate))
+    {
+      serial_close (dev_name);
+      perror_with_name (dev_name);
+    }
 
-  SERIAL_RAW (st2000_desc);
+  serial_raw (st2000_desc);
 
   push_target (&st2000_ops);
 
 #if defined (LOG_FILE)
   log_file = fopen (LOG_FILE, "w");
   if (log_file == NULL)
-    perror_with_name (LOG_FILE);
+    perror_with_name ((LOG_FILE));
 #endif
 
   /* Hello?  Are you there?  */
@@ -311,15 +320,15 @@ or target st2000 <host> <port>\n");
 static void
 st2000_close (int quitting)
 {
-  SERIAL_CLOSE (st2000_desc);
+  serial_close (st2000_desc);
 
 #if defined (LOG_FILE)
   if (log_file)
     {
       if (ferror (log_file))
-       fprintf (stderr, "Error writing log file.\n");
+       fprintf_unfiltered (gdb_stderr, "Error writing log file.\n");
       if (fclose (log_file) != 0)
-       fprintf (stderr, "Error closing log file.\n");
+       fprintf_unfiltered (gdb_stderr, "Error closing log file.\n");
     }
 #endif
 }
@@ -338,7 +347,7 @@ st2000_detach (int from_tty)
 /* Tell the remote machine to resume.  */
 
 static void
-st2000_resume (int pid, int step, enum target_signal sig)
+st2000_resume (ptid_t ptid, int step, enum target_signal sig)
 {
   if (step)
     {
@@ -357,8 +366,8 @@ st2000_resume (int pid, int step, enum target_signal sig)
 /* Wait until the remote machine stops, then return,
    storing status in STATUS just as `wait' would.  */
 
-static int
-st2000_wait (struct target_waitstatus *status)
+static ptid_t
+st2000_wait (ptid_t ptid, struct target_waitstatus *status)
 {
   int old_timeout = timeout;
 
@@ -374,12 +383,13 @@ st2000_wait (struct target_waitstatus *status)
 
   timeout = old_timeout;
 
-  return 0;
+  return inferior_ptid;
 }
 
-/* Return the name of register number REGNO in the form input and output by
-   STDEBUG.  Currently, REGISTER_NAMES just happens to contain exactly what
-   STDEBUG wants.  Lets take advantage of that just as long as possible! */
+/* Return the name of register number REGNO in the form input and
+   output by STDEBUG.  Currently, REGISTER_NAME just happens return
+   exactly what STDEBUG wants.  Lets take advantage of that just as
+   long as possible! */
 
 static char *
 get_reg_name (int regno)
@@ -555,9 +565,8 @@ st2000_read_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len)
 
 static int
 st2000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len,
-                            int write, 
-                            struct mem_attrib *attrib ATTRIBUTE_UNUSED,
-                            struct target_ops *target ATTRIBUTE_UNUSED)
+                            int write, struct mem_attrib *attrib,
+                            struct target_ops *target)
 {
   if (write)
     return st2000_write_inferior_memory (memaddr, myaddr, len);
@@ -610,7 +619,7 @@ st2000_insert_breakpoint (CORE_ADDR addr, char *shadow)
        return 0;
       }
 
-  fprintf (stderr, "Too many breakpoints (> 16) for STDBUG\n");
+  fprintf_unfiltered (gdb_stderr, "Too many breakpoints (> 16) for STDBUG\n");
   return 1;
 }
 
@@ -629,7 +638,8 @@ st2000_remove_breakpoint (CORE_ADDR addr, char *shadow)
        return 0;
       }
 
-  fprintf (stderr, "Can't find breakpoint associated with 0x%x\n", addr);
+  fprintf_unfiltered (gdb_stderr,
+                     "Can't find breakpoint associated with 0x%x\n", addr);
   return 1;
 }
 
@@ -641,10 +651,10 @@ static void
 st2000_command (char *args, int fromtty)
 {
   if (!st2000_desc)
-    error ("st2000 target not open.");
+    error (_("st2000 target not open."));
 
   if (!args)
-    error ("Missing command.");
+    error (_("Missing command."));
 
   printf_stdebug ("%s\r", args);
   expect_prompt (0);
@@ -659,7 +669,7 @@ static void
 cleanup_tty (void)
 {
   printf ("\r\n[Exiting connect mode]\r\n");
-/*  SERIAL_RESTORE(0, &ttystate); */
+/*  serial_restore(0, &ttystate); */
 }
 
 #if 0
@@ -676,7 +686,7 @@ connect_command (char *args, int fromtty)
   dont_repeat ();
 
   if (st2000_desc < 0)
-    error ("st2000 target not open.");
+    error (_("st2000 target not open."));
 
   if (args)
     fprintf ("This command takes no args.  They have been ignored.\n");
@@ -694,19 +704,19 @@ connect_command (char *args, int fromtty)
       do
        {
          FD_SET (0, &readfds);
-         FD_SET (DEPRECATED_SERIAL_FD (st2000_desc), &readfds);
+         FD_SET (deprecated_serial_fd (st2000_desc), &readfds);
          numfds = select (sizeof (readfds) * 8, &readfds, 0, 0, 0);
        }
       while (numfds == 0);
 
       if (numfds < 0)
-       perror_with_name ("select");
+       perror_with_name (("select"));
 
       if (FD_ISSET (0, &readfds))
        {                       /* tty input, send to stdebug */
          c = getchar ();
          if (c < 0)
-           perror_with_name ("connect");
+           perror_with_name (("connect"));
 
          printf_stdebug ("%c", c);
          switch (cur_esc)
@@ -729,7 +739,7 @@ connect_command (char *args, int fromtty)
            }
        }
 
-      if (FD_ISSET (DEPRECATED_SERIAL_FD (st2000_desc), &readfds))
+      if (FD_ISSET (deprecated_serial_fd (st2000_desc), &readfds))
        {
          while (1)
            {
@@ -759,63 +769,25 @@ Arguments are the name of the device for the serial line,\n\
 the speed to connect at in bits per second.";
   st2000_ops.to_open = st2000_open;
   st2000_ops.to_close = st2000_close;
-  st2000_ops.to_attach = 0;
-  st2000_run_ops.to_post_attach = NULL;
-  st2000_ops.to_require_attach = NULL;
   st2000_ops.to_detach = st2000_detach;
-  st2000_ops.to_require_detach = NULL;
   st2000_ops.to_resume = st2000_resume;
   st2000_ops.to_wait = st2000_wait;
-  st2000_ops.to_post_wait = NULL;
   st2000_ops.to_fetch_registers = st2000_fetch_register;
   st2000_ops.to_store_registers = st2000_store_register;
   st2000_ops.to_prepare_to_store = st2000_prepare_to_store;
-  st2000_ops.to_xfer_memory = st2000_xfer_inferior_memory;
+  st2000_ops.deprecated_xfer_memory = st2000_xfer_inferior_memory;
   st2000_ops.to_files_info = st2000_files_info;
   st2000_ops.to_insert_breakpoint = st2000_insert_breakpoint;
   st2000_ops.to_remove_breakpoint = st2000_remove_breakpoint;  /* Breakpoints */
-  st2000_ops.to_terminal_init = 0;
-  st2000_ops.to_terminal_inferior = 0;
-  st2000_ops.to_terminal_ours_for_output = 0;
-  st2000_ops.to_terminal_ours = 0;
-  st2000_ops.to_terminal_info = 0;     /* Terminal handling */
   st2000_ops.to_kill = st2000_kill;
-  st2000_ops.to_load = 0;      /* load */
-  st2000_ops.to_lookup_symbol = 0;     /* lookup_symbol */
   st2000_ops.to_create_inferior = st2000_create_inferior;
-  st2000_ops.to_post_startup_inferior = NULL;
-  st2000_ops.to_acknowledge_created_inferior = NULL;
-  st2000_ops.to_clone_and_follow_inferior = NULL;
-  st2000_ops.to_post_follow_inferior_by_clone = NULL;
-  st2000_run_ops.to_insert_fork_catchpoint = NULL;
-  st2000_run_ops.to_remove_fork_catchpoint = NULL;
-  st2000_run_ops.to_insert_vfork_catchpoint = NULL;
-  st2000_run_ops.to_remove_vfork_catchpoint = NULL;
-  st2000_ops.to_has_forked = NULL;
-  st2000_ops.to_has_vforked = NULL;
-  st2000_run_ops.to_can_follow_vfork_prior_to_exec = NULL;
-  st2000_ops.to_post_follow_vfork = NULL;
-  st2000_run_ops.to_insert_exec_catchpoint = NULL;
-  st2000_run_ops.to_remove_exec_catchpoint = NULL;
-  st2000_run_ops.to_has_execd = NULL;
-  st2000_run_ops.to_reported_exec_events_per_exec_call = NULL;
-  st2000_run_ops.to_has_exited = NULL;
   st2000_ops.to_mourn_inferior = st2000_mourn_inferior;
-  st2000_ops.to_can_run = 0;   /* can_run */
-  st2000_ops.to_notice_signals = 0;    /* notice_signals */
-  st2000_ops.to_thread_alive = 0;      /* thread alive */
-  st2000_ops.to_stop = 0;      /* to_stop */
-  st2000_ops.to_pid_to_exec_file = NULL;
-  st2000_run_ops.to_core_file_to_sym_file = NULL;
   st2000_ops.to_stratum = process_stratum;
-  st2000_ops.DONT_USE = 0;     /* next */
   st2000_ops.to_has_all_memory = 1;
   st2000_ops.to_has_memory = 1;
   st2000_ops.to_has_stack = 1;
   st2000_ops.to_has_registers = 1;
   st2000_ops.to_has_execution = 1;     /* all mem, mem, stack, regs, exec */
-  st2000_ops.to_sections = 0;
-  st2000_ops.to_sections_end = 0;      /* Section pointers */
   st2000_ops.to_magic = OPS_MAGIC;     /* Always the last thing */
 };
 
@@ -824,9 +796,9 @@ _initialize_remote_st2000 (void)
 {
   init_st2000_ops ();
   add_target (&st2000_ops);
-  add_com ("st2000 <command>", class_obscure, st2000_command,
-          "Send a command to the STDBUG monitor.");
-  add_com ("connect", class_obscure, connect_command,
-          "Connect the terminal directly up to the STDBUG command monitor.\n\
-Use <CR>~. or <CR>~^D to break out.");
+  add_com ("st2000", class_obscure, st2000_command,
+          _("Send a command to the STDBUG monitor."));
+  add_com ("connect", class_obscure, connect_command, _("\
+Connect the terminal directly up to the STDBUG command monitor.\n\
+Use <CR>~. or <CR>~^D to break out."));
 }
This page took 0.037197 seconds and 4 git commands to generate.