aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote-rdi.c
diff options
context:
space:
mode:
authorKeith Seitz <keiths@cygnus>1998-09-25 19:04:46 +0000
committerKeith Seitz <keiths@cygnus>1998-09-25 19:04:46 +0000
commit69da960729726894f3323027b23de8901f09e856 (patch)
tree647741a49ecff15ea195d9f316102b6618083b36 /gdb/remote-rdi.c
parent1af37f6bde766785b703ebd52378f3109fd85483 (diff)
downloadgdb-69da960729726894f3323027b23de8901f09e856.zip
gdb-69da960729726894f3323027b23de8901f09e856.tar.gz
gdb-69da960729726894f3323027b23de8901f09e856.tar.bz2
Merge with armelf980813:
* 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.
Diffstat (limited to 'gdb/remote-rdi.c')
-rw-r--r--gdb/remote-rdi.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/gdb/remote-rdi.c b/gdb/remote-rdi.c
index ee02585..137bc59 100644
--- a/gdb/remote-rdi.c
+++ b/gdb/remote-rdi.c
@@ -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;
}
}