Repository navigation
fix(relinker): bind Linux guest imports by declared module identity - #2212
Merged
adriadam10 merged 2 commits intoOct 11, 2026
Merged
Conversation
This was referenced Oct 9, 2026
Contributor
|
Windows run: Windows 11 Pro 25H2 (10.0.26200.9457), RTX 5060 Ti (NVIDIA 617.42), MinGW-w64 GCC 15.2.0 (WinLibs r7), Release,
AI-assisted: yes |
This was referenced Oct 9, 2026
Contributor
|
A second title for this, on Linux (CachyOS, kernel 7.2.9, GCC 16.2.1): Until Dawn (PPSA15421 v01.005.000, Unreal, 7 Sony modules in
AI-assisted: yes (Claude Code). |
9 tasks done
exefer
force-pushed
the
fix/relinker-linux-declared-binding
branch
from
October 11, 2026 08:30
ea73d5e to
100f3a7
Compare
Collaborator
|
Checked on Linux, merged onto current main: relinker build and ctest 99/99 pass. Windows 512/512 and a second title (Until Dawn) are reported above. The PR had no test, so I added one commit on top:
Merging. |
adriadam10
force-pushed
the
fix/relinker-linux-declared-binding
branch
from
October 11, 2026 08:42
100f3a7 to
364c893
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
On Linux, any executable import or guest-module import whose NID two bundled modules export is a hard error, even when the import declares one of them. Windows already binds such imports to their declared module (#684).
Executable imports shared between providers bind when exactly one provider's filename or SONAME is in the executable's
DT_NEEDEDlist. Guest-module imports shared between providers bind when the declared library resolves to one of the providers, on both platforms (the Windows-only filter already did this on Windows). Anything else still throws as before: undeclared, host-declared and multiply-declared imports are unchanged.Demonstrated by Wobbly Life (PPSA29413, Unity; bring-up: #2211): its executable imports
M4YYbSFfJ8gdeclared from the neededIl2cppUserAssemblies.prxwhileMedia/Plugins/kitt_support-PS5-shipping.prxincidentally exports the same NID, andkitt_webkit-PS5-shipping.prximportssmbQukfxYJMdeclared fromkitt_support.prxwhileIl2cppUserAssemblies.prxexports it too.Tested
ANYPS5_RELINKER_ONLY=ON,BUILD_TESTING=ON: 110/110 relinker tests pass, including the existing ambiguity regressions (fixtures declare nothing, so they still throw).--registry --module-dir Media/Plugins --module-dir Media/Modules --to-intel: converts all bundled, needed and plugin modules (was: hard error). Note: currentmainno longer discovers needed modules outside the module directories (41126bf), soMedia/Modulesis now passed explicitly likeMedia/Plugins.Checklist
main; no other open PR implements the same functions (checked: fix(relinker): bind Windows imports to their declared modules #684 is Windows-only, fix(relinker): keep Linux imports declared from host modules off guest exports #1529 covers host-vs-guest, fix(relinker): discover required guest module identities #1503 covers identities, none binds Linux guest-vs-guest by declared module)