# HG changeset patch # User Michael Pavone # Date 1643601369 28800 # Node ID afc54649ebed26a156d4c79751ad962b895a1d41 # Parent 8e51c0c3f2e3507b4b7bc5a48bb45f80c0ae57de Fix error in code write detection introduced from "wide" jcc change diff -r 8e51c0c3f2e3 -r afc54649ebed backend_x86.c --- a/backend_x86.c Sun Jan 30 19:55:33 2022 -0800 +++ b/backend_x86.c Sun Jan 30 19:56:09 2022 -0800 @@ -310,19 +310,6 @@ } retn(code); } - if (memmap[chunk].flags & MMAP_CODE) { - uint32_t added_offset; - if (memmap[chunk].mask == opts->address_mask) { - added_offset = (memmap[chunk].end - memmap[chunk].start) / (1 << opts->ram_flags_shift) / 8; - } else { - added_offset = (memmap[chunk].mask + 1) / (1 << opts->ram_flags_shift) / 8; - } - if (added_offset) { - ram_flags_off += added_offset; - } else { - ram_flags_off += 1; - } - } if (lb_jcc) { if (need_wide_jcc) { *((int32_t*)lb_jcc) = code->cur - (lb_jcc+4); @@ -350,6 +337,19 @@ ub_jcc = NULL; } + if (memmap[chunk].flags & MMAP_CODE) { + uint32_t added_offset; + if (memmap[chunk].mask == opts->address_mask) { + added_offset = (memmap[chunk].end - memmap[chunk].start) / (1 << opts->ram_flags_shift) / 8; + } else { + added_offset = (memmap[chunk].mask + 1) / (1 << opts->ram_flags_shift) / 8; + } + if (added_offset) { + ram_flags_off += added_offset; + } else { + ram_flags_off += 1; + } + } if (need_wide_jcc) { need_wide_jcc = 0; }