Commit Graph
100 Commits
Author SHA1 Message Date
Horst Schirmeier 277958b31b cleanups
Change-Id: I8022d937477668253c613e97c3a579ae65084b1e
2014-06-03 11:47:20 +02:00
Horst Schirmeier 85fffe007e tracing: bugfix for enabled memory maps
With the recent updates to record one additional instruction at the trace
start, I broke memory-map handling (restrictMemoryAddresses() and
restrictInstructionAddresses()).  This change repairs this functionality.

Change-Id: I0daf9f474d0efe3f8e30a168c0ccc1e993e7ddc6
2013-11-18 15:49:06 +01:00
Horst Schirmeier c000b50101 Merge branch 'tracing-off-by-one' 2013-10-28 18:37:07 +01:00
Horst Schirmeier f2d0919553 tracing: simplify confusing iponly/memonly configuration
The internal m_iponly / m_memonly bools are a bit hackish; especially it's
unclear what should happen if both are set.  The m_tracetype enum now
encompasses all possible configurations, while the plugin's user interface
remains unchanged.

Change-Id: Ibdd872b5cc5781836428b27bfb2db3825700e671
2013-10-17 19:09:54 +02:00
Horst Schirmeier 64034e29b4 tracing: bugfix: advance prevtime only if delta was recorded
This change implements what the source-code comment already promised but
didn't keep: As we only record time deltas instead of absolute time values,
prevtime must not be overwritten unless the current delta was really added
to the trace.  This has caused timing information to be stored incorrectly
if certain events were skipped (e.g., because they didn't match the memory
map configured by the user).

Change-Id: Id40271d117dd91b1122136c62329d64174f304b0
2013-10-17 19:07:35 +02:00
Horst Schirmeier 22b9646b80 import-trace: dynamic instruction off-by-one
Richard noticed that instr2 values are off by one when done with the
MemoryImporter vs. with his own importer.  The core problem is that
the dynamic instruction counter in the Importer base class
(Importer::copy_to_database, instruction_count_t instr) gets increased
*after* reporting an IP event to the importer implementation; this has
the side-effect that memory access events have a +1 dynamic
instruction count offset with regard to the IP event of the
instruction they belong to.

Bottom line: IP events and all memory events belonging to that
instruction should have the same dynamic instruction number.
Christian argued for the numbers starting with 0, which, as a side
effect, relativizes the repercussions of the change introduced in the
previous commit, as the new "first" event gets the sequence number 0
now.

 -  All experiments and importers only dealing with memory accesses
    (MemoryImporter) are affected by this change:  The dynamic
    instruction count now starts with 0 instead of 1.  Together with
    the previous commit, the only change is one additional dynamic
    instruction at position 0.  Note that existing trace files do not
    have this additional instruction, which shifts all trace positions
    by 1.

 -  All importers that process *only* IP events (InstructionImporter,
    RandomJumpImporter, RegisterImporter) won't see any difference.
    Commit 036e340, though, introduced a +1 offset.

 -  Experiments that use these instruction counts for navigating to
    the target instruction must be checked to properly deal with the
    dynamic instruction #0 (no forwarding necessary).  All dynamic
    instruction offsetting should now work uniformly for both memory
    accesses and all other fault models.  To be sure everything works
    in order, sanity-check the current absolute instruction pointer
    right before fault injection.

Change-Id: I3f509f1b47836fa78fd029a7bb7c36c878912d97
2013-10-17 18:28:40 +02:00
Horst Schirmeier 3dc752cd09 tracing: fix loss of first dynamic instruction
When starting the tracing plugin (simulator.addFlow()), at the moment
the *current* dynamic instruction (e.g., the one the start symbol
points to) is skipped, and tracing commences with the second
instruction.  This change records an additional instruction event at
the trace begin.

Note that this change affects all tracing-plugin users.  The first
event gets recorded when starting the plugin (simulator.addFlow()).
This avoids compatibility/off-by-one issues when recording traces with
the generic-tracing experiment vs. with custom experiments.

Change-Id: Ic24e17a68b8a44edad3be994e9edd6d6712bfda1
2013-10-17 18:28:28 +02:00
Horst Schirmeier 090125a283 Revert "generic-tracing: fix lossage of first event"
This reverts commit 036e340bd9.

Problems with this one were:
 -  Broken event timings.  m_prevtime wasn't reset to m_curtime in
    TracingPlugin::handleSingleIP(), resulting in a large deltatime
    being recorded for the second event, too.  This effectively
    doubled the experiment's start time.
 -  Code repetition (copy/pasted for special handling of first event),
    making planned changes (advanced tracing for IP events) more
    difficult.
 -  Unnecessary additional tracing-plugin interface method.

Change-Id: I4b74d1a3f4563aabe6626399f9b30a2171b4c285
2013-10-17 17:44:43 +02:00
Horst Schirmeier e636924d0f import-trace: reparse parameters after importer instantiation
Without this change, import-trace won't recognize, e.g., the -e and -t
parameters if they come after a parameter that was added by the Importer:

import-trace -i objdump --objdump arm-none-eabi-objdump -e B.elf -t C.tc
[...]
[import-trace 14:37:32] couldn't open trace.pb

Change-Id: I9532b01e432055479c79d801b1ca2736a8fd21cc
2013-10-14 14:43:47 +02:00
Horst Schirmeier 3307828690 import-trace: fixes for build on amd64
"std::vector<T>::size_type" is compatible to "unsigned int" on ia32,
but not on amd64.

Change-Id: I7d0f96780f7c17757dcfd015a1b3f9d5a3947f1a
2013-09-18 17:13:08 +02:00
Horst Schirmeier b84d4d4c0e Merge branch 'master' of ssh://vamos.informatik.uni-erlangen.de:29418/fail 2013-09-12 10:14:59 +02:00
Horst Schirmeier 00f920f487 merge conflict resolved
... I somehow missed that one, sorry.

Change-Id: I2daf6f9215f34e39090145ff70e70eaf84d0f286
2013-09-12 09:52:34 +02:00
Horst Schirmeier ec969603d5 Merge commit 'dcd2c021a5ac91d38187d397914e5f51e2fc8819'
Conflicts:
	tools/import-trace/RegisterImporter.cc

Change-Id: I4f49c976bd60badba73c15746aa03c420cb9f77b
2013-09-11 14:38:55 +02:00
Horst Schirmeier dcd2c021a5 util: global lock for certain MySQL operations
Even the reentrant libmysqlclient_r has some non-threadsafe operations,
which need to be protected by a global mutex.
<http://dev.mysql.com/doc/refman/5.5/en/c-api-threaded-clients.html>

Change-Id: I444e42f82cf982a6c8f8f2596e8991d0a5009b28
2013-09-10 18:35:44 +02:00
Horst Schirmeier 9bbaeb9251 doc: misc updates
Among other updates, adding details on MySQL/MariaDB setup and usage.

Change-Id: Ic9f3b2779531ee031270dabd4706153c102b3265
2013-09-10 17:43:32 +02:00
Horst Schirmeier f106702d44 prune-trace: remove pilot_id from fspgroup PK
There's one fspgroup entry for every trace entry, the pilot_id is
therefore *not* part of the (unique) primary key.  If this had been
right in the first place, it would have revealed an equivalence-based
fault-space pruning bug early ... :-/

Change-Id: I449d4985645c6631c0a8db0c64510364677b1354
2013-09-10 17:43:32 +02:00
Horst Schirmeier d961ac0a72 import-trace: add --no-write-ecs switch
If you only need raw failure counts, no-effect write equivalence classes
are redundant and only slow down access to the trace and fspgroup tables.
This switch prevents any accesstype='W' entries from finding their way into
the trace table.

Change-Id: Ifb415994063a2107769bc80ebd2fd780de5a4dda
2013-09-10 17:43:12 +02:00
Horst Schirmeier d39a9278ff import-trace: split into public and protected iface
Change-Id: I4b7d15f9181b1485d0546a77bd8d4f400b2fa880
2013-09-10 17:37:26 +02:00
Horst Schirmeier 64b3af299e import-trace: sliding-window AdvancedMemoryImporter
Initially this was implemented by directly passing through trace
events to the MemoryImporter, keeping a record of conditional jumps
and opcodes, and UPDATEing all inserted rows in a second pass when the
MemoryImporter is finished.

Unfortunately, UPDATE is very slow, and keeping all information in
memory till the end doesn't scale indefinitely.  Therefore the
implementation now delays passing memory access events upwards to the
MemoryImporter only until enough branch history is aggregated, and
taps into Importer's database operations with a set of new virtual
functions that are called downwards.

