mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-13 03:51:10 +00:00
## Summary `droiddeck-fex` kept an `LD_PRELOAD` entry only if `os.path.exists()` found it. A bare soname that the loader resolves through `LD_LIBRARY_PATH` doesn't exist relative to the working directory, so it was dropped before the x86 game started. MelonLoader's bootstrap in Drova is one example. Names without a `/` are now passed through. Paths that don't exist and arm64 libraries are still dropped, as before. ## Proof (REDMAGIC tablet, Stardew Valley on x86 Linux (FEX), launch options `LD_PRELOAD=libz.so.1 %command%`) | | before | after | |---|---|---| | `LD_PRELOAD` in the FEX game process | missing | `libz.so.1` | | `libz.so` mappings in the game process | 4 (the arm64 host's) | 10 (the x86 one loaded too) | | Game reaches its title screen | yes | yes | ## Tests `tools/tests/test_droiddeck_fex.py` now has a bare soname in the guest-environment case. It fails on main and passes here; all 51 tests pass. ## Credits Reported with the fix idea on the DroidDeck Discord by whatsupbros.