Skip to content

v0.1.3

Choose a tag to compare

@rotmanjanez rotmanjanez released this 27 Jun 19:12

New: portable mprotect (syscall 10)

Adds a portable mprotect(addr, len, prot) handler so guests can change
page protections at runtime — e.g. JITs marking freshly written pages
executable, or glibc relocating then read-only-protecting GOT segments.

The address space is now bound to its Machine, so map/unmap/protect
(and direct caller edits) transparently invalidate any decoded basic blocks
cached for the affected pages. A page's execute permission is baked into a
decoded block at translation time, so without this a stale block would keep
executing under the old protection after an mprotect. Wired into both the
Python glibc=True chain and the native frontend.

Internal: per-instance loggers

Logging moved from global state to per-Machine instance loggers, so
multiple simulator instances in one process no longer share or clobber
logging configuration.

Full changelog: v0.1.2...v0.1.3