Commit Graph
100 Commits
Author SHA1 Message Date
Horst Schirmeier 141cefbaf4 DatabaseProtobufAdapter: remove unused struct field
Found by Coverity Scan, CID 25685.

Change-Id: Id7c9d756a7f824af41d1315740f7415f021eaa91
2015-02-07 17:29:41 +01:00
Horst Schirmeier c499292e2f DatabaseProtobufAdapter: init top-level type bridge
Found by Coverity Scan, CID 25724.

Change-Id: I30ab9251bd0b6c60a64075a5cf934f40874a7c6c
2015-02-07 17:29:40 +01:00
Horst Schirmeier 26076d070c DatabaseProtobufAdapter: fix uninitialized members
Found by Coverity Scan, CID 25694.

Change-Id: I8fbb1434b73dcecb16675da870e73f1ad39391e4
2015-02-07 17:29:38 +01:00
Horst Schirmeier 0047919644 Database: fix tmp array deletion
Found by Coverity Scan, CID 25544.

Change-Id: Iaf0866ebd4a458fabfe79336d8c8b639e42147c5
2015-02-07 17:29:37 +01:00
Horst Schirmeier cf6b481d5e DatabaseExperiment: fix uninitialized variable
Found by Coverity Scan, CID 25741.

Change-Id: I6105fe76afbfe0a6ec76b59778214683d7d754e2
2015-02-07 17:29:35 +01:00
Horst Schirmeier a7184af37b core/sal: uninitialized BochsController member
False positive, nevertheless worth fixing.  Found by Coverity Scan,
CID 25723.

Change-Id: Ia4f1eb033d7cc8c20889280a59d8973ecf768933
2015-02-07 17:29:34 +01:00
Horst Schirmeier 61038c2578 core/sal: fix CPUState bracing error
This is why our coding style suggests braces even for single-line "if"
or loop bodies.  Found by Coverity Scan, CID 25767.

Change-Id: I53062286accba7c0fc9795ecea0a5e2795443321
2015-02-07 17:29:32 +01:00
Horst Schirmeier fe9e25374a CampaignManager: initialize campaign member
Found by Coverity Scan, CID 25798.

Change-Id: Ib310ca3198c78a8e01d044d90ada1cd0c22b26d6
2015-02-07 17:29:29 +01:00
Horst Schirmeier bae03bc929 cmake: build with -D__NO_MATH_INLINES
To use the new clang-based AspectC++ (ac++ >1.2), Fail* must be built
with -D__NO_MATH_INLINES (or --c_compiler clang++).

Change-Id: I020d62891946d09ac456b8df914b669ab33ab0e2
2015-02-05 17:25:09 +01:00
Horst Schirmeier 6995dffca8 prune-trace: --no-weighting for SamplingPruner
Analogous to the FESamplingPruner, the --no-weighting switch disables the
equivalence-class weighting by using a weight of one instead of the
equivalence-class size.  This is usually not a good idea, and should only
be used for demonstration purposes, or if the fault model requires
weight-less sampling.

The --no-weighting switch was introduced with an earlier commit, but
did not have an effect until now.

Change-Id: If2ebf775bea7f2e3f8c293abbae08f1eb00cacf1
2015-02-02 13:50:59 +01:00
Horst Schirmeier 1dcd4fbeb2 fail-cleanup-db.sh: cleanup "symbol" table as well
(The "symbol" is currently only created by some inofficial scripts,
but may become part of the Fail* core at some point.)

Change-Id: If0b3e6cdd6b6ca865abb67382de128e7a27f19ab
2015-01-30 13:28:33 +01:00
Horst Schirmeier b8c03bca8d fail-env: assign -> use default values
In bash, ${parameter:=word} assigns the default value.  In our case,
${parameter:-word} (the whole expression has a default value, but it's
not assigned) suffices.

