From 301dc22494157b9203e3c45d3ee9a1ba0908fde6 Mon Sep 17 00:00:00 2001 From: unzner Date: Fri, 5 Oct 2012 16:20:13 +0000 Subject: [PATCH] Updated the L4Sys experiment flow git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1726 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- src/experiments/l4-sys/campaign.cc | 53 +++++++++++++++-------- src/experiments/l4-sys/campaign.hpp | 1 + src/experiments/l4-sys/experimentInfo.hpp | 4 +- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/experiments/l4-sys/campaign.cc b/src/experiments/l4-sys/campaign.cc index eaabcbc7..639deaa9 100644 --- a/src/experiments/l4-sys/campaign.cc +++ b/src/experiments/l4-sys/campaign.cc @@ -40,6 +40,22 @@ std::string L4SysCampaign::output_experiment(L4SysProtoMsg_ExperimentType res) { } } #undef OUTPUT_CASE +#define OUTPUT_CASE(OUTPUT) case L4SysProtoMsg::OUTPUT: return l4sys_output_register_strings[L4SysProtoMsg::OUTPUT]; +std::string L4SysCampaign::output_register(L4SysProtoMsg_RegisterType res) { + switch (res) { + OUTPUT_CASE(EAX); + OUTPUT_CASE(ECX); + OUTPUT_CASE(EDX); + OUTPUT_CASE(EBX); + OUTPUT_CASE(ESP); + OUTPUT_CASE(EBP); + OUTPUT_CASE(ESI); + OUTPUT_CASE(EDI); + default: + return l4sys_output_register_strings[0]; + } +} +#undef OUTPUT_CASE bool L4SysCampaign::run() { Logger log("L4SysCampaign"); @@ -61,23 +77,14 @@ bool L4SysCampaign::run() { int count = 0; srand(time(NULL)); + for (int i = 0; i < 1000; ++i) { - L4SysExperimentData *d = new L4SysExperimentData; - d->msg.set_exp_type(d->msg.ALUINSTR); - // modify for a random instruction - int instr_offset = rand() % L4SYS_NUMINSTR; - d->msg.set_instr_offset(instr_offset); - // this value is not required for this experiment, so set it to an arbitrary value - d->msg.set_bit_offset(0); - - campaignmanager.addParam(d); - ++count; - } -#if 0 - for (int i = 0; i < 25; ++i) { L4SysExperimentData *d = new L4SysExperimentData; d->msg.set_exp_type(d->msg.GPRFLIP); - d->msg.set_register_offset(d->msg.EBX); + // affect a random register + int reg_offset = rand() % 8 + 1; + d->msg.set_register_offset( + static_cast(reg_offset)); // modify for a random instruction int instr_offset = rand() % L4SYS_NUMINSTR; d->msg.set_instr_offset(instr_offset); @@ -90,7 +97,7 @@ bool L4SysCampaign::run() { } for (int i = 0; i < 1000; ++i) { L4SysExperimentData *d = new L4SysExperimentData; - d->msg.set_exp_type(d->msg.RATFLIP); + d->msg.set_exp_type(d->msg.ALUINSTR); // modify for a random instruction int instr_offset = rand() % L4SYS_NUMINSTR; d->msg.set_instr_offset(instr_offset); @@ -113,7 +120,19 @@ bool L4SysCampaign::run() { campaignmanager.addParam(d); ++count; } -#endif + for (int i = 0; i < 1000; ++i) { + L4SysExperimentData *d = new L4SysExperimentData; + d->msg.set_exp_type(d->msg.RATFLIP); + // modify for a random instruction + int instr_offset = rand() % L4SYS_NUMINSTR; + d->msg.set_instr_offset(instr_offset); + // this value is not required for this experiment, so set it to an arbitrary value + d->msg.set_bit_offset(0); + + campaignmanager.addParam(d); + ++count; + } + campaignmanager.noMoreParameters(); log << "done enqueueing parameter sets (" << count << ")." << endl; @@ -128,7 +147,7 @@ bool L4SysCampaign::run() { results << output_experiment(res->msg.exp_type()) << "," << hex << res->msg.injection_ip() << dec << ","; if (res->msg.has_register_offset()) - results << res->msg.register_offset(); + results << output_register(res->msg.register_offset()); else results << "None"; results << "," << res->msg.instr_offset() << "," << res->msg.bit_offset() diff --git a/src/experiments/l4-sys/campaign.hpp b/src/experiments/l4-sys/campaign.hpp index 1823fee2..8258751d 100644 --- a/src/experiments/l4-sys/campaign.hpp +++ b/src/experiments/l4-sys/campaign.hpp @@ -17,6 +17,7 @@ public: private: std::string output_result(L4SysProtoMsg_ResultType res); std::string output_experiment(L4SysProtoMsg_ExperimentType res); + std::string output_register(L4SysProtoMsg_RegisterType res); }; #endif // __L4SYS_CAMPAIGN_HPP__ diff --git a/src/experiments/l4-sys/experimentInfo.hpp b/src/experiments/l4-sys/experimentInfo.hpp index 86f8a318..63bf9c4e 100644 --- a/src/experiments/l4-sys/experimentInfo.hpp +++ b/src/experiments/l4-sys/experimentInfo.hpp @@ -8,8 +8,8 @@ #define L4SYS_ADDRESS_SPACE 0x203d000 #define L4SYS_FUNC_ENTRY 0x10025ca #define L4SYS_FUNC_EXIT 0x1002810 -// kernel: 16300287, userland: 210785625 -#define L4SYS_NUMINSTR 227085912 +// kernel: 3597806, userland: 79484908 +#define L4SYS_NUMINSTR 83082714 #define L4SYS_BOCHS_IPS 5000000 // several file names used