ecos: preparations for guest-image independent fail client

Additional change: prerequisite data files are not opened in append mode
anymore.  These files can be easily reproduced, and append mode does more harm
than good here.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1906 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
hsc
2012-11-09 15:37:14 +00:00
parent bbf7731aa2
commit a26aeb52ee
4 changed files with 66 additions and 24 deletions

View File

@ -35,11 +35,6 @@ using namespace fail;
#error This experiment needs: breakpoints, traps, save, and restore. Enable these in the configuration.
#endif
char const * const mm_filename = "memory_map.txt";
char const * const statename = "ecos_kernel_test.state";
char const * const traceinfo_name = "trace_info.txt";
#if PREREQUISITES
bool EcosKernelTestExperiment::retrieveGuestAddresses() {
log << "STEP 0: record memory map with addresses of 'interesting' objects" << endl;
@ -49,9 +44,9 @@ bool EcosKernelTestExperiment::retrieveGuestAddresses() {
bp.setWatchInstructionPointer(ECOS_FUNC_FINISH);
// memory map serialization
ofstream mm(mm_filename, ios::out | ios::app);
ofstream mm(EcosKernelTestCampaign::filename_memorymap().c_str(), ios::out);
if (!mm.is_open()) {
log << "failed to open " << mm_filename << endl;
log << "failed to open " << EcosKernelTestCampaign::filename_memorymap() << endl;
return false;
}
@ -118,7 +113,7 @@ bool EcosKernelTestExperiment::establishState() {
log << "test function entry reached, saving state" << endl;
log << "EIP = " << hex << bp.getTriggerInstructionPointer() << endl;
//log << "error_corrected = " << dec << ((int)simulator.getMemoryManager().getByte(ECC_ERROR_CORRECTED)) << endl;
simulator.save(statename);
simulator.save(EcosKernelTestCampaign::filename_state());
assert(bp.getTriggerInstructionPointer() == ECOS_FUNC_ENTRY);
assert(simulator.getRegisterManager().getInstructionPointer() == ECOS_FUNC_ENTRY);
@ -131,7 +126,7 @@ bool EcosKernelTestExperiment::performTrace() {
log << "STEP 2: record trace for fault-space pruning" << endl;
log << "restoring state" << endl;
simulator.restore(statename);
simulator.restore(EcosKernelTestCampaign::filename_state());
log << "EIP = " << hex << simulator.getRegisterManager().getInstructionPointer() << endl;
assert(simulator.getRegisterManager().getInstructionPointer() == ECOS_FUNC_ENTRY);
@ -140,7 +135,7 @@ bool EcosKernelTestExperiment::performTrace() {
// restrict memory access logging to injection target
MemoryMap mm;
EcosKernelTestCampaign::readMemoryMap(mm, mm_filename);
EcosKernelTestCampaign::readMemoryMap(mm, EcosKernelTestCampaign::filename_memorymap().c_str());
tp.restrictMemoryAddresses(&mm);
@ -281,7 +276,7 @@ bool EcosKernelTestExperiment::faultInjection() {
<< " mem " << mem_addr << "+" << bit_offset << endl;
log << "restoring state" << endl;
simulator.restore(statename);
simulator.restore(EcosKernelTestCampaign::filename_state(m_variant, m_benchmark));
// XXX debug
/*