Skip to content

Test Windows delay imports across recursive DLL cycles - #33

Draft
moloch-- wants to merge 5 commits into
feat/windows-recursive-cyclesfrom
feat/windows-delay-cycle-composition
Draft

moloch-- wants to merge 5 commits into
feat/windows-recursive-cyclesfrom
feat/windows-delay-cycle-composition

Conversation

@moloch--

Copy link
Copy Markdown
Contributor

Summary

  • Merge the corrected Windows recursive cycle and RVA delay-import branches, resolving the loader behavior and README/CI conflicts together.
  • Add a real three-DLL PE graph: a normal root-to-peer import, a peer-to-forwarder delay import, and an export forwarder back to the root.
  • Verify binding before DLL initialization, calls after hiding the source directory, absence from the native Windows module registry, and reverse detach while all images remain mapped.
  • Require TestWindowsDelayCycleComposition in the Windows 386, amd64, and arm64 CI jobs.

Stack

Validation

  • Windows 386, amd64, and arm64 integration test executables cross-compiled with CGO_ENABLED=0.
  • The existing TestBuildRecursiveCSharedLibraryMatrix/windows-(386|amd64|arm64) passed locally.
  • The three-DLL PE fixture built with Zig 0.17 and LLD 22 for all three Windows architectures; PE headers show a root ordinary import, a peer delay-import directory, and a forwarder back to the root.
  • Native Windows 386, amd64, and arm64 runtime CI is required before this PR is ready to merge. This PR stays draft until the combined graph passes those jobs.

Local macOS go test ./... is blocked by existing Darwin private-dyld JustInTimeLoader::make lookup failures and a local Go-toolchain platform-manifest mismatch; these do not exercise the Windows fixture.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant