Commit Graph

1122 Commits

Author SHA1 Message Date
b60e1c0c66 gem5: campaigns are now running without interruption
This change introduces a fake iobus device into gem5 to prevent
it from crashing on bogus I/O memory accesses.

Change-Id: Ie69e3191bdd917cc681269852937a5a3820a93fb
2014-06-05 17:14:11 +02:00
ea34860bd8 Merge "generic-tracing: manual supply of start/stop address" 2014-06-05 10:31:23 +02:00
3ef2af3230 Merge "generic-tracing: fix parsing of addresses > 2GB" 2014-06-04 17:11:24 +02:00
85ef86b22c openocd: opcode parser relicensed
Relicensed version taken from: https://www.andreasheinig.de/project:inject

Change-Id: I740fd7b0c802e8fc6c1c54eb49830faf61dc8a25
2014-06-03 19:17:05 +02:00
c827750090 Merge branch 'failpanda'
Conflicts:
	src/core/comm/DatabaseCampaignMessage.proto.in
	src/core/cpn/CMakeLists.txt
	src/core/cpn/DatabaseCampaign.cc
	src/core/sal/ConcreteCPU.hpp
	src/core/sal/SALConfig.hpp
	src/core/util/CMakeLists.txt

Change-Id: Id86b93d0e3ea4d9963fcc88605eec0603575ec83
2014-06-03 12:24:49 +02:00
f75c8613d8 experiments: use generated dbcampaign protobuf msg
Since commit c142818, DatabaseCampaignMessage.proto is generated into
the binary directory, which must be announced to the protobuf
compiler.

Change-Id: I0c3c4c6525df687012330573979dc897dfa8d701
2014-06-03 12:20:55 +02:00
1947382c6e sal: avoid include cycle
Enabling both CONFIG_FAST_BREAKPOINTS / CONFIG_FAST_WATCHPOINTS and
CONFIG_EVENT_BREAKPOINTS / CONFIG_EVENT_BREAKPOINTS_RANGE /
CONFIG_EVENT_MEMREAD / CONFIG_EVENT_MEMWRITE led to an (unnecessary)
include cycle.

Change-Id: I8144e3e72da69b98e21a844a4bfded1b77bdce07
2014-06-03 11:47:21 +02:00
0487604c09 sal/panda: reboot is implemented
Change-Id: I2297eb60cd8f17a74a7ede122c8576d74f1251fe
2014-06-03 11:47:21 +02:00
7ab5a491ed dump-hops: needs CONFIG_INJECTIONPOINT_HOPS
Change-Id: Id884e968c903372d4f81748fbc496fea0fb7bc9e
2014-06-03 11:47:21 +02:00
c6655c0dbb util/smarthops: don't redefine address_t
Change-Id: I702c2fe8824dfe13c4e99f9400d6dacb3ae63f53
2014-06-03 11:47:21 +02:00
277958b31b cleanups
Change-Id: I8022d937477668253c613e97c3a579ae65084b1e
2014-06-03 11:47:20 +02:00
1e9da8f4e6 generic-tracing: manual supply of start/stop address
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
2014-05-19 16:48:29 +02:00
85d1f91b0e generic-tracing: fix parsing of addresses > 2GB
We should use strtoul() instead of strtol() for parsing 32-bit addresses.

Change-Id: I46ebe32cbbebe36b18e4d10fd519ab788471fdc4
2014-05-19 16:48:08 +02:00
0afd619ec3 weather-monitor: use uint32_t for instruction pointer
This fixes a gcc 4.7 warning: comparison between signed and unsigned
integer expressions [-Wsign-compare].

Change-Id: If440567c2767494f456e8e68df29e2f8d1582955
2014-05-08 16:26:50 +02:00
07968377b3 ecos: fix golden-run runtime conversion
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
2014-04-27 19:04:05 +02:00
b1c9c295ca bochs: catch division by zero in floppy controller
This change fixes another Bochs crash in the floppy controller,
triggered by one out of 670 million experiments in my current
campaign.

Change-Id: I8a2ff78c9d2c8fca12eefb97f508bc213373bbfa
2014-04-27 19:04:05 +02:00
cfd99fe3af DatabaseCampaign: load completed pilots in memory
This change makes the DatabaseCampaign load all pilot_ids from the result
table in memory instead of LEFT JOINing them for each variant.  This vastly
improves campaign speed (possibly making commit 5567c59 superfluous) at the
cost of slightly increased startup time for half-completed (large)
campaigns.

By exploiting the generally continuous nature of pilot IDs and using a
boost::icl::interval_map, the additional memory requirements are
insignificant.

Change-Id: I1e744fb9ca33efea77a2a785cea3c94106f360df
2014-04-27 19:04:05 +02:00
a8611d1ec0 DatabaseCampaign: fix log output
When no variants matching the command line parameters were found, the
campaign printed an uninitialized sent_pilots count.

Change-Id: Ib1d70ae86f02059daeb9a62567d6c83802e4986e
2014-04-27 19:04:05 +02:00
6b1f1eba9d compiler warning fixes
The fix for tools/convert-trace/Gem5Converter.cc repairs a real issue
which caused a runtime warning to never be displayed.

Change-Id: I5d94acdbffc99d5f2a78f047062c011c6f8ab4e3
2014-04-27 19:03:23 +02:00
6c5bb9c8ed removed experiments/weather-monitor-gem5
This crippled version of the weather-monitor experiment is not needed
anymore, as gem5's restore() works now.

Change-Id: Icc3bced6b04241d55f2acc46f341cf553b6dbd08
2014-04-25 11:20:13 +02:00
73843fa634 import-trace: help sports all available importers
This change extends import-trace's help functionality for importers,
adds the ?-operator to option "-i" and refactors main.cc a little.
The extensions are "doing something useful with the AliasedRegistry"
and are merely listings of all importers' prime aliases.

Change-Id: I7bb184fc45dd9f90664e37455edfccc704d99ef1
2014-04-25 08:34:01 +02:00
af92a751d9 import-trace: alias-based (importer) registry
This change implements a generic registry in order to clean up import-trace's
code - it's possible (and reasonable) to use the registry for pruners as well.
Importer now extends AliasedRegisterable; all importers have been adapted
to suit the interface/abstract methods.
Each AliasedRegisterable should have at least one alias (the class' name
is a sensible choice) but can have several. The first specified alias is
the class' prime alias which can be used e.g. to list all registered objects.

Change-Id: If6daa34edce35a3b0194e4ba67ed3b44b74a49b0
2014-04-25 08:34:01 +02:00
77b9b08a89 revert accidental change
Change-Id: I75d6d7a6e429d6603fd82b1ce99761c2c5c7ac90
2014-04-23 15:44:56 +02:00
0807d5d9f6 L4Sys: dependency fixes
Thanks Horst!

Change-Id: I7711c7353619fdfd414ecbc1c9899308fd437d7d
2014-04-23 15:39:45 +02:00
2dd38dc524 Merge branch 'master' of ssh://i4gerrit.informatik.uni-erlangen.de:29418/fail 2014-04-23 14:55:40 +02:00
b500873bbb Merge branch 'ubuntu-trusty-fixes'
Conflicts:
	src/core/util/CMakeLists.txt

Change-Id: I94811612bcd31406c0e275f72058c331a99c8943
2014-04-11 15:05:32 +02:00
ffda979e29 cmake: prefer LLVM 3.4 over older versions
Change-Id: Id10afc70023c4b592806bb4276d3c63be20ff7f7
2014-04-11 14:43:13 +02:00
dad8a54e09 cmake: disable -Wunused-local-typedefs for gcc 4.8+
-Wunused-local-typedefs is included in -Wall since GCC 4.8, and generates a
flood of "typedef '...' locally defined but not used" warnings in
ac++-1.2-generated code.

Change-Id: I79748d5f049e269053b26935cc7a641caeb6dcba
2014-04-11 14:43:12 +02:00
9113d7c2fa cmake: find libiberty headers via cmake module
The libiberty headers moved from /usr/include (and a part of binutils-dev)
to /usr/include/libiberty (libiberty-dev) between Ubuntu 13.10 and 14.04,
which made a proper cmake search module necessary.  Searching still
continues working well on Debian 7.

Change-Id: I324e5ccb847e4664442d6fa7d7a027705a4f0587
2014-04-11 14:42:00 +02:00
799bdd4c64 Merge branch 'database_config_file' 2014-04-11 13:51:48 +02:00
c6344af189 Database: commandline option for alt. config file
This change adds an optional command line argument "--database-option-file",
which can be used to override the default database configuration file ~/.my.cnf

Change-Id: I5c71523e1c31dead26f3fedb0ca7354ca99892d4
2014-04-11 13:51:37 +02:00
c384894a4e Merge branch 'find_libdwarf_libelf_via_cmake'
Conflicts:
	src/core/util/CMakeLists.txt

Change-Id: I510578482e30a88981fba0774b66dfcf4812e07f
2014-04-11 13:24:23 +02:00
1d42007168 vezs-example: update experiment for new VEZS lecture
Change-Id: Ifea2169ceb83135e6e53663d077f8f574539f512
2014-04-08 15:45:43 +02:00
440cba706b Merge "Adds KESO garbage collector experiment" 2014-04-08 15:45:24 +02:00
11f77f0228 tools/import-trace: FullTraceImporter added
The FullTraceImporter imports every ip-event into the database.

Change-Id: I1c0ce2a0aae72dcd925930861780f2719d37b985
2014-04-05 16:57:13 +02:00
ba774a258c util/llvmdisassembler: fix section end symbols
Somehow, while iterating symbols in a section, it can happen that the last
symbol start address is equal to the section size, which means it is beyond
the section end.
In this case the LLVM getInstruction() method does not return a failure, but a
zero-size instruction, resulting in an infinite loop.

Now, if beyond section limits, the iteration is aborted.
Additionally, an assertion checks for disassembled zero-size instructions.

Change-Id: Id8a355475161150d3ee919cd6cf603d4ff26b228
2014-04-03 15:02:57 +02:00
940fa6035d ecos: record simulated runtime
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
2014-04-03 14:45:46 +02:00
442069dd45 cmake: added missing link-time dependency cpn->util
(for synchronized queue implementations)

Change-Id: I7b32273b8e76a7b7921af117fdf3ca5af2f42553
2014-04-02 10:43:48 +02:00
7694195f1b cmake: added missing link-time dependency efw->util
Change-Id: Iea812ed881f67e452827a718a52517c7328b0729
2014-04-01 16:15:58 +02:00
da839c9765 util: find libdwarf/libelf via cmake itself
Instead of hardcoded -lelf/-ldwarf use cmake modules FindLibElf/-Dwarf
and link the found libraries accordingly. This enables the user to have those
libs in arbitrary locations and link them from there.

Change-Id: I2cea3ef648a46f11b0d49d2fe0b006f76a9d4140
2014-03-30 18:20:49 +02:00
ed46b0730a Merge branch 'master' of ssh://i4gerrit.informatik.uni-erlangen.de:29418/fail 2014-03-27 14:22:29 +01:00
5378620b63 core/sal: fix warning for 32-bit Bochs
warning: unused variable ‘regdata’

Change-Id: I2b5b0ab7d920dc060ec814494e9817f1f49496a9
2014-03-26 17:47:42 +01:00
ba60ecc4e6 core/sal: comment typos
Change-Id: I9ac66d7d1afa22dc6645433736e1c1d38a4e23fa
2014-03-26 17:47:37 +01:00
136d397a52 core/sal: identical register IDs for 32 and 64 bit
With this change, x86 special-purpose registers (e.g., EFLAGS) get the
same register ID in both 32 bit and 64 bit configurations.

Change-Id: I69db9397481414f99ca05ecb0ea9dc8ab7d989c9
2014-03-26 17:47:25 +01:00
1ad2eb5110 core/sal: fix x86 register IDs for x86_64
This bug mapped EFLAGS to the same Fail* register ID as R9 on x86_64.  This
probably has not had consequences yet, as most FailBochs users use 32-bit
code.

Change-Id: I00a680675bb9e73c2781276f3ef651162c8e4445
2014-03-26 17:27:18 +01:00
84a03b55ff import-trace: limit to general-purpose registers
This change limits fault injection to general-purpose registers, instead of
relying on the LLVM/Fail* bridge to only recognize the status register
(EFLAGS on x86) and general-purpose registers.  Since this bridge just
learned to translate x86's control and segment registers, and these
registers need special handling for fault injection (def/use pruning does
not work here), only import register accesses from the RT_GP subset.

Status register and instruction pointer injection remain functional, and
import-trace now should work architecture independently.

Change-Id: Id8ad2f0a9dab1861bf16ea9443c3bdfe7213d3fa
2014-03-26 17:18:18 +01:00
fb788ce33e Merge "util/llvmdisassembler: map registers by names" 2014-03-26 16:45:19 +01:00
48002c81f8 Merge "core/sal: add x86 control and segment registers" 2014-03-26 16:45:11 +01:00
0acfe5b2e2 TracingPlugin: cap size of memory access to 8
There are instruction in the real world, that seem to read more than 8 bytes.
Therefore we cap the accesses memory to 8 and don't abort with an assertion.

Change-Id: Ib2bfd0ac6dc0c030cd6a22940e31f8463a3337cf
2014-03-26 14:54:17 +01:00
0799e52fde util/llvmdisassembler: map registers by names
Internal LLVM register IDs can and did change between LLVM versions.
These magic integers are replaced by iterating over all LLVM registers
and mapping them to FAIL* registers by name.
As this iteration requires a LLVM object created from a binary, a static
convenience function is added to LLVMtoFailTranslator which creates a
translator given the binary filename. Building this functionality inside
libfail-llvmdisassembler prevents experiments from needing to add LLVM
includes and library definitions.

Change-Id: I27927f40d5cb6d9a22bb2caf21ca2450f6bcb0b8
2014-03-24 15:01:09 +01:00