static void gdbsim_mourn_inferior (void) { if (sr_get_debug ()) printf_filtered ("gdbsim_mourn_inferior:\n"); remove_breakpoints (); target_mark_exited (&gdbsim_ops); generic_mourn_inferior (); }
static void gdbsim_mourn_inferior (struct target_ops *target) { if (remote_debug) printf_filtered ("gdbsim_mourn_inferior:\n"); remove_breakpoints (); target_mark_exited (target); generic_mourn_inferior (); delete_thread_silent (remote_sim_ptid); }
static void gdbsim_open (char *args, int from_tty) { int len; char *arg_buf; char **argv; if (sr_get_debug ()) printf_filtered ("gdbsim_open: args \"%s\"\n", args ? args : "(null)"); /* Remove current simulator if one exists. Only do this if the simulator has been opened because sim_close requires it. This is important because the call to push_target below will cause sim_close to be called if the simulator is already open, but push_target is called after sim_open! We can't move the call to push_target before the call to sim_open because sim_open may invoke `error'. */ if (gdbsim_desc != NULL) unpush_target (&gdbsim_ops); len = (7 + 1 /* gdbsim */ + strlen (" -E little") + strlen (" --architecture=xxxxxxxxxx") + (args ? strlen (args) : 0) + 50) /* slack */ ; arg_buf = (char *) alloca (len); strcpy (arg_buf, "gdbsim"); /* 7 */ /* Specify the byte order for the target when it is both selectable and explicitly specified by the user (not auto detected). */ switch (TARGET_BYTE_ORDER) { case BFD_ENDIAN_BIG: strcat (arg_buf, " -E big"); break; case BFD_ENDIAN_LITTLE: strcat (arg_buf, " -E little"); break; case BFD_ENDIAN_UNKNOWN: break; } /* Specify the architecture of the target when it has been explicitly specified */ if (selected_architecture_name () != NULL) { strcat (arg_buf, " --architecture="); strcat (arg_buf, selected_architecture_name ()); } /* finally, any explicit args */ if (args) { strcat (arg_buf, " "); /* 1 */ strcat (arg_buf, args); } argv = buildargv (arg_buf); if (argv == NULL) error (_("Insufficient memory available to allocate simulator arg list.")); make_cleanup_freeargv (argv); init_callbacks (); gdbsim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback, exec_bfd, argv); if (gdbsim_desc == 0) error (_("unable to create simulator instance")); push_target (&gdbsim_ops); 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); }