* remote-sim.c (simulator_command): Set up callbacks before
[binutils-gdb.git] / gdb / remote-sim.c
index 124022accb85ab20eecb54a9b836dd2f9fa72042..010d501138cd994d01766bdf37f740cdf1955530 100644 (file)
@@ -36,6 +36,43 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "remote-utils.h"
 #include "callback.h"
 
+/* Prototypes */
+
+static void dump_mem PARAMS ((char *buf, int len));
+
+static void gdbsim_fetch_register PARAMS ((int regno));
+
+static void gdbsim_store_register PARAMS ((int regno));
+
+static void gdbsim_kill PARAMS ((void));
+
+static void gdbsim_load PARAMS ((char *prog, int fromtty));
+
+static void gdbsim_create_inferior PARAMS ((char *exec_file, char *args, char **env));
+
+static void gdbsim_open PARAMS ((char *args, int from_tty));
+
+static void gdbsim_close PARAMS ((int quitting));
+
+static void gdbsim_detach PARAMS ((char *args, int from_tty));
+
+static void gdbsim_resume PARAMS ((int pid, int step, enum target_signal siggnal));
+
+static int gdbsim_wait PARAMS ((int pid, struct target_waitstatus *status));
+
+static void gdbsim_prepare_to_store PARAMS ((void));
+
+static int gdbsim_xfer_inferior_memory PARAMS ((CORE_ADDR memaddr,
+                                               char *myaddr, int len,
+                                               int write,
+                                               struct target_ops *target));
+
+static void gdbsim_files_info PARAMS ((struct target_ops *target));
+
+static void gdbsim_mourn_inferior PARAMS ((void));
+
+static void simulator_command PARAMS ((char *args, int from_tty));
+
 /* Naming convention:
 
    sim_* are the interface to the simulator (see remote-sim.h).
@@ -186,7 +223,7 @@ gdbsim_create_inferior (exec_file, args, env)
 
   entry_pt = (CORE_ADDR) bfd_get_start_address (exec_bfd);
 
-  gdbsim_kill (NULL, NULL);     
+  gdbsim_kill ();       
   remove_breakpoints ();
   init_wait_for_inferior ();
 
@@ -404,15 +441,19 @@ gdbsim_mourn_inferior ()
   generic_mourn_inferior ();
 }
 
-/* Put a command string, in args, out to MONITOR.  Output from MONITOR
-   is placed on the users terminal until the prompt is seen. FIXME: We
-   read the characters ourseleves here cause of a nasty echo.  */
+/* Pass the command argument through to the simulator verbatim.  The
+   simulator must do any command interpretation work.  */
 
 static void
 simulator_command (args, from_tty)
      char *args;
      int from_tty;
 {
+  /* The user may give a command before the simulator is opened, so
+     ensure that the callbacks have been set up.  */
+  sim_set_callbacks (&default_callback);
+  default_callback.init (&default_callback);
+
   sim_do_command (args);
 }