- Support user specified linker (with option -fuse-ld=)
- Support user specified linker script (with option -T)
Details
Diff Detail
Event Timeline
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
461 | This check is no longer needed, since we will check if (!llvm::sys::fs::can_execute(FullPath)) at above lines. | |
526 | I am not familiar with avr-ld internal, but it will implicitly:
|
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
434–438 | You can just call ToolChain.GetLinkerPath(). I don't think checking can_execute is necessary. |
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
530 | I am concerned with the magic here. Shouldn't you let users specify explicit -T? |
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
434–438 | Thanks. This way makes my code more clear. | |
530 | I have changed the logic to
|
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
461 | This check is still unnecessary, since the driver will complaint invalid linker ... if avr-ld is invalid. |
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
536 | Though I can seperate my AVR project to two steps,
it is much more convenient if we can use a single clang ... command including all. |
I am still uncomfortable with such a change. Trying to be smart sometimes may get in the way.
I have removed the guess of default linker script. Currently my patch only does
- Support linking with lld if user specifed -fuse-ld=lld
- Support user specifed linker script
I have a bit confused, why clang --target=x86_64 -fuse-ld=lld needs not to be explicitly specified with a linker script and produces a runnable x86_64 ELF? How does lld arrange code/data addresses for x86_64 by default ?
My original will is clang --target=avr -fuse-lld abc.c can correctly produce an AVR ELF, as both clang --target=x86_64 -fuse-ld=lld abc.c and avr-gcc abc.c do. The avr-gcc abc.c command will use the default linker script inside avr-libc.
ping ....
I have simplified my patch. Only support -T and -fuse-ld=lld according to user specification.
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
509 | Just do Args.AddAllArgs. Please check how Gnu.cpp passes -T |
clang/lib/Driver/ToolChains/AVR.cpp | ||
---|---|---|
509 | Thanks. Args.AddAllArgs does make code more clear. |
We are seeing Clang driver test failures after this patch. On Fuchsia's mac clang builder, Clang :: Driver/avr-ld.c and Clang :: Driver/avr-toolchain.c are failing.
Failed build task: https://ci.chromium.org/ui/p/fuchsia/builders/toolchain.ci/clang-mac-x64/b8811424628472375921/overview Error message:
Clang :: Driver/avr-toolchain.c;
Script: -- : 'RUN: at line 4'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -resource-dir=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/resource_dir 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=CHECK1 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 15'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree_2/opt/local -S 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=CHECK2 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 21'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree_2 -S 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=CHECK3 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 27'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix=CC1 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 30'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr -fuse-init-array -fuse-cxa-atexit 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix=CHECK4 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 35'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree 2>&1 -nostdinc | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=NOSTDINC /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 36'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree 2>&1 -nostdlibinc | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=NOSTDINC /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 39'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=NOWARN /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 40'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 -S /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=NOWARN /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 41'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/ -mmcu=atmega328 -S /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=NOWARN /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 44'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -S /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefixes=NOMCU,LINKA /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 45'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/ -S /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefixes=NOMCU,LINKA /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 46'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefixes=NOMCU,LINKB /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 55'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/ -mmcu=atmega328 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefixes=NOGCC /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 61'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c -fuse-ld=avrld 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=NOLD /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 64'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c -fuse-ld=lld 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=LLD /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 69'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c -T avr.lds 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=LDS0 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 72'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr --sysroot=/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c -fuse-ld=lld -T avr.lds 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck --check-prefix=LDS1 /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c -- Exit Code: 1 Command Output (stderr): -- /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c:11:12: error: CHECK1: expected string not found in input // CHECK1: avr-ld" ^ <stdin>:8:889: note: scanning from here "/opt/s/w/ir/x/w/staging/llvm_build/bin/clang-15" "-cc1" "-triple" "avr" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "avr-toolchain.c" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-fno-use-init-array" "-fno-use-cxa-atexit" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-target-linker-version" "609.5" "-fcoverage-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-resource-dir" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/resource_dir" "-isysroot" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree" "-internal-isystem" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/include" "-fdebug-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-faddrsig" "-o" "/opt/s/w/ir/x/t/lit-tmp-688ggc9o/avr-toolchain-1844e8.o" "-x" "c" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c" ^ <stdin>:8:1070: note: possible intended match here "/opt/s/w/ir/x/w/staging/llvm_build/bin/clang-15" "-cc1" "-triple" "avr" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "avr-toolchain.c" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-fno-use-init-array" "-fno-use-cxa-atexit" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-target-linker-version" "609.5" "-fcoverage-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-resource-dir" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/resource_dir" "-isysroot" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree" "-internal-isystem" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/include" "-fdebug-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-faddrsig" "-o" "/opt/s/w/ir/x/t/lit-tmp-688ggc9o/avr-toolchain-1844e8.o" "-x" "c" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c" ^ Input file: <stdin> Check file: /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c -dump-input=help explains the following input dump. Input was: <<<<<< 1: clang-15: warning: no target microcontroller specified on command line, cannot link standard libraries, please pass -mmcu=<mcu name> [-Wavr-rtlib-linking-quirks] 2: Fuchsia clang version 15.0.0 (https://llvm.googlesource.com/a/llvm-project 145cc9db2b442fc0533e275b92943a9894e33337) 3: Target: avr 4: Thread model: posix 5: InstalledDir: /opt/s/w/ir/x/w/staging/llvm_build/bin 6: clang-15: warning: standard library not linked and so no interrupt vector table or compiler runtime routines will be linked [-Wavr-rtlib-linking-quirks] 7: clang-15: warning: support for passing the data section address to the linker for microcontroller '' is not implemented [-Wavr-rtlib-linking-quirks] 8: "/opt/s/w/ir/x/w/staging/llvm_build/bin/clang-15" "-cc1" "-triple" "avr" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "avr-toolchain.c" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-fno-use-init-array" "-fno-use-cxa-atexit" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-target-linker-version" "609.5" "-fcoverage-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-resource-dir" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/resource_dir" "-isysroot" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree" "-internal-isystem" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/include" "-fdebug-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-faddrsig" "-o" "/opt/s/w/ir/x/t/lit-tmp-688ggc9o/avr-toolchain-1844e8.o" "-x" "c" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-toolchain.c" check:11'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found check:11'1 ? possible intended match 9: "/opt/s/w/ir/x/w/staging/llvm_build/bin/ld.lld" "/opt/s/w/ir/x/t/lit-tmp-688ggc9o/avr-toolchain-1844e8.o" "-o" "a.out" "--gc-sections" check:11'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>> --
Clang :: Driver/avr-ld.c:
Script: -- : 'RUN: at line 1'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=at90s2313 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKA /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 4'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=at90s8515 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKB /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 7'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=attiny13 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKC /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 10'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=attiny44 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKD /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 13'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atmega103 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKE /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 16'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atmega8u2 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKF /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 19'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atmega48pa --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKG /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 22'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atmega328 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKH /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 25'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atmega1281 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKI /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 28'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atmega2560 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKJ /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 31'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=attiny10 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKK /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 34'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atxmega16a4 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKL /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 37'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atxmega64b3 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKM /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 40'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atxmega128a3u --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKN /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c : 'RUN: at line 43'; /opt/s/w/ir/x/w/staging/llvm_build/bin/clang -### --target=avr -mmcu=atxmega128a1 --sysroot /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c 2>&1 | /opt/s/w/ir/x/w/staging/llvm_build/bin/FileCheck -check-prefix LINKO /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c -- Exit Code: 1 Command Output (stderr): -- /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c:2:11: error: LINKA: expected string not found in input // LINKA: {{".*ld.*"}} {{.*}} {{"-L.*tiny-stack"}} {{.*}} "-Tdata=0x800060" "--start-group" {{.*}} "-lat90s2313" "--end-group" "-mavr2" ^ <stdin>:1:1: note: scanning from here Fuchsia clang version 15.0.0 (https://llvm.googlesource.com/a/llvm-project 145cc9db2b442fc0533e275b92943a9894e33337) ^ Input file: <stdin> Check file: /opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c -dump-input=help explains the following input dump. Input was: <<<<<< 1: Fuchsia clang version 15.0.0 (https://llvm.googlesource.com/a/llvm-project 145cc9db2b442fc0533e275b92943a9894e33337) check:2 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found 2: Target: avr check:2 ~~~~~~~~~~~~ 3: Thread model: posix check:2 ~~~~~~~~~~~~~~~~~~~~ 4: InstalledDir: /opt/s/w/ir/x/w/staging/llvm_build/bin check:2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5: "/opt/s/w/ir/x/w/staging/llvm_build/bin/clang-15" "-cc1" "-triple" "avr" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "avr-ld.c" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-fno-use-init-array" "-fno-use-cxa-atexit" "-target-cpu" "at90s2313" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-target-linker-version" "609.5" "-fcoverage-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-resource-dir" "/opt/s/w/ir/x/w/staging/llvm_build/lib/clang/15.0.0" "-isysroot" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree" "-internal-isystem" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/include" "-fdebug-compilation-dir=/opt/s/w/ir/x/w/staging/llvm_build/tools/clang/test/Driver" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-faddrsig" "-o" "/opt/s/w/ir/x/t/lit-tmp-688ggc9o/avr-ld-7bfa74.o" "-x" "c" "/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/avr-ld.c" check:2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6: "/opt/s/w/ir/x/w/staging/llvm_build/bin/ld.lld" "/opt/s/w/ir/x/t/lit-tmp-688ggc9o/avr-ld-7bfa74.o" "-o" "a.out" "--gc-sections" "-L/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/lib/tiny-stack" "-L/opt/s/w/ir/x/w/llvm-llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/tiny-stack" "-Tdata=0x800060" "--start-group" "-l:crtat90s2313.o" "-lgcc" "-lm" "-lc" "-lat90s2313" "--end-group" check:2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>> --
Clang :: Driver/avr-ld.c also failed on Fuchsia's Clang Windows builder as well: https://ci.chromium.org/ui/p/fuchsia/builders/toolchain.ci/clang-windows-x64/b8811369240303052481/overview. Could you take a look please? If it takes a long time to fix, could you revert your change first? Thanks.
I already reverted the change in https://github.com/llvm/llvm-project/commit/7fae15f9251d3b392058e2fc84898b53619d36ad . It is likely the breakage is caused by the fact that Fuchsia's Clang by default use lld, see clang/cmake/caches/Fuchsia-stage2.cmake:set(CLANG_DEFAULT_LINKER lld CACHE STRING "") . Please let me know if you need to test your new patch with this configuration. I am happy to help.
I think I have fixed in another patch https://reviews.llvm.org/D127814, could you please have a look?
I have not your environment, my patch works on my ubuntu system, could you please try it on your build machine ?
I have uploaded a new version of my patch, which should fixes the issue on your platfrom that lld is default. Could you please help me test ? Please ignore another patch.
Emmm, I applied your latest patch on top of main(6e02e27536b9de25a651cfc9c2966ce471169355) but I still get a test failure on Clang :: Driver/avr-toolchain.c.
Clang :: Driver/avr-ld.c no longer fail.
Error message:
FAIL: Clang :: Driver/avr-toolchain.c (7349 of 16540) ******************** TEST 'Clang :: Driver/avr-toolchain.c' FAILED ******************** Script: -- : 'RUN: at line 4'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -resource-dir=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/resource_dir 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=CHECK1 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 15'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree _2/opt/local -S 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=CHECK2 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 21'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree _2 -S 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=CHECK3 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 27'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck -check-pre fix=CC1 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 30'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr -fuse-init-array -fuse-cxa-atexit 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-re vert-test/bin/FileCheck -check-prefix=CHECK4 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 35'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree 2>&1 -nostdinc | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=NOSTDINC /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 36'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree 2>&1 -nostdlibinc | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=NOSTDINC /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 39'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver /avr-toolchain.c 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=NOWARN /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 40'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 -S /mnt/nvme_sec/SRC/llvm-project/clang/test/Dri ver/avr-toolchain.c 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=NOWARN /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 41'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/ -mmcu=atmega328 -S /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolch ain.c 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=NOWARN /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 44'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -S /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchai n.c 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefixes=NOMCU,LINKA /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 45'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/ -S /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /mn t/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefixes=NOMCU,LINKA /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 46'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefixes=NOMCU,LINKB /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 55'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/ -mmcu=atmega328 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain .c 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefixes=NOGCC /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 61'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver /avr-toolchain.c -fuse-ld=avrld 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=NOLD /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 64'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver /avr-toolchain.c -fuse-ld=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=LLD /mnt/nvme_sec/SRC/llvm-project/clang/test/Dr iver/avr-toolchain.c : 'RUN: at line 69'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver /avr-toolchain.c -T avr.lds 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=LDS0 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c : 'RUN: at line 72'; /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang -### --target=avr --sysroot=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree -mmcu=atmega328 /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver /avr-toolchain.c -fuse-ld=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld -T avr.lds 2>&1 | /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/FileCheck --check-prefix=LDS1 /mnt/nvme_sec/SRC/llvm-project/c lang/test/Driver/avr-toolchain.c -- Exit Code: 1 Command Output (stderr): -- /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c:65:9: error: LLD: expected string not found in input // LLD: {{".*lld"}} ^ <stdin>:1:1: note: scanning from here Fuchsia clang version 15.0.0 (git@github.com:llvm/llvm-project.git 6e02e27536b9de25a651cfc9c2966ce471169355) ^ <stdin>:5:139: note: possible intended match here clang-15: error: invalid linker name in argument '-fuse-ld=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld' ^ Input file: <stdin> Check file: /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c -dump-input=help explains the following input dump. Input was: <<<<<< 1: Fuchsia clang version 15.0.0 (git@github.com:llvm/llvm-project.git 6e02e27536b9de25a651cfc9c2966ce471169355) check:65'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found 2: Target: avr check:65'0 ~~~~~~~~~~~~ 3: Thread model: posix check:65'0 ~~~~~~~~~~~~~~~~~~~~ 4: InstalledDir: /mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin check:65'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5: clang-15: error: invalid linker name in argument '-fuse-ld=/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld' check:65'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ check:65'1 ? possible intended match 6: "/mnt/nvme_sec/SRC/llvm-project/build-revert-test/bin/clang-15" "-cc1" "-triple" "avr" "-emit-obj" "-mrelax-all" "--mrelax-relocations" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "avr-toolchain.c" "-mrelocation -model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-fno-use-init-array" "-fno-use-cxa-atexit" "-target-cpu" "atmega328" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debug ger-tuning=gdb" "-fcoverage-compilation-dir=/mnt/nvme_sec/SRC/llvm-project/build-revert-test/tools/clang/test/Driver" "-resource-dir" "/mnt/nvme_sec/SRC/llvm-project/build-revert-test/lib/clang/15.0.0" "-isysroot" "/mnt/nvme_sec/SRC/llvm-project /clang/test/Driver/Inputs/basic_avr_tree" "-internal-isystem" "/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/include" "-fdebug-compilation-dir=/mnt/nvme_sec/SRC/llvm-project/build-rever t-test/tools/clang/test/Driver" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-faddrsig" "-o" "/tmp/lit-tmp-a4e1rfqj/avr-toolchain-f24e25.o" "-x" "c" "/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/avr-toolchain.c" check:65'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7: "/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../../bin/avr-ld" "/tmp/lit-tmp-a4e1rfqj/avr-toolchain-f24e25.o" "-o" "a.out" "--gc-sections" "-L/mnt/nvme_sec/SRC/llvm-project/c lang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5" "-L/mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/lib/gcc/avr/5.4.0/avr5" "-Tdata=0x800100" "--start-group" "-l:crtatmega328.o" "-lgc c" "-lm" "-lc" "-latmega328" "--end-group" "-mavr5" check:65'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>> -- ******************** ********************
Do you have an empty file /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld on your disk ?
It seems the file /mnt/nvme_sec/SRC/llvm-project/clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld is missing on your machine, which I have newly created in current patch.
That file was missing. For some reason, it was missing from the patch I downloaded from phabricator( if you look at https://reviews.llvm.org/file/data/2wqpf52swpb3xkcz7lip/PHID-FILE-filks6eto62wxww6m23w/D126192.vson.id436992.diff).
After manually create clang/test/Driver/Inputs/basic_avr_tree/usr/bin/ld.lld and set permission to 0755 (test will fail if I don't do it). All tests will pass under linux-x64. I will need to test it on a Windows host to make sure it all pass, which will take a while.
I tested this patch on our windows builder and it passed as well.
This patch LGTM. (I cannot click accept as the this review is already closed)
You can just call ToolChain.GetLinkerPath(). I don't think checking can_execute is necessary.