void sim_size PARAMS ((int i));
-/* Run a simulation with tracing enabled.
+/* Single-step simulator with tracing enabled.
THIS PROCEDURE IS DEPRECIATED.
+ THIS PROCEDURE IS EVEN MORE DEPRECATED THAN SIM_SET_TRACE
GDB and NRUN do not use this interface.
- This procedure does not take a SIM_DESC argument as it is
- used before sim_open. */
+ This procedure returns: ``0'' indicating that the simulator should
+ be continued using sim_trace() calls; ``1'' indicating that the
+ simulation has finished. */
int sim_trace PARAMS ((SIM_DESC sd));
+/* Enable tracing.
+ THIS PROCEDURE IS DEPRECIATED.
+ GDB and NRUN do not use this interface.
+ This procedure returns: ``0'' indicating that the simulator should
+ be continued using sim_trace() calls; ``1'' indicating that the
+ simulation has finished. */
+
+void sim_set_trace PARAMS ((void));
+
+
/* Configure the size of the profile buffer.
THIS PROCEDURE IS DEPRECIATED.
GDB and NRUN do not use this interface.
static char *myname;
-/* NOTE: sim_size() and sim_trace() are going away */
-extern int sim_trace PARAMS ((SIM_DESC sd));
-
extern int getopt ();
#ifdef NEED_UI_LOOP_HOOK
int i;
int verbose = 0;
int trace = 0;
+#ifdef SIM_HAVE_ENVIRONMENT
+ int operating_p = 0;
+#endif
char *name;
static char *no_args[4];
char **sim_argv = &no_args[0];
do all argv processing. */
#ifdef SIM_H8300 /* FIXME: quick hack */
- while ((i = getopt (ac, av, "a:c:m:p:s:htv")) != EOF)
+ while ((i = getopt (ac, av, "a:c:m:op:s:htv")) != EOF)
#else
- while ((i = getopt (ac, av, "a:c:m:p:s:tv")) != EOF)
+ while ((i = getopt (ac, av, "a:c:m:op:s:tv")) != EOF)
#endif
switch (i)
{
/* FIXME: Rename to sim_set_mem_size. */
sim_size (atoi (optarg));
break;
+#ifdef SIM_HAVE_ENVIRONMENT
+ case 'o':
+ /* Operating enironment where any signals are delivered to the
+ target. */
+ operating_p = 1;
+ break;
+#endif SIM_HAVE_ENVIRONMENT
#ifdef SIM_HAVE_PROFILE
case 'p':
sim_set_profile (atoi (optarg));
#endif
case 't':
trace = 1;
- /* FIXME: need to allow specification of what to trace. */
- /* sim_set_trace (1); */
break;
case 'v':
/* Things that are printed with -v are the kinds of things that
if (sim_create_inferior (sd, abfd, prog_args, NULL) == SIM_RC_FAIL)
exit (1);
+#ifdef SIM_HAVE_ENVIRONMENT
+ /* NOTE: An old simulator supporting the operating environment MUST
+ provide sim_set_trace() and not sim_trace(). That way
+ sim_stop_reason() can be used to determine any stop reason. */
+ if (trace)
+ sim_set_trace ();
+ do
+ {
+ prev_sigint = signal (SIGINT, cntrl_c);
+ sim_resume (sd, 0, sigrc);
+ signal (SIGINT, prev_sigint);
+ sim_stop_reason (sd, &reason, &sigrc);
+ }
+ while (operating_p && reason == sim_stopped && sigrc != SIGINT);
+#else
if (trace)
{
int done = 0;
done = sim_trace (sd);
}
signal (SIGINT, prev_sigint);
+ sim_stop_reason (sd, &reason, &sigrc);
}
else
{
- do
- {
- prev_sigint = signal (SIGINT, cntrl_c);
- sim_resume (sd, 0, sigrc);
- signal (SIGINT, prev_sigint);
- sim_stop_reason (sd, &reason, &sigrc);
- }
- while (reason == sim_stopped && sigrc != SIGINT);
+ prev_sigint = signal (SIGINT, cntrl_c);
+ sim_resume (sd, 0, sigrc);
+ signal (SIGINT, prev_sigint);
+ sim_stop_reason (sd, &reason, &sigrc);
}
+#endif
if (verbose)
sim_info (sd, 0);
fprintf (stderr, "-h Executable is for h8/300h or h8/300s.\n");
#endif
fprintf (stderr, "-m size Set memory size of simulator, in bytes.\n");
+#ifdef SIM_HAVE_ENVIRONMENT
+ fprintf (stderr, "-o Select operating (kernel) environment.\n");
+#endif
#ifdef SIM_HAVE_PROFILE
fprintf (stderr, "-p freq Set profiling frequency.\n");
fprintf (stderr, "-s size Set profiling size.\n");