#include "bfd.h"
#include "callback.h"
#include "remote-sim.h"
+#include "ansidecl.h"
#include "../libiberty/alloca-conf.h"
static SIM_DESC sd;
static RETSIGTYPE
-cntrl_c (int sig)
+cntrl_c (int sig ATTRIBUTE_UNUSED)
{
if (! sim_stop (sd))
{
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