summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Reinhardt <steve.reinhardt@amd.com>2016-01-17 18:27:46 -0800
committerSteve Reinhardt <steve.reinhardt@amd.com>2016-01-17 18:27:46 -0800
commit28a0e5a165842bb3e5bed144cc5b64437810e4fb (patch)
tree75a66c54be627107db729e188485ff2ea9c2e3c3
parentfcfe6e798d0bc8032e803c0a95dad026e87c3260 (diff)
downloadgem5-28a0e5a165842bb3e5bed144cc5b64437810e4fb.tar.xz
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.
-rw-r--r--src/arch/alpha/ev5.cc5
-rw-r--r--src/dev/net/ns_gige.cc3
-rw-r--r--src/dev/net/sinic.cc1
-rw-r--r--src/python/m5/main.py9
-rw-r--r--src/sim/init_signals.cc3
5 files changed, 5 insertions, 16 deletions
diff --git a/src/arch/alpha/ev5.cc b/src/arch/alpha/ev5.cc
index d45786a83..1e8231b66 100644
--- a/src/arch/alpha/ev5.cc
+++ b/src/arch/alpha/ev5.cc
@@ -271,11 +271,6 @@ ISA::setIpr(int idx, uint64_t val, ThreadContext *tc)
break;
case IPR_IPLR:
-#ifdef DEBUG
- if (break_ipl != -1 && break_ipl == (int)(val & 0x1f))
- Debug::breakpoint();
-#endif
-
// only write least significant five bits - interrupt level
ipr[idx] = val & 0x1f;
if (tc->getKernelStats())
diff --git a/src/dev/net/ns_gige.cc b/src/dev/net/ns_gige.cc
index a1dc23b50..3bf048972 100644
--- a/src/dev/net/ns_gige.cc
+++ b/src/dev/net/ns_gige.cc
@@ -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");
}
}
diff --git a/src/dev/net/sinic.cc b/src/dev/net/sinic.cc
index d0adb1016..fc75c9ebe 100644
--- a/src/dev/net/sinic.cc
+++ b/src/dev/net/sinic.cc
@@ -527,7 +527,6 @@ Base::cpuIntrPost(Tick when)
intrTick = when;
if (intrTick < curTick()) {
- Debug::breakpoint();
intrTick = curTick();
}
diff --git a/src/python/m5/main.py b/src/python/m5/main.py
index 09bf7e92b..4adf6e26b 100644
--- a/src/python/m5/main.py
+++ b/src/python/m5/main.py
@@ -94,14 +94,15 @@ def parse_options():
# Debugging options
group("Debugging Options")
- option("--debug-break", metavar="TIME[,TIME]", action='append', split=',',
- help="Tick to create a breakpoint")
+ option("--debug-break", metavar="TICK[,TICK]", action='append', split=',',
+ help="Create breakpoint(s) at TICK(s) " \
+ "(kills process if no debugger attached)")
option("--debug-help", action='store_true',
help="Print help on debug flags")
option("--debug-flags", metavar="FLAG[,FLAG]", action='append', split=',',
help="Sets the flags for debug output (-FLAG disables a flag)")
- option("--debug-start", metavar="TIME", type='int',
- help="Start debug output at TIME (must be in ticks)")
+ option("--debug-start", metavar="TICK", type='int',
+ help="Start debug output at TICK (must be in ticks)")
option("--debug-file", metavar="FILE", default="cout",
help="Sets the output file for debug [Default: %default]")
option("--debug-ignore", metavar="EXPR", action='append', split=':',
diff --git a/src/sim/init_signals.cc b/src/sim/init_signals.cc
index 6fe196a67..81dba189b 100644
--- a/src/sim/init_signals.cc
+++ b/src/sim/init_signals.cc
@@ -178,9 +178,6 @@ initSignals()
// ignore them
signal(SIGFPE, SIG_IGN);
- // We use SIGTRAP sometimes for debugging
- signal(SIGTRAP, SIG_IGN);
-
// Dump intermediate stats
installSignalHandler(SIGUSR1, dumpStatsHandler);