Added BasicBlock- and CallRegionPruner
Implemented two instantiations of Fault-Space Regions (FSR) as a program-structure-guided approximation of fault spaces based on the precise Def/Use-Pruning using basic blocks or function calls. Further reading: Program-Structure-Guided Approximation of Large Fault Spaces Oskar Pusz and Daniel Kiechle and Christian Dietrich and Daniel Lohmann In: 24th Pacific Rim International Symposium on Dependable Computing (PRDC'19) IEEE Computer Science Press, 2019 Some configurations for bochs and generic-experiment
This commit is contained in:
@ -15,9 +15,11 @@ using std::endl;
|
||||
#include "BasicPruner.hpp"
|
||||
#include "FESamplingPruner.hpp"
|
||||
#include "SamplingPruner.hpp"
|
||||
#include "BasicBlockPruner.hpp"
|
||||
#include "CallRegionPruner.hpp"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
std::string username, hostname, database;
|
||||
std::string username, hostname, database, trace_file;
|
||||
|
||||
// register possible Pruners
|
||||
AliasedRegistry registry;
|
||||
@ -29,6 +31,10 @@ int main(int argc, char *argv[]) {
|
||||
registry.add(&fesamplingpruner);
|
||||
SamplingPruner samplingpruner;
|
||||
registry.add(&samplingpruner);
|
||||
BasicBlockPruner basicblockpruner;
|
||||
registry.add(&basicblockpruner);
|
||||
CallRegionPruner callregionpruner;
|
||||
registry.add(&callregionpruner);
|
||||
|
||||
std::string pruners = registry.getPrimeAliasesCSV();
|
||||
|
||||
@ -68,6 +74,9 @@ int main(int argc, char *argv[]) {
|
||||
CommandLine::option_handle INCREMENTAL =
|
||||
cmd.addOption("", "incremental", Arg::None,
|
||||
"--incremental \tTell the pruner to work incrementally (if supported)");
|
||||
CommandLine::option_handle TRACE_FILE =
|
||||
cmd.addOption("t", "trace-file", Arg::Required,
|
||||
"-t/--trace-file \tFile to load the execution trace from\n");
|
||||
|
||||
if (!cmd.parse()) {
|
||||
std::cerr << "Error parsing arguments." << std::endl;
|
||||
@ -155,7 +164,15 @@ int main(int argc, char *argv[]) {
|
||||
benchmarks_exclude.push_back(std::string(o->arg));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (cmd[TRACE_FILE]) {
|
||||
trace_file = std::string(cmd[TRACE_FILE].first()->arg);
|
||||
} else {
|
||||
trace_file = "trace.pb";
|
||||
}
|
||||
|
||||
pruner->set_traceFile(trace_file);
|
||||
|
||||
// fallback
|
||||
if (benchmarks.size() == 0) {
|
||||
benchmarks.push_back("%");
|
||||
|
||||
Reference in New Issue
Block a user