Author: Volodymyr Turanskyy Date: 2026-06-25T09:23:06+01:00 New Revision: 3fd56af03613059ba3edd30d7c60aaf50956e951
URL: https://github.com/llvm/llvm-project/commit/3fd56af03613059ba3edd30d7c60aaf50956e951 DIFF: https://github.com/llvm/llvm-project/commit/3fd56af03613059ba3edd30d7c60aaf50956e951.diff LOG: [clang][Driver] Pass --cstdlib through to multilibs (#203884) Pass the --cstdlib through to the multilibs backend so that the value specified on the command line can be used inside the multilibs YAML file. Assisted-by: codex, reviewed and tested by me. Added: Modified: clang/lib/Driver/ToolChain.cpp clang/test/Driver/baremetal-multilib.yaml clang/test/Driver/print-multi-selection-flags.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 328f4f8c8f420..726c8a6ad229a 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -504,6 +504,10 @@ ToolChain::getMultilibFlags(const llvm::opt::ArgList &Args) const { processMultilibCustomFlags(Result, Args); + if (Arg *CStdLibArg = Args.getLastArg(options::OPT_cstdlib_EQ)) + Result.push_back(std::string(CStdLibArg->getOption().getPrefixedName()) + + CStdLibArg->getValue()); + // Include fno-exceptions and fno-rtti // to improve multilib selection if (getRTTIMode() == ToolChain::RTTIMode::RM_Disabled) diff --git a/clang/test/Driver/baremetal-multilib.yaml b/clang/test/Driver/baremetal-multilib.yaml index c2b37fad97dea..17df2972116b1 100644 --- a/clang/test/Driver/baremetal-multilib.yaml +++ b/clang/test/Driver/baremetal-multilib.yaml @@ -14,6 +14,14 @@ # CHECK-SAME: "-lc" # CHECK-SAME: "-o" "{{.*}}.tmp.out" +# RUN: %clang --multi-lib-config=%s -no-canonical-prefixes -x c++ %s -### -Werror -o %t.out 2>&1 \ +# RUN: --target=thumbv8m.main-none-eabihf --cstdlib=picolibc --sysroot= \ +# RUN: | FileCheck --check-prefix=CHECK-CSTDLIB %s +# CHECK-CSTDLIB: "-cc1" "-triple" "thumbv8m.main-unknown-none-eabihf" +# CHECK-CSTDLIB-SAME: "-internal-isystem" "[[SYSROOT:[^"]*]]/bin/../lib/clang-runtimes/arm-none-eabi/thumb/v8-m.main/fp/picolibc/include/c++/v1" +# CHECK-CSTDLIB-NEXT: ld{{(.exe)?}}" "-Bstatic" +# CHECK-CSTDLIB-SAME: "-L[[SYSROOT]]/bin/../lib/clang-runtimes/arm-none-eabi/thumb/v8-m.main/fp/picolibc/lib" + # RUN: %clang --multi-lib-config=%s -no-canonical-prefixes -x c++ %s -### -o %t.out 2>&1 \ # RUN: --target=thumbv7em-none-eabi -mfpu=fpv4-sp-d16 --sysroot= \ # RUN: | FileCheck --check-prefix=CHECK-NO-MATCH %s @@ -106,6 +114,9 @@ Variants: - Dir: arm-none-eabi/thumb/v8-m.main/fp Flags: [--target=thumbv8m.main-unknown-none-eabihf, -mfpu=fpv5-d16] +- Dir: arm-none-eabi/thumb/v8-m.main/fp/picolibc + Flags: [--target=thumbv8m.main-unknown-none-eabihf, --cstdlib=picolibc, -mfpu=fpv5-d16] + - Dir: arm-none-eabi/thumb/v8.1-m.main/fp Flags: [--target=thumbv8.1m.main-unknown-none-eabihf, -mfpu=fp-armv8-fullfp16-sp-d16] diff --git a/clang/test/Driver/print-multi-selection-flags.c b/clang/test/Driver/print-multi-selection-flags.c index e5a116234c321..0d71a52d553bb 100644 --- a/clang/test/Driver/print-multi-selection-flags.c +++ b/clang/test/Driver/print-multi-selection-flags.c @@ -71,6 +71,10 @@ // RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=aarch64-none-elf -mbranch-protection=standard | FileCheck --check-prefix=CHECK-BRANCH-PROTECTION %s // CHECK-BRANCH-PROTECTION: -mbranch-protection=standard +// RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi --cstdlib=picolibc | FileCheck --check-prefix=CHECK-CSTDLIB %s +// RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi --cstdlib picolibc | FileCheck --check-prefix=CHECK-CSTDLIB %s +// CHECK-CSTDLIB: --cstdlib=picolibc + // RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi -mno-unaligned-access | FileCheck --check-prefix=CHECK-NO-UNALIGNED-ACCESS %s // RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi -mstrict-align | FileCheck --check-prefix=CHECK-NO-UNALIGNED-ACCESS %s // RUN: %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml -print-multi-flags-experimental --target=arm-none-eabi | FileCheck --check-prefix=CHECK-NO-UNALIGNED-ACCESS %s _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
