diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2006-05-24 08:00:02 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@codesourcery.com> | 2006-05-24 08:00:02 +0000 |
commit | 4bee67a81c40b4f6c13560ea3ab50d87f56adcf5 (patch) | |
tree | 28032841d768d876c14216b7e5dc06896524b5cc | |
parent | 8baf136dd478adec429a6ee8ed8ee8f2b16ef0b7 (diff) | |
download | fsf-binutils-gdb-4bee67a81c40b4f6c13560ea3ab50d87f56adcf5.zip fsf-binutils-gdb-4bee67a81c40b4f6c13560ea3ab50d87f56adcf5.tar.gz fsf-binutils-gdb-4bee67a81c40b4f6c13560ea3ab50d87f56adcf5.tar.bz2 |
* 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.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 01d00f5..d22ce1a 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 7056a34..c9fbb03 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 4b9b064..7cb9fd3 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 b078e6c..4602635 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 (); |