https://github.com/tyan0 updated https://github.com/llvm/llvm-project/pull/208925
>From d8c0b95372cc294daf23a1cc347e6b5dbf6e698b Mon Sep 17 00:00:00 2001 From: Takashi Yano <[email protected]> Date: Sun, 12 Jul 2026 01:00:33 +0900 Subject: [PATCH 1/3] Fix compiler-rt library directory for cygwin If compiler-rt is built with LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF, its search directory is incorrect. Specifically, ToolChain::getOSLibName() returns `windows` instead of `cygwin` in a Cygwin environment, due to falling back to getOS(). This results in a link error against compiler-rt. This patch makes getOSLibName() return `cygwin`, ensuring that compiler-rt is linked correctly. Signed-off-by: Takashi Yano <[email protected]> --- clang/lib/Driver/ToolChain.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index f894a0635de13..f26fcbc39b37f 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -852,6 +852,8 @@ static StringRef getArchNameForCompilerRTLib(const ToolChain &TC, StringRef ToolChain::getOSLibName() const { if (Triple.isOSDarwin()) return "darwin"; + if (Triple.isWindowsCygwinEnvironment()) + return "cygwin"; switch (Triple.getOS()) { case llvm::Triple::FreeBSD: >From fd16a28be4d92a18ce7e15c35868e945243f8032 Mon Sep 17 00:00:00 2001 From: Takashi Yano <[email protected]> Date: Thu, 16 Jul 2026 12:25:40 +0900 Subject: [PATCH 2/3] Add a test for the path used with -rtlib=compiler-rt on Cygwin --- .../lib/cygwin/libclang_rt.builtins-x86_64.a | 0 .../libclang_rt.builtins.a | 0 clang/test/Driver/cygwin-print-file-name.c | 15 +++++++++++++++ 3 files changed, 15 insertions(+) create mode 100644 clang/test/Driver/Inputs/resource_dir/lib/cygwin/libclang_rt.builtins-x86_64.a create mode 100644 clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a create mode 100644 clang/test/Driver/cygwin-print-file-name.c diff --git a/clang/test/Driver/Inputs/resource_dir/lib/cygwin/libclang_rt.builtins-x86_64.a b/clang/test/Driver/Inputs/resource_dir/lib/cygwin/libclang_rt.builtins-x86_64.a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a b/clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/clang/test/Driver/cygwin-print-file-name.c b/clang/test/Driver/cygwin-print-file-name.c new file mode 100644 index 0000000000000..1095ac9d138e3 --- /dev/null +++ b/clang/test/Driver/cygwin-print-file-name.c @@ -0,0 +1,15 @@ +// Test for compiler-rt library path for cygwin +// +// RUN: %clang --sysroot=%S/Inputs/basic_cygwin_tree \ +// RUN: -resource-dir=%S/Inputs/resource_dir \ +// RUN: --target=x86_64-pc-windows-cygnus \ +// RUN: -print-file-name=libclang_rt.builtins-x86_64.a \ +// RUN: | FileCheck --check-prefix=CHECK %s +// CHECK: {{.*}}/lib/cygwin/libclang_rt.builtins-x86_64.a +// +// RUN: %clang --sysroot=%S/Inputs/basic_cygwin_tree \ +// RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ +// RUN: --target=x86_64-pc-windows-cygnus \ +// RUN: -print-file-name=libclang_rt.builtins.a \ +// RUN: | FileCheck --check-prefix=CHECK_PER_TARGET %s +// CHECK_PER_TARGET: {{.*}}/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a >From 973668770723ac13c9ea912116fa5cf49c9a0cb3 Mon Sep 17 00:00:00 2001 From: Takashi Yano <[email protected]> Date: Thu, 16 Jul 2026 22:34:06 +0900 Subject: [PATCH 3/3] Allow backslash as well as slash in paths in cygwin-print-file-name.c --- clang/test/Driver/cygwin-print-file-name.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/test/Driver/cygwin-print-file-name.c b/clang/test/Driver/cygwin-print-file-name.c index 1095ac9d138e3..d16117eaec60a 100644 --- a/clang/test/Driver/cygwin-print-file-name.c +++ b/clang/test/Driver/cygwin-print-file-name.c @@ -5,11 +5,11 @@ // RUN: --target=x86_64-pc-windows-cygnus \ // RUN: -print-file-name=libclang_rt.builtins-x86_64.a \ // RUN: | FileCheck --check-prefix=CHECK %s -// CHECK: {{.*}}/lib/cygwin/libclang_rt.builtins-x86_64.a +// CHECK: {{.*}}{{/|\\}lib{{\|//}}cygwin{{/|\\}}libclang_rt.builtins-x86_64.a // // RUN: %clang --sysroot=%S/Inputs/basic_cygwin_tree \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ // RUN: --target=x86_64-pc-windows-cygnus \ // RUN: -print-file-name=libclang_rt.builtins.a \ // RUN: | FileCheck --check-prefix=CHECK_PER_TARGET %s -// CHECK_PER_TARGET: {{.*}}/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a +// CHECK_PER_TARGET: {{.*}}{{/|\\}}lib{{/|\\}}x86_64-pc-windows-cygnus{{/|\\}}libclang_rt.builtins.a _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
