sim: don't ignore SIG_TRAP

By ignoring SIG_TRAP, using --debug-break <N> when not connected to
a debugger becomes a no-op.  Apparently this was intended to be a
feature, though the rationale is not clear.

If we don't ignore SIG_TRAP, then using --debug-break <N> when not
connected to a debugger causes the simulation process to terminate
at tick N.  This is occasionally useful, e.g., if you just want to
collect a trace for a specific window of execution then you can combine
this with --debug-start to do exactly that.

In addition to not ignoring the signal, this patch also updates
the --debug-break help message and deletes a handful of unprotected
calls to Debug::breakpoint() that relied on the prior behavior.
This commit is contained in:
Steve Reinhardt
2016-01-17 18:27:46 -08:00
parent fcfe6e798d
commit 28a0e5a165
5 changed files with 5 additions and 16 deletions

View File

@@ -951,7 +951,6 @@ NSGigE::cpuIntrPost(Tick when)
intrTick = when;
if (intrTick < curTick()) {
Debug::breakpoint();
intrTick = curTick();
}
@@ -1725,7 +1724,6 @@ NSGigE::txKick()
tcp->sum(cksum(tcp));
txTcpChecksums++;
} else {
Debug::breakpoint();
warn_once("TCPPKT set, but not UDP!\n");
}
}
@@ -1735,7 +1733,6 @@ NSGigE::txKick()
ip->sum(cksum(ip));
txIpChecksums++;
} else {
Debug::breakpoint();
warn_once("IPPKT set, but not UDP!\n");
}
}

View File

@@ -527,7 +527,6 @@ Base::cpuIntrPost(Tick when)
intrTick = when;
if (intrTick < curTick()) {
Debug::breakpoint();
intrTick = curTick();
}