Fixes two issues with rip-relative push translation:
-
The push must be cleared on the first instruction of a subsequent consecutive mangling region. For this we split translate_walk_state() into pre_instr and post_instr versions.
This split then raises an assert due to recreate_fragment_ilist() changing an exit jump's target without re-instating the instr_set_our_mangling(), which we also fix here.
-
The assert about stack changes in the epilogue must be relaxed.
Tested on the decode-stress test on Linux x86, which is not yet fully enabled in the suite as it needs more work: that's #1025 (closed).
Issue: #1025 (closed), #4679 (closed) Fixes #4679 (closed)