FEX 2203 Tagged!
More changes all over this place this month.
- Implemented some new CPU extensions
- RDRAND/RDSEED and 3DNow!
- RDRAND only exposed if your host CPU supports the extension
- 3DNow! implementation also including the Extended and Geode exclusive instructions
- RDRAND/RDSEED and 3DNow!
- Implemented a way for guest applications to use CPUID to see FEX hypervisor
- Any additional options we want the guest to see can be passed through
- Preparation work for JIT code caching
- Switching over to loading function pointers from our state options to make the JIT code PIC compliant
- Adding robin_map which the code cache will use
- Updating vixl to have finer grained cursor control for JIT relocations
- A new IR JSON format
- This allows cleaner IR implementations and more consistent emitter functions
- Allow emitter functions to have validation inside of them for strict validation
- Automatic SSA argument type validation to remove invalid IR generation
- Already found a bug in our x87 code generation
- Musl fixes
- FEX-Emu can now both be compiled for Musl and run Musl compiled applications
- Termux fixes
- FEX-Emu now more cleanly compiles under Termux
- Hard to use due to raw syscall usage and Android seccomp
- proot is likely required here
- FEX-Emu now more cleanly compiles under Termux
FEXCore
- JIT
- Implements x87 fallback helpers as lookups in to state (b65194f)
- ARMJIT
- Switches over to loading pointers from state (1ef78d0)
- Allow non-optimizing LoadConstant (e9c7c76)
- JITx86
- Switches over to loading pointers from state (99dcda7)
- OpcodeDispatcher
- Adds support for RDRAND/RDSEED (bebcab0)
- Fixes CMPXCHG8B/16B with 66h/72h/73h prefix (d8a3687)
- Implements all the 3DNow! instructions (ac32eca)
- Fixes weirdo edge case in segment moving (ffcaf29)
- IR
- New IR JSON format (3e8c6d0)
- CPUID
- Implements leaf 4000_0000 (4a3cbf1)
- Allows guest applications to see through CPUID that they are running in a FEX “hypervisor”
- Implements leaf 4000_0000 (4a3cbf1)
- UContext
- Fixes 32-bit siginfo_t copying definition (cb491a8)
Frontend
- ELFCodeLoader
- Fixes typo in AT_BASE calculation (43fada7)
- Fixing running MUSL compiled applications
- Fixes typo in AT_BASE calculation (43fada7)
- FEXGetConfig
- Fix –current-rootfs option (76f86e5)
- FEXLoader
- Adds back required MAP_GROWSDOWN (252dcfe)
- Fixes Ender Lilies
- Removes memory mapping check on startup (a8e5a0a)
- Fixes assert when running under proot
- Adds back required MAP_GROWSDOWN (252dcfe)
- Linux
- Fix missing types for syscall strace (64d1840)
- x32: Fixes tricky stat64 defines (287c65d)
- Make sure to use correct accessors for sigevent (62397bb)
- Allow classifying syscalls with flags (2933a00)
- Speeds up some syscalls during emulation
- LinuxAllocator
- Fixes bug with old kernels and hint allocation (08938ec)
- Scripts
- Stop using deprecated Distutils (46ac05e)
- Updates CPU fitting script for latest CPUs (2af23d9)
- Ensures that Cortex-X2, A710, and A510 native features are enabled
- Telemetry
- Fix missing telemetry names (30803c6)
- TestHarnessRunner
- Wire up environment variable option setting (3ba2d6c)
- Misc
- Adds tsl::robin_map (a7ad7f4)
- Update vixl to fix assert (57a5654)
- Affects new Cortex-X2, A710, A510 CPUs which support MTE
- Termux fixes (b4e0565)
- Improve compatibility with older uapi kernel headers (fa554d3)
- Updates vixl for new cursor updating methods (5ec6ee5)
- Adds option to disable ccache (0db7205)
- Fixes Host and guest thunks install path (a5fb7e7)
- Removes MAP_GROWSDOWN usage (afa7172)
- Miscellaneous thunk cleanups (4bb3a54)
- Enable proper IDE integration of thunk libraries (5854d4a)
- Updates Readme to fix install script (defd3be)
- Some fixes for older environments (1b99495)
- unittests
- Disables Interpreter tests when its disabled (3453023)
See the 2203 Release Notes or the detailed change log in Github.
Written on March 6, 2022