aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2000-02-22 08:52:21 +0000
committerAndrew Cagney <cagney@redhat.com>2000-02-22 08:52:21 +0000
commitbaa7ae6f10462c17d2472868e6b1c08d0ba880ae (patch)
tree65209fc2c67d9206338cce6e704dd9e13a383861
parent1287d1cc37aca000234065fd0472a3a9846f4017 (diff)
downloadgdb-baa7ae6f10462c17d2472868e6b1c08d0ba880ae.zip
gdb-baa7ae6f10462c17d2472868e6b1c08d0ba880ae.tar.gz
gdb-baa7ae6f10462c17d2472868e6b1c08d0ba880ae.tar.bz2
When SIM_HAVE_ENVIRONMENT: use sim_set_trace() to enable tracing
instead of sim_trace() to run the program; include support for ``-o'' option (operating environment); when a signal occurs, only continue execution when operating environment mode. Update d10v.
-rw-r--r--include/ChangeLog5
-rw-r--r--include/remote-sim.h18
-rw-r--r--sim/common/ChangeLog9
-rw-r--r--sim/common/run.c51
-rw-r--r--sim/d10v/ChangeLog5
-rw-r--r--sim/d10v/Makefile.in2
-rw-r--r--sim/d10v/interp.c12
-rw-r--r--sim/testsuite/d10v-elf/ChangeLog4
-rw-r--r--sim/testsuite/d10v-elf/Makefile.in3
9 files changed, 80 insertions, 29 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index f377d21..bd9ba9a 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+Tue Feb 22 15:19:54 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * remote-sim.h (sim_trace): Document return values.
+ (sim_set_trace): Declare. Deprecate.
+
2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
* dis-asm.h (struct disassemble_info): Change `length' param of
diff --git a/include/remote-sim.h b/include/remote-sim.h
index a8eb923..b32f93f 100644
--- a/include/remote-sim.h
+++ b/include/remote-sim.h
@@ -308,15 +308,27 @@ void sim_set_callbacks PARAMS ((struct host_callback_struct *));
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.
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 9aeba03..1273e83 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,12 @@
+Tue Feb 22 16:45:09 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * run.c (main): When SIM_HAVE_ENVIRONMENT enable tracing with
+ sim_set_trace and run simulator using sim_resume.
+ (main): Add option ``-o'' - operating environment. Only continue
+ after a signal when operating environment.
+ (main): Always set REASON and SIGRC using sim_stop_reason.
+ (sim_trace): Delete extern declaration.
+
2000-02-08 Nick Clifton <nickc@cygnus.com>
* callback.c: Fix compile time warning messages.
diff --git a/sim/common/run.c b/sim/common/run.c
index 1a4e969..d23b5a0 100644
--- a/sim/common/run.c
+++ b/sim/common/run.c
@@ -57,9 +57,6 @@ extern host_callback default_callback;
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
@@ -89,6 +86,9 @@ main (ac, av)
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];
@@ -117,9 +117,9 @@ main (ac, av)
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)
{
@@ -147,6 +147,13 @@ main (ac, av)
/* 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));
@@ -157,8 +164,6 @@ main (ac, av)
#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
@@ -231,6 +236,21 @@ main (ac, av)
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;
@@ -240,18 +260,16 @@ main (ac, av)
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);
@@ -303,6 +321,9 @@ usage ()
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");
diff --git a/sim/d10v/ChangeLog b/sim/d10v/ChangeLog
index a497981..2327166 100644
--- a/sim/d10v/ChangeLog
+++ b/sim/d10v/ChangeLog
@@ -1,3 +1,8 @@
+Tue Feb 22 18:24:56 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (SIM_EXTRA_CFLAGS): Define SIM_HAVE_ENVIRONMENT.
+ * interp.c (sim_set_trace): Replace sim_trace. Enable tracing.
+
Mon Jan 3 02:06:07 2000 Andrew Cagney <cagney@b1.cygnus.com>
* interp.c (lookup_hash): Stop the update of the PC when there was
diff --git a/sim/d10v/Makefile.in b/sim/d10v/Makefile.in
index 602ffff..8ed219f 100644
--- a/sim/d10v/Makefile.in
+++ b/sim/d10v/Makefile.in
@@ -20,7 +20,7 @@
SIM_OBJS = interp.o table.o simops.o endian.o sim-load.o
SIM_EXTRA_CLEAN = clean-extra
-SIM_EXTRA_CFLAGS = -DNEED_UI_LOOP_HOOK
+SIM_EXTRA_CFLAGS = -DNEED_UI_LOOP_HOOK -DSIM_HAVE_ENVIRONMENT
INCLUDE = d10v_sim.h $(srcroot)/include/callback.h targ-vals.h endian.c
diff --git a/sim/d10v/interp.c b/sim/d10v/interp.c
index 80898ab..91ebee5 100644
--- a/sim/d10v/interp.c
+++ b/sim/d10v/interp.c
@@ -1072,20 +1072,12 @@ sim_resume (sd, step, siggnal)
State.exception = SIGTRAP;
}
-int
-sim_trace (sd)
- SIM_DESC sd;
+void
+sim_set_trace (void)
{
- enum sim_stop reason;
- static int sigrc = 0;
#ifdef DEBUG
d10v_debug = DEBUG;
#endif
- /* NOTE: SIGRC starts with zero and is then, always the value
- returned by the last sim_stop_reason() call. */
- sim_resume (sd, 0, sigrc);
- sim_stop_reason (sd, &reason, &sigrc);
- return (reason != sim_stopped || sigrc != SIGINT);
}
void
diff --git a/sim/testsuite/d10v-elf/ChangeLog b/sim/testsuite/d10v-elf/ChangeLog
index 1d73e29..a7cf211 100644
--- a/sim/testsuite/d10v-elf/ChangeLog
+++ b/sim/testsuite/d10v-elf/ChangeLog
@@ -1,3 +1,7 @@
+Tue Feb 22 17:36:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in: Force d10v into operating mode.
+
Mon Jan 3 00:17:28 2000 Andrew Cagney <cagney@b1.cygnus.com>
* t-ae-ld-d.s, t-ae-ld-i.s, t-ae-ld-id.s, t-ae-ld-im.s ,
diff --git a/sim/testsuite/d10v-elf/Makefile.in b/sim/testsuite/d10v-elf/Makefile.in
index 079f95d..40e9646 100644
--- a/sim/testsuite/d10v-elf/Makefile.in
+++ b/sim/testsuite/d10v-elf/Makefile.in
@@ -106,6 +106,9 @@ RUN_FOR_TARGET = `\
echo $(target_alias)-run ; \
fi`
+# Force d10v into operating mode.
+RUNFLAGS_FOR_TARGET=-o
+
check: sanity $(TESTS)
sanity: