(The "symbol" is currently only created by some inofficial scripts,
but may become part of the Fail* core at some point.)
Change-Id: If0b3e6cdd6b6ca865abb67382de128e7a27f19ab
In bash, ${parameter:=word} assigns the default value. In our case,
${parameter:-word} (the whole expression has a default value, but it's
not assigned) suffices.
Change-Id: I5f4105b973892aa13943d660cbebaed76fd43752
This script removes dangling rows from the database, for example
'trace' entries with a variant_id not mentioned in the 'variants'
table, or result rows referencing a nonexistent 'fsppilot' entry.
IOW, this script enforces referential integrity as it would be
maintained by foreign key constraints (that can only be used with
InnoDB tables).
Change-Id: I4dce1e46277d470f8c3eca31447ca71f63c6353f
Since the AspectC++ daily builds switched to the clang frontend, Fail*
doesn't build anymore. Unless that changes, use the 1.2 release.
Change-Id: Ia7817c396dfabd3a10f0cf0ea6a8d4c1fb95365d
This prevents the client script from continuously invoking
the fail-client when it is not executable, e.g., in the case
of missing libraries.
Change-Id: I2746eaf1980507dbd7c95fb5a6a1cc018a33aa67
The docker files provide containers with the full toolchain required to
build FAIL*. They also contain a demonstration FI campaign.
Change-Id: I280210eb0487718e82505f0343fa9303c21b8048
Add two new breakpoints to L4Sys experiment that allow detecting that
execution terminated with an error: vga_console_blink() is called by the
kernel if JDB was entered (meaning we are hanging, e.g., due to an
assertion); also longjmp() is only used by PF handling code after no
valid page fault handling could be performed
Change-Id: Ice61039c4bd07815a316bbc0bdb39f3483d9a1da
In former versions, the aforementioned image was 'required' to run
gem5 although it wasn't actually used at all. With the new python
script fail_fs.py, it suffices to start gem5 on a target foo.elf by
simply typing $ ../scripts/run-gem5.sh path/to/target/foo.elf
Change-Id: I7f48460e50d48d55fe22f2381e2ae8aec8510233
* L4SYS_NUMINSTR counts the instructions that were selected for
injection and is used by the campaign server to generate experiments
* L4SYS_TOTINSTR counts the total number of instructions executed.
It is used by the experiment to determine the timeout value.
Change-Id: Ibf37aea2a1f5ad5afad2b1232ce22fe070b08490
After each simulator break, T32Tracer retrieves the latest (16)
trace records from the T32. Memory address and value can now
be evaluated easily from the trace record.
TODO:Nevertheless we still have to traverse the trace to
find the instruction causing the access.
The T32 can simulate bare instruction sets without periphery.
For the Cortex-M3 we have complete NVIC model including Systick Timer.
Currently a simple CiAO can run on the simulator.
TODO:
- Let memlogger log all memory accesses.
- Interact with FailT32 for a complete simulation/FI