Change-Id: I5f4105b973892aa13943d660cbebaed76fd43752
2015-01-29 16:43:22 +01:00
Horst Schirmeier 412ecbba63 dbcampaign: skip existing pilots with wrong fspmethod
Loading existing pilots with a different fspmethod_id is a waste of
time.

Change-Id: I3519a14822029999fa2ed854daff9853c0cbeec1
2015-01-21 14:53:33 +01:00
Horst Schirmeier d58694521c dbcampaign: don't include fspmethod/variant ID in job msg
These IDs don't make sense by themselves but only after a lookup in the
database, which clients usually don't have (and don't need) access to.

Conflicts:
	src/core/comm/DatabaseCampaignMessage.proto.in

Change-Id: Ice739463552039b7fb48581722ea2e05984cea47
2015-01-21 14:53:32 +01:00
Horst Schirmeier c422911741 dbcampaign: allow wildcard for prune method
Using mixed pruning methods now does not require to run the campaign
server twice anymore.

Change-Id: I3f62c269166b750892bb0e659ad0c180425d1479
2015-01-21 14:53:32 +01:00
Horst Schirmeier 336ffd6453 Merge branch 'sampling'
Change-Id: Id6be7954b0bafcbfd64ba702e69e016bd2810115
2015-01-21 14:53:28 +01:00
Horst Schirmeier 39df0a979e Merge branch 'listener-perf-bug'
Change-Id: Ia863115ec31011ad2b7a954543c8ee64188d3d32
2015-01-21 14:52:33 +01:00
Horst Schirmeier 4cbcf30b7c prune-trace: incremental mode for SamplingPruner
The --incremental switch allows to add more samples if the resulting
confidence intervals are not satisfactory yet.

Change-Id: I65dc99522f45f8a4eaf4ce68e832f7636585381d
2015-01-21 00:22:36 +01:00
Horst Schirmeier 79211fd31d prune-trace: add SamplingPruner
The SamplingPruner implements "normal" sampling with equivalence-class
reuse.  Unlike the FESamplingPruner, the SamplingPruner implements
uniform fault-space sampling that counts multiple hits of an
equivalence class.

This change modifies the database schema, more specifically it adds
the "weight" column to the fspgroup table.  Update existing databases
with this query:

  ALTER TABLE fspgroup ADD COLUMN weight INT UNSIGNED;

Change-Id: I668fc9b25fc4d79a60aa1ef8d69cdf5fa076cc6d
2015-01-21 00:22:36 +01:00
Horst Schirmeier 99a923b11e Merge remote-tracking branch 'origin/master' into sampling-wip
Change-Id: Iae5c02be5801d75e8adc55222ccb35c559f7ebf4
2015-01-21 00:22:28 +01:00
Horst Schirmeier f8e0f1bb3f util: add SumTree::iterator
Change-Id: I8304b64634fa3ab92a126fe5d942674b26334b3d
2015-01-21 00:17:48 +01:00
Horst Schirmeier 2f70e05db6 util: rename SumTree::get -> remove, add r/o get
SumTree::get now non-intrusively picks an element and returns a
reference to it, SumTree::remove removes and returns a copy.  The
former is needed for sampling with replacement.

Change-Id: Iefef2fdf0b7df6ea7a9949f2588528ec9e86bb7a
2015-01-21 00:17:48 +01:00
Horst Schirmeier b2b53380f4 prune-trace: add switch to disable sample weighting
In the sampling step, the --no-weighting switch disables the
equivalence-class weighting by using a weight of one instead of the
equivalence-class size.  This is usually not a good idea, and should
only be used for demonstration purposes, or if the fault model
requires weight-less sampling.

Change-Id: Id903d1924c6ecbcd217815aa5ce9271560130071
2015-01-21 00:14:45 +01:00
Horst Schirmeier a1e3b31cd5 prune-trace: sample from known results
The --use-known-results switch simulates sampling (with fault
expansion, FESamplingPruner) by reusing results from a previous
campaign covering the full fault space (that used the "basic" pruner).
The pruner only creates entries in the "fspgroup" table that refer to
already existing pilots and corresponding results.

This switch is not for normal Fail* use, but only for experimenting
with the FESamplingPruner.

Change-Id: I1bf561d93f55918d243c5306551a1c6b48027198
2015-01-21 00:09:37 +01:00
Horst Schirmeier d9028e9d70 CMake: Fail* version number handling fixed
The project version number is now not user-editable anymore, and
custom values get overwritten by force.  Without this change,
CMakeCache.txt stays at the version number it was first instantiated
from.

Change-Id: If9ad1549937dad98db9a0f0eda16ef752e7d74aa
2015-01-14 10:27:20 +01:00
Horst SchirmeierandGerrit Code Review fd6bd279ad Merge "util/DwarfReader: plug file-descriptor leaks" 2015-01-14 10:27:01 +01:00
Horst Schirmeier a00c4d9a69 util/DwarfReader: plug file-descriptor leaks
This change fixes several file-descriptor leaks in the DwarfReader
implementation.  The patch is taken from Richard Hellwig's not yet
merged change I161f626d12ca7f2b7b9d13ba9cbc254eb55692f1.  I did not
apply any white-space cleanups to prevent conflicts when Richard's
change will be merged later.

Change-Id: Icd9c1bdeeab39e77900e2ce88b756a8cf7ade96a
2015-01-14 10:15:29 +01:00
Horst Schirmeier d68ea990ca sal: catch listener removal corner case
This change makes sure an active but not-yet fired listener does not fire
anymore if it gets removed.  In this case, the listener already has an
invalid index, but still needs to be copied to the delete list.

This issue has not been observed in the wild, and is unlikely to have
caused real problems in the past.

Change-Id: I8be8a5b1d4cdc783a092b93f34f33b969894e5da
2015-01-13 19:22:49 +01:00
Horst Schirmeier c4d44aeb0c sal: fix watch/breakpoint perf implementation
This commit changes the entities in a ResultSet from listener indexes
(into ListenerManagers m_BufferList) to BaseListener pointers, as
ListenerManager::makeActive(BaseListener*) (called from
FastBreakpoints/Watchpoints.ah) may invalidate indexes temporarily
stored in a ResultSet.  The issue occurs when multiple breakpoints
(watchpoints) fire at the same time, and one added more recently than
the others occupies the largest index position in m_BufferList.

Although this issue is extremely rare and was only observed in a few
corner cases up to now, it may have falsified results in the past.

Change-Id: I7b788a06d412f15700ca75f56f2be5d3b78465fa
2015-01-13 19:22:49 +01:00
Horst Schirmeier 32e8a679b5 CMake: Fail* version number handling fixed
The project version number is now not user-editable anymore, and
custom values get overwritten by force.  Without this change,
CMakeCache.txt stays at the version number it was first instantiated
from.

Change-Id: If9ad1549937dad98db9a0f0eda16ef752e7d74aa
2015-01-13 14:48:22 +01:00
Horst Schirmeier 722715c01f fail-cleanup-db.sh: cleanup unused DB entries
This script removes dangling rows from the database, for example
'trace' entries with a variant_id not mentioned in the 'variants'
table, or result rows referencing a nonexistent 'fsppilot' entry.
IOW, this script enforces referential integrity as it would be
maintained by foreign key constraints (that can only be used with
InnoDB tables).

