On 19/10/2020 03.39, Joelle van Dyne wrote: > These set of changes brings QEMU TCG to iOS devices and future Apple Silicon > devices. They were originally developed last year and have been working in the > UTM app. Recently, we ported the changes to master, re-wrote a lot of the > build > script changes for meson, and broke up the patches into more distinct units. > > A summary of the changes: > > * `CONFIG_IOS` and `CONFIG_IOS_JIT` defined when building for iOS and > iOS specific changes (as well as unsupported code) are gated behind it. > * A new dependency, libucontext is added since iOS does not have native > ucontext > and broken support for sigaltstack. libucontext is available as a new option > for coroutine backend. > * On stock iOS devices, there is a workaround for running JIT code without > any special entitlement. It requires the JIT region to be mirror mapped with > one region RW and another one RX. To support this style of JIT, TCG is > changed > to support writing to a different code_ptr. These changes are gated by the > `CONFIG_IOS_JIT`. > * For (recent) jailbroken iOS devices as well as upcoming Apple Silicon > devices, > there are new rules for applications supporting JIT (with the proper > entitlement). These rules are implemented as well. > > Since v2: > > * Changed getting mirror pointer from a macro to inline functions > * Split constification of TCG code pointers to separate patch > * Removed slirp updates (will send future patch once slirp changes are in) > * Removed shared library patch (will send future patch) > > -j > > osy (9): > configure: option to disable host block devices > configure: cross-compiling without cross_prefix > qemu: add support for iOS host > coroutine: add libucontext as external library > tcg: add const hints for code pointers > tcg: implement mirror mapped JIT for iOS > tcg: mirror mapping RWX pages for iOS optional > tcg: support JIT on Apple Silicon > block: check availablity for preadv/pwritev on mac
Is there maybe also a way to compile-test this automatically in a macOS container on Cirrus-CI or Travis, too? ... otherwise I'm a little bit afraid that this support might bit-rot quite fast again, since most developers don't have the corresponding setup... Thomas