* gdb/remote.c (remote_open_1): Do preopen tasks before
	irreversably destroying state.
diff --git a/ChangeLog.csl b/ChangeLog.csl
index 4c6cab0..56983a3 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,5 +1,8 @@
 2006-06-08  Nathan Sidwell  <nathan@codesourcery.com>
 
+	* gdb/remote.c (remote_open_1): Do preopen tasks before
+	irreversably destroying state.
+
 	* gdb/m68k-tdep.c (m68k_svr4_extract_return_value): Use
 	tdep->ptr_value_regnum for pointer returns.
 	(m68k_svr4_store_return_value): Likewise.
diff --git a/gdb/remote.c b/gdb/remote.c
index 599bb21..131df89 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -2178,15 +2178,15 @@
   if (!async_p)
     wait_forever_enabled_p = 1;
 
+  target_preopen (from_tty);
+
+  unpush_target (target);
+
   remote_fileio_reset ();
   
   reopen_exec_file ();
   reread_symbols ();
 
-  target_preopen (from_tty);
-
-  unpush_target (target);
-
   remote_desc = remote_serial_open (name);
   if (!remote_desc)
     perror_with_name (name);