aboutsummaryrefslogtreecommitdiff
path: root/sim/common
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2000-02-09 05:08:42 +0000
committerAndrew Cagney <cagney@redhat.com>2000-02-09 05:08:42 +0000
commit7fc5b5adca549dda57f47043626d22c3f1e94430 (patch)
treecdef0374ca62b628a043bf132ec07913b53edb2d /sim/common
parent489137c0360f94c18f650b810f1129569f3b3d70 (diff)
downloadgdb-7fc5b5adca549dda57f47043626d22c3f1e94430.zip
gdb-7fc5b5adca549dda57f47043626d22c3f1e94430.tar.gz
gdb-7fc5b5adca549dda57f47043626d22c3f1e94430.tar.bz2
Report SIGBUS and halt simulation when ld/st detect a misaligned address.
Diffstat (limited to 'sim/common')
-rw-r--r--sim/common/ChangeLog5
-rw-r--r--sim/common/run.c16
2 files changed, 15 insertions, 6 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 3d190a5..9aeba03 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -151,6 +151,11 @@ Mon Sep 20 21:44:06 1999 Geoffrey Keating <geoffk@cygnus.com>
* sim-fpu.c (i2fpu): Keep the guard bits sticky when converting
large values.
+Tue Feb 8 16:33:48 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * run.c (main): Check the sim_stop_reason and only halt simulation
+ when a valid stop condition is identified.
+
Wed Sep 15 14:12:37 1999 Andrew Cagney <cagney@b1.cygnus.com>
* hw-tree.c, hw-properties.c, hw-instances.c: Include "sim-io.h".
diff --git a/sim/common/run.c b/sim/common/run.c
index a3e38a8..1a4e969 100644
--- a/sim/common/run.c
+++ b/sim/common/run.c
@@ -231,26 +231,30 @@ main (ac, av)
if (sim_create_inferior (sd, abfd, prog_args, NULL) == SIM_RC_FAIL)
exit (1);
- prev_sigint = signal (SIGINT, cntrl_c);
if (trace)
{
int done = 0;
+ prev_sigint = signal (SIGINT, cntrl_c);
while (!done)
{
done = sim_trace (sd);
}
+ signal (SIGINT, prev_sigint);
}
else
{
- sim_resume (sd, 0, 0);
+ 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);
}
- signal (SIGINT, prev_sigint);
if (verbose)
sim_info (sd, 0);
-
- sim_stop_reason (sd, &reason, &sigrc);
-
sim_close (sd, 0);
/* If reason is sim_exited, then sigrc holds the exit code which we want