diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-02-09 05:08:42 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-02-09 05:08:42 +0000 |
commit | 7fc5b5adca549dda57f47043626d22c3f1e94430 (patch) | |
tree | cdef0374ca62b628a043bf132ec07913b53edb2d /sim/common | |
parent | 489137c0360f94c18f650b810f1129569f3b3d70 (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | sim/common/run.c | 16 |
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 |