The generic-tracing experiment now supports logging of I/O port access to file.
Therefore, the serialoutput plugin needs to be included in the experiment
configuration. Without the --serial-file option specified, logging is disabled.
Change-Id: I9e60d8ffd598ee04a50b4d92fc283f75382d478a
* Removed all command-line options.
* Read all required information from *-traceinfo.txt file or kernel elf file.
* Record error_corrected (but only in the 'OK' case).
* Add support for multiple variants (similar to the ecos experiment).
Change-Id: I933e52881fc6bee0750d8aaef813fe2539166b06
Due to a bug (most likely a copy and paste issue), the detected-marker
group was defined to point to the "FAIL_marker"-set, which would be
redundant. This commit will correctly map it to the "DETECTED_marker"
group.
Change-Id: I7de688357006ced1adf2423e213ae6633629cb81
The color_assert_port symbol does not exist in all dOSEK variant,
therefore we add the listener only if the symbol exists. Otherwise the
invalid handler will trigger on INV_ADDR
Change-Id: I7b81940a8413850527efb9e4bae86248794c622c
This change adapts several experiments, including the
DatabaseExperiment framework, to the restore() behavior update from
the previous change. Existing traces should continue to be usable.
This is not tested yet, mainly because I don't have access to most of
the experiment targets / guest systems necessary for testing. Please
test your own experiments if possible, or at least leave me a note
that you couldn't test it!
Especially the cored-voter/experiment.cc update may be broken, but
maybe the "FISHY" +2 in there was not OK in the first place.
Change-Id: I0c5daeabc8fe6ce0c3ce3e7e13d02195f41340ad
The GenericExperiment is a standard campaign+experiment pair. It is
derived from the DatabaseCampaign+DatabaseExperiment. Its experiment
endpoints are set on the command line, therefore it can be used to give
users a first impression of FAIL*. Currently it supports different
endpoints:
--trap: Catch all traps that occur and end the experiment
--timeout <N>: kill the experiment after N microseconds
--catch-write-text: detect writes on the text segment
--catch-write-outerspace: detect writes into nirvana
--{ok,fail,detected}-marker: groups of ELF symbols that are used as
execution breakpoints
Change-Id: Idc7fcf8875953f1007e1a37bacb086eddd29cd10
The inline configuration mechanism did work properly for iterated
invocation of cmake. But since the configuration items were set after
the decision was made whether a tool was build or not, they had only
influence on the second run of cmake.
The experiment configuration is no saved in a config.cmake file, which
populates the CMakeCache.txt before any other CMakeLists.txt is read.
Change-Id: I6eca1c6e462af3a241bd9c5b9a27a71a1f5d2829
The configuration from weather-monitor was also stripped down to those
values which do not represent the default settings.
Change-Id: I207306e555067156a4ed80edcbcd524137bc8e27
The configuration needed to build this experiment is no noted within the
experiment's CMakeLists.txt. This allows the easy building of this
experiment.
Change-Id: Ifddc4e6a8fa4e63c4656058166f9ef42e46e1edb
Campaign to perform fault injection experiments on the Fiasco microkernel. Required arguments:
- Variant (-v): The actual experiment variant (e.g. BASELINE)
- Benchmark (-b): The actual experiment benchmark
- Golden-Run (-g) : Specify whether the golden-run or the actual fault-injection experiment should be executed (only for fail-client)
- Stop address (-E): Address where the experiment should finish
- Timer-ticks (-T): Number of timer ticks from the golden run experiment
- Total-instructions (-t): Number of total instructions from the golden run experiment
- Ecc-panic-function-address (-p): Address of the Ecc-panic function in order to detect failures (if any fault detection is included)
- Errors_corrected variable address (-c): Address of the errors_corrected variable in order to determain if any error was corrected
Important: First run the generic-tracing experiment so there is a "state" folder where the actual experiment can start from and import/prune the resulting trace.
Change-Id: I151428ecc21f5e714cc923674ebbca9d84435704
This is a copy of the generic-tracing plugin for CoRedOS with the following
additions:
- random generator plugin is added if a "random_source" symbol is found
- checkpoint plugin is added if a "fail_trace" symbol is found. If stack
limits are defined by "_sstack" and "_estack" symbols this memory region
is checksummed on each checkpoint.
Change-Id: I00403ed917ad941d87ac2aeabd00c441135d9af4
This change renames the logger object used in weather-monitor from
"log" to "LOG" in order to circumvent potential naming conflicts
with e.g. the log() function from e.g. math.h/cmath.
Change-Id: I73758374f76ea5c29cb636ae3e0685a4a4cceacb
This commit modifies the weather-monitor experiment so that it
uses util/ElfReader instead of "nm -C" in a wrapper-script to
determine the various symbol addresses. experimentInfo.hpp now
only contains (rudimentary) configuration data for the experiment.
Furthermore this commit modularizes the experiment's code so that
there no longer is a humongous run() method.
Change-Id: I42461e1dabb5050af372810bb9fb61a6fccd0d99
Since commit c142818, DatabaseCampaignMessage.proto is generated into
the binary directory, which must be announced to the protobuf
compiler.
Change-Id: I0c3c4c6525df687012330573979dc897dfa8d701
This change allows to use the generic-tracing experiment with a
manually specified start/stop address. This is necessary to use it
with more complex systems that aren't booted from a single ELF file,
such as Fiasco.OC.
Change-Id: Iafc59f56a25a1949174724fa9ae32a1eafc5922a
This fixes a gcc 4.7 warning: comparison between signed and unsigned
integer expressions [-Wsign-compare].
Change-Id: If440567c2767494f456e8e68df29e2f8d1582955
BochsController::getTimerTicksPerSecond() only works reliably when the
simulation is already running (e.g., after a restore()). This broke
timeout conditions for the very first experiment in a FailBochs instance.
Change-Id: Ice5f0aa0c6759f2d9341ad4f21d5c346307b4c12
This crippled version of the weather-monitor experiment is not needed
anymore, as gem5's restore() works now.
Change-Id: Icc3bced6b04241d55f2acc46f341cf553b6dbd08
As the eCos kernel tests do not sufficiently check for failures, a
(compared to the golden run) measurably *reduced* simulation time can be
used as an indication for SDC.
Change-Id: I303f6c3f7ef56cb691c1f226eff74d113dd16629
CMake does not support linker groups, which were used to "automatically"
fix circular dependencies between different static FAIL* libraries and
the ordering of dynamic external libraries broke linking.
CMake can however correctly invoke the linker if dependencies are decribed
correctly (even if circular). This required changing all add_dependencies
calls between libraries to target_link_libraries (which creates a link-time
dependency) and linking all experiments to fail-sal.
Change-Id: I3a0d5dddb9b3d963ef538814e20d6b3de85d4ec5