From 014684ae1cd4eb40ec277fac712eda4ec01b4ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20D=C3=B6bel?= Date: Thu, 12 Sep 2013 20:29:08 +0200 Subject: [PATCH] L4Sys: check Bochs AS ID for mem accesses, too Change-Id: Ifa2b38dc0e762ff4f956dc0b98c78b43f0d139cb --- src/experiments/l4-sys/experiment.cc | 3 +++ src/experiments/l4-sys/experimentInfo.hpp | 14 +++++++------- tools/import-trace/AdvancedMemoryImporter.cc | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/experiments/l4-sys/experiment.cc b/src/experiments/l4-sys/experiment.cc index 59fb3393..7555460e 100644 --- a/src/experiments/l4-sys/experiment.cc +++ b/src/experiments/l4-sys/experiment.cc @@ -273,6 +273,9 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp) curr_addr = ML.getTriggerInstructionPointer(); simulator.addListener(&ML); ++mem; + if (BX_CPU(0)->cr3 != L4SYS_ADDRESS_SPACE) { + continue; + } } else if (res == bp) { curr_addr = bp->getTriggerInstructionPointer(); assert(curr_addr == simulator.getCPU(0).getInstructionPointer()); diff --git a/src/experiments/l4-sys/experimentInfo.hpp b/src/experiments/l4-sys/experimentInfo.hpp index 55e63579..d88e84ab 100644 --- a/src/experiments/l4-sys/experimentInfo.hpp +++ b/src/experiments/l4-sys/experimentInfo.hpp @@ -9,13 +9,13 @@ // FUNC_{ENTRY,EXIT} specifies the range that needs to // be captured to log program output properly -#define L4SYS_FUNC_ENTRY 0x010002a0 -#define L4SYS_FUNC_EXIT 0x01000380 +#define L4SYS_FUNC_ENTRY 0x01000350 +#define L4SYS_FUNC_EXIT 0x010004bd // FILTER_{ENTRY,EXIT} specifies the range that injections // should be carried out on (should be a subset of the above) // and only works with FILTER_INSTRUCTIONS turned on -#define L4SYS_FILTER_ENTRY 0x0100031c -#define L4SYS_FILTER_EXIT 0x01000380 +#define L4SYS_FILTER_ENTRY 0x0100042e +#define L4SYS_FILTER_EXIT 0x01000434 // select instruction filtering // XXX: this should be always on and the code should be @@ -24,8 +24,8 @@ #define L4SYS_FILTER_INSTRUCTIONS 1 // kernel: 2377547, userland: 79405472 -#define L4SYS_NUMINSTR 2223 -#define L4SYS_TOTINSTR 60214 +#define L4SYS_NUMINSTR 2988 +#define L4SYS_TOTINSTR 67811 #define L4SYS_BOCHS_IPS 5000000 // several file names used @@ -38,6 +38,6 @@ // flags // 0 - preparation complete // >0 - next step to execute -#define PREPARATION_STEP 0 +#define PREPARATION_STEP 2 #endif // __L4SYS_EXPERIMENT_INFO_HPP__ diff --git a/tools/import-trace/AdvancedMemoryImporter.cc b/tools/import-trace/AdvancedMemoryImporter.cc index 6cf96962..daa579c0 100644 --- a/tools/import-trace/AdvancedMemoryImporter.cc +++ b/tools/import-trace/AdvancedMemoryImporter.cc @@ -68,7 +68,7 @@ void AdvancedMemoryImporter::insert_delayed_entries(bool finalizing) if (it->branches_before != last_branches_before) { branchmask = 0; int pos = std::max(-(signed)BRANCH_WINDOW_SIZE, - (signed) it->branches_before); - int maxpos = std::min(BRANCH_WINDOW_SIZE, branches_taken.size() - it->branches_before); + int maxpos = std::min((signed)BRANCH_WINDOW_SIZE, (signed)(branches_taken.size() - it->branches_before)); for (; pos < maxpos; ++pos) { branchmask |= ((unsigned) branches_taken[it->branches_before + pos])