Skip to content

Commit

Permalink
Make LLD work with clang18 (#379)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
dzbarsky authored Aug 27, 2024
1 parent 192cf04 commit 0344223
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion toolchain/osx_cc_wrapper.sh.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ function sanitize_option() {
if [[ ${opt} == */cc_wrapper.sh ]]; then
printf "%s" "${execroot_path}%{toolchain_path_prefix}bin/clang"
elif [[ ${opt} == "-fuse-ld=ld64.lld" ]]; then
echo "-fuse-ld=${execroot_abs_path}%{toolchain_path_prefix}bin/ld64.lld"
echo "--ld-path=${execroot_abs_path}%{toolchain_path_prefix}bin/ld64.lld"
elif [[ ${opt} =~ ^-fsanitize-(ignore|black)list=[^/] ]]; then
# shellcheck disable=SC2206
parts=(${opt/=/ }) # Split flag name and value into array.
Expand All @@ -88,6 +88,9 @@ cmd=()
for ((i = 0; i <= $#; i++)); do
if [[ ${!i} == @* ]]; then
while IFS= read -r opt; do
if [[ ${opt} == "-fuse-ld=ld64.lld" ]]; then
cmd+=("-fuse-ld=lld")
fi
opt="$(
set -e
sanitize_option "${opt}"
Expand Down

0 comments on commit 0344223

Please sign in to comment.