Change-Id: I4dce1e46277d470f8c3eca31447ca71f63c6353f
2015-01-12 16:45:38 +01:00
Horst Schirmeier 80da913264 README: publications update
Change-Id: I4794dbba1e1fc28398bd040a5ffbc4ff821e5a6c
2015-01-11 18:47:37 +01:00
Horst Schirmeier 88dff29415 Merge branch 'visualfail' 2015-01-10 00:49:52 +01:00
Horst Schirmeier 62c3cc7f20 visualfail: README, pristine configuration
Change-Id: Ic7e3ec0e28fdd368b9207c7a843a3f397e5e3c09
2015-01-09 15:00:03 +01:00
Horst Schirmeier f0a4dacd87 visualfail: remove common path prefix from file names
Change-Id: I5806f0e4ca3ebe4e9aae3423e04d8ffb36fff2a6
2015-01-09 15:00:03 +01:00
Horst Schirmeier be6e4e687c visualfail: indentation fixes
Change-Id: Icac5dcf43ae28fa877a7127495066f4d48186b7e
2015-01-09 15:00:02 +01:00
Horst Schirmeier 4d070c6362 visualfail: collapse repeating instructions
Change-Id: I7d3bbb9eb79b502acabeeeab9886bf20177e68c6
2015-01-08 16:24:53 +01:00
Horst Schirmeier 957f9c9357 visualfail: high-level code mapping fixes and cleanups
Now high-level to low-level code mapping seems to be right for the first
time.

Change-Id: I3c6a7cfdf3f3e4da32420a74280ae4ae042acc09
2015-01-08 15:06:58 +01:00
Horst Schirmeier d536cc72aa visualfail: less duplicate HTML IDs
... and a lot less unneeded IDs, reducing the amount of data to be
transferred to the client.

Change-Id: I071920fd4d8039d2f3d1f5d8c41c2c3ddd639617
2015-01-08 15:06:58 +01:00
Horst Schirmeier 874e5881b7 visualfail: disable JS debugging output
Change-Id: I8154aa182189ce88716d157aa41cbe2680f0eab8
2015-01-08 15:06:58 +01:00
Horst Schirmeier 2ae7e87abc visualfail: HTML output cleanups
Change-Id: Ibe966e8ece80f0f40f2f109d78a59f4ebe0121a6
2015-01-08 15:06:58 +01:00
Horst Schirmeier 38641ff34b visualfail: silence redundant notice
Change-Id: Ib6a71474727fd64d4057db026eb0e90e603947a0
2015-01-08 15:06:58 +01:00
Horst Schirmeier aebe801dbf visualfail: query parameter name consistency
Consistently use 'variant_id' instead of 'variant'.

Change-Id: I93f054634698855687e3ba07b83173c8370297fd
2015-01-08 15:06:58 +01:00
Horst Schirmeier c2b4a4fa8a visualfail: English interface
Change-Id: I4ebe88ce8621bcef30d84065b8e6525239283863
2015-01-08 15:06:58 +01:00
Horst Schirmeier b5c261d762 visualfail: comments, whitespace fixes
Change-Id: I8821b43d7402e19c59810692ed7877bca4cec6f5
2015-01-08 15:06:58 +01:00
Horst Schirmeier 7c51ca0a63 visualfail: fix color coding
Change-Id: If76d8e9f7a22523868ea6977db5c0f58a0576224
2015-01-06 17:11:29 +01:00
Horst Schirmeier 2d2e477ddc visualfail: fix output formatting
This change fixes occasional redundant newlines in interspersed
ASM/highlevel code.

Change-Id: Ibe3a93d67bc017ce44c832c4948f3817d8f7e695
2015-01-06 17:11:29 +01:00
Horst Schirmeier 9df01a4a48 visualfail: off-by-one in getHighlevelCode()
This one omitted mappings to the first static instruction belonging to a
high-level source-code line.

Change-Id: I14427021e61f27a8b029fb56fad2ba813652422a
2015-01-06 17:11:29 +01:00
Horst Schirmeier 1faa885cb4 visualfail: speedup of two MySQL queries
Change-Id: Ibc4339cfe31a7d9f2a632a7e08278f8aca554a73
2015-01-06 17:11:29 +01:00
Horst Schirmeier 63670e7bce visualfail: off-by-one in resultsDB()
This one was responsible for a lot of notices in the terminal.

