diff options
-rw-r--r-- | ChangeLog.csl | 6 | ||||
-rw-r--r-- | gdb/remote-fileio.c | 19 | ||||
-rw-r--r-- | gdb/remote-fileio.h | 3 | ||||
-rw-r--r-- | gdb/remote.c | 4 |
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 (); |