Files
fail/tools/import-trace/RegisterImporter.hpp
Christian Dietrich f47d50b182 import-trace: introduce RegisterImporter
The RegisterImporter disassembles the binary and adds a trace event
for each byte read or written from register. The register number (Fail
Register Numbers are used) and the offset within the register are
encoded within the trace event.

Change-Id: I2d2fd720841fedeeff5f28b64f24ec5f6d2ea0c3
2013-07-05 10:19:58 +02:00

50 lines
1.2 KiB
C++

#ifndef __REGISTER_IMPORTER_H__
#define __REGISTER_IMPORTER_H__
#include "util/CommandLine.hpp"
#include "Importer.hpp"
#ifndef __puma
#include "util/llvmdisassembler/LLVMDisassembler.hpp"
#endif
class RegisterImporter : public Importer {
#ifndef __puma
llvm::OwningPtr<llvm::object::Binary> binary;
llvm::OwningPtr<fail::LLVMDisassembler> disas;
bool addRegisterTrace(fail::simtime_t curtime, instruction_count_t instr,
const Trace_Event &ev,
const fail::LLVMtoFailTranslator::reginfo_t &info,
char access_type);
#endif
fail::CommandLine::option_handle NO_GP, FLAGS, IP;
bool do_gp, do_flags, do_ip;
public:
RegisterImporter() : Importer(), do_gp(true), do_flags(false), do_ip(false) {}
/**
* Callback function that can be used to add command line options
* to the cmd interface
*/
virtual bool cb_commandline_init();
virtual bool handle_ip_event(fail::simtime_t curtime, instruction_count_t instr,
const Trace_Event &ev);
virtual bool handle_mem_event(fail::simtime_t curtime, instruction_count_t instr,
const Trace_Event &ev) {
/* ignore on purpose */
return true;
}
virtual void open_unused_ec_intervals() {
/* empty, Memory Map has a different meaning in this importer */
}
};
#endif