Skip to content

Commit 0344223

Browse files
authored
Make LLD work with clang18 (#379)
Clang [has custom code](https://github.com/llvm/llvm-project/blob/1193f7d6487d2d94009f8d8d27da3907136482b9/clang/lib/Driver/ToolChains/Darwin.cpp#L358-L360) to inject the `-platform_version` flag when invoking `lld`. [This takes effect ](https://github.com/llvm/llvm-project/blob/1193f7d6487d2d94009f8d8d27da3907136482b9/clang/lib/Driver/ToolChain.cpp#L919-L920)when we pass `-fuse-ld=lld`, which we currently don't do for `lld` because want to point at the hermetic one. Switch to using `--ld-path` instead, which is supported since Clang12. The current structure relies on `sanitize_option` generating 1 option per input, so I had to add the extra option check in the loop around it. This is why LLD didn't work for me [when we first added this support](#286 (comment)). Kudos to @keith for the analysis above :) I think we should follow-up soon and make LLD the default; that should allow a lot of simplification
1 parent 192cf04 commit 0344223

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

toolchain/osx_cc_wrapper.sh.tpl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ function sanitize_option() {
7474
if [[ ${opt} == */cc_wrapper.sh ]]; then
7575
printf "%s" "${execroot_path}%{toolchain_path_prefix}bin/clang"
7676
elif [[ ${opt} == "-fuse-ld=ld64.lld" ]]; then
77-
echo "-fuse-ld=${execroot_abs_path}%{toolchain_path_prefix}bin/ld64.lld"
77+
echo "--ld-path=${execroot_abs_path}%{toolchain_path_prefix}bin/ld64.lld"
7878
elif [[ ${opt} =~ ^-fsanitize-(ignore|black)list=[^/] ]]; then
7979
# shellcheck disable=SC2206
8080
parts=(${opt/=/ }) # Split flag name and value into array.
@@ -88,6 +88,9 @@ cmd=()
8888
for ((i = 0; i <= $#; i++)); do
8989
if [[ ${!i} == @* ]]; then
9090
while IFS= read -r opt; do
91+
if [[ ${opt} == "-fuse-ld=ld64.lld" ]]; then
92+
cmd+=("-fuse-ld=lld")
93+
fi
9194
opt="$(
9295
set -e
9396
sanitize_option "${opt}"

0 commit comments

Comments
 (0)