Commit Graph
1579 Commits
Author SHA1 Message Date
Dean e231f17d8f Merge pull request #15255 from HenriksApsitis/test/reported-relinker-regression
test(relinker): guard against duplicate module preinit startup
2026-11-04 08:12:11 +13:00
Dean 04ca53e25d Merge pull request #13962 from LeandroLP23/fix/relinker-windows-df-symbolic
fix(relinker): convert DF_SYMBOLIC guest modules for Windows
2026-11-03 21:09:26 +13:00
Dean c4c6934558 Merge pull request #12282 from JJenkx/windows/relinker-collect-vector-result
perf(relinker): return the collected instructions as a sorted vector
2026-11-03 21:09:10 +13:00
Dean 7af9b1c691 Merge pull request #14139 from JJenkx/fix/relinker-absent-unused-dependency
fix(relinker): optionally leave out a module dependency nothing provides or imports from on Linux
2026-11-03 21:08:25 +13:00
Dean 8835460b5e Merge pull request #7532 from hugodearaujo/fix/linux-guest-main-stack
fix(linux): enter the guest entry on a main stack at the console's address
2026-11-03 21:07:51 +13:00
Dean 58c21ea16c Merge pull request #15356 from DonRyuzaki/fix/relinker-relative-gap-values
fix(relinker): allow relative values in image gaps
2026-11-03 18:14:41 +13:00
Dean 937c92d41f Merge pull request #15063 from peacocksir/fix/guest-static-tls-flag
fix(relinker): accept DF_STATIC_TLS on guest modules
2026-11-03 18:13:36 +13:00
Dean fffa45ebe5 Merge pull request #14855 from ken00H/fix/relinker-windows-entry-stub-parent-log
fix(relinker): wait for the LoadExec parent after opening the Windows log
2026-11-03 18:10:38 +13:00
Dean 1c59a15291 Merge pull request #13862 from roboterspinne/fix/relinker-reject-unknown-load-flags
fix(relinker): reject main-executable PT_LOAD flags outside PF_R, PF_W and PF_X
2026-11-03 18:09:30 +13:00
Dean 3fc8f5863b Merge pull request #12513 from LuPetro/fix/windows-icon-virtual-overlap
fix(relinker): check virtual size before adding Windows icon
2026-11-03 18:09:14 +13:00
Dean f6232fcfda Merge pull request #15360 from oneandonlydean/revert-12621-v2
revert(relinker): defer the runtime modules another deferred module needs on Windows (#12621)
2026-11-03 16:02:16 +13:00
Ryuzaki 86f330a102 fix(relinker): allow relative values in image gaps 2026-11-03 02:50:33 +00:00
Dean 6c3d3b29c0 Merge pull request #14688 from slopgobblercobbler/test/relinker-symtab-entsize-bounds
test(relinker): cover sh_entsize mismatch for SHT_SYMTAB section
2026-11-03 11:41:50 +13:00
Dean 96b856f9e6 Merge pull request #14614 from slopgobblercobbler/test/relinker-ptload-filesz-overflow-bounds
test(relinker): cover PT_LOAD segment p_filesz exceeding p_memsz
2026-11-03 11:40:18 +13:00
Dean c71fef4835 Merge pull request #14604 from slopgobblercobbler/test/relinker-relr-entry-oob-bounds
test(relinker): cover out of bounds entry in RELR table
2026-11-03 11:40:13 +13:00
Dean 610adb58f1 Merge pull request #14470 from slopgobblercobbler/test/relinker-cie-augmentation-coverage
test(relinker): cover CIE augmentation string bounds and unterminated records in unwind tests
2026-11-03 11:37:32 +13:00
Dean dca6785e9b Merge pull request #14460 from slopgobblercobbler/test/relinker-dynamic-table-bounds-coverage
test(relinker): cover DT_RELA and DT_STRTAB out of bounds in dynamic table tests
2026-11-03 11:36:56 +13:00
Dean 4c54ba9bfa Merge pull request #14442 from Serph91P/fix/14423-linux-trace-permissions
fix(relinker): preserve Linux import tracing execute permissions
2026-11-03 11:36:27 +13:00
Dean 10ba64ebcb Merge pull request #14422 from Dinsuljevic336/fix/relinker-unused-filter-shn-abs
fix(relinker): skip SHN_ABS function symbols in unused NID filters
2026-11-03 11:36:09 +13:00
Henriks Apsitis 3577e0368a test(relinker): guard against duplicate module preinit startup
Model a module whose initializer dispatches its own preinit callback and assert the exact once-only callback, preserved arguments and return value. Retain zero-address and no-preinit controls and cover deferred Linux initialization.

Regression coverage for #7636, introduced by #6112 and reverted by #7646. The new test fails with the actual historical bad relinker at 376c040 and passes on main 9090972.

AI-assisted: yes. Independently reviewed staged patch 6e437226c361065dad96478101fc899f65cde86caf51a39415369c01c1725168.
2026-11-02 22:05:16 +00:00
roboterspinne 4d6f5458c0 test(relinker): pin the PT_LOAD flags diagnostic line with its offset 2026-11-02 22:23:40 +01:00
Dean Galvin 987ebe9855 revert(relinker): defer the runtime modules another deferred module needs on Windows (#12621)
This reverts the code, tests and USAGE.md change of commit 420b6a064e
(#12621). The docs/dev/debt/relinker.md line is left for the follow-up
that brings the deferral back with dependency start, to keep a running
batch that edits the same file valid.

Soul Hackers 2 (PPSA03743) stops about 2.6 s into boot on Windows with an
access violation on UnityGfxDeviceWorker inside SPFXUnityPlugin.prx since
this change. klosixgaming-arch bisected main's merge commits to 420b6a064e
and confirmed that undoing its dependency filter makes the title boot again
(https://github.com/boykopovar/AnyPS5/pull/12621#issuecomment-6587462742).

SPFXUnityPlugin (Media/Plugins) calls into Il2CppUserAssemblies
(Media/Modules). With #12621 that dependency is deferred, and loading a
deferred module does not start the deferred modules it needs, so it is
never started. The revert restores the previous Windows behaviour, where a
module another module needs starts at startup.
2026-11-03 09:51:50 +13:00
Dean 13e95604e4 Merge pull request #14410 from roboterspinne/fix/relinker-linux-fixed-base-paddr
fix(relinker): stop rejecting Linux fixed-base output over the unused p_paddr field
2026-11-03 08:50:04 +13:00
Dean b2627ce36d Merge pull request #13291 from PolkadotDom/fix/eip-import-call-sites
fix(relinker): resolve EIP-relative import call sites
2026-11-03 08:45:32 +13:00
Dean 8065bdfa25 Merge pull request #13143 from kyon-eth/fix/monosgen-module-alias
fix(relinker): resolve versioned Mono module dependency
2026-11-03 06:27:05 +13:00
Dean b9d18dc1f9 Merge pull request #12951 from Kikoarl/fix/relinker-rip-displacement-overflow-guard
fix(relinker): guard 64-bit rip-relative displacement overflow and underflow
2026-11-03 06:25:52 +13:00
Dean 62949c1978 Merge pull request #12822 from slopgobblercobbler/fix/relinker-rela-entry-bounds
fix(relinker): validate dynamic DT_RELAENT and PLTREL table entries
2026-11-03 05:13:52 +13:00
dom 21a7616cda chore(relinker): refresh EIP import analysis after prerequisite merge 2026-11-02 10:53:33 -05:00
Dean 25797f0fab Merge pull request #12500 from StoneDC/feat/b20-autorun-noninteractive
feat(relinker): optionally skip the autorun exit prompt
2026-11-03 02:38:19 +13:00
Dean 52e4cad5aa Merge pull request #12495 from StoneDC/fix/b20-console-progress-control-characters
fix(relinker): escape ASCII controls in progress filenames
2026-11-03 02:38:14 +13:00
Dean d6e9570d8b Merge pull request #12341 from roboterspinne/fix/relinker-tls-relocation-undefined-non-tls
fix(relinker): reject executable TLS relocations against an undefined symbol that is not STT_TLS
2026-11-03 02:37:21 +13:00
Dean f903f87b99 Merge pull request #12270 from JJenkx/windows/relinker-reserve-reachable
perf(relinker): reserve the reachable instruction set before the graph walk
2026-11-03 02:36:29 +13:00
Dean 2a43ad9dbe Merge pull request #12243 from rooklz/test/gap-walk-branch-targets
test(relinker): cover branch targets found by the jump-table gap walk
2026-11-03 02:35:58 +13:00
Dean 6de0f09e97 Merge pull request #12203 from MarcZX10/perf/relinker-linear-passes-over-hostile-inputs
perf(relinker): keep three passes linear on crafted guest binaries
2026-11-03 02:35:29 +13:00
peacock-claudeandClaude Opus 5.5 3255ddea38 fix(relinker): accept DF_STATIC_TLS on guest modules
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 08:02:08 -05:00
Dean 519ea89a7f Merge pull request #12154 from JJenkx/windows/relinker-collect-sorted-vectors
perf(relinker): collect code instructions into sorted vectors
2026-11-03 01:29:27 +13:00
Dean 67c25a3993 Merge pull request #11993 from slopgobblercobbler/fix/relinker-program-header-table-bounds
fix(relinker): validate program header table bounds before reading
2026-11-03 01:28:59 +13:00
Dean 8d530b6d3c Merge pull request #11883 from roboterspinne/fix/relinker-macos-gs-trap-entry-roots
fix(relinker): refuse GS traps that overwrite a code entry point in macOS output
2026-11-03 01:27:44 +13:00
Dean 8b9ae2fa8c Merge pull request #11626 from Mherberts/codex/fix-segment-prefixed-import-sites
fix(relinker): recognize ignored segment prefixes in import sites
2026-11-03 01:26:05 +13:00
Dean 02818f42e9 Merge pull request #11583 from roboterspinne/fix/relinker-windows-lazy-data-imports
fix(relinker): bind unresolved Windows data imports eagerly under --lazy-binding
2026-11-03 01:25:43 +13:00
LeandroLP23andClaude Opus 5.5 defd29e2d1 test(relinker): keep the executable hash table clear of its string table
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 11:50:32 +01:00
LeandroLP23andClaude Opus 5.5 add81f3082 test(relinker): load two converted modules with colliding exports on Windows
Two guest modules export the same `shared` function and `tls_value` TLS
symbol with default visibility; the second has DF_SYMBOLIC. Each module's
entry calls its own `shared` through R_X86_64_64, GLOB_DAT and JUMP_SLOT
relocations and adds its own `tls_value` read through a TPOFF64
relocation. The converted Windows executable calls both entries and must
exit with the value only reachable when every reference binds to its own
module: (3 * 1 + 4) + (3 * 2 + 8) * 16.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 11:50:32 +01:00
LeandroLP23andClaude Opus 5.5 7fbca4105e fix(relinker): convert DF_SYMBOLIC guest modules for Windows
DF_SYMBOLIC asks that a module's references to symbols it defines bind to
its own definitions. The Windows guest module writer already writes every
relocation against a defined symbol, including the TLS module and offset
forms, straight to the module's own definition, and leaves only undefined
symbols to runtime binding. A symbolic module therefore gets the requested
binding without any change, so the writer stops refusing it.

The writer test now checks that a symbolic module produces the same PE and
runtime imports as the same module without the flag, and the directory
integration test uses a symbolic provider for Windows too.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 11:49:32 +01:00
Dean 718204e587 Merge pull request #11487 from roboterspinne/fix/relinker-linux-congruent-loads
fix(relinker): move a Linux PT_LOAD whose file offset is not page-congruent with its address
2026-11-02 23:28:40 +13:00
Dean 3b6f3cbb4d Merge pull request #11479 from roboterspinne/fix/relinker-ambiguous-needed-module
fix(relinker): reject a needed module name that several bundled modules match only by extension
2026-11-02 23:28:33 +13:00
Dean da0f097c78 Merge pull request #11107 from AdnanKhan-ak47/feat/relinker-lower-bzhi-bextr
feat(relinker): lower BZHI and BEXTR under --to-rosetta
2026-11-02 23:26:58 +13:00
Dean 36564b6b4f Merge pull request #10970 from AdnanKhan-ak47/feat/relinker-lower-bls
feat(relinker): lower BLSI, BLSMSK and BLSR under --to-rosetta
2026-11-02 23:26:20 +13:00
Dean 2a9de0ea82 Merge pull request #10495 from wail-arch/fix/linux-guest-zero-address-exports
fix(relinker): bind guest function exports at address 0 on Linux
2026-11-02 23:22:55 +13:00
Dean 6ca4efb422 Merge pull request #9793 from Iluminatti312/fix/relinker-windows-extended-path-argv
fix(relinker): preserve Windows extended-path arguments
2026-11-02 20:58:41 +13:00
JJenkx 17979bdcbb test(relinker): compare collected initializer addresses as a vector 2026-11-01 20:16:07 -05:00