2004-03-15 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / remote-st.c
index 485f9414493858d9260e8e9b42956f9c56289a4d..ce4c7ab13e5cf6a63e2445ca94e61d287f5e927c 100644 (file)
@@ -1,5 +1,8 @@
 /* Remote debugging interface for Tandem ST2000 phone switch, for GDB.
-   Copyright 1990, 1991, 1992 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.
 #include "defs.h"
 #include "gdbcore.h"
 #include "target.h"
-#include "gdb_wait.h"
-#include <signal.h>
 #include "gdb_string.h"
 #include <sys/types.h>
 #include "serial.h"
+#include "regcache.h"
 
 extern struct target_ops st2000_ops;   /* Forward declaration */
 
@@ -61,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. */
 
@@ -76,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
@@ -88,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);
@@ -117,7 +120,7 @@ expect (char *string, int discard)
   char *p = string;
   int c;
 
-  immediate_quit = 1;
+  immediate_quit++;
   while (1)
     {
       c = readchar (timeout);
@@ -125,7 +128,7 @@ expect (char *string, int discard)
        {
          if (*p == '\0')
            {
-             immediate_quit = 0;
+             immediate_quit--;
              return;
            }
        }
@@ -280,14 +283,18 @@ 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);
 
@@ -312,15 +319,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
 }
@@ -339,7 +346,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)
     {
@@ -358,8 +365,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;
 
@@ -375,12 +382,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)
@@ -548,14 +556,16 @@ st2000_read_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len)
   return len;
 }
 
-/* FIXME-someday!  Merge these two.  */
+/* Transfer LEN bytes between GDB address MYADDR and target address
+   MEMADDR.  If WRITE is non-zero, transfer them to the target,
+   otherwise transfer them from the target.  TARGET is unused.
+
+   Returns the number of bytes transferred. */
+
 static int
-st2000_xfer_inferior_memory (memaddr, myaddr, len, write, target)
-     CORE_ADDR memaddr;
-     char *myaddr;
-     int len;
-     int write;
-     struct target_ops *target;        /* ignored */
+st2000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len,
+                            int write, struct mem_attrib *attrib,
+                            struct target_ops *target)
 {
   if (write)
     return st2000_write_inferior_memory (memaddr, myaddr, len);
@@ -608,7 +618,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;
 }
 
@@ -627,7 +637,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;
 }
 
@@ -657,7 +668,7 @@ static void
 cleanup_tty (void)
 {
   printf ("\r\n[Exiting connect mode]\r\n");
-/*  SERIAL_RESTORE(0, &ttystate); */
+/*  serial_restore(0, &ttystate); */
 }
 
 #if 0
@@ -692,7 +703,7 @@ 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);
@@ -727,7 +738,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)
            {
@@ -757,14 +768,9 @@ 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;
@@ -772,48 +778,15 @@ the speed to connect at in bits per second.";
   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 */
 };
 
This page took 0.028224 seconds and 4 git commands to generate.