Skip to content

fix(relinker): name the guest module in its output filename errors - #8270

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
thuanquang:fix/relinker-module-name-input-path
Oct 20, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
thuanquang:fix/relinker-module-name-input-path

Conversation

@thuanquang

@thuanquang thuanquang commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

What

Follow-up to #8262. The relinker's checks on a guest module's output name also report the main executable on the Input: line, because their exceptions carry no input path and the conversion's catch fills in the executable. With --windows and a module named broken é.prx:

FAIL: Unsupported Windows guest filename: broken é.prx.guest.prx
Input: ...\eboot.bin

The three output-name checks in GuestModuleBuilder's per-module loop (unsupported guest filename, unsupported Windows guest filename, conflicting guest output filename) now put the module's path in the exception, as the guest image reader already does. The loop's duplicate-export check gets the same change for consistency, but it cannot be reached: GuestImageReader rejects a duplicate stripped export first, and its error already names the module.

Tested

Windows 11 26200, WinLibs GCC 15.2.0 r7, Release, BUILD_TESTING=ON.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes (Claude Code)

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 6977 core/relinker/relinker/src/guest/GuestModuleBuilder.cpp
PR 8076 core/relinker/relinker/src/guest/GuestModuleBuilder.cpp

@thuanquang thuanquang changed the title fix(relinker): name the guest module in its filename and export errors fix(relinker): name the guest module in its output filename errors Oct 20, 2026
@wachi35676

Copy link
Copy Markdown
Contributor

Verdict: confirm. Tested at 99ffb6a75, merged onto main 02fb1ce53, relinker-only Release:

  • Windows 11 Home 10.0.26300, WinLibs GCC 15.2.0 r7: ctest 221/221.
  • WSL Ubuntu 24.04, GCC 13.3: ctest 226/226, so the Linux build and conversion_diagnostics pass too.
  • Negative control: this PR's test_conversion_diagnostics.py against main's relinker fails at 1-module-name, the --windows case.
  • The PS5 homebrew relinks (PPSA99005, PPSA47402, PPSA99581, PPSA99995 with 16 Wine modules; Windows, macOS and Linux targets) are byte-identical to main.

AI-assisted: yes (Claude Code); results above were run on this machine.

The checks on a guest module's output name threw without an input
path, so the conversion's catch reported the main executable. They now
carry the module's path, as the guest image reader's errors do. The
loop's duplicate-export check gets the same change for consistency; it
cannot fire, because the reader rejects a duplicate first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thuanquang
thuanquang force-pushed the fix/relinker-module-name-input-path branch from 99ffb6a to d896645 Compare October 20, 2026 16:45
@oneandonlydean
oneandonlydean merged commit c614599 into boykopovar:main Oct 20, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants