Skip to content
FEX Release FEX-2112

- Arm64
 - Reduce the chance of hanging on reentrant allocations (8ab6830f)
 - Adds an inline syscall optimization (f7468703)

- BucketList
 - Minor API touchups (baadf0b9)

- CMake
 - Adds option to enable time-trace compile option (919e2bc3)

- CPUID
 - Call handler functions directly (ffee22d3)

- CompileService
 - Store WorkItem instances as unique_ptr (ef772c3e)

- Dispatcher
 - Removes usage of SignalFrame stack on JITs (d81d5e21)
 - Use std::vector as the underlying container for std::stack (61ccec37)
 - Partial support for RIP adjust in signal handler (77093a7f)

- ELFCodeLoader
 - Fixes BRK allocation on some ELF loading (b327daf5)

- EnumUtils
 - Remove shift operators from helper macro (977d92b7)

- FEXCore
 - Fixes CompileService race condition on thread creation (5345f7fa)
 - Centralize alignment utility functions in one header (966272ce)
 - Fixes ERROR_AND_DIE (fbd14b65)
 - Supports guest SIGILL  (6e1ea92c)

- FEXLoader
 - Change 32-bit memory check error to warning (82ebdf52)
 - Print memory map when 32-bit intersect happens (e6d285a7)

- Frontend
 - Handle VEX RXB bits (d47182b6)
 - Mark modrm function LUT as static (c6662a46)

- GDBStub
 - Fixes a few hangs and crashes  (e027b83a)

- General
 - Migrate logging over to fmt where possible  (513b02fd)

- IR
 - Make some interface functions accept pointers to const  (8c38f936)
 - Convert NodeID into a strong type (b93871ff)
 - Add type alias for Node IDs  (1f306d66)

- Interpreter
 - Build op handler table at compile-time (63f9e0b4)

- InterpreterCore

 - Dispatcher
  - Resolve unused variable warnings (a04cc4dc)

- InterpreterOps
 - Mark F80CMP array as static constexpr (13ad5b66)

- JIT
 - Eliminate redundant jump target map lookups (8ef02783)
 - Ensures signals in compileservice JIT space is handled (97e3a364)

- JitSymbols
 - Make use of fmt (db0740be)

- Linux
 - Fixes sched_getaffinity (d5bf6414)
 - Fixes MAP_32BIT error case (92ae6ae2)
 - Fixes sigprocmask with new and old set being the same address (7bb78912)
 - Passthrough 32-bit syscalls that can be (3dc938b8)
 - Emulate MAP_32BIT on mmap (081d0169)
 - SignalDelegator update signal mask on return from sigsuspend (90511ddd)

- OpcodeDecoder
 - Shorten up GPR and MM base offset retrieval (59ed91c5)
 - Convert enums into enum classes where applicable (d1fa8bcf)
 - Add support for ADX (d3cd354c)

- OpcodeDispatcher
 - Remove debug message (d883b4bf)
 - Implement BZHI (50c8d9ed)
 - Amend return types of BitSize helpers (c63c5fb6)
 - Implement MULX (498a845c)
 - Resolve sign mismatches in loops (ad864e0e)
 - Add helper for getting bit sizes (3a3cbf2b)
 - Handle RORX (51d21d86)
 - Implement BMI2 SARX/SHLX/SHRX (e37a0bbd)

- RegisterAllocationPass
 - Resolve sign comparison mismatch in CalculateNodeInterference() (597e4e1d)
 - Reduce usages of NodeIDs where applicable (19a06519)

- RootFS
 - Keep rootfs around while in container (16f1ad46)

- Syscalls
 - Move construction of syscall name map into GetSyscallName() (0560e9be)

- Tests
 - Minor cleanup (2a894bc1)

- Thunks
 - Fail loudly if thunking is enabled for a library that isn't installed (b1b61608)

- ThunksDB
 - Updates file to include local libs (e0d40dd4)

- Misc
 - Adds Socket logger and tool (6c93b6f7)
 - IR.json/json_ir_generator: Minor touchups to generated IR utilities (9b43f94f)
 - Updates syscalls to 5.16 syscalls (c4d05fb8)
 - Various packaging improvements (23e583e1)
 - Various thunk library cleanups (3730a428)
 - Updates 32-bit DRM emulation (a92233c7)

- jit

 - arm64
  - COND_FGT should map to gt, not hi, as it is not FGTU (b45603d1)

- unittests
 - Enables 32-bit host runner (cabb58ad)