llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: Anton Sidorenko (asi-sc) <details> <summary>Changes</summary> -L option affects linker script search paths when -T is specified. The change restores the behavior clang-20 and earlier drivers have for RISC-V. (before merging RISCVToolchain.cpp to Baremetal.cpp). GCC (both linux and baremetal) and Clang linux drivers do the same reordering. --- Full diff: https://github.com/llvm/llvm-project/pull/183055.diff 2 Files Affected: - (modified) clang/lib/Driver/ToolChains/BareMetal.cpp (+4-4) - (modified) clang/test/Driver/baremetal.cpp (+11-1) ``````````diff diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index 0602a8a19f943..068a1c92a76a5 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -672,11 +672,11 @@ void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA, } } - Args.addAllArgs(CmdArgs, - {options::OPT_L, options::OPT_u, options::OPT_T_Group, - options::OPT_s, options::OPT_t, options::OPT_r}); - + Args.addAllArgs(CmdArgs, {options::OPT_L}); TC.AddFilePathLibArgs(Args, CmdArgs); + Args.addAllArgs(CmdArgs, {options::OPT_u, options::OPT_T_Group, options::OPT_s, + options::OPT_t, options::OPT_r}); + for (const auto &LibPath : TC.getLibraryPaths()) CmdArgs.push_back(Args.MakeArgString(llvm::Twine("-L", LibPath))); diff --git a/clang/test/Driver/baremetal.cpp b/clang/test/Driver/baremetal.cpp index 986aaff5b630d..1ab676fd390f3 100644 --- a/clang/test/Driver/baremetal.cpp +++ b/clang/test/Driver/baremetal.cpp @@ -31,8 +31,9 @@ // CHECK-V6M-C-SAME: "--sysroot={{.*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm" // CHECK-V6M-C-SAME: "-Bstatic" "-m" "armelf" "-EL" // CHECK-V6M-C-SAME: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o" -// CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for" +// CHECK-V6M-C-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for" // CHECK-V6M-C-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib" +// CHECK-V6M-C-SAME: "-T" "semihosted.lds" // CHECK-V6M-C-SAME: "{{.*}}.o" // CHECK-V6M-C-SAME: {{[^"]*}}libclang_rt.builtins.a" // CHECK-V6M-C-SAME: "-lc" @@ -613,3 +614,12 @@ // RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ // RUN: | FileCheck --check-prefix=CHECK-RV64-RELAX %s // CHECK-RV64-RELAX-NOT: "--no-relax" + +// Check that "-T" follows after "-L" for RISC-V +// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \ +// RUN: --sysroot=%S/Inputs/basic_riscv64_tree/riscv64-unknown-elf \ +// RUN: -T linker_script.lds -Lsearch_path \ +// RUN: | FileCheck --check-prefix=CHECK-RV64-LINKER-SCRIPT %s +// CHECK-RV64-LINKER-SCRIPT: ld{{(.exe)?}}" +// CHECK-RV64-LINKER-SCRIPT-SAME: "-Lsearch_path" +// CHECK-RV64-LINKER-SCRIPT-SAME: "-T" "linker_script.lds" `````````` </details> https://github.com/llvm/llvm-project/pull/183055 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
