* 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.
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;
}
#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
/*
*/
/* 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 ||
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);
#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));
PTR arg;
int c;
{
- fputc (c, (FILE *) arg);
+ if (isascii (c))
+ fputc_unfiltered (c, (FILE *) arg);
}
static int
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
}
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.
char *args;
int from_tty;
{
- /* (anything to do?) */
+ pop_target ();
}
/* Clean up connection to a remote debugger. */
printf_filtered ("RDI_close: %s\n", rdi_error_message (rslt));
}
closed_already = 1;
+ inferior_pid = 0;
}
}
\f