Merge with armelf980813:
authorKeith Seitz <keiths@cygnus>
Fri, 25 Sep 1998 19:04:46 +0000 (19:04 +0000)
committerKeith Seitz <keiths@cygnus>
Fri, 25 Sep 1998 19:04:46 +0000 (19:04 +0000)
        * rdi-share/unixcomm.c: If using cygwin32, also use the SERPORT and
        PARPORT defines for win32.
        (Unix_MatchValidSerialDevice): For cygwin32, valid serial port names
        start with "com", not "/dev/tty".
        (Unix_OpenSerial): Do not use O_NONBLOCK on cygwin32.

        * rdi-share/devsw.c (DevSW_Close): Free the device's state (SwitcherState)
        so that the device may be reopened.

        * remote-rdi.c (mywritec): Send all output through gdb's *_unfiltered
        functions, ignoring non-ASCII chars, so that non-tty UI's can snarf
        the output from fputs_hook.
        (mywrite): Ditto.
        (arm_rdi_open): Set inferior_pid.
        (arm_rdi_detach): Pop the target off the target stack so that
        users can attach and detach multiple times.
        (arm_rdi_close): Close the opened device and reset inferior_pid, too.

gdb/ChangeLog
gdb/rdi-share/devsw.c
gdb/rdi-share/unixcomm.c
gdb/remote-rdi.c

index c890868602374cd4a063e89aa5815b05eb9b3798..04969a3a01d9ff4d2905694c75a7c7b120e6eb12 100644 (file)
@@ -208,6 +208,26 @@ Mon Aug 31 15:42:10 1998  Tom Tromey  <tromey@cygnus.com>
 
        * top.c (context_hook): Define.
 
+1998-08-26  Keith Seitz  <keiths@cygnus.com>
+
+        * rdi-share/unixcomm.c: If using cygwin32, also use the SERPORT and
+        PARPORT defines for win32.
+        (Unix_MatchValidSerialDevice): For cygwin32, valid serial port names
+        start with "com", not "/dev/tty".
+        (Unix_OpenSerial): Do not use O_NONBLOCK on cygwin32.
+
+        * rdi-share/devsw.c (DevSW_Close): Free the device's state (SwitcherState)
+        so that the device may be reopened.
+
+        * remote-rdi.c (mywritec): Send all output through gdb's *_unfiltered
+        functions, ignoring non-ASCII chars, so that non-tty UI's can snarf
+        the output from fputs_hook.
+        (mywrite): Ditto.
+        (arm_rdi_open): Set inferior_pid.
+        (arm_rdi_detach): Pop the target off the target stack so that
+        users can attach and detach multiple times.
+        (arm_rdi_close): Close the opened device and reset inferior_pid, too.
+
 Tue Aug 25 13:21:58 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>
 
        * ax-gdb.c (gen_var_ref): Allow for typedef types.
index 590b81241e8dd07cb4f9c57bdd9d553a26e82748..7fa142b4722de36e07b9b65638e11b0aad62d8a9 100644 (file)
@@ -265,6 +265,10 @@ AdpErrs DevSW_Close(const DeviceDescr *device, const DevChanID type)
          pk = Adp_removeFromQueue(&(ds->ds_readqueue[type])))
         DevSW_FreePacket(pk);
 
+    /* Free memory */
+    free ((char *) device->SwitcherState);
+    device->SwitcherState = 0x0;
+
     /* that's all */
     return adp_ok;
 }
index 7cb55e6c8d5e897d2a508618e5c029ffea27a1c3..400d1fdf5bf0bb031919382b5c201b3776ba6740 100644 (file)
 #define PARPORT2   "/dev/par1"
 #endif
 
-#ifdef _WIN32
+#define SERIAL_PREFIX "/dev/tty"
+#if defined(_WIN32) || defined (__CYGWIN32__) 
 #define SERPORT1   "com1"
 #define SERPORT2   "com2"
 #define PARPORT1   "lpt1"
 #define PARPORT2   "lpt2"
+#undef SERIAL_PREFIX
+#define SERIAL_PREFIX "com"
 #endif
 
 /*
@@ -121,7 +124,11 @@ extern const char *Unix_MatchValidSerialDevice(const char *name)
    */
 
   /* Accept /dev/tty* where * is limited */
-  if (strlen(name) == strlen(SERPORT1) && strncmp(name, "/dev/tty", 8) == 0) return name;
+  if (strlen(name) == strlen(SERPORT1)
+      && strncmp(name, SERIAL_PREFIX, strlen (SERIAL_PREFIX)) == 0)
+      {
+        return name;
+      }
 
   /* Accept "1" or "2" or "S" - S is equivalent to "1" */
   if (strcmp(name, "1") == 0 ||
@@ -224,7 +231,7 @@ extern int Unix_IsSerialInUse(void)
 
 extern int Unix_OpenSerial(const char *name)
 {
-#if defined(BSD)
+#if defined(BSD) || defined(__CYGWIN32__)
     serpfd = open(name, O_RDWR);
 #else
     serpfd = open(name, O_RDWR | O_NONBLOCK);
index ee025850581e40b61651f1564f094948da15fe58..137bc59f762f453078fc0283a326e00e425b176d 100644 (file)
@@ -42,6 +42,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "rdi-share/adp.h"
 #include "rdi-share/hsys.h"
 
+extern int isascii PARAMS ((int));
+
 /* Prototypes for local functions */
 
 static void arm_rdi_files_info PARAMS ((struct target_ops *ignore));
@@ -145,7 +147,8 @@ mywritec (arg, c)
      PTR arg;
      int c;
 {
-  fputc (c, (FILE *) arg);
+  if (isascii (c))
+    fputc_unfiltered (c, (FILE *) arg);
 }
 
 static int
@@ -154,7 +157,20 @@ mywrite (arg, buffer, len)
      char const *buffer;
      int len;
 {
-  return fwrite (buffer, 1, len, stdout);
+  int i;
+  char *e;
+
+  e = (char *) buffer;
+  for (i = 0; i < len; i++)
+{
+      if (isascii ((int) *e))
+        {
+          fputc_unfiltered ((int) *e, gdb_stdout);
+          e++;
+        }
+}
+
+  return len;
 }
 
 static void
@@ -300,8 +316,8 @@ device is attached to the remote system (e.g. /dev/ttya).");
   }
 
   printf_filtered ("Connected to ARM RDI target.\n");
-
   closed_already = 0;
+  inferior_pid = 42;
 }
 
 /* Start an inferior process and set inferior_pid to its pid.
@@ -387,7 +403,7 @@ arm_rdi_detach (args, from_tty)
      char *args;
      int from_tty;
 {
-  /* (anything to do?) */
+  pop_target ();
 }
 
 /* Clean up connection to a remote debugger.  */
@@ -406,6 +422,7 @@ arm_rdi_close (quitting)
          printf_filtered ("RDI_close: %s\n", rdi_error_message (rslt));
        }
       closed_already = 1;
+      inferior_pid = 0;
     }
 }
 \f