forked from Imagelibrary/binutils-gdb
gdb/
* gdbint.texinfo (Target Vector Definition): Move most content into Existing Targets. Add a menu. (Existing Targets): New section, moved from Target Vector Definition. Use @subsection. (Managing Execution State): New section. gdb/doc/ * remote-sim.c (gdbsim_kill): Call target_mourn_inferior. (gdbsim_load): Don't bother to adjust inferior_ptid here. (gdbsim_create_inferior): Mark the simulator as running. (gdbsim_open): Don't bother fetching registers. Mark the target as not running. (gdbsim_xfer): When the program is not running, pass memory requests down. (gdbsim_mourn_inferior): Mark the target as not running. * target.c (target_mark_running, target_mark_exited): New. * target.h (target_has_execution): Update the comment. (target_mark_running, target_mark_exited): New prototypes.
This commit is contained in:
@@ -383,8 +383,8 @@ gdbsim_kill (void)
|
||||
printf_filtered ("gdbsim_kill\n");
|
||||
|
||||
/* There is no need to `kill' running simulator - the simulator is
|
||||
not running */
|
||||
inferior_ptid = null_ptid;
|
||||
not running. Mourning it is enough. */
|
||||
target_mourn_inferior ();
|
||||
}
|
||||
|
||||
/* Load an executable file into the target process. This is expected to
|
||||
@@ -410,8 +410,6 @@ gdbsim_load (char *args, int fromtty)
|
||||
if (sr_get_debug ())
|
||||
printf_filtered ("gdbsim_load: prog \"%s\"\n", prog);
|
||||
|
||||
inferior_ptid = null_ptid;
|
||||
|
||||
/* FIXME: We will print two messages on error.
|
||||
Need error to either not print anything if passed NULL or need
|
||||
another routine that doesn't take any arguments. */
|
||||
@@ -469,6 +467,7 @@ gdbsim_create_inferior (char *exec_file, char *args, char **env, int from_tty)
|
||||
sim_create_inferior (gdbsim_desc, exec_bfd, argv, env);
|
||||
|
||||
inferior_ptid = pid_to_ptid (42);
|
||||
target_mark_running (&gdbsim_ops);
|
||||
insert_breakpoints (); /* Needed to get correct instruction in cache */
|
||||
|
||||
clear_proceed_status ();
|
||||
@@ -543,8 +542,12 @@ gdbsim_open (char *args, int from_tty)
|
||||
error (_("unable to create simulator instance"));
|
||||
|
||||
push_target (&gdbsim_ops);
|
||||
target_fetch_registers (-1);
|
||||
printf_filtered ("Connected to the simulator.\n");
|
||||
|
||||
/* There's nothing running after "target sim" or "load"; not until
|
||||
"run". */
|
||||
inferior_ptid = null_ptid;
|
||||
target_mark_exited (&gdbsim_ops);
|
||||
}
|
||||
|
||||
/* Does whatever cleanup is required for a target that we are no longer
|
||||
@@ -747,6 +750,12 @@ gdbsim_xfer_inferior_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
|
||||
int write, struct mem_attrib *attrib,
|
||||
struct target_ops *target)
|
||||
{
|
||||
/* If no program is running yet, then ignore the simulator for
|
||||
memory. Pass the request down to the next target, hopefully
|
||||
an exec file. */
|
||||
if (!target_has_execution)
|
||||
return 0;
|
||||
|
||||
if (!program_loaded)
|
||||
error (_("No program loaded."));
|
||||
|
||||
@@ -802,6 +811,7 @@ gdbsim_mourn_inferior (void)
|
||||
printf_filtered ("gdbsim_mourn_inferior:\n");
|
||||
|
||||
remove_breakpoints ();
|
||||
target_mark_exited (&gdbsim_ops);
|
||||
generic_mourn_inferior ();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user