adds flimit that gets properly evaluated in interp
This commit is contained in:
parent
b5341700aa
commit
6609d12582
14
src/main.cpp
14
src/main.cpp
@ -69,7 +69,8 @@ int main(int argc, char* argv[]) {
|
||||
("logfile,l", po::value<std::string>(), "Sets default log file.")
|
||||
("disass,d", po::value<std::string>()->implicit_value(""), "Enables disassembly")
|
||||
("gdb-port,g", po::value<unsigned>()->default_value(0), "enable gdb server and specify port to use")
|
||||
("instructions,i", po::value<uint64_t>()->default_value(std::numeric_limits<uint64_t>::max()), "max. number of instructions to simulate")
|
||||
("ilimit,i", po::value<uint64_t>()->default_value(std::numeric_limits<uint64_t>::max()), "max. number of instructions to simulate")
|
||||
("flimit", po::value<uint64_t>()->default_value(std::numeric_limits<uint64_t>::max()), "max. number of fetches to simulate")
|
||||
("reset,r", po::value<std::string>(), "reset address")
|
||||
("dump-ir", "dump the intermediate representation")
|
||||
("elf,f", po::value<std::vector<std::string>>(), "ELF file(s) to load")
|
||||
@ -215,8 +216,15 @@ int main(int argc, char* argv[]) {
|
||||
start_address = str.find("0x") == 0 ? std::stoull(str.substr(2), nullptr, 16) : std::stoull(str, nullptr, 10);
|
||||
}
|
||||
vm->reset(start_address);
|
||||
auto cycles = clim["instructions"].as<uint64_t>();
|
||||
res = vm->start(cycles, dump);
|
||||
auto limit = clim["ilimit"].as<uint64_t>();
|
||||
auto cond = iss::finish_cond_e::JUMP_TO_SELF;
|
||||
if(clim.count("flimit")) {
|
||||
cond = cond | iss::finish_cond_e::FCOUNT_LIMIT;
|
||||
limit = clim["flimit"].as<uint64_t>();
|
||||
} else {
|
||||
cond = cond | iss::finish_cond_e::ICOUNT_LIMIT;
|
||||
}
|
||||
res = vm->start(limit, dump, cond);
|
||||
|
||||
auto instr_if = vm->get_arch()->get_instrumentation_if();
|
||||
// this assumes a single input file
|
||||
|
Loading…
Reference in New Issue
Block a user