summaryrefslogtreecommitdiff
path: root/gdb/monitor.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2001-09-13 22:48:19 +0000
committerJim Blandy <jimb@codesourcery.com>2001-09-13 22:48:19 +0000
commitf53876ad1eb29ca9c5ba6a678b7f8e6268df5f84 (patch)
treeb7c7b3e20cf57202f3cd6fd3c859122d736190e3 /gdb/monitor.c
parent02dbf119b40127d6d88a8ddf11a1581e0880501b (diff)
downloadgdb-f53876ad1eb29ca9c5ba6a678b7f8e6268df5f84.tar.gz
* monitor.c (monitor_load): Don't delete symtab users, or reset
inferior_ptid.
Diffstat (limited to 'gdb/monitor.c')
-rw-r--r--gdb/monitor.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/gdb/monitor.c b/gdb/monitor.c
index 060380616cb..b78496a9e80 100644
--- a/gdb/monitor.c
+++ b/gdb/monitor.c
@@ -2206,15 +2206,19 @@ monitor_load (char *file, int from_tty)
if (exec_bfd)
write_pc (bfd_get_start_address (exec_bfd));
- inferior_ptid = null_ptid ; /* No process now */
-
- /* This is necessary because many things were based on the PC at the
- time that we attached to the monitor, which is no longer valid
- now that we have loaded new code (and just changed the PC).
- Another way to do this might be to call normal_stop, except that
- the stack may not be valid, and things would get horribly
- confused... */
- clear_symtab_users ();
+ /* There used to be code here which would clear inferior_ptid and
+ call clear_symtab_users. None of that should be necessary:
+ monitor targets should behave like remote protocol targets, and
+ since generic_load does none of those things, this function
+ shouldn't either.
+
+ Furthermore, clearing inferior_ptid is *incorrect*. After doing
+ a load, we still have a valid connection to the monitor, with a
+ live processor state to fiddle with. The user can type
+ `continue' or `jump *start' and make the program run. If they do
+ these things, however, GDB will be talking to a running program
+ while inferior_ptid is null_ptid; this makes things like
+ reinit_frame_cache very confused. */
}
static void