Change-Id: I097705af15d771d0dcb5a217445fec3db89fd132
2015-01-06 16:38:47 +01:00
Horst Schirmeier 42773e2be5 visualfail: speedup by using the ".=" operator
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
2015-01-06 16:37:21 +01:00
Horst Schirmeier fc8ad04db2 visualfail: increase default runtime limit to 10m
Change-Id: I9bdebb2ad0e4fd6cf0d5e72e2e0520ad3cf6b258
2015-01-06 16:37:15 +01:00
Horst Schirmeier 4575da411a visualfail: quote string array indexes
Change-Id: I943c931f256986b4c14e00ee278976d369c71765
2015-01-06 16:37:07 +01:00
Horst Schirmeier 9a34d7a78a visualfail: comment out checks for unneeded tables
The dbg_methods, dbg_variables and dbg_stacktrace tables are not
needed by the current VisualFAIL implementation.

Change-Id: I5f685c7d8100fe57fb2a23e1f8161770e64c9464
2015-01-06 16:37:01 +01:00
Horst Schirmeier 0ed1a4e306 visualfail: don't close MySQL connection too early
Luckily this didn't work as advertised, as the global connection
variable wasn't imported into the functions' scopes.

Change-Id: I080a32c6418deb3da3578987ec8a181b047608ad
2015-01-06 16:36:56 +01:00
Horst Schirmeier 1d81e2b519 visualfail: adminer should not be in the Fail* tree
Change-Id: Ib7f07306e297f8891666b54916e8076c0c9261ee
2015-01-06 16:36:50 +01:00
Horst Schirmeier 5bef0d4182 visualfail: whitespace cleanups
Change-Id: Ia773bf516ce1bab4adcd80e31678bda278cd8c11
2015-01-06 16:36:46 +01:00
Horst Schirmeier ca99aee02b visualfail: removed trailing whitespace
Change-Id: I47725e1e4ca858109ffb0c3f7c599b67a48c0761
2015-01-06 16:36:38 +01:00
Horst Schirmeier 1d66db3625 visualfail: UNIX line endings
Change-Id: I5d26ec25d070e98b977ff3130c597a388a4c2c96
2015-01-06 16:36:20 +01:00
Horst Schirmeier bfd6a55f58 Fail* v1.0.1
This is a maintenance release primarily fixing docker demo builds.

Change-Id: I4f71ae9c50d29f36a9b6fd2ff11067b39f99c39d
2014-11-14 11:13:26 +01:00
Horst Schirmeier 96ead7df84 scripts/docker: use ac++ 1.2 instead of daily build
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
2014-11-14 11:08:47 +01:00
Horst Schirmeier 36d9e77c96 import-trace: extend sanity checks to time1/2
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
2014-11-07 11:40:53 +01:00
Horst Schirmeier 569dd3328b import-trace: sanity-check speedup
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
2014-11-07 11:37:49 +01:00
Horst Schirmeier d30ffdd3e5 import-trace: sanity-check code deduplication
Change-Id: I098981dfe93d760e3a423a374be05dbad3ee9cc1
2014-11-07 11:29:50 +01:00
Horst SchirmeierandChristian Dietrich 2f59d802fa Fail* v1.0 -- first public release
Change-Id: Ie8667a6d64a563d545a1ebb3375629214dd8b58a
2014-11-03 13:10:12 +01:00
Horst Schirmeier 8fcbc7eeae import-trace: ElfImporter cleanups
-  added several insert_multiple() flushes (which completely broke
    the import before)
 -  import_source_code() refactored
 -  parameter naming improved
 -  better error handling
 -  whitespace/coding-style cleanups
 -  documentation added + cleanups

Change-Id: I70ac95391b9678e0dcce8adfa7df69a4f91ca30d
2014-10-15 11:42:29 +02:00
Horst Schirmeier 31166f990e import-trace: fix source line mapping to file IDs
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
2014-10-08 13:08:05 +02:00
Horst Schirmeier c8bbbb43b4 doc: more details on local LLVM installation
Change-Id: Id85a9153d98bb0ecd9b903b3a98ad6941ccbecba
2014-10-08 11:31:39 +02:00
Horst Schirmeier 3e01b0c4d5 doc: details on local LLVM installation
Change-Id: I1c8751f1381f5ca9256936513bdc9d21dce6154a
2014-10-01 15:06:38 +02:00
Horst Schirmeier 66408e83ce Merge branch 'llvm-rtti' 2014-10-01 15:02:00 +02:00
Horst Schirmeier ebbf35c509 Merge branch 'tools-report-unknown-parameters' 2014-10-01 13:58:57 +02:00
Horst Schirmeier d69ac98654 util: MemoryMap test case for hex/octal support
+ abort() on test failure

Change-Id: I3bd4f19615b1234dae8854950e9d3e1b5810c101
2014-09-30 15:12:31 +02:00
Horst Schirmeier b0e13b17c9 tools: abort at unknown cmdline parameters
This change makes all C++-based tools in tools/ abort when they
encounter an unknown commandline parameter (both option or
non-option).  This has already caused some confusion, as in some cases
unexpected behaviour can be the result.  For example, "prune-trace -t
mytrace.tc -d database" up to now ignored the "-t" parameter, took
"mytrace.tc" as the first non-option parameter (and ignored it); as no
option parameter may follow the non-option parameters, all other
options were ignored as well.

Change-Id: Ia0812a518c4760fa28ed54979c81f43fa7aa096e
2014-09-25 17:14:08 +02:00
Horst Schirmeier 3fd94abcd3 cmdline: parse parameters in GNU mode
This change sets the option parser to GNU mode, that is, allows
further option parameters after non-option parameters, e.g.:

dump-trace foo.tc -s

instead of

dump-trace -s foo.tc

As Fail* currently works on GNU platforms only, this behavior is the
one presumably expected from users.

Change-Id: I9c55eaf4560cde81ebd0b94214201c8ad02c2b74
2014-09-25 17:14:08 +02:00
Horst Schirmeier d962a322ea DatabaseProtobufAdapter: fix string insertion
This change fixes the Protobuf->MySQL bridge for strings, which were
corrupted in rare cases, especially with debug builds of the
DatabaseCampaign.  String columns in result tables from any campaign
up to this point may contain corrupted data.

The core reason for the corruption was that the TypeBridge_string
bound a temporary (a nameless local variable) to the prepared
statement.  This temporary is destroyed before the subsequent call to
mysql_stmt_bind_param(), and the string within can only be referenced
successfully if it has not been overwritten yet.  The solution is to
copy the string to a bridge-internal variable.

Although it might seem that TypeBridge_enum has the same problem, the
protobuf library seems to return references to internal string
constants when retrieving the enum values.

Change-Id: Id127e6b3333d7c304d688e45de9bea44bbc610b0
2014-09-18 19:40:59 +02:00
Horst Schirmeier db2a0dc056 prune-trace: fix pruner listing change
Commit 89817cf13f did not completely
remove the manual pruner instantiation code.

Change-Id: I00dab9e3f4f3e2acf1d0f285237cc03a968aabfb
2014-09-18 13:45:44 +02:00
Horst Schirmeier 0208e80dbb Merge branch 'sampling'
Conflicts:
	src/core/cpn/DatabaseCampaign.cc

Change-Id: Ic11d9ce26546bccba11768383a8fda6a3458530f
2014-09-08 15:36:21 +02:00
Horst Schirmeier e87ace65ef util: SumTree test build fix
This fixes a "funny" conflict between the SumTreeTest and
weather-monitor's experiment.hpp.

Note to self: Preprocessor macros are evil.

Change-Id: I3f8c95fe086357db77110c0c53d3120ca839f30a
2014-08-29 11:35:45 +02:00
Horst Schirmeier 89817cf13f prune-trace: list available pruners
By using the AliasedRegistry, "prune-trace --help" (and
"prune-trace -p '?'") now lists all available Pruners to the user.

Change-Id: Ib5e3d00aabc37e6d48d804d2d709812af3f7efb2
2014-08-28 13:58:46 +02:00
Horst Schirmeier 42182591e5 fix compiler warnings
(DatabaseCampaign; llvmdisassembler)

Change-Id: Ic31758018a0a1ff0ceac81f781eecfc5f8060f89
2014-08-28 12:12:38 +02:00
Horst Schirmeier 84cfa2ae42 Merge commit '0da8ba0dec111d78292455bb5f17c6045820db25' 2014-08-28 12:04:34 +02:00
Horst Schirmeier f98871dd5a prune-trace: preserve existing data
With this change, prune-trace checks for existing fsppilot/fspgroup
entries for each variant to be pruned, and skips the variant in this
case.  This safety measure can be switched off with --overwrite.

Change-Id: I7e758a9853a25685ca176cf1a1810523753cdd4a
2014-08-28 11:57:40 +02:00
Horst Schirmeier 84b7a1d08a Merge branch 'bochs-catchall-io' 2014-07-18 15:00:16 +02:00
Horst Schirmeier b61f83bed2 serialoutput: fix default char limit
The character limit defaults to 0, but should default to unlimited
characters.

Change-Id: Id925bde8290050e90b8071ad4218d347d19d742a
2014-07-18 10:03:02 +02:00
Horst Schirmeier 87008a05b6 util: LLVM test code compilation fix
This change removes an unnecessary "#ifndef __puma" from the LLVM
disassembler test code and fixes compilation with the latest AspectC++
binaries.

Change-Id: Ibe835a4a6df69255555c668985f15b9cf8fb82b4
2014-07-13 18:43:39 +02:00
Horst SchirmeierandGerrit Code Review 2a68a08313 Merge "config: enable commonly used features by default" 2014-07-04 13:45:06 +02:00
Horst Schirmeier c2eb718886 sal/bochs: catch all I/O instructions
Up to now, the IOPortListener only caught invocations of INB/OUTB with
the port number in DX and 8-bit input/output (from/to AL), but none of
the various other methods to access the I/O port range (e.g., by 8-bit
immediate port numbers).  This change is supposed to catch all other
cases, too.

Change-Id: I1180cd9c1d59df600067739817adab684b18a608
2014-07-04 13:43:23 +02:00
Horst Schirmeier 2100001497 DatabaseCampaign: use more flexible get_variants()
This change allows DatabaseCampaign users to take advantage of the
improved variant selection methods in the Database class (multiple
uses of --variant/--benchmark possible, plus
--exclude-variant/--exclude-benchmark switches).

Change-Id: Idb1ca04538ff7601b3648cd9ba766aa8690fff6b
2014-07-03 15:49:05 +02:00
Horst Schirmeier 0da8ba0dec prune-trace: added "sampling with fault expansion"
The FESamplingPruner implements the fault-expansion variance reduction
technique (FE-VRT) as described in: Smith, D. Todd and Johnson, Barry W. and
Andrianos, Nikos and Profeta, III, Joseph A., "A variance-reduction technique
via fault-expansion for fault-coverage estimation" (1997), 366--374.

Change-Id: I04a0c9bb2622974278bd8c73793e51451119e650
2014-07-03 15:42:25 +02:00
Horst Schirmeier 0e1ed1feab prune-trace+DBCampaign: default to variant/benchmark %
If no --variant / --benchmark is specified, it's more reasonable to
prune or run *all* variants/benchmarks (using the wildcard "%")
instead of defaulting to "none"/"none".  The trivial case with only
one single variant/benchmark (which may still be "none"/"none" if
import-trace's default is used) is still covered by this new default
behavior.

Change-Id: I0e9001137d5e052183dd74211e2edbcfab749528
2014-07-03 15:42:25 +02:00
Horst Schirmeier 9a81ab4222 Database: more flexible get_variants()
This change moves prune-trace's --variants-exclude / --benchmarks-exclude
capabilities to Database::get_variants() to make it available to all users.

Change-Id: Icbc6bb1a3ae7c846d2de40b881f47a9cc1ed7bbf
2014-07-03 15:42:25 +02:00
Horst Schirmeier 5efebea5d1 prune-trace: limit row deletion to the pruner's FSP method
Otherwise it's not possible to keep a "basic" and a "sampling" pruned
version of one variant in the same database.

Change-Id: Ic71eb27ea16df23e2289cbf9f96ae10209745791
2014-07-03 15:42:25 +02:00
Horst Schirmeier 0cf5a34a9f prune-trace: pruners may add own command-line switches
Change-Id: I23293e7e6cf8ab1c3456337ba5e4af9b5e106ccb
2014-07-03 15:42:25 +02:00
Horst Schirmeier 6300a2b364 util: SumTree implementation
The SumTree implements an efficient tree data structure for
"roulette-wheel" sampling, or "sampling with fault expansion", i.e.,
sampling of trace entries / pilots without replacement and with a
picking probability proportional to the entries' sizes.

For every sample, the naive approach picks a random number between 0
and the sum of all entry sizes minus one.  It then iterates over all
entries and sums their sizes until the sum exceeds the random number.
The current entry gets picked.  The main disadvantage is the linear
complexity, which gets unpleasant for millions of entries.

The core idea behind the SumTree implementation is to maintain the
size sum of groups of entries, kept in "buckets".  Thereby, a bucket
can be quickly jumped over.  To keep bucket sizes (and thereby linear
search times) bounded, more bucket hierarchy levels are introduced
when a defined bucket size limit is reached.

Note that the current implementation is built for a pure growth phase
(when the tree gets filled with pilots from the database), followed by
a sampling phase when the tree gets emptied.  It does not handle a
mixed add/remove case very smartly, although it should remain
functional.

Change-Id: If05e9700bc84761b5bc31006402641e7112b3a72
2014-07-03 15:42:25 +02:00
Horst Schirmeier b92df6592f util: BlackholeLogger, a quiet Logger drop-in replacement
The compiler should be able to completely optimize away side-effect
free usage of this logger.  Can be used as a drop-in replacement for
Loggers to silence logging output for known-good code without having
to remove the corresponding "LOG << ..." code.

Change-Id: Ifb276223f61686773dd6108aafd567e99c88b223
2014-07-03 15:42:25 +02:00
Horst Schirmeier a07a6b3ed8 config: enable commonly used features by default
This enables commonly used event sources and other backend features to
avoid newcomers not getting their first experiments to work.  The
performance impact is not really a problem, but for optimal throughput
unused features can still be disabled.

Change-Id: Id507474eab4647137ce82cb8674fe23f7102975a
2014-07-03 15:05:30 +02:00
Horst Schirmeier 9d5737a37d jobclient: fix error reporting
gethostbyname() doesn't set errno but h_errno.  Thus, we need to call
herror() instead of perror() to print an appropriate error message.
(Thanks, Björn.)

Change-Id: I8fd4bdd4af41774dd290151c5ad37090d006f423
2014-06-30 12:21:42 +02:00
Horst Schirmeier 960f0881a2 util/smarthops: missing linker dependency
Change-Id: I3017a8824b3bd7ae9547b6c91db6847e5f5b8694
2014-06-27 13:16:25 +02:00
Horst Schirmeier ad0a15855d import-trace: log output number formatting fixed
Change-Id: Ifb81df86cb16254c04c946fa2cefca7030d2dd7a
2014-06-26 13:52:39 +02:00
Horst Schirmeier 7394a2cd53 import-trace: let RegisterImporter ignore unknown IP
This change makes the RegisterImporter continue importing if it
encounters an instruction pointer that is not part of the disassembled
ELF binary (and, thus, cannot be disassembled).  This is OK if we
don't want to inject into registers used by these instructions.

Change-Id: Ia9b5e7f789367f8386d63f235451dae5d399610d
2014-06-26 13:52:18 +02:00