bochs: restore original RIP increase behavior

The now commented-out variant that was introduced in commit be9d291
(when FAIL* was still in an SVN repo, r1702) may be necessary for some
specific system behavior after modifying the currently executed
instruction, but breaks random-jump FI (import-trace -i
RandomJumpImporter).

Change-Id: I1ef3dc6dceab66b01cddd988e0f201065e404f99
This commit is contained in:
Horst Schirmeier
2020-05-23 22:10:28 +02:00
parent 8d1657a409
commit dc73349a4d

View File

@ -151,16 +151,22 @@ void BX_CPU_C::cpu_loop(Bit32u max_instr_count)
debug_disasm_instruction(BX_CPU_THIS_PTR prev_rip);
}
#endif
#if 0
// DanceOS: Save original instruction length in case we modify the instruction.
unsigned orig_len = i->ilen();
#endif
// DanceOS: Aspect "hook"
defineCPULoopJoinPoint(BX_CPU_THIS, i);
// instruction decoding completed -> continue with execution
// want to allow changing of the instruction inside instrumentation callback
BX_INSTR_BEFORE_EXECUTION(BX_CPU_ID, i);
#if 0
// DanceOS: Use original length (see above).
RIP += orig_len;
#else
RIP += i->ilen();
#endif
BX_CPU_CALL_METHOD(i->execute, (i)); // might iterate repeat instruction
BX_CPU_THIS_PTR prev_rip = RIP; // commit new RIP
BX_INSTR_AFTER_EXECUTION(BX_CPU_ID, i);