From bbd3b0fef1c4485bed5a66c4dff3ac4edd6998d6 Mon Sep 17 00:00:00 2001 From: hsc Date: Fri, 20 Apr 2012 17:13:19 +0000 Subject: [PATCH] wmoo: additional result: uncorrectable error (DETECTED) git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1134 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- core/experiments/weathermonitor/experiment.cc | 7 +++++++ core/experiments/weathermonitor/experimentInfo.hpp | 2 ++ core/experiments/weathermonitor/experimentInfo.hpp.sh | 4 +++- core/experiments/weathermonitor/weathermonitor.proto | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/experiments/weathermonitor/experiment.cc b/core/experiments/weathermonitor/experiment.cc index 4b314860..cd058062 100644 --- a/core/experiments/weathermonitor/experiment.cc +++ b/core/experiments/weathermonitor/experiment.cc @@ -226,6 +226,7 @@ bool WeathermonitorExperiment::run() // - (XXX weird instructions?) // - (XXX results displayed?) // - reaches THE END + // - error detected, stop // additional info: // - #loop iterations before/after FI // - (XXX "sane" display?) @@ -238,6 +239,9 @@ bool WeathermonitorExperiment::run() fi::BPRangeEvent ev_beyond_text(WEATHER_TEXT_END + 1, fi::ANY_ADDR); sal::simulator.addEvent(&ev_below_text); sal::simulator.addEvent(&ev_beyond_text); + // error detected + fi::BPEvent ev_detected(WEATHER_FUNC_VPTR_PANIC); + sal::simulator.addEvent(&ev_detected); #if LOCAL && 0 // XXX debug @@ -276,6 +280,9 @@ bool WeathermonitorExperiment::run() std::stringstream ss; ss << ev_trap.getTriggerNumber(); result->set_details(ss.str()); + } else if (ev == &ev_detected) { + log << std::dec << "Result DETECTED" << endl; + result->set_resulttype(result->DETECTED); } else { log << "Result WTF?" << endl; result->set_resulttype(result->UNKNOWN); diff --git a/core/experiments/weathermonitor/experimentInfo.hpp b/core/experiments/weathermonitor/experimentInfo.hpp index 03632cd7..12ee4a74 100644 --- a/core/experiments/weathermonitor/experimentInfo.hpp +++ b/core/experiments/weathermonitor/experimentInfo.hpp @@ -14,6 +14,8 @@ #define WEATHER_FUNC_WAIT_BEGIN 0x00100f50 // wait_end address #define WEATHER_FUNC_WAIT_END 0x00100f60 +// vptr_panic address (only exists in guarded variant) +#define WEATHER_FUNC_VPTR_PANIC 0x99999999 // number of main loop iterations to trace // (determines trace length and therefore fault-space width) #define WEATHER_NUMITER_TRACING 4 diff --git a/core/experiments/weathermonitor/experimentInfo.hpp.sh b/core/experiments/weathermonitor/experimentInfo.hpp.sh index a23e40da..0cd27161 100755 --- a/core/experiments/weathermonitor/experimentInfo.hpp.sh +++ b/core/experiments/weathermonitor/experimentInfo.hpp.sh @@ -3,7 +3,7 @@ set -e [ ! -e "$1" -o ! -e "$2" ] && echo "usage: $0 vanilla.elf guarded.elf" && exit 1 -function addrof() { nm -C $1 | fgrep "$2" | awk '{print $1}'; } +function addrof() { nm -C $1 | (fgrep "$2" || echo 99999999) | awk '{print $1}'; } cat >experimentInfo.hpp <experimentInfo.hpp <