Commit Graph

489 Commits

Author SHA1 Message Date
515eb9973b Fail* CPUState: set/getRegisterContent() uses "const Register*" as 1st param
The first parameter (Register* reg) is only used as input (const-correctness).

Change-Id: I5a75a9f7378913e491a8a22872f51a385e910af6
2013-05-07 14:48:36 +02:00
72c9ba6363 Added abo-simple-arm experiment code
It is a simple and short experiment that performs single stepping
through the target. It is designed to be used with gem5 (+ ARM).

Change-Id: Id48b2b087a3650bd0298454ff168c0dbdaaae0c8
2013-05-07 14:46:19 +02:00
924b40615d gem5: revisited register implementation
The previous implementation wasn't in a working state because
the register content retrieval was buggy. (For example, RT_FP
does *not* denote a "floating point" register. Instead, it is
the frame pointer!)

Change-Id: I31fd80d374c945adaf35b47958d6437a8e2d48c3
2013-05-07 14:45:54 +02:00
619f62b09f gem5: added getMnemonic() (requires breakpoints)
Change-Id: I5a2862a0ad3c3d506189a6196682e227205ebe09
2013-05-07 14:42:59 +02:00
578e7defd0 gem5: compiles again
Change-Id: Ia95f64953af86003c4be4cbeb01a927d6638f1be
2013-05-07 14:41:52 +02:00
699f14cf0f Merge "gem5: revisited breakpoint implementation" 2013-05-07 13:06:04 +02:00
20b70df651 efw/JobClient: knock less often when there are no jobs yet
Change-Id: If769b402a7b00ed3aebedd5f4d0954831a0ee905
2013-04-29 15:34:08 +02:00
880e7a81ff comm: ignore SIGPIPE
This prevents client and server from being sent a SIGPIPE (and
terminating) when the other side unexpectedly closes the connection.
It's way easier to handle this condition when checking the write()
return value, than to do anything smart in a SIGPIPE handler.  More
details:
<http://stackoverflow.com/questions/108183/how-to-prevent-sigpipes-or-handle-them-properly>

Change-Id: I1da5bf5ef79c8b7b00ede976e96ed4f1c560049d
2013-04-29 15:32:12 +02:00
091e8dcae0 ecos: baseline assessment integrated into main experiment
Change-Id: Iaf2a31c917b6ddd50568e5fb784ab8457193ee7d
2013-04-29 14:15:53 +02:00
403886e541 ecos: minor changes, cleanup
- Count experiments, not jobs
 - Debug output

Change-Id: Ide5e1219cdcc8112d1a0d4e7367beca2dd5821ef
2013-04-29 14:15:51 +02:00
c0b36f6236 ecos: use new timer iface to record benchmark runtime
... instead of the previous TimerListener workaround.

Change-Id: I3e712540e93b668301f50ecf4f5a5760e0a8fdb3
2013-04-29 14:15:49 +02:00
0887a53d1d ecos: campaign rewrite for MySQL data store
We're not yet using the common DatabaseCampaign as it doesn't allow
for additional experiment parameters (such as "variant" and
"benchmark") yet.  TODO: Integrate changes in DatabaseCampaign in a
generic way and use it.

Change-Id: I45480003be433654aea8d3a417fbfa66be31155b
2013-04-29 14:15:44 +02:00
392a6e6eb8 core/sal: correct timer ticks/sec calculation
Change-Id: I0971fe8a21c9ed3415d98b5e6387299beb3121e6
2013-04-29 14:15:36 +02:00
33c0584dda gem5: revisited breakpoint implementation
Now, the gem5 implementation equals the Bochs variant. Note that it's
*not* necessary to enable CONFIG_EVENTS_BREAKPOINTS_RANGE in order to
use range breakpoints.
In addition, gem5 distinguishes between macro- and microops. With the
new implementation, onBreakpoint() is only called when a macroop
changes.

Change-Id: Ib86d1802fc70c20d22ca1a1ece0e8d1221b2e7db
2013-04-29 13:23:58 +02:00
923ba362fa experiments/kesorefs: convert to DatabaseCampaign
Change-Id: I7607911c28ffb2427681db241ac721f1ae2c002a
2013-04-28 12:52:17 +02:00
2753a165ba ElfReader: Add support for getting a section iterator
Change-Id: I6241ea2de9da1a1e709fae6374df4fc06ef26aaa
2013-04-28 12:51:59 +02:00
11d9690a67 Typos in BochsController.hpp fixed
Change-Id: Ib94d63707fdeb3e0dc77cccd3ffde04df25329c2
2013-04-28 12:51:33 +02:00
f364024cba Typos in BochsController.hpp fixed
Change-Id: Ib94d63707fdeb3e0dc77cccd3ffde04df25329c2
2013-04-23 14:34:27 +02:00
2910e8462e Merge "Removed OVP-related (source) files/code (backend discarded)." 2013-04-23 14:27:02 +02:00
0f16f18d75 cosmetics
Change-Id: Ifae805ae1e2dac95324e054af09a7b70f5d5b60c
2013-04-22 14:24:02 +02:00
03bcf7bfc8 Removed OVP-related (source) files/code (backend discarded).
Change-Id: Ibf8065d9fe760640e5744896b764f9ebb6d2fa69
2013-04-10 15:16:46 +02:00
2d45a2c52c ecos: use MemoryMap materialization instead of own code
Change-Id: I8615a066c53e1d6a02c78bce3199fa1f73edfda9
2013-04-10 13:01:04 +02:00
4d03b7ce5c core/util: MemoryMap learns to materialize in files
Change-Id: I003168d3718491524db91b9f7d855d6b3428961c
2013-04-10 13:01:03 +02:00
e5fe9dd525 core/sal: interface for backend-specific notion of time
This adds an interface for a backend-specific notion of time, e.g. CPU
cycles since simulator start, and a concrete implementation for the
Bochs backend.  This is needed to record CPU idle times (e.g., HLT
instruction), and for target backends capable of more timing-accurate
execution.

This change also modifies the tracing plugin to add the time to all
trace events.

Change-Id: I93ac1d54c07f32b0b8f84f333417741d8e9c8288
2013-04-10 13:00:49 +02:00
6b5728ece1 Merge "gem5 build system improved" 2013-04-09 14:16:12 +02:00
d7a3a28431 ecos: split valid mem access range
When eCos is built as a multiboot binary, some of its data structures
are still at very low (<<1M) addresses, but the rest moves to
addresses >1M.  This change makes sure our invalid mem access
detection is not overly generous.

Change-Id: If8265a407b3706a4ff71562b316e05aa22255f62
2013-04-09 13:16:13 +02:00
08febe5819 gem5 build system improved
Encapsulated gem5-specific code into wrapper functions to separate the
build process (Fail: CMake, gem5: scons). Added some gem5-related FIXMEs.

Another CMake related FIXME added. +some cosmetics.

Change-Id: Id84b480127b1f13aed6a0ee97f3583f410d531c5
2013-04-08 17:57:06 +02:00
001d036613 ecos: ignore VGA mem accesses
Ignore VGA mem accesses for valid address range detection.

Change-Id: I4a85b6d4a2de52ecbd977d2dba474df818710600
2013-04-06 18:59:12 +02:00
0654967f39 A small hint about the current trap-handler impl. in gem5
Change-Id: Ia8c80152bc0eb0f032e7ddfbfa2fd9b246e34697
2013-04-03 16:55:33 +02:00
a328a21887 Renamed x86- and ARM-specific source files (for improved readability).
Updated include paths and CMake config appropriately

Change-Id: Ida5045cde0458b3031e64b73853fe5f58ef5a9d6
2013-04-03 16:46:51 +02:00
a0293b9d18 ecos: use commandline parameters for local test runs, too
Change-Id: Iac43732408420a9e3687d5756c942c2f2256ad86
2013-04-03 15:18:08 +02:00
373c19dd68 ecos: store traceinfo.txt in correct location
This commit completes the change introduced in commit
59e5fd3169.

Change-Id: I0a6ab7b35fbb69cbb8ef91e187b0d0bc32d01071
2013-04-03 15:18:08 +02:00
74bd3e99e5 Merge "sal/bochs: strict-aliasing warning removed" 2013-04-03 13:14:44 +02:00
331257492e Merge "core/sal: pass commandline parameters by reference" 2013-04-03 11:39:36 +02:00
c24ed774b0 experiments/dciao-kernelstructs: new database driven experiment for DCiAO
The dciao-kernelstructs experiment does a trace imported by the
DCiAOKernelImporter:

   bin/import-trace -t trace.pb  -i DCiAOKernelImporter --elf-file app.elf

Pruned by the basic method:

   bin/prune-trace

and does CiAO fault injection experiments, where the results are
stored in the database.

Change-Id: I485dc2e5097b3ebaf354241f474ee3d317213707
2013-04-03 10:39:51 +02:00
87b11968c7 DatabaseProtobufAdapter: remove invalid include
The include was an development artifact and caused compilation errors in most
cases.

Change-Id: I6ecf8c1faa52cf6f854112e19aa1f8556cf09930
2013-04-03 10:37:13 +02:00
3fb58de4a5 core/sal: pass commandline parameters by reference
This allows the commandline parameter parser to modify argc, as it finds
arguments for the Fail* client.  Additionally argv is correctly null
terminated when removing arguments.

This fixes a bug introduced in eb17e9ef82.

Change-Id: Iabe84530790ecb7c587b0af139127015aad868d5
2013-04-02 21:47:39 +02:00
19e0578474 sal/bochs: strict-aliasing warning removed
This fixes a GCC warning: "warning: dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]"

Change-Id: I4f079b239adeb9d3c2ac2daaa2a1333d20046505
2013-04-02 14:11:45 +02:00
f18cddc63c DatabaseCampaign: abstract campain for interaction with MySQL Database
The DatabaseCampaign interacts with the MySQL tables that are created
by the import-trace and prune-trace tools. It does offer all
unfinished experiment pilots from the database to the
fail-clients. Those clients send back a (by the experiment) defined
protobuf message as a result. The custom protobuf message does have to
need the form:

   import "DatabaseCampaignMessage.proto";

   message ExperimentMsg {
       required DatabaseCampaignMessage fsppilot = 1;

       repeated group Result = 2 {
          // custom fields
          required int32 bitoffset = 1;
          optional int32 result = 2;
       }
   }

The DatabaseCampaignMessage is the pilot identifier from the
database. For each of the repeated result entries a row in a table is
allocated. The structure of this table is constructed (by protobuf
reflection) from the description of the message. Each field in the
Result group becomes a column in the result table. For the given
example it would be:

    CREATE TABLE result_ExperimentMessage(
           pilot_id INT,
           bitoffset INT NOT NULL,
           result INT,
           PRIMARY_KEY(pilot_id)
    )

Change-Id: I28fb5488e739d4098b823b42426c5760331027f8
2013-04-02 09:52:42 +02:00
59e5fd3169 ecos: fail-client accepts commandline parameters for prerequisites phase
This allows us to generate prerequisites (traces, state snapshots, memory
maps) in parallel, and without the previous shell script hacks.

Change-Id: I05a0321a794b4033d05eed20f5bffbd1e910cf1b
2013-03-28 18:09:39 +01:00
0eeec70570 sal/bochs: compress memory images on save/restore
This saves a lot of disk space for campaigns with many saved VM states.

Change-Id: I19c68d8545bb9b299f113d43d44202a517520b09
2013-03-28 17:12:25 +01:00
20a137d8d9 cmake/bochs: build --with-all-libs again
Without --with-all-libs (as documented in doc/how-to-build.txt), at least
the "nogui" GUI does not work anymore -- the default for headless
experiments.

(Note the UNDEFINED->UNDEF enum rename; this was necessary due to a vga.h
include side-effect in bochs/gui/svga.cc.)

Change-Id: I1bc3208e905783505a35bbc48ff29f00eef599d6
2013-03-27 17:52:31 +01:00
72a021be38 misc cleanup, comments, whitespace, gitignore
Change-Id: I6250339ddc5807879c98da2d204418e7b4898a73
2013-03-27 17:37:03 +01:00
1d25372283 cosmetics, whitespace
Change-Id: I1212dfeff33d7bcb8b699233279fbf05014ea3bd
2013-03-23 18:06:27 +01:00
95402cee5d util/Database: fail gracefully if db selection didn't work
Change-Id: If4195353859ef4fb845eda5c5ee251a6adf9c5f5
2013-03-23 18:06:27 +01:00
14b7d4e6f4 util/Database: MySQL connection parameters may all come from my.cnf
It doesn't make sense to override database, hostname or username parameters
coming from ~/.my.cnf with arbitrary own defaults.  Instead allow
libmysqlclient to use the builtin default parameter mechanism.

See <https://dev.mysql.com/doc/refman/5.1/en/option-files.html> for what a
~/.my.cnf may look like; example:

[client]
user=hsc
password=secret42
database=fail_demo

Change-Id: I90aadc04375c624d5e906557c8bd4049e5caa17c
2013-03-23 18:06:02 +01:00
28fc41da65 Merge branch 'master' of ssh://vamos.informatik.uni-erlangen.de:29418/fail
Change-Id: I35e86d4b367be395121451a86f2731606f43eeff
2013-03-22 16:51:29 +01:00
3c349e06f3 Documentation: Cleanup
Doxygen docu is now build in ${PROJECT_BINARY_DIR}/doc.
(and other small changes.)

Change-Id: I3fef910307e104f120c4f770526c800cfd01a41f
2013-03-22 16:18:58 +01:00
1e5581644c Merge "tools/import-trace: new tool to import traces into MySQL database" 2013-03-22 11:48:11 +01:00
e3c633c248 tools/import-trace: new tool to import traces into MySQL database
The import tool does support the following import strategies:

- BasicImporter: generates def-use equivalence classes for read and
  write memory accesses
- DCiAOKernelImporter: generates equivalence classes for read access in
  the ciao kernel space.

Change-Id: I8960561d3e14dcf5dffa3ff7a59b61a5e8f7e719
2013-03-22 11:41:25 +01:00