This one omitted mappings to the first static instruction belonging to a
high-level source-code line.
Change-Id: I14427021e61f27a8b029fb56fad2ba813652422a
Using "$x .= $y" instead of "$x = $x . $y" is actually an extreme
speedup for long $x. I had no idea PHP's "compiler" was that bad and
doesn't optimize this.
Change-Id: I39aec5f14f45b75a2467d8074b5ea2ffe5d4b856
The dbg_methods, dbg_variables and dbg_stacktrace tables are not
needed by the current VisualFAIL implementation.
Change-Id: I5f685c7d8100fe57fb2a23e1f8161770e64c9464
Luckily this didn't work as advertised, as the global connection
variable wasn't imported into the functions' scopes.
Change-Id: I080a32c6418deb3da3578987ec8a181b047608ad
This change alters/corrects DwarfReader's way of determining the size of
linetable entries (i.e. their "range size"); the interface (e.g. to
ElfReader) stays the same. Prior to this, it was assumed that static
instructions within "the linetable" were sorted in ascending order. This
assumption turned out to be false, as every compilation unit's header has
its own linetable and the compilation unit headers are not sorted by their
static instructions.
Furthermore this change implements normalization of file names.
Change-Id: Ia4beb7bf9cfb6f1a499aeebd01228335b70ab52d
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
Up to now, the sanity checks only tested equivalence classes
determined by dynamic instructions (instr1/instr2), although the
actual timing boundaries (time1/time2) have been the really relevant
information for quite some time now. This change extends the checks
to time1/time2.
Change-Id: I53d1ed10684ff09f6b9f1245ef842dd0d85f2655
The sanity check testing whether the fault space is rectangular is
unnecessarily slow, as it joins the "trace" table without any reason,
and includes all variants instead of the currently imported one.
Change-Id: Icfe948290ec595209868952fc1639c979bd78d83
The docker files provide containers with the full toolchain required to
build FAIL*. They also contain a demonstration FI campaign.
Change-Id: I280210eb0487718e82505f0343fa9303c21b8048
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 DatabaseExperiment is a class a concrete experiment can inherit
from. It handles the communication with the campaign server. Does the
fast forward to the fault location, injects the fault and gives the
result over experiment outcome to the child class.
Change-Id: I1fb676da6c704cd570a638f0dfaadd4f1a9845e4
For the objdump retrieval, the result_VEZS.. was used. Instead of that
hardcoded string, the parameter should be used instead.
Change-Id: I757527bde2bb7ac0d4e98293b606ad8438cc76e4
The variable PROTOBUF_IMPORT_DIRS has to be set in the toplevel
CMakeLists.txt, since the import path has to be available for all .proto
files within all subdirectories. Without this addition, the
GenericExperiment will fail to compile.
Change-Id: I676e0abd83bd1c5d247afcd33e7522e72da3dc2f
This change implements the following:
-DwarfReader now exports the address range of linetable-entries instead of
only the first address
-ElfImporter saves this range alongside the mapping
Change-Id: I7fe6361178f761a8f605a44bb0183c56a236cc95
This change alters DwarfReader and import-trace's ElfImporter so that they use
unsigned int for static address and line numbers instead of signed int.
Change-Id: I84ebbb500afd7cd4d93b137a35dcf736dc679fab
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 file dis_tables.h does define several macros with very generic
names (I1, I2). These macros interfere in certain situations with the
boost headers. Therefore, we simply undef all those xmacro arguments,
like it should be done.
Change-Id: Iddf74f04ec016a7ea5de5a66543b670a8992a5d6
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
The configure step for libfailbochs_external could be executed parallel
to other build steps, which required the files produced by the configure
step. Therefore a race-condition occurred. By giving the configure step
an explicit target name, more correct dependencies could be modeled
within bochs.cmake.
Change-Id: If2d7dafdace23b0eba6efcdff3ed0bfca2423048
Up to now, source code lines and mappings from static instruction
addresses to lines could be linked to the wrong file if
dbg_filename.path contained duplicates. This is unfortunately the
normal case when importing multiple variants of the same program into
the database.
Change-Id: I57e71379584d7b01177606192b3aa644846225db
This change removes the "--debug" parameter, which previously imported the
mapping of source code lines to static instructions into the database. This
mapping is useless by itself (i.e. without "--sources"), which is why its
code was refactored into the code handling "--sources".
Change-Id: I4700eb0a98661f4df9eb3c190f00dcbe4df0e200