Skip to content

Releases: FEX-Emu/FEX

FEX-2206

04 Jun 22:46
Compare
Choose a tag to compare

Read the blog post at FEX-Emu's Site!

Quite a large amount of changes this month since we cancelled last month's release.

Steam's webhelper working again

Steam started enabling the chromium sandbox. Seccomp isn't supported in FEX-Emu so it was crashing early on.
Forcibly disable it trying to use the sandbox using an application profile.
This lets the game library be visible again, although it can take a while to appear.

Fix LRCPC and add support for LRCPC2

There was a bug in our CMPXCHG implementation that wasn't using ARM's acquire-release semantics accidentally.
Fixing this bug allowed us to reenable our TSO emulation using LRCPC.
Additionally we have added support for LRCPC2 which gives us some immediate encoded instructions to further reduce overhead.

On hardware that supports LRCPC these can result in a reasonable performance uplift.

SHA-1 and SHA-256 instructions implemented

These SHA instruction have been implemented and the CPUID bit is now exposed.
This is a GPR based implementation, an implementation using AArch64's equivalent SHA instructions will be implemented at a later time.

Self-modifying code support improvements

Many things have changed with supporting self-modifying code in a more extensive fashion.
FEX-Emu will now tracking guest allocations of executable memory and when the code has been modified, we will clear the JIT caches.
This happens for both true self-modifying code and also libraries being loaded.
Fault handling is employed to know when code is modified in memory to ensure we can tracak changes.
This is a new setting in FEXConfig called mtrack. The older syscall only tracking path is deprecated but still available for testing.

Option to emulate x87 with 64-bit float operations

Big shout out to CallumDev for implementing this long awaited feature.

A major performance problem of emulating x86 is any older game will be compiled to use the x87 extension. This is especially true for 32-bit games.
The problem with this extension is that by default it uses 80-bit floats, which AArch64 doesn't support.
We end up emulating this entire extension using a soft-float implementaiton, which while being quite accurate, is obscenely slow.

This performance hack is now available to remove a significant amount of the overhead by operating x87 instructions using 64-bit float scalar
operations instead.
This is known to be inaccurate, but most Windows games will actually be configuring the x87 unit to be lower precision than 80-bit.
Additionally most games don't actually need the extra precision that 80-bit provides, so it is usually safe to emulate it more inaccurately.

This may still have some bugs, we know at least one game that has issues that aren't explained by pure precision problems. The feature can be enabled
in FEXConfig under the Hacks tab, look for "X87 Reduced Precision"

Clone3 syscall fixed

With Glibc 2.34 released, this project has started using the clone3 syscall for creating threads.
FEX's implementation was mostly untested which resulted in all applications breaking.
Stack pointer behaviour was broken and now with this fixed, glibc 2.34 now works out of the box.

FEXRootFSFetcher don't try to continue download

FEX-Emu's CDN doesn't support continuing file downloads. Disable to not cause issues.

FEXCore: Reclaimable thread pool allocator

FEXCore now uses an intrusive pooling allocator to allow sleeping threads to give back memory to the pool.
This allows multiple threads to share a memory resource, reducing memory usage by a significant amount if an application has a bunch of sleeping
threads.

FEXBash: Set PS1 environment variable to show running under emulation

Once running FEXBash it can be hard to tell if you're running your bash terminal under emulation.
Setting PS1 to FEXBash> makes it easier to tell that the terminal is running under emulation.

FEXBash> uname -a

Linux ryanh-TR2 5.17.5 #FEX-2206 SMP Jun 4 2022 15:11:07 x86_64 x86_64 x86_64 GNU/Linux

OpcodeDispatcher: Fixes PEXTRB

Newer Unreal engine releases were generating a PEXTRB instruction that our frontend decoder was decoding incorrectly.
Typically this would result in a crash.
This fixes both Dirt 4 and Psychonauts 2.

Misc

  • CMake
    • Add support for mold
    • Add flag for defined signed overflow handling
  • Arm64: Optimize constant generation with ADRP+ADR
  • EmulatedFiles: Fixes temporary file generation flags
  • Struct Verifier: Fixes some bugs with DRM headers not getting picked up
  • Linux v5.17 and v5.18 support
  • JIT: Code relocation support
  • OpcodeDispatcher:
    • Adds support for non-temporal loadstores
    • Implements support for PAUSE instruction
  • Syscalls:
    • 32-bit mmap syscalls fixes
      • Has been broken since the start, most applications use mmap2 instead
      • Fixes Kega Fusion
  • CompileService: Removed since it is no longer required
    • We no longer try to compile in a reentrant safe fashion
  • JITSymbols: Cleaner printing of RIP relative to a file
  • Standard TODO markers for code searching
  • Some 32-bit FS/GS writing fixes
    • Not really used so didn't affect anything

Raw Changes

FEX Release FEX-2206

  • AOTIR

  • copy RAData and IRList, make sure data is accessible (da2e44d)

  • AppConfig

  • Inject --no-sandbox in to steamwebhelper (c14c0c2)

  • ArchHelpers

  • Adds relocation struct defines (b5ae9e4)

  • Arm64

  • Fix LDAPUR/STLUR DMB backpatch (27f2e0b)

  • Adds support for RCPC2 extension (f8ba373)

  • Fixes AtomicSwap (70988cc)

  • Arm64Emitter

  • Optimize constants with ADRP and ADR (912dbfe)

  • CMake

  • C/C++ flags for defined singed overflow warping (2e05349)

  • Add option to use the mold linker (5884114)

  • CompileService

  • Removes no longer necessary service thread (b1033ed)

  • Config

  • Adds code cache config option (278ca52)

  • Core

  • Adds Code Object Cache service (13f3c6e)

  • context-wide guest code invalidations (d810988)

  • EmulatedFiles

  • Fixes temporary file flags (4fbc266)

  • F64

  • Implement FCW using host rounding mode (db3854e)

  • Fix FILD and FIST for Size < 8 (89d6752)

  • FEXBash

  • Set PS1 to make it more obvious when running under FEX (ec38d58)

  • FEXCore

  • Adds refcount_shared_mutex class (1e597bf)

  • Reclaimable thread pool allocator (8a7f395)

  • FEXLoader

  • Fix create_directories check for aotir .path file writting (90f338d)

  • FEXLogServer

  • Stop improper use of std::erase_if (d523b7a)

  • FEXRootFSFetcher

  • Don't continue download (fa87c73)

  • JitSymbols

  • Print file+offset if possible (a715627)

  • Linux

  • Fixes 32-bit mmap (3fd136b)

  • MemAllocator32Bit

  • Add missing lock to shmdt, fix error returns (b2b4c2b)

  • OpcodeDispatcher

  • Implement SHA256 instructions (3bbff8a)

  • Handle SHA-1 instructions (8dd9a5b)

  • Implements support for PAUSE (da48020)

  • Fixes pextrb with high registers (fe11bd2)

  • Remove debugging dump statement (c8dc663)

  • Adds support for non-temporal loadstores (ba78dff)

  • ScopedSignalMask

  • Add shared mutex support, move constructors (8e36f53)

  • Syscalls

  • Fixes clone3 stack pointer (0ed9654)

  • Linux

  • Add guest[Mmap/Munmap] (b9d878b)

  • Refactor guest mman tracking (ce0f5db)

  • TestHarnessRunner

  • Use guest mapper for test harness files (b78af2f...

Read more

FEX-2204

19 Apr 08:27
Compare
Choose a tag to compare

Changes

CPUID

  • Adds 4000_0001h function (977bda9)
    • Allows guest applications to check the hypervisor for FEX-Emu

FEXCore

  • Delete IR after it is used (a247df5)
    • Lowers FEX memory usage
  • Fixes #1618 (60c7ea6)
    • Could have caused a crash in the signal handler
  • Removes unused debug data (8422fc6)

OpcodeDispatcher

  • Fixes SIGILL on unsupported host instructions (042cd35)
  • Fixes FNINIT (187c641)
    • FCW wasn't initialized correctly. Fixes a Visual Novel game engine CPUID initialization code.

JIT

  • Emit identification string in the code buffers (23a1c64)
  • Adds comment to EmitDetectionString (d39df8d)
  • Get long divide out of the hot path (8ad1472)

FileManager

  • Fix realpath failed on debian buster (91665fd)

Linux

  • Fixes MAP_32BIT supported range (fad91bb)

Scripts

  • Updates AArch64 fit for Clang 14 (6b3cd3d)

Softfloat

TestHarnessRunner

Misc

  • Change page define usages over to self-defined (f5f9512)
  • Adds missing include (b43937a)

Termux

  • Adds a cmake option for forcing a termux build (5de6c86)
  • Disables GUI applications in a Termux build (fb27cb4)

GDBServer

  • GDBServer improvements: Three's a crowd (7b0265f)
  • Gdbstub improvements: The sequel (6a5abd3)
  • GDBServer improvements (53ffe5d)

Documentation

  • Adds hypervisor CPUID information (1f1c214)
  • Remove stale text (5cc0c0a)
  • Update ReleaseProcess docs for Termux (9466458)

FEX-2203

06 Mar 13:18
Compare
Choose a tag to compare

Changes

  • 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

    • Fixes CMPXCHG8B/16B with 66h/72h/73h prefix (d8a3687)
    • Implements all the 3DNow! instructions (ac32eca)
    • Fixes weirdo edge case in segment moving (ffcaf29)
  • CPUID

    • Implements leaf 4000_0000 (4a3cbf1)
    • Allows guest applications to see through CPUID that they are running in a FEX "hypervisor"
  • ELFCodeLoader

    • Fixes typo in AT_BASE calculation (43fada7)
  • FEXCore

    • Adds support for RDRAND/RDSEED (bebcab0)
  • 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
  • IR

  • Linux

    • Fix missing types for syscall strace (64d1840)
    • x32: Fixes tricky stat64 defines (287c65d)
    • Make sure to use correct accessors for sigevent (62397bb)
  • LinuxAllocator

    • Fixes bug with old kernels and hint allocation (08938ec)
  • Scripts

    • Stop using deprecated Distutils (46ac05e)
    • Updates CPU fitting script for latest CPUs (2af23d9)
  • Telemetry

    • Fix missing telemetry names (30803c6)
  • TestHarnessRunner

    • Wire up environment variable option setting (3ba2d6c)
  • UContext

    • Fixes 32-bit siginfo_t copying definition (cb491a8)
  • Misc

    • Adds tsl::robin_map (a7ad7f4)
    • Update vixl to fix assert (57a5654)
    • Termux fixes (b4e0565)
    • Allow classifying syscalls with flags (2933a00)
    • 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)

FEX-2202

06 Feb 07:12
Compare
Choose a tag to compare

Changes

FEXCore

  • AArch64

    • Single instruction optimization for AESKeyGenAssist (6744a06)
  • CPUID

    • Fixes ASAN problem with reading midr (6022715)
  • OpcodeDispatcher

    • Fixes CRC32 decoding in 0F_38 table (1c24206)
    • Implements PCMPGTQ (caffad8)
    • Implements CRC32 instruction (b7a76af)
    • Removes extraneous extract in VFCMP (4c92b56)
    • Fixes ptest flags calculation. (0a8717d)
    • Fixes signed displacement wraparound on 32-bit (e2798e3)
  • IR

    • Fixes some wrong offsets in passes (c252f8b)
    • Fixes SSA ID printing (a2aa9f3)
  • Softfloat

    • Stop doing special handling for FREM (9d08451)
  • Misc

    • Defer a significant number of ALU flag calculation (832d013)

Linux

  • Fixes for older build environments (ade0d0f)
  • Fixes 32-bit getsockopt and setsockopt (d914954)
  • Handles the remaining 32-bit siginfo_t usage (7768f69)
  • Fixes emulatedpath with symlink following (5dda3a1)

Thunks

  • Add meta data to libvulkan_device (a0026c9)

Tools

  • SocketLogging

    • Fixes MsgHandler not syncing with Assert level (9eb5ba5)
  • FEXLogServer

    • Stop duplicating and dropping messages (eb17ede)
  • FEXRootFSFetcher

    • Fixes some edge case behaviours (13f35f7)
    • Check if curl is installed and fail before running (784cbdd)
  • FEXLoader

    • Resolve the absolute path to rootfs if possible (023aaaa)

CMake

  • Always use local xxhash to statically link (5978143)
  • Adds TUNE_ARCH option (e36beb8)

FMT

Vixl

  • Point vixl submodule towards FEX's fork (a3a138e)
  • Update vixl (8e3893d)

Unit tests

  • Revise POSIX tests known failures and disabled (ea76de0)
  • Fixes ROOTFS needing to be defined prior to cmake (7c08b67)
  • Adds a BCD unit test (609587f)
  • Fixes InterruptableConditionVariable test to use the syscal… (82e5977)

Misc

  • Fixes FEXConfig build (d308a43)
  • Adds an option to disable the IR interpreter (11a5105)
  • Fix pressure vessel hangs (334a8ef)
  • Fixes some of the warnings that cropped up (bf581de)

FEX-2201

04 Jan 03:35
Compare
Choose a tag to compare

Changes

A large amount of changes this month.

  • We now support BMI2, RDTSCP, CLZero.
  • We tell the guest what ARM CPU name we are running on.
  • We expose the hybrid CPU flag flag on big.LITTLE ARM SoCs.
  • Bunches of syscall fixes, JIT compile time speed increases, usability improvements.
  • Tons more.

A new FEXRootFSFetcher tool for downloading prebuilt RootFS images.
A Python script for automatically setting up an Ubuntu PPA and RootFS.

  • See our quick start guide to see how here
  • Or see the Ubuntu PPA here

FEXCore

Arm64

  • Fixes vixl assertions around ubfm usage (5654f9a)
  • Fixes MapSelectCC FGT flag (13087f8)

CPUID

  • Fixes another memory overflow issue (0e45b98)
  • Fixes crash on unknown CPU (be3e3a3)
  • CPUID Expose Hybrid flag and CPU names (9394e49)

Context

  • Take some arguments as pointer-to-const (9d43904)

Dispatcher

  • Disables unsync context message (154468c)
  • Adds more state reconstruction to state restore (fa6f1b1)

OpcodeDispatcher

X86Tables

  • Build Unknown op definition tables at compile time (e8670bb)
  • Speed up initialization of X86Tables (e99a23c)

HostFeatures

  • Detect if the host CPU suports float exceptions (117cbde)
  • Consolidates HostFeatures flags (e24eb7a)

IR

  • Fixes sized constant mask (565d1e2)

Misc

  • Don't use Run() inside RunUntilExit() (0bf5776)
  • Fixes a memcpy overflow in processor brand (340699c)
  • Fixes FEXCore_Base config dependency (95bd309)
  • Implements recoverable INTO instruction (cd4269f)
  • Reorganizes some AOT related code (d4655fb)

Linux Emulation/Syscalls

  • Fixes pidfd_send_signal for 32-bit (ac63a2b)
  • Finish 32-bit msqid_ds usage (98210fd)
  • Implements the remaining 32-bit syscalls (bc120b9)
  • Fixes semid_ds_64 definition (f2fd9d9)
  • Fixes 32-bit shmctl (45430e9)
  • Adds the safe syscall unimplemented gap for x86-64 (e05d116)
  • Enable warnings (75e5df5)
  • Socket
  • Resolve sign comparison mismatch cases (097f48f)

Misc

CMake

  • Adds an OVERRIDE_VERSION option (0808599)
  • Adds a TUNE_CPU option (5146651)
  • Adds experimental libc++ option (f3a27a5)

Build fixes

  • Fixes build on Ubuntu 20.04 take 3 (8f83567)
  • Fixes build on Ubuntu 20.04 take 2 (059e8a9)
  • Fixes build on Ubuntu 20.04 (02005e7)
  • Fixes Ubuntu 20.04 compilation on AArch64 (47bd479)

Config

  • Enables all host threads by default (edce981)
  • Sanitize Core option (9bffaee)

Docs

  • Adds documentation about the FEX monthly release process (a65e7a0)

GDBServer

  • Fixes long string packet encodings (88ce9b5)

Misc

  • Stop hardcoding /usr/bin paths (1d5bd15)
  • Improves compile ability for older libraries (c691d70)
  • More AOT code movement (43dc232)
  • FEXMountDaemon squashfs fixes. (ea73c9d)
  • Update jemalloc for fixed libc overrides (c43af0e)
  • Implement thunk library generation using libclang (425d932)
  • {x32, x64}/Thread: Make use of .data() instead of .at(0) (b6499ac)
  • Adds a new ReentrantMutex to use for FEXCore (b9c4902)
  • NetStream: Move NetBuf definition into cpp file (9860e8b)

Tests

gvisor

unittests

  • Fixes a missing dependency on ASM tests (b078f51)
  • Enables remaining unaligned atomic tests on ARMv8.0 (fd04247)
  • Fixes known failures (5c4112f)

RootFS

  • Stop trying to retry rootfs after five times (a45bc75)
  • Be more robust against stale lock files (d4b31cd)

Tools

FEXConfig

FEXRootFSFetcher

  • Remove 0x prefix on hash (b72245a)
  • Adds a new tool to help set up a new RootFS (72e8a99)

Scripts

  • Adds a python script that can hand hold a user through FEX install (b276750)

FEX-2112

06 Dec 01:59
Compare
Choose a tag to compare

Arm64

  • Reduce the chance of hanging on reentrant allocations (8ab6830)
  • Adds an inline syscall optimization (f746870)
  • COND_FGT should map to gt, not hi, as it is not FGTU (b45603d)
    • Fixes steamwebhelper burning all CPU cores!

FEXCore

  • Fixes CompileService race condition on thread creation (5345f7f)
  • Centralize alignment utility functions in one header (966272c)
  • Fixes ERROR_AND_DIE (fbd14b6)
  • Supports guest SIGILL (6e1ea92)
  • CPUID
    • Call handler functions directly (ffee22d)
  • OpcodeDispatcher
    • Remove debug message (d883b4b)
    • Implement BZHI (50c8d9e)
    • Amend return types of BitSize helpers (c63c5fb)
    • Implement MULX (498a845)
    • Resolve sign mismatches in loops (ad864e0)
    • Add helper for getting bit sizes (3a3cbf2)
    • Handle RORX (51d21d8)
    • Implement BMI2 SARX/SHLX/SHRX (e37a0bb)
    • Removes usage of SignalFrame stack on JITs (d81d5e2)
    • Use std::vector as the underlying container for std::stack (61ccec3)
    • Partial support for RIP adjust in signal handler (77093a7)
    • Resolve unused variable warnings (a04cc4d)
  • OpcodeDecoder
    • Shorten up GPR and MM base offset retrieval (59ed91c)
    • Convert enums into enum classes where applicable (d1fa8bc)
    • Add support for ADX (d3cd354)
  • Frontend
    • Handle VEX RXB bits (d47182b)
    • Mark modrm function LUT as static (c6662a4)
  • GDBStub
  • Fixes a few hangs and crashes (e027b83)
  • Interpreter
    • Build op handler table at compile-time (63f9e0b)
    • Mark F80CMP array as static constexpr (13ad5b6)
  • JIT
    • Eliminate redundant jump target map lookups (8ef0278)
    • Ensures signals in compileservice JIT space is handled (97e3a36)
  • JitSymbols
  • IR
    • Make some interface functions accept pointers to const (8c38f93)
    • Convert NodeID into a strong type (b93871f)
    • Add type alias for Node IDs (1f306d6)
  • RegisterAllocationPass
    • Resolve sign comparison mismatch in CalculateNodeInterference() (597e4e1)
    • Reduce usages of NodeIDs where applicable (19a0651)

Linux

  • Updates syscalls to 5.16 syscalls (c4d05fb)
  • Fixes sched_getaffinity (d5bf641)
  • Fixes MAP_32BIT error case (92ae6ae)
  • Fixes sigprocmask with new and old set being the same address (7bb7891)
  • Passthrough 32-bit syscalls that can be (3dc938b)
  • Emulate MAP_32BIT on mmap (081d016)
  • SignalDelegator update signal mask on return from sigsuspend (90511dd)
  • Updates 32-bit DRM emulation (a92233c)

Thunks

  • Fail loudly if thunking is enabled for a library that isn't installed (b1b6160)
  • ThunksDB
    • Updates file to include local libs (e0d40dd)

Tests

Misc

  • BucketList
  • CMake
    • Adds option to enable time-trace compile option (919e2bc)
  • CompileService
    • Store WorkItem instances as unique_ptr (ef772c3)
  • ELFCodeLoader
    • Fixes BRK allocation on some ELF loading (b327daf)
  • EnumUtils
    • Remove shift operators from helper macro (977d92b)
  • General
    • Migrate logging over to fmt where possible (513b02f)
  • RootFS
    • Keep rootfs around while in container (16f1ad4)
  • IR.json/json_ir_generator: Minor touchups to generated IR utilities (9b43f94)
  • Various packaging improvements (23e583e)

Frontend

  • Adds Socket logger and tool (6c93b6f)
  • FEXLoader
    • Change 32-bit memory check error to warning (82ebdf5)
    • Print memory map when 32-bit intersect happens (e6d285a)
  • Syscalls
    • Move construction of syscall name map into GetSyscallName() (0560e9b)

FEX-2111

07 Nov 05:26
Compare
Choose a tag to compare

Core

  • Mark relevant Interpreter/JIT functions as [[nodiscard]] (43454ab)

  • IR

    • Fixes memory ops having a duplicate size field (56e5e78)
    • Add handling for ANDN operations (34b2f93)
  • Frontend

    • Handle VEX source operands (7e9201c)
  • Interpreter

    • Splits ops in to separate files (e9937d9)
  • JIT

    • Fixes asserts added to the JIT (28d084b)
  • JITSymbols

    • Allow grouping JIT symbols by guest named regions (ff74e0a)
    • Change over to runtime enablement of symbols (8b3c461)
  • Arm64

    • Fixes paranoid TSO mode (8b64546)
    • Consolidate HandleSIGBUS (babb81a)
    • Don't fall back to native (a3b39af)
    • Make sure to spill static FPRs on guest signal (98ba0bf)
    • Be more explicit about x87 ABI usage (bdc66a3)
  • OpcodeDispatcher

    • Implement BLSR/BLSMSK (b4a71a2)
    • Implement handling for BLSI (285ef38)
    • Handle BMI1 BEXTR (76538be)
    • Deduplicate OpToIndex definition (031fa8a)

CPUID

  • Adds support for hybrid flag (a9d3122)

Linux Emulation

  • Fixes execve on softlinks in rootfs (a393d66)
  • Implements virtio ioctls for 32-bit (e034364)
  • Fixes FEXLoader argument passing (f9078f8)
  • Follow more symlinks in emulation (09ee6d3)
  • No longer do magic on SIGCHLD (95457bc)
  • Fix 32-bit nanosleep always passing valid remainder (9e8af23)

Thunks

  • Fix missing libdrm include path (fa1648c)
  • Respect DESTDIR environment variable (6cd73a6)
  • XCB Add missing header file (8dfe305)
  • vulkan
    • Suppress compiler warnings about unknown attributes (64aa4f0)

Misc

  • Fixes environment loader not hooked up to ArgumentLoader (8f170d4)
  • Fix left-over printf specifier in fmt log (aa1c47c)
  • X86Tables
    • Make flag helper functions constexpr (d09706a)
  • Telemetry
    • Adds telemetry for when an application tears (235367b)
  • DeadContextStoreElimination
    • Fix missing printf specifier entry (b1ab252)
  • RAPass
    • Add debug compile option to disable spill slot reuse (3661223)
  • TestHarnessRunner
    • Make argument check more strict (eb8a8bf)
    • Convert LOGMAN_THROW_A into error log and exit (c9c3526)
  • Cmake
    • Change static-pie message to indicate compiled without it (e547f0c)
  • FEXConfig
    • Fixes timeout in select causing 100% CPU load (8aebbbd)
  • Allocator
    • Reserve upper 128TB of VA on 64-bit process (cae2f8c)

FEX-2110

08 Oct 23:34
Compare
Choose a tag to compare
  • AOTIR
  • Config
    • Check for container-manager and redirect (56bddd3)
  • Core
    • Minor documentation and code splitting (fb01e8b)
  • FEXConfig
    • Change shortcut for opening application profile (a56463a)
  • FEXLoader
  • FEXMountDaemon
    • Fixes shutdown race conditions (c9a6265)
  • FileManager
    • Allow reading real root (ba174e5)
  • Interpreter
    • Changes basic loadstores to sized accesses (08f5654)
  • Linux
    • Implements support for POSIX message queues on 32-bit (21ff433)
    • Implements support for timer_create (f232dce)
    • Fixes timex definition for 32-bit syscalls (368095f)
    • Fixes rlimit syscalls for 32-bit (e91061f)
  • OpcodeDispatcher
    • Ensure some x87 templates get passed long constants (1fa3afd)
  • Scripts
    • Adds a new script for extracting function definitions (9d460e8)
  • Softfloat
    • Allow forcing use of some x87 on x86 host (d004fee)
  • StructVerifier
    • Fix struct match and minor fixes (2b757a9)
  • Thunks
    • Vulkan thunks (b3efb1d)
    • Support versioned libraries (0dc8e23)
    • Install a global thunksDB for our current thunks (72125c9)
    • Adds a few missing libGL thunk functions (9a07b55)
    • Some minor X related thunk changes (e0b878f)
    • Expands Xext thunked functions listo (073224f)
    • Expands what asound thunking supports (00511c1)
    • Adds a new Thunks database config file (66c7fdb)
    • Makes file searches a bit easier (a48ed37)
    • Adds init helpers with function call (98bee5a)
    • ThunkHelpers script improvements (8d13261)
    • Minor fixes to the config and loading (d93edb2)
  • Misc
    • Adds support for setting host environment variables from config (d5f9f43)
    • Build fix for ENABLE_JITSYMBOLS (591fc00)
    • RA validation (3744ec2)

FEX-2109

07 Sep 06:50
Compare
Choose a tag to compare
  • Arm64

    • Fixes SRA spilling on signal (35c6642)
    • Reimplements support for binfmt_misc without update-binfmts (5d73ac3)
  • Arm64Emitter

    • Resolves some IWYU warnings (c206942)
  • Config

    • Moves non-OS specific configuration loading to FEXCore (6da3330)
  • EmulatedFiles

    • Fixes openat for emulated files not using FDCWD (109c42a)
  • FEXBash

    • Allow creating a bash instance easily (9140ba2)
  • FEXConfig

    • Load application config and advanced tab (3e05544)
  • FEXCore

    • Return the ParentThread with InitCore (97f413c)
    • Minor symbol visibility fixes (5debdf8)
    • Use GetCursorAddress when able (8eb0df9)
  • FEXLoader

    • Fixes potential bug in log output to stdout/stderr (1092229)
  • FEXMountDaemon

    • Fixes dangling mounts problem (dd34316)
    • Fixes some minor issues (ad34cdd)
    • Early fork to deparent child (7795078)
  • Hangover

    • Initial support for the syscall handling. (77db25f)
  • Linux

    • Setup signal mask correctly to block signal-in-signal situations (70931bf)
    • sigaltstack ignore SS_ONSTACK (c74620f)
    • Handle fpstate in the signal delegator correctly (1c4503e)
    • Fixes 32-bit interval timers (425ee98)
    • Fix V3d and VC4 ioctl definitions (0c484ac)
    • x86: Initial V3D and VC4 ioctl emulation (127d7c1)
    • Fixes accidental execve escape (1c3be54)
    • Fixes 32-bit syscalls that use 64-bit values (6afc3ca)
    • Implements support for clone with namespaces (7aae9b7)
    • Fixes readlinkat for self (8dd41e7)
    • Implements pivot_root syscall (cce3f36)
  • RA

    • Add max NoteCount assert (c645d86)
  • SignalDelegator

    • More splitting and cleanup (097b3ad)
  • Misc

    • Fix unaligned CASPair on ARMv8.0 (2c02dca)
    • Syscall fixes (befd0aa)
    • Properly implement single CAS on ARMv8.0 (25e9585)
    • Move BucketList into it's own file (4f66d3e)
    • Gvisor fixes (d600b34)
    • Massive amount of IWYU cleanup (10793e8)
    • Fixes Callback interface to take a thread argument (fa224a3)
    • Fixes jemalloc library ordering (b373d0f)
    • Proton 6.3 32-bit fixes (8099dfc)
    • OpcodeDispatcher: Implements undocumented repne on string ops (926ddab)
    • 32-bit wine fixes (6a08587)
    • Updates jemalloc to fix missing alias posix_memalign (63af80f)
    • Adds new FEXGetConfig program (43052a5)
    • Implements support for offline only telemetry (b120a8e)
    • Rebase skmp/no sra (0be16ba)
  • unittests

  • x86

    • Fixes siginfo_t si_addr for SIGBUS/SIGSEGV (6b87839)

FEX-2108

10 Aug 07:11
Compare
Choose a tag to compare
  • 64BitAllocator

    • Convert std::vector table into std::array (ec6cc5c)
  • AArch64

    • Workaround static-pie crashing (4c43151)
  • Arm64

    • Fixes fill and spill slot offset calculation (6ac2300)
  • CPUID

    • Update TM and TM2 CPUID bits (d142d7c)
  • CPack

    • Update package name to remove conflict (2d11df0)
  • FEXLoader

    • stderr on immediate failure (84dee03)
  • FEXMountDaemon

    • Make squashfs mounting more robust (ff98a43)
  • FlexBitSet

    • Use non-template type parameter for index parameters (7931dc2)
  • GdbStub

    • Fix memory leak in GdbServerLoop() (749f1eb)
  • General

    • Remove redundant string constructions in log calls related to IR op name retrieval (80caf90)
  • Jits

    • Migrate logs over to fmt where applicable (7052d02)
  • Linux

    • Implements support for vsyscall (a5b142c)
    • Implements rt_{tg,}sigqueueinfo (1a64c90)
    • Implements a base implementation of signalfd{4,} (2db44cf)
    • Remove logs about parent or child stack usage (336eb9a)
  • OpDispatcher

    • Fixes imul flags calculations (7dd7003)
  • OpcodeDispatcher

    • Split the opcode handling to multiple files (2fd41de)
  • RCLSE

    • Fixes an assumption in RCLSE (896aa52)
  • Misc

    • Linux: Implements support for signals 32 and 33 (7e8577a)
    • Wine fixes (de0337d)
    • Cleanup compile service on fork (a48e41e)
    • Adds an option to stall processes on launch (0315964)
    • Adds an option to disable jemalloc from cmake (dec8221)
    • binfmt_misc: Support loading ELFs from FD and support preserve (007b1cb)
    • Fixes bug in RAPass (b0a28e5)
    • Works around static-pie crashing (6277516)
    • Adds cmake option ENABLE_STATIC_PIE (aa767b3)
    • Fixes some issues I found when running under tsan and asan (14480f3)
    • Fixes binfmt_misc install when not installed to /usr (04aacea)
    • Validation Passes: Remove unused variables (7f5b352)
    • Fixes flag setting for 8bit and 16bit LOCK ALU ops (3a0da68)
    • Adds a convenience of named thunk configs (f4e044a)
    • Update man page to show JSON key for config options (108081e)
    • Fixes Host thunks lib not being able to GL (6ff9b96)
    • Allocator fixes (a24d63b)
    • Atomic improvements (53417e5)
    • Actually fix jemalloc for FEXConfig (35a4f52)
    • Switch some memory allocations over to mmap (1eee2dd)
    • Update jemalloc to fix glibc override. (0d9ab9c)
    • Fix jemalloc malloc replace (a9bb33b)
    • Fixes old kernel defines for sockios (8f09bd9)
    • Use externals xxhash if not found installed (0a8ee43)