Skip to content

Support MSVC linker response files for long and Unicode input paths #620

Description

@LunaStev

Part of #611. Difficulty: medium. Audit baseline: master 3950416e (2026-09-12).

Current evidence

src/cli.rs sends the entire MSVC argument vector directly to ProcessCommand. The backend path in llvm/src/backend.rs also invokes a command directly; no Wave-owned response-file transport is present in these paths.

Scope

Add a shared response-file path when MSVC link commands exceed a conservative Windows command-length budget, preserving the exact logical argument order. Follow the selected link.exe/lld-link encoding and quoting rules, including spaces, non-ASCII paths, quotes and trailing backslashes. Coordinate temporary output rewriting before serializing the final arguments.

Completion criteria

Unit tests exercise argument round-tripping and lifecycle cleanup, and native integration tests link many object paths from a Unicode directory with spaces using each supported linker. Nonzero exits preserve diagnostics and previous outputs. Dry-run exposes a useful logical plan. Response files are removed on success/failure after the child exits. No command shell is introduced.

Dependencies and boundaries

#498; applies to #613 and #621; independent of ABI implementation.

References: MSVC linker response files

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildIssues related to building the project or compiling errors.enhancementA request for a new feature or improvement.help wantedThe issue requires extra attention or help from others.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions