Adapted plugin behavior obeying availabiltiy of instrumentation

interface and updated CMake files
This commit is contained in:
2018-04-06 02:45:11 +02:00
parent c8d5a7f616
commit 48a2ddb149
7 changed files with 16 additions and 6 deletions

View File

@ -30,6 +30,8 @@ if(GIT_FOUND)
set (VCS_REVISION ${GIT_SHA1})
endif()
conan_basic_setup()
# This line finds the boost lib and headers.
set(Boost_NO_BOOST_CMAKE ON) # Don't do a find_package in config mode before searching for a regular boost install.
find_package(Boost COMPONENTS program_options system thread REQUIRED)

View File

@ -60,6 +60,7 @@ iss::plugin::cycle_estimate::~cycle_estimate() {
bool iss::plugin::cycle_estimate::registration(const char* const version, vm_if& vm) {
arch_instr = vm.get_arch()->get_instrumentation_if();
if(!arch_instr) return false;
const std::string core_name = arch_instr->core_type_name();
Json::Value &val = root[core_name];
if(val.isArray()){
@ -77,9 +78,11 @@ bool iss::plugin::cycle_estimate::registration(const char* const version, vm_if&
}
}
return true;
}
void iss::plugin::cycle_estimate::callback(instr_info_t instr_info) {
assert(arch_instr && "No instrumentation interface available but callback executed");
auto entry = delays[instr_info.instr_id];
bool taken = (arch_instr->get_next_pc()-arch_instr->get_pc()) != (entry.size/8);
if(taken && entry.taken > 1 ) // 1 is the default increment per instruction

View File

@ -64,7 +64,9 @@ iss::plugin::instruction_count::~instruction_count() {
}
bool iss::plugin::instruction_count::registration(const char* const version, vm_if& vm) {
const std::string core_name = vm.get_arch()->get_instrumentation_if()->core_type_name();
auto instr_if = vm.get_arch()->get_instrumentation_if();
if(!instr_if) return false;
const std::string core_name = instr_if->core_type_name();
Json::Value &val = root[core_name];
if(val.isArray()){
delays.reserve(val.size());