subsecond/cli: fix linker and passing through -fuse-ld properly #4222
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.
in LinkAction, dunce::canonicalize(linker) was being called, which resulted in a "file not found" IoError as it tried to find the linker relative to the workdir, even though
linker="command_on_PATH"
is accepted by Cargo. This falls back to using the linker command directly in those cases.This used to only pass through
-Wl,-fuse-ld=mold
when thin linking, but Rustflags uses-C link-arg=-fuse-ld=mold
which causes-fuse-ld=mold
to be passed. This PR adds that case.These changes present a big annoyance with setting up subsecond to use a linker besides the default, like Mold. With this PR the following .cargo/config.toml works as expected:
Closes:
linker
is specified #4193