Change-Id: I159b2533932087087fb3049f4ff07a5f17a25a00
2013-09-10 17:37:26 +02:00
Horst Schirmeier ba7c663551 import-trace: introduce AdvancedMemoryImporter
A MemoryImporter that additionally imports Relyzer-style conditional
branch history, instruction opcodes, and a virtual
duration=time2-time1+1 column (MariaDB 5.2+ only) for fault-space
pruning purposes.

Change-Id: I6764a26fa8aae21655be44134b88fdee85e67ff6
2013-09-10 17:37:26 +02:00
Horst Schirmeier 12b539ff75 misc cleanups
This change touches several subsystems, tools and experiments
(sal, util, cmake, import-trace, generic-tracing, nanojpeg), and
changes details not worth separate commits.

Change-Id: Icd1d664d1be5cfc2212dbf77801c271183214d08
2013-09-10 17:37:25 +02:00
Horst Schirmeier 25d88bf93a import-trace: import extended traces
This tool can now import extended trace information with the
--extended-trace command-line parameter.  The existing importers cease
using artificial access_info_t objects in favor of passing through the
original Trace_Event wherever possible.  This allows us to import
extended trace information for all importers.

Change-Id: I3613e9d05d5e69ad49e96f4dc5ba0b1c4ef95a11
2013-09-10 17:37:25 +02:00
Horst Schirmeier 96f2f56d5e Merge branch 'register-mapping-fixes' 2013-09-10 11:46:58 +02:00
Horst Schirmeier 11513ef78d util: handle missing register mapping gracefully
It's OK if we cannot map every register LLVM knows to a Fail register
ID, but we need to explicitly skip these cases in the
RegisterImporter.

Change-Id: I2152f819fb94aa4de5720c5798b229b66988d382
2013-09-09 16:14:35 +02:00
Horst Schirmeier f33789b1ac Merge branch 'find-mysql' 2013-09-04 13:09:48 +02:00
Horst Schirmeier 6d4dfeb913 shutdown cleanups revisited
This change became necessary as we observed weird fail-client SIGSEGV
crashes with both Bochs and Gem5 backends and different experiments.

Some Fail* components are instantiated statically: the
SimulatorController instance "simulator", containing the
ListenerManager and the CoroutineManager, and the active
ExperimentFlow subclass(es)
(experiments/instantiate-experiment*.ah.in).  The experiment(s) is
registered as an active flow in the CoroutineManager at startup.

As plugins (which are ExperimentFlows themselves) are often created on
an experiment's stack, ExperimentFlows deregister themselves on
destruction (e.g., when leaving the plugin variable's scope).  The
core problem is, that the creation and destruction order of statically
instantiated objects depends on the link order; if the experiment is
destroyed after the CoroutineManager, its automatic self-deregistering
feature talks to the smoking ruins of the latter.

This change removes all static instantiations of ExperimentFlow and
replaces them with constructions on the heap.  Additionally it makes
sure that the CoroutineManager recognizes that a shutdown is in
progress, and refrains from touching potentially already destroyed
data structures when a (mistakenly globally instantiated)
ExperimentFlow deregisters in this case.

Change-Id: I8a7d42fb141222cd2cce6040ab1a01f9de61be24
2013-09-04 10:13:48 +02:00
Horst Schirmeier 203ec6c5cc remove #ifndef __puma from code using LLVM
Contemporary AspectC++ versions can deal with the LLVM headers very
well, and #ifdef __puma stuff in Fail* headers results in
unmaintainable #ifdef __puma blocks in other parts of Fail* (e.g., the
trace importer).

Make sure you're using a 64-bit ac++ when living in a 64-bit userland
(the 32-bit version doesn't know about __int128), and be aware that
AspectC++ r325 introduced a regression that has not been fixed yet.

Change-Id: I5bb759b08995a74b020d44a2b40e9d7a6e18111c
2013-09-04 10:13:48 +02:00
Horst Schirmeier 97c0b6b4ae Merge branch 'gem5-register-fix' 2013-09-02 15:10:52 +02:00
Horst Schirmeier 89aff7df65 util: Bochs/Fail register mapping fix
CL and DL are 8 bits wide, not 255.

Change-Id: Ic454215344d08ba2f8374db251792f82d106305b
2013-09-02 12:07:27 +02:00
Horst Schirmeier 2108c8932f util: disassembler register/address mapping fix
For def/use pruning, the linear address mapping of the x86
sub-registers (e.g., AX represents the lower 16 bits of EAX) must
overlap.  If it doesn't, e.g., AX and EAX are considered separate
registers by def/use pruning, resulting in a failure to correlate an
EAX def with a subsequent AX use.

The only user of this mapping up to now, RegisterImporter, forced all
register widths to 8 bits, thereby fortunately canceling out this
problem.  Nevertheless it makes no sense to continue encoding a
constant width in these virtual addresses.

Existing trace, fspgroup, fsppilot and result tables may be converted
to the new encoding by using this query:

UPDATE <tablename> SET data_address = ((data_address >> 4) & ~0xf) | data_address & 0xf;

Change-Id: I7a942b78c34f6140803a86af639eeedef3550f34
2013-09-02 09:50:55 +02:00
Horst Schirmeier 0e595b38a3 gem5: adapt to Register iface change
This change adapts the gem5 backend to the Register class interface change
in commit 52723a8.  The necessary modifications suggested adding the "misc"
registers from gem5, too.

Change-Id: I32561c3fc905b9cd396e32ce80c791c01d5682fb
2013-08-29 19:35:33 +02:00
Horst Schirmeier 1ad99c9630 cmake: find MySQL client lib
This change introduces a CMake-style FindMySQL.cmake properly looking for
libmysqlclient_r with mysql_config.  This also fixes linking on some
machines.

Change-Id: Ifdbfdc3c7440dead37a8b63aaa86732d636aa0e2
2013-08-29 19:21:31 +02:00
Horst Schirmeier 4115de91aa sal: compilation fix
4e3c9e3 broke builds on some machines.

Change-Id: Iced4f5e6dad773f270208638071a5d0899653acf
2013-08-27 16:43:05 +02:00
Horst Schirmeier 4e3c9e3758 sal: CPU now knows extended trace registers
The extended trace register list is needed in multiple locations; the CPU
class is the logical module to contain this information.

Increased number of x86 registers to be traced; we can remove those
that prove unusable for fault-space pruning later on.

Change-Id: Ic46ecdbc55167a6d92872c190317fc0d1a3ad92d
2013-08-27 13:38:40 +02:00
Horst Schirmeier 52723a874e sal: allow register sets to overlap
This allows a register to be a member of multiple UniformRegisterSets.
Needed to architecture-specifically store, e.g., a list of registers to
record in traces.

Change-Id: Ia5d20768540efe252a84df967d43e569f107da3a
2013-08-27 13:38:40 +02:00
Horst Schirmeier ff1ceeddac util: silence const warnings with optionparser
We don't use the warned-about part of optionparser's interface
anyways.

Change-Id: I42c4714e4dce4112ea5b6cfb5159ed8b62d4c418
2013-08-27 13:38:40 +02:00
Horst Schirmeier 79ff417e9b doc+cmake: LLVM 3.3 is preferred
Change-Id: Ie480efbe5ffd2f0a59da7f185bba80a5355251f9
2013-08-27 13:38:40 +02:00
Horst Schirmeier 64840c02e4 import-trace: compile with both LLVM 3.1+3.3
Commit 52322ac broke compilation with LLVM 3.1.

Change-Id: Ia0e1d91258e6be799cfbd3b6e9693894a6bc5650
2013-08-23 11:26:40 +02:00
Horst Schirmeier 470d455e34 db: handle multi-row INSERTs
Several database implementations, including, e.g., MySQL and PostgreSQL,
allow multiple rows to be INSERTed at once.  At least for MySQL this
improves INSERT speed significantly.

Change-Id: Ic223f7915053f30b0cb00c567310f3e780c9fa59
2013-08-22 15:11:30 +02:00
Horst Schirmeier cbbd0ec764 db: added insert_id()
Database::insert_id() retrieves the auto-generated ID from the last INSERT
or UPDATE on a table containing an AUTO_INCREMENT column.

Change-Id: I6ec94d1820bb7e77bd37df33145caa93016fd328
2013-08-22 15:11:30 +02:00
Horst SchirmeierandGerrit Code Review 5a5ef61fa5 Merge "gem5/cmake: gem5 build integration into Fail*" 2013-08-21 15:18:40 +02:00
Horst Schirmeier 32e041543c import-trace: remove --importer-args parameter
The parameter has no effect and has been superseded by
Importer::cb_commandline_init().

Change-Id: I8c2f26c878a1ff409a6b5e3ee35d93dea775b583
2013-07-16 12:20:51 +02:00
Horst Schirmeier bc7ad24142 dump-trace: extended trace information dump configurable
This adds the same --extended-trace commandline switch as import-trace has.

Change-Id: I9c13df7b1df0f48ceeb7d1ebfa1a3ad45684c6a8
2013-07-11 10:38:54 +02:00
Horst Schirmeier 52322ac7b9 import-trace: compile with LLVM 3.3
This was necessary because LLVM 3.1's
ELFObjectFile<ELFT>::sectionContainsSymbolsectionContainsSymbol() (needed
for proper functioning of our LLVM disassembler, unless you're using
-ffunction-sections) is "unimplemented".

Change-Id: I81112627ebd1c92b718ac6f4ed58d7f188aedf0c
2013-07-11 10:38:54 +02:00
Horst Schirmeier 760353fb97 util: LLVM disassembler bugfix
Start/End is both inclusive; otherwise we may miss a trailing single-byte
instruction.

Change-Id: Ifb25593886864f7f92b08f13875a12e0a5a0d345
2013-07-11 10:38:53 +02:00
Horst Schirmeier 8622c1de12 db: explicitly use MyISAM engine
InnoDB is the default on some setups.

Change-Id: I5cc59854cb88cbec0e7bb7f6aab946252d0bd8e5
2013-07-11 10:38:53 +02:00
Horst Schirmeier 8e5aa9b1bd tools/dump-trace: dump extended traces properly
Output formatting was broken for extended traces (with register data
information etc.) before.

Change-Id: I48ca548ab29ecc855d803ce46a7713ef801f53f0
2013-07-04 10:41:22 +02:00
Horst SchirmeierandGerrit Code Review 0cceb4e222 Merge "ecos: make LOCAL builds compile again" 2013-07-04 10:38:04 +02:00
Horst SchirmeierandGerrit Code Review 741a7199b3 Merge "ecos: bugfix: cyg_test_output may be called before FI" 2013-07-04 10:37:43 +02:00
Horst SchirmeierandGerrit Code Review a7854f3dcb Merge "ecos: removed configuration checks" 2013-07-04 10:37:11 +02:00
Horst SchirmeierandGerrit Code Review f67b3c8e00 Merge changes If7bbbe14,Ifbf67303
* changes:
  ecos: DB-related campaign changes
  plugins/tracing: use fixed dereference size of 4
2013-07-04 10:36:46 +02:00
Horst SchirmeierandGerrit Code Review 286f5a27a1 Merge "import-/prune-trace: primary keys reordered" 2013-07-04 10:35:01 +02:00
Horst Schirmeier 955f89b3eb ecos: make LOCAL builds compile again
Change-Id: Icd992aa20443426bbcaa507c39453d6ecb9174c0
2013-07-03 13:46:55 +02:00
Horst Schirmeier 01e7f8c8a1 ecos: bugfix: cyg_test_output may be called before FI
This is a pretty old bug that unfortunately affects both DSN 2013 and
SOBRES 2013 results.

Change-Id: I64a2790a4d55515a23a34d108be99646d5dd345d
2013-07-03 13:46:55 +02:00
Horst Schirmeier 66ecedd864 ecos: removed configuration checks
Change-Id: I5df0b5f3435f3f695ba1ab9ca624dfa238509e46
2013-07-03 13:46:55 +02:00
Horst Schirmeier 27f1f77524 ecos: DB-related campaign changes
- Don't enforce the join order, MariaDB usually gets this right.
- Update DB statistics before terminating.

Change-Id: If7bbbe146321430d199811062d05b3c179c5732f
2013-07-03 13:46:55 +02:00
Horst Schirmeier 501384b0f4 import-/prune-trace: primary keys reordered
data_address is definitely part of the unique key to trace entries, but
instr2 is arbitrary (could be instr1, time1 or time2 as well).  Moving
data_address up the hierarchy to speed up certain FSP experiments.

Change-Id: I37a1f6c1e5b3957ba2f5bf46e0cd1a9c4aa7bfef
2013-07-03 13:46:55 +02:00
Horst Schirmeier 2a37a03069 plugins/tracing: use fixed dereference size of 4
When recording a "full" trace (register values, plus dereferenced
values), we use a fixed dereference size of 4 bytes.

Change-Id: Ifbf6730377e7df2e7f1fc1e6b91bc114ccf10fbc
2013-07-03 13:46:55 +02:00
Horst Schirmeier f3c36e70ef ecos: stack-protection eval
Change-Id: I576c2ef3834f61bb9017af37541afc7639672782
2013-05-29 16:43:46 +02:00
Horst Schirmeier 4750fa98a4 tools/dump-trace: --stats shows trace info only
The new parameter -s/--stats shows trace statistics such as number of
instructions, number of memory reads/writes, and duration in simulator
time.

Change-Id: I39a48ff62d9c308c420fe52e7ed17ed57ae9c139
2013-05-29 16:29:09 +02:00
Horst Schirmeier de754c5f27 comm: handle connect() failures properly
Quoting connect(3posix): "If connect() fails, the state of the socket is
unspecified.  Conforming applications should close the file descriptor and
create a new socket before attempting to reconnect."

Change-Id: Ibcdcc0f546560a41009832894659a37947243f2f
2013-05-29 16:29:09 +02:00
Horst Schirmeier d937be90ea util/CommandLine: make non-option args accessible
The argv list must not be temporary for this, and became a class
member.

Change-Id: I159dd2a0d43768a7926b639f93a4ff9f2bfb7c9a
2013-05-29 16:29:09 +02:00
Horst Schirmeier 950adac80e tools/import-trace: cover complete fault space
We need to cover the complete fault space when a memory map is
provided.  This means fake trace entries for completely unaccessed
addresses (e.g., unused parts of the stack), and makes sure we include
all of our fault space in the statistics later.

Without a memory map, we just don't know the extents of our fault
space; just guessing by using the minimum and maximum addresses is not
a good idea, we might have large holes in the fault space.

Change-Id: Ieb4b30a2e41a9921b969bf88513bfbacfc290c93
2013-05-29 16:29:08 +02:00
Horst Schirmeier bc95c8dda5 .mailmap for consistent git shortlog and blame
Change-Id: Ib86719b71ee18f3858e076a7be51274a4362c0e4
2013-04-29 15:34:08 +02:00
Horst Schirmeier 20b70df651 efw/JobClient: knock less often when there are no jobs yet
Change-Id: If769b402a7b00ed3aebedd5f4d0954831a0ee905
2013-04-29 15:34:08 +02:00
Horst Schirmeier 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
Horst SchirmeierandGerrit Code Review 091e8dcae0 ecos: baseline assessment integrated into main experiment
Change-Id: Iaf2a31c917b6ddd50568e5fb784ab8457193ee7d
2013-04-29 14:15:53 +02:00
Horst SchirmeierandGerrit Code Review 403886e541 ecos: minor changes, cleanup
- Count experiments, not jobs
 - Debug output

Change-Id: Ide5e1219cdcc8112d1a0d4e7367beca2dd5821ef
2013-04-29 14:15:51 +02:00
Horst SchirmeierandGerrit Code Review 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
Horst SchirmeierandGerrit Code Review 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
Horst SchirmeierandGerrit Code Review 392a6e6eb8 core/sal: correct timer ticks/sec calculation
Change-Id: I0971fe8a21c9ed3415d98b5e6387299beb3121e6
2013-04-29 14:15:36 +02:00
Horst SchirmeierandGerrit Code Review e68116e425 Merge changes If331ad7a,I6241ea2d,Iba4f73dc,I7a49e8e9,Ifae805ae
* changes:
  bochs: fix parsing ips values > 2^31
  tools/prune-trace: various improvements
  tools/import-trace: sanity checks
  tools/import-trace: import timing information + various additions
  cosmetics
2013-04-22 14:32:41 +02:00
Horst Schirmeier 5feebab5ab bochs: fix parsing ips values > 2^31
Change-Id: If331ad7aeedf04c1a62a9bca4bbe74021b5fccd5
2013-04-22 14:24:50 +02:00
Horst Schirmeier 56bfa6c693 tools/prune-trace: various improvements
- Variants/benchmarks can now be selected with wildcards
  (--variant/--benchmark), and can be excluded from pruning
  (--variant-exclude/--benchmark-exclude).
- The database clearing step can be skipped with --no-delete to
  avoid deadlocks with concurrent DB accesses.
- Internals:
  * injection_instr / injection_instr_absolute moves from
    fspgroup to fsppilot.  fsppilot now contains all information we
    need for running FI experiments.
    TODO: generic campaign needs to be modified, too.
  * Force MySQL to use an efficient join order (STRAIGHT_JOIN).

Change-Id: I6241ea2de9da1a1e709fae6374df4fc06ef262a0
2013-04-22 14:24:50 +02:00
Horst Schirmeier 79363aec21 tools/import-trace: sanity checks
These can be enabled if something looks fishy.

Change-Id: Iba4f73dc0a70ec4e548456edb36e21fecbaad410
2013-04-22 14:24:50 +02:00
Horst Schirmeier 9273872d43 tools/import-trace: import timing information + various additions
- Import timing information from traces that were recorded with timing.
- Allow restricting import to a memory map ("vertical" restriction).
- Proper fault-space right-margin handling.
- Cleanups, data-type usage, etc.

Change-Id: I7a49e8e9e49894c458e884bfc234f36b9ba8b130
2013-04-22 14:24:50 +02:00
Horst Schirmeier 0f16f18d75 cosmetics
Change-Id: Ifae805ae1e2dac95324e054af09a7b70f5d5b60c
2013-04-22 14:24:02 +02:00
Horst Schirmeier 2d45a2c52c ecos: use MemoryMap materialization instead of own code
Change-Id: I8615a066c53e1d6a02c78bce3199fa1f73edfda9
2013-04-10 13:01:04 +02:00
Horst Schirmeier 4d03b7ce5c core/util: MemoryMap learns to materialize in files
Change-Id: I003168d3718491524db91b9f7d855d6b3428961c
2013-04-10 13:01:03 +02:00
Horst Schirmeier 467ad88577 dump-trace: dump timing information
TODO: Showing timing or extended trace information should be configurable
with a commandline switch later.

Change-Id: I72ac95ddd1d54dfef87f212ec5afa30b2ed9a6ad
2013-04-10 13:01:03 +02:00
Horst Schirmeier 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
Horst Schirmeier 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
Horst Schirmeier 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
Horst Schirmeier 84559fe467 dump-trace.py: update after trace.proto relocation
Change-Id: I4f4b9870cdbe9b81338dde76453755700e6fea94
2013-04-03 18:32:10 +02:00
Horst Schirmeier a0293b9d18 ecos: use commandline parameters for local test runs, too
Change-Id: Iac43732408420a9e3687d5756c942c2f2256ad86
2013-04-03 15:18:08 +02:00
Horst Schirmeier 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
Horst SchirmeierandGerrit Code Review 331257492e Merge "core/sal: pass commandline parameters by reference" 2013-04-03 11:39:36 +02:00
Horst Schirmeier 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
Horst Schirmeier 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
Horst Schirmeier 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
Horst Schirmeier 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
Horst Schirmeier 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
Horst Schirmeier 72a021be38 misc cleanup, comments, whitespace, gitignore
Change-Id: I6250339ddc5807879c98da2d204418e7b4898a73
2013-03-27 17:37:03 +01:00
Horst Schirmeier 1d25372283 cosmetics, whitespace
Change-Id: I1212dfeff33d7bcb8b699233279fbf05014ea3bd
2013-03-23 18:06:27 +01:00
Horst Schirmeier 95402cee5d util/Database: fail gracefully if db selection didn't work
Change-Id: If4195353859ef4fb845eda5c5ee251a6adf9c5f5
2013-03-23 18:06:27 +01:00
Horst Schirmeier 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
Horst Schirmeier 77532fe523 tools/import-trace: protobufs build on Debian 6
Imported and adapted FindProtobuf.cmake from cmake 2.8.9 into the project to
make it build on Debian 6 again.

Change-Id: I4eda087b1757073224defc643dab86d0bd162409
2013-03-23 16:46:28 +01:00
Horst Schirmeier 9882611a8f after-first-checkout: sanity check
Change-Id: I5c806a2bf5506f4415278f7a43ccc80d573df0ce
2013-03-20 17:28:12 +01:00
Horst Schirmeier 7489f75fb5 Merge branch 'master' of ssh://vamos.informatik.uni-erlangen.de:29418/fail 2013-03-19 22:32:49 +01:00
Horst Schirmeier 4e21fbc97a cmake: bochs{,all}clean targets don't fail even if stamp file doesn't exist 2013-03-19 22:32:12 +01:00