summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2006-05-24 08:00:02 +0000
committerNathan Sidwell <nathan@codesourcery.com>2006-05-24 08:00:02 +0000
commit8fc3bae789a51eb030adb0f1b8828afd511cd3c0 (patch)
tree1ea7a2bcfd519822988bd5588741b78272bd84e8
parent83b2b7020065a097598133e9c9cbdde196a7261b (diff)
downloadgdb-8fc3bae789a51eb030adb0f1b8828afd511cd3c0.tar.gz
* gdb/remote-fileio.c (remote_fileio_reset): New.
* gdb/remote-fileio.h (remote_fileio_reset): Prototype. * gdb/remote.c (extended_remote_restart, remote_open_1): Call it.
-rw-r--r--ChangeLog.csl6
-rw-r--r--gdb/remote-fileio.c19
-rw-r--r--gdb/remote-fileio.h3
-rw-r--r--gdb/remote.c4
4 files changed, 32 insertions, 0 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index 01d00f5f4ba..d22ce1ab2d4 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,9 @@
+2006-05-24 Nathan Sidwell <nathan@codesourcery.com>
+
+ * gdb/remote-fileio.c (remote_fileio_reset): New.
+ * gdb/remote-fileio.h (remote_fileio_reset): Prototype.
+ * gdb/remote.c (extended_remote_restart, remote_open_1): Call it.
+
2006-05-22 Richard Sandiford <richard@codesourcery.com>
opcodes/
diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c
index 7056a34e51b..c9fbb03fb95 100644
--- a/gdb/remote-fileio.c
+++ b/gdb/remote-fileio.c
@@ -1355,6 +1355,25 @@ do_remote_fileio_request (struct ui_out *uiout, void *buf_arg)
return 0;
}
+/* Close any open descriptors, and reinitialize the file mapping */
+
+void
+remote_fileio_reset (void)
+{
+ int ix;
+
+ for (ix = 0; ix != remote_fio_data.fd_map_size; ix++)
+ {
+ int fd = remote_fio_data.fd_map[ix];
+
+ if (fd >= 0)
+ close (fd);
+ }
+ free (remote_fio_data.fd_map);
+ remote_fio_data.fd_map = NULL;
+ remote_fio_data.fd_map_size = 0;
+}
+
void
remote_fileio_request (char *buf)
{
diff --git a/gdb/remote-fileio.h b/gdb/remote-fileio.h
index 4b9b064686b..7cb9fd33231 100644
--- a/gdb/remote-fileio.h
+++ b/gdb/remote-fileio.h
@@ -30,6 +30,9 @@ struct cmd_list_element;
remote_wait () and remote_async_wait () */
extern void remote_fileio_request (char *buf);
+/* Cleanup any remote fileio state. */
+extern void remote_fileio_reset (void);
+
/* Called from _initialize_remote () */
extern void initialize_remote_fileio (
struct cmd_list_element *remote_set_cmdlist,
diff --git a/gdb/remote.c b/gdb/remote.c
index b078e6c7d70..4602635f262 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1820,6 +1820,8 @@ extended_remote_restart (void)
xsnprintf (buf, rs->remote_packet_size, "R%x", 0);
putpkt (buf);
+ remote_fileio_reset ();
+
/* Now query for status so this looks just like we restarted
gdbserver from scratch. */
putpkt ("?");
@@ -2176,6 +2178,8 @@ remote_open_1 (char *name, int from_tty, struct target_ops *target,
if (!async_p)
wait_forever_enabled_p = 1;
+ remote_fileio_reset ();
+
reopen_exec_file ();
reread_symbols ();