Commit Graph

1369 Commits

Author SHA1 Message Date
2aeded20be rampage: link correctly with Bochs
Change-Id: I7a0231c6b6e8983f86b94c2bfde78d2524dbfc8d
2016-08-01 16:36:17 +02:00
8a63533137 Merge branch 'hannesweisbach-fixes' 2016-07-26 18:13:53 +02:00
3fc3c6a689 bochs: backport fix for out-of-bounds memory access
Upstream SVN r11912: "Fixed some gcc 4.8.1 warnings"

Change-Id: I599eb4d6bb8d5a7a2585bcca7d9a738ac2930aac
2016-07-26 18:11:55 +02:00
feb61ced7b doxygen: cmake syntax fix
Remove superfluous closing brace in cmake file.

Change-Id: I95224f7a42007f6779a6d4950161e7208355edc6
2016-07-26 18:08:06 +02:00
6509d50ec1 compute-hops: detail fixes and optional procps dep
Cleanups, warning fix, optional procps dep, --help correction.

Change-Id: Iba719493e4a8ec37acb7336a39172b3cdefbdc99
2016-07-26 17:41:32 +02:00
b5aaddcb8f new publications using FAIL*
Change-Id: Idf4bb22712475d5a6df182bb7ad19729e81c4591
2016-07-26 17:41:32 +02:00
d3d2faf680 globally rename Fail* to FAIL*
Change-Id: Ief2cb687cc69dd92c2e04f9314f0f1347e0a84ed
2016-07-26 17:41:32 +02:00
94a56c43c8 remove deprecated stuff
Change-Id: Ifc25d216bbf782416159ceb0c366a080d2c8c428
2016-03-15 23:20:05 +01:00
69da134956 Merge branch 'wsos' 2016-03-15 23:16:42 +01:00
de8598ab83 cmake: prefer LLVM 3.4 over system-wide default
FindLLVM.cmake now starts searching for specific "llvm-config-x.y"
versions instead of using the system-wide default "llvm-config" first.
This avoids breaking builds on Debian 8, where LLVM 3.5 is the (yet
unsupported) default, but 3.4 is still installable.

Change-Id: I6fd577f515a233e30c6f803f87b9a680b5515a5b
2016-03-11 20:59:01 +01:00
449ac1a692 DatabaseExperiment: local debug helper code
Change-Id: Ibf42c93df26f6123edc867147621a011665e9c43
2016-03-11 20:59:01 +01:00
39b120f7ca GenericExperiment: record output during complete runtime
Before this change, the GenericExperiment only recorded port 0xe9 output
*after* the fault was injected.  When a fault was injected during the
workload's output loop, the output data before that point in time was
missing, and the experiment outcome was wrongly classified as SDC.

This change moves the logging activation to before the fast-forwarding
step (DatabaseExperiment::cb_before_fast_forward).  It also makes sure the
DatabaseExperiment only clears its own listeners instead of also touching
the SerialOutputLogger's one.

Change-Id: I66bda4ee318d271ddda6f7ade4e817bf9d14cf46
2016-03-11 20:59:01 +01:00
5bd7c4a9c5 GenericExperiment: limit output logger buffer
Limit the serial-output logger buffer to prevent overly large memory
consumption in case the target system ends up, e.g., in an endless loop.
The buffer is limited to (golden-run output size)+1 to be able to detect
the case when the target system makes a correct output but faultily adds
extra characters afterwards.

Change-Id: I50c082f8fb09a702d87ab83732ca3e3463c46597
2016-03-11 20:59:01 +01:00
e08deef9d5 GenericExperiment: prevent integer overflow
This change prevents an integer overflow in the memory-access listener
for WRITE_OUTERSPACE.  Instead of matching all addresses above
maxima_data, l_mem_outerspace never matched in the
generic-experiment's "--catch-write-outerspace" mode.

Change-Id: I8f4ee4515af3998b7c2a8e83c7a18306c26d8d66
2016-03-11 20:45:50 +01:00
7168566ef5 faultspaceplot: -k -- keep CSVs only optionally
Change-Id: I5900c53b81d15d5262420afbf636444af31b00f1
2016-03-11 20:44:31 +01:00
ee8759f6b8 faultspaceplot: don't round down ymin
Before this change, ymin was rounded down to the nearest Y value
divisible by 1000, showing an empty, white area in the lower part of
the plot.  With this change, the initial Y-axis zoom level is
maximized to exactly show all non-white areas.

Change-Id: I1aea52a3afc331e7f11fe76ff2c5de3c71c61c71
2016-03-11 20:41:52 +01:00
e8ca3ba6ea faultspaceplot: don't plot OK_MARKER
In the current configuration, OK_MARKER would be plotted in white
color and be indistinguishable from the background.  Not plotting
these areas at all reduces output-file size.  As a side effect, the
initial Y-axis zoom level (ymin, ymax) can change.

Change-Id: Ic7b1a22a5a6f58e4df0849bca5262c646051ae2c
2016-03-11 20:36:07 +01:00
915a344223 faultspaceplot: better distinguishable colors
Change-Id: I49517fd104394e598937ab1c8970c739e41993b7
2016-03-11 20:36:07 +01:00
ea0a5f90e2 faultspaceplot: add ticks for symbols if available
+ use helper scripts from the same dir, not from $PATH

Change-Id: I7aba773c8dbff5f8643a39fa1ed8d26867f3a86d
2016-03-11 20:36:07 +01:00
3dd7c9cb48 faultspaceplot: plot burst faults correctly
+ remove "old matplotlib" warning

Change-Id: I47dec1cc6bf6dd86216cd6d373174d4c70556f63
2016-03-11 20:36:07 +01:00
2bed7c124a data-aggregator: per-function + durations
Change-Id: I1dc7791fe9af7f848f56093e0554c61973b7a1f3
2016-03-11 20:36:07 +01:00
dd7ad77731 data-aggregator: add -t for table output
By default, the data-aggregator scripts create machine-readable,
tab-separated output.  The optional "-t" switch (passed to the
internally used `mysql' command-line client) creates human-readable
table output instead.

Change-Id: Ie448c21a4e82dea83f3e43e6642e67eb85f8b8e9
2016-03-11 19:07:40 +01:00
584ef57aab data-aggregator: allow resulttype aggregation for all benchmarks
This change additionally allows to create a resulttype/occurrences summary
over all benchmarks in the database, instead of specifying a single one.

Change-Id: I4fc7fd735300168f1e4f9e24a51aba469a7269a8
2016-03-11 19:07:40 +01:00
5851f5d848 data-aggregator: add aggregate per translation unit
Change-Id: Ibd141eccb2549dfad64e8daf35a16e3461a07f9f
2016-03-11 19:07:40 +01:00
927d6a5103 import-trace: import symbol size if available
Instead of using the address difference between two neighboring symbols as
an indication for the symbol's size, import the size as reported by
`nm -S'.

Additionally, this change fixes an off-by-one, which had the effect that
the last symbol in the list was not imported at all.

Change-Id: I3c8e139b788018702526bb968e36d248dc3fe8fc
2016-03-11 19:07:39 +01:00
cae6860e4e generic-tracing typo
Change-Id: Ie642487f3c30ec2b99d0d4ee469acb6a987e17c3
2016-03-11 19:01:30 +01:00
f171fe9286 data-aggregator
This change introduces a loose collection of scripts for
analysis/aggregation of FAIL*'s collected data.
It's going to be developed into a proper tool in the future.

Change-Id: I63f14d87dd86b62817ec3d8089079d70f58c89c9
2016-03-11 19:01:17 +01:00
806c71580f import-trace: add import of ELF symbols
This change adds the capability to import an ELF's symbols
into the database. The functionality is implemented via a
shell script and will be merged into "import-trace", when
it's being cleaned up sometime in the near future, but for
now this suffices.

Change-Id: I933783659674fcf31f5181fc13661fe10f5b9fe8
2016-03-11 19:01:17 +01:00
d46b81eb3d GenericTracing/-Experiment: add SDC detection
This change adds detection of SDCs to GenericTracing and
GenericExperiment via Bochs's I/O port E9.

Change-Id: Ie036aa97468b45cad94b6c8f73d1ef2d227547b2
2016-03-11 19:01:17 +01:00
ad558abeb6 DatabaseCampaign/-Experiment: add burst faults
This change introduces the ability to inject burst faults to
the DatabaseCampaign/-Experiment and thus to all derived
campaigns/experiments.

Change-Id: I491d021ed3953562bd7c908e9de50d448bc8ef33
2016-03-11 19:01:17 +01:00
bcf75bceee GenericExperiment: target ELF file now specifiable
Up until now only generic-tracing had the feature to directly
pass an ELF file to the experiment. generic-experiment lacked
that functionality and resorted to using the $FAIL_ELF_PATH
environment variable.
This change introduces the "--elf-file" command line argument
to generic-experiment.

Change-Id: Ie74de9e1781275ab247786856e13e412bac39224
2016-03-10 15:15:27 +01:00
52baab2d76 faultspaceplot as analysis tool
This change adds the faultspace-plotting scripts into FAIL*'s
tools/analysis/ folder and makes it CMake-configurable.

Change-Id: I9364a448a33853520629291721a6ed6d4e82eb32
2016-03-10 15:14:59 +01:00
c0420987ea doc: library-dependency update
Change-Id: Id88552e2f6117548b0c94dd2f68a08650306a535
2016-02-12 12:27:52 +01:00
2c176715ed import-trace: code comments + --help clarifications
Change-Id: I796969f2dc8c7e440c9f9bd5434cbe09834057db
2016-01-29 18:06:41 +01:00
fe5ccdf425 fixes for Debian 8 and newer AspectC++ versions
-  Debian 8 does not provide libsvga1-dev anymore, so Bochs cannot be
    built --with-svga (which is included in --with-all-libs).

 -  The latest AspectC++ nightlies should work without any
    -D__NO_MATH_INLINES -D__STRICT_ANSI__ tricks.

Change-Id: I56801a0735eb4922689dff812923d79faa94d26e
2016-01-09 17:02:51 +01:00
f114944af9 COPYING 2016 updates
Change-Id: I29b40d9d80b13c3653ea5bec8b43191e2cf41454
2016-01-09 17:01:51 +01:00
9a7e07986b publication update
Change-Id: I6a8d32fc2739dc5dba817507321bd395684860aa
2015-11-14 15:41:56 +01:00
bfcb1b415b experiments: experiment for tracing and testing ERIKA
ERIKA Enterprise is a OSEK conforming embedded RTOS. The supplied tracer
and experiment are similar to the cored-{tracing,tester} experiment, but
checks the integrity of the RTOS application in a different
manner. Stacks and stackpointers are located differently in ERIKA. This
experiment was used in RTAS'15 Hoffmann et al.

Change-Id: Idc8d874eb4d4ef15837f903270cfa521bc9514a2
2015-09-18 12:51:57 +02:00
1e572faa04 dosek: merge trace and test experiment
With the instantiate-indirect.ah method, we can choose between different
experiment flows at runtime. By this, we can combine tracing and actual
injection into one fail-client binary. A -Wf,--mode={tester,tracer}
switch does hand the control to different experiment flows.

Change-Id: Ia268489ff6bc74dffea745b7aedcb36e262e8079
2015-09-18 12:51:57 +02:00
f73008f60a cored-tester: adapt the cored tester experiment
For redoing the bench-coptermock-isorc experiment, we have to change the
timeout settings. We now use a soft timeout setting. A soft timeout is
resetted after each checkpoint event. If a hard timeout (2 seconds) is
reached although the soft timeout was resetted, we also abort the injection.

Change-Id: Ib7c2b1ad201641f47434a11d3273dde797e0012e
2015-09-18 12:51:56 +02:00
07b6275cbb plugin/checkpoint: add possibility to cache data
The checkpoint plugin is able to use dynamic values from within the
target to calculate its ranges. If the experiment injects faults within
those dynamic values, we will always get an digest error, even if it has
no influence on the outcome of the experiment or the integrity of the
data range.

Therefore, the plugin now provides a possiblity to cache those dynamic
values, before injecting them. This has to be done explicitly within the
experiment.

Change-Id: Ib2cbedd570ea9ab9c97efc152279e8eb79c573f4
2015-09-18 12:51:56 +02:00
05f557ec80 bochs-experiment-runner: make IPS configurable
The instructions per second config option influences the point in time
of IRQ events and the simulator time values.

Change-Id: Ied08ea577408d21839d100734f3cce552ee547f2
2015-09-18 12:51:56 +02:00
b6db95ffaa import-trace: objdump importer cut off long lines
Sometimes the lines in an objdump can get very long. Therefore, we limit
the size of the field, which is put into the database, to the maximal
size of the opcode, instruction, and comment column.

Change-Id: I8d7db33e8319f71e9dae14f683bba0ce1654b1f8
2015-09-18 12:51:55 +02:00
748b0aea09 MemWriteListener: Set accesstype correctly
One construction of MemWriteListener did not set the MemAccessEvent type
correctly.

Change-Id: I34a34a34c1c23b2081d4749ee5e5372461c21717
2015-09-18 12:51:55 +02:00
f7c9917f7e database-experiment: no abort on injection_instr_absolute==NULL
The injection_instr_absolute can be NULL, if the trace was imported by
--faultspace-rightmargin R. The database-experiment then aborted the
injection, since a non present injection instruction is encoded as 0,
which is != 0.

Change-Id: I0abcbf102e8b26678ea574d6f73741c2cfac6781
2015-09-18 12:51:03 +02:00
65e4409c90 generic-tracing: add --restore command-line option
This options performs a restore to the saved state of the machine immediately
after saving (default: off). This option is needed when the state is used by
other experiments that depend on the trace, which slighty differs without a
restore.

Change-Id: I4fdf4c5e03779bb9c6e0a0fa335ceae3e20608a5
2015-09-03 13:44:04 +02:00
c4437e1bd3 Merge "generic-tracing: add --serial-port and --serial-file command-line options" 2015-08-07 13:04:01 +02:00
c2b8566e35 generic-tracing: add --serial-port and --serial-file command-line options
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
2015-08-07 11:43:01 +02:00
d71db9211c DatabaseExperiment: fix headers
-  Add missing iomanip header: Without this one, Fail/gem5 does not
    compile.

 -  Remove unnecessary sal/bochs header: This seems to be a relic from
    when the DatabaseExperiment was Bochs-specific.

Change-Id: I91c991795c2c2e76359e9d11415f5119d225a4ab
2015-08-06 16:33:59 +02:00
c069e87c6f gem5: adapt to changed SimulatorController iface
This quick fix is necessary to let gem5 compile again.  Instead of passing
NULL to onInterrupt(), a proper fix should pass the currently active
ConcreteCPU instance.

Change-Id: Ie4322fd98cb7b12309a21a2dd431f9bdc84efaf8
2015-08-06 16:33:19 +02:00