https://github.com/asi-sc updated https://github.com/llvm/llvm-project/pull/183055
>From 2e2bf6dae4d59d56f02a375fb29a74ec335e0903 Mon Sep 17 00:00:00 2001 From: Anton Sidorenko <[email protected]> Date: Thu, 11 Dec 2025 14:47:25 +0000 Subject: [PATCH 1/2] [Clang][Driver] Move -T option after -L -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. --- clang/lib/Driver/ToolChains/BareMetal.cpp | 8 ++++---- clang/test/Driver/baremetal.cpp | 12 +++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) 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" >From 7fb8090b5e4cd73da52a372544ffb3cf9e56978d Mon Sep 17 00:00:00 2001 From: Anton Sidorenko <[email protected]> Date: Tue, 24 Feb 2026 13:58:27 +0000 Subject: [PATCH 2/2] fixup! [Clang][Driver] Move -T option after -L --- clang/lib/Driver/ToolChains/BareMetal.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp index 068a1c92a76a5..5e974527774eb 100644 --- a/clang/lib/Driver/ToolChains/BareMetal.cpp +++ b/clang/lib/Driver/ToolChains/BareMetal.cpp @@ -674,9 +674,8 @@ void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA, 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}); - + 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))); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
