From 29448b3e9cfc1568d2e328dbd5a01292a5420df8 Mon Sep 17 00:00:00 2001 From: Tobias Brick Date: Tue, 2 Jun 2026 22:31:23 +0000 Subject: [PATCH 1/2] chore(llvm-clang): add azurelinux-specific triple to clang default fallback list --- ...g-Add-azurelinux-to-fallback-triples.patch | 110 ++++++++++++++++++ base/comps/llvm/llvm.comp.toml | 14 ++- locks/llvm.lock | 2 +- ...g-Add-azurelinux-to-fallback-triples.patch | 110 ++++++++++++++++++ specs/l/llvm/llvm.spec | 8 +- 5 files changed, 241 insertions(+), 3 deletions(-) create mode 100644 base/comps/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch create mode 100644 specs/l/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch diff --git a/base/comps/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch b/base/comps/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch new file mode 100644 index 00000000000..84c52eb5f42 --- /dev/null +++ b/base/comps/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch @@ -0,0 +1,110 @@ +From 59fc631cea3757e47f8cb202f388c228ce070994 Mon Sep 17 00:00:00 2001 +From: Tobias Brick +Date: Fri, 29 May 2026 19:08:42 +0000 +Subject: [PATCH] [Clang] Add azurelinux to fallback triples + +--- + clang/lib/Driver/ToolChains/Gnu.cpp | 6 +++-- + .../Driver/Inputs/azurelinux_tree/lib/.keep | 0 + .../aarch64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/aarch64-azurelinux-linux/11/crtend.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtend.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crt1.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crti.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crtn.o | 0 + clang/test/Driver/linux-ld.c | 22 +++++++++++++++++++ + 10 files changed, 26 insertions(+), 2 deletions(-) + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/lib/.keep + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o + +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 131dd725c728..6c1e67bd0fff 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2337,7 +2337,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + // lists should shrink over time. Please don't add more elements to *Triples. + static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; + static const char *const AArch64Triples[] = { +- "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux"}; ++ "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux", ++ "aarch64-azurelinux-linux"}; + static const char *const AArch64beLibDirs[] = {"/lib"}; + static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu"}; + +@@ -2365,7 +2366,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", + "x86_64-redhat-linux", "x86_64-suse-linux", + "x86_64-manbo-linux-gnu", "x86_64-slackware-linux", +- "x86_64-unknown-linux", "x86_64-amazon-linux"}; ++ "x86_64-unknown-linux", "x86_64-amazon-linux", ++ "x86_64-azurelinux-linux"}; + static const char *const X32Triples[] = {"x86_64-linux-gnux32", + "x86_64-pc-linux-gnux32"}; + static const char *const X32LibDirs[] = {"/libx32", "/lib"}; +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep b/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c +index 8de1988d606c..787b22f26628 100644 +--- a/clang/test/Driver/linux-ld.c ++++ b/clang/test/Driver/linux-ld.c +@@ -1789,6 +1789,28 @@ + // CHECK-LD-AMI: "-lc" + // CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" + ++ ++// Check that Azure Linux GCC is found via fallback triple detection (x86_64). ++// The sysroot has GCC installed under x86_64-azurelinux-linux, but we target ++// the generic x86_64-unknown-linux-gnu to exercise the fallback triple list. ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=x86_64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX %s ++// CHECK-LD-AZURELINUX: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX: "{{.*}}/usr/lib/gcc/x86_64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11/../../../../lib64" ++ ++// Check that Azure Linux GCC is found via fallback triple detection (aarch64). ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=aarch64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX-AARCH64 %s ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11/../../../../lib64" + // Check whether the OpenEmbedded ARM libs are added correctly. + // RUN: %clang -### %s -no-pie 2>&1 \ + // RUN: --target=arm-oe-linux-gnueabi -rtlib=libgcc --unwindlib=platform \ +-- +2.52.0 + diff --git a/base/comps/llvm/llvm.comp.toml b/base/comps/llvm/llvm.comp.toml index 7391523f364..77f4ef4d66d 100644 --- a/base/comps/llvm/llvm.comp.toml +++ b/base/comps/llvm/llvm.comp.toml @@ -1,5 +1,4 @@ [components.llvm] - # Workaround: Disable MLIR until python-nanobind (and its dep robin-map) # are imported into Azure Linux. MLIR is gated on %{with mlir} in the # upstream spec and pulls in python3-nanobind-devel which doesn't exist yet. @@ -12,3 +11,16 @@ description = "Use the Azure Linux GCC toolchain triple in clang's default confi type = "spec-search-replace" regex = '%global cfg_file_content --gcc-triple=%{_target_cpu}-redhat-linux' replacement = '%global cfg_file_content --gcc-triple=%{_target_cpu}-%{_vendor}-linux' + +# Patch the fallback triples to include azurelinux. +# When clang's config files are not present, it will fall back to a set of hardcoded triples, which don't include azurelinux. +[[components.llvm.overlays]] +description = "Patch fallback triples to include azurelinux." +type = "patch-add" +source = "0001-Clang-Add-azurelinux-to-fallback-triples.patch" + +[[components.llvm.overlays]] +description = "Manually add above patch, because llvm uses some advanced %autopatch and doesn't pick this up automatically." +type = "spec-append-lines" +section = "%prep" +lines = ["%patch -p1 -P2202"] diff --git a/locks/llvm.lock b/locks/llvm.lock index 9cb7853f406..618096f2a6c 100644 --- a/locks/llvm.lock +++ b/locks/llvm.lock @@ -2,5 +2,5 @@ version = 1 import-commit = '659c0740e5c29098632207467aa89ce0083d5892' upstream-commit = '659c0740e5c29098632207467aa89ce0083d5892' -input-fingerprint = 'sha256:d2fda4afa67705525af0ca91cbf89bef747aa5f25b5313e8a92eb2a6f515498d' +input-fingerprint = 'sha256:62ef2b00d18f7ee581116ced02f2de22f17f34136afd835ea024e8008fa05c1d' resolution-input-hash = 'sha256:466421704711c4fd3c71f0b2ed715a0e61d49e3e26f3a2637fee755795849c8e' diff --git a/specs/l/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch b/specs/l/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch new file mode 100644 index 00000000000..84c52eb5f42 --- /dev/null +++ b/specs/l/llvm/0001-Clang-Add-azurelinux-to-fallback-triples.patch @@ -0,0 +1,110 @@ +From 59fc631cea3757e47f8cb202f388c228ce070994 Mon Sep 17 00:00:00 2001 +From: Tobias Brick +Date: Fri, 29 May 2026 19:08:42 +0000 +Subject: [PATCH] [Clang] Add azurelinux to fallback triples + +--- + clang/lib/Driver/ToolChains/Gnu.cpp | 6 +++-- + .../Driver/Inputs/azurelinux_tree/lib/.keep | 0 + .../aarch64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/aarch64-azurelinux-linux/11/crtend.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtend.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crt1.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crti.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crtn.o | 0 + clang/test/Driver/linux-ld.c | 22 +++++++++++++++++++ + 10 files changed, 26 insertions(+), 2 deletions(-) + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/lib/.keep + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o + +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 131dd725c728..6c1e67bd0fff 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2337,7 +2337,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + // lists should shrink over time. Please don't add more elements to *Triples. + static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; + static const char *const AArch64Triples[] = { +- "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux"}; ++ "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux", ++ "aarch64-azurelinux-linux"}; + static const char *const AArch64beLibDirs[] = {"/lib"}; + static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu"}; + +@@ -2365,7 +2366,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", + "x86_64-redhat-linux", "x86_64-suse-linux", + "x86_64-manbo-linux-gnu", "x86_64-slackware-linux", +- "x86_64-unknown-linux", "x86_64-amazon-linux"}; ++ "x86_64-unknown-linux", "x86_64-amazon-linux", ++ "x86_64-azurelinux-linux"}; + static const char *const X32Triples[] = {"x86_64-linux-gnux32", + "x86_64-pc-linux-gnux32"}; + static const char *const X32LibDirs[] = {"/libx32", "/lib"}; +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep b/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c +index 8de1988d606c..787b22f26628 100644 +--- a/clang/test/Driver/linux-ld.c ++++ b/clang/test/Driver/linux-ld.c +@@ -1789,6 +1789,28 @@ + // CHECK-LD-AMI: "-lc" + // CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" + ++ ++// Check that Azure Linux GCC is found via fallback triple detection (x86_64). ++// The sysroot has GCC installed under x86_64-azurelinux-linux, but we target ++// the generic x86_64-unknown-linux-gnu to exercise the fallback triple list. ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=x86_64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX %s ++// CHECK-LD-AZURELINUX: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX: "{{.*}}/usr/lib/gcc/x86_64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11/../../../../lib64" ++ ++// Check that Azure Linux GCC is found via fallback triple detection (aarch64). ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=aarch64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX-AARCH64 %s ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11/../../../../lib64" + // Check whether the OpenEmbedded ARM libs are added correctly. + // RUN: %clang -### %s -no-pie 2>&1 \ + // RUN: --target=arm-oe-linux-gnueabi -rtlib=libgcc --unwindlib=platform \ +-- +2.52.0 + diff --git a/specs/l/llvm/llvm.spec b/specs/l/llvm/llvm.spec index 826825256f1..82b89d9c0f1 100644 --- a/specs/l/llvm/llvm.spec +++ b/specs/l/llvm/llvm.spec @@ -2,7 +2,7 @@ ## (rpmautospec version 0.8.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: - release_number = 7; + release_number = 8; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} @@ -616,6 +616,7 @@ Requires: %{pkg_name_llvm}-libs%{?_isa} = %{version}-%{release} Provides: llvm(major) = %{maj_ver} +Patch2202: 0001-Clang-Add-azurelinux-to-fallback-triples.patch %description LLVM is a compiler infrastructure designed for compile-time, link-time, runtime, and idle-time optimization of programs from arbitrary programming @@ -1267,6 +1268,7 @@ sed -i 's/LLDB_ENABLE_PYTHON/TRUE/' lldb/docs/CMakeLists.txt #endregion prep #region build +%patch -p1 -P2202 %build # TODO(kkleine): In clang we had this %ifarch s390 s390x aarch64 %ix86 ppc64le # Decrease debuginfo verbosity to reduce memory consumption during final library linking. @@ -3514,6 +3516,10 @@ fi %changelog ## START: Generated by rpmautospec +* Tue Jun 02 2026 Tobias Brick - 21.1.8-8 +- chore(llvm-clang): add azurelinux-specific triple to clang default + fallback list + * Mon May 11 2026 Dan Streetman - 21.1.8-7 - fix(llvm): remove bootstrap workarounds From 483ddb49a5b5b9afccc670e016a1f00653bdd401 Mon Sep 17 00:00:00 2001 From: Tobias Brick Date: Tue, 2 Jun 2026 22:34:53 +0000 Subject: [PATCH 2/2] chore(llvm20-clang): add azurelinux-specific triple to clang default fallback list --- ...g-Add-azurelinux-to-fallback-triples.patch | 110 ++++++++++++++++++ base/comps/llvm20/llvm20.comp.toml | 13 +++ locks/llvm20.lock | 2 +- ...g-Add-azurelinux-to-fallback-triples.patch | 110 ++++++++++++++++++ specs/l/llvm20/llvm20.spec | 8 +- 5 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 base/comps/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch create mode 100644 specs/l/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch diff --git a/base/comps/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch b/base/comps/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch new file mode 100644 index 00000000000..84c52eb5f42 --- /dev/null +++ b/base/comps/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch @@ -0,0 +1,110 @@ +From 59fc631cea3757e47f8cb202f388c228ce070994 Mon Sep 17 00:00:00 2001 +From: Tobias Brick +Date: Fri, 29 May 2026 19:08:42 +0000 +Subject: [PATCH] [Clang] Add azurelinux to fallback triples + +--- + clang/lib/Driver/ToolChains/Gnu.cpp | 6 +++-- + .../Driver/Inputs/azurelinux_tree/lib/.keep | 0 + .../aarch64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/aarch64-azurelinux-linux/11/crtend.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtend.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crt1.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crti.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crtn.o | 0 + clang/test/Driver/linux-ld.c | 22 +++++++++++++++++++ + 10 files changed, 26 insertions(+), 2 deletions(-) + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/lib/.keep + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o + +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 131dd725c728..6c1e67bd0fff 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2337,7 +2337,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + // lists should shrink over time. Please don't add more elements to *Triples. + static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; + static const char *const AArch64Triples[] = { +- "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux"}; ++ "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux", ++ "aarch64-azurelinux-linux"}; + static const char *const AArch64beLibDirs[] = {"/lib"}; + static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu"}; + +@@ -2365,7 +2366,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", + "x86_64-redhat-linux", "x86_64-suse-linux", + "x86_64-manbo-linux-gnu", "x86_64-slackware-linux", +- "x86_64-unknown-linux", "x86_64-amazon-linux"}; ++ "x86_64-unknown-linux", "x86_64-amazon-linux", ++ "x86_64-azurelinux-linux"}; + static const char *const X32Triples[] = {"x86_64-linux-gnux32", + "x86_64-pc-linux-gnux32"}; + static const char *const X32LibDirs[] = {"/libx32", "/lib"}; +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep b/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c +index 8de1988d606c..787b22f26628 100644 +--- a/clang/test/Driver/linux-ld.c ++++ b/clang/test/Driver/linux-ld.c +@@ -1789,6 +1789,28 @@ + // CHECK-LD-AMI: "-lc" + // CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" + ++ ++// Check that Azure Linux GCC is found via fallback triple detection (x86_64). ++// The sysroot has GCC installed under x86_64-azurelinux-linux, but we target ++// the generic x86_64-unknown-linux-gnu to exercise the fallback triple list. ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=x86_64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX %s ++// CHECK-LD-AZURELINUX: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX: "{{.*}}/usr/lib/gcc/x86_64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11/../../../../lib64" ++ ++// Check that Azure Linux GCC is found via fallback triple detection (aarch64). ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=aarch64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX-AARCH64 %s ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11/../../../../lib64" + // Check whether the OpenEmbedded ARM libs are added correctly. + // RUN: %clang -### %s -no-pie 2>&1 \ + // RUN: --target=arm-oe-linux-gnueabi -rtlib=libgcc --unwindlib=platform \ +-- +2.52.0 + diff --git a/base/comps/llvm20/llvm20.comp.toml b/base/comps/llvm20/llvm20.comp.toml index 3bd58fb4a63..7714777938a 100644 --- a/base/comps/llvm20/llvm20.comp.toml +++ b/base/comps/llvm20/llvm20.comp.toml @@ -9,3 +9,16 @@ description = "Use the Azure Linux GCC toolchain triple in clang20's default con type = "spec-search-replace" regex = '%global cfg_file_content --gcc-triple=%{_target_cpu}-redhat-linux' replacement = '%global cfg_file_content --gcc-triple=%{_target_cpu}-%{_vendor}-linux' + +# Patch the fallback triples to include azurelinux. +# When clang's config files are not present, it will fall back to a set of hardcoded triples, which don't include azurelinux. +[[components.llvm20.overlays]] +description = "Patch fallback triples to include azurelinux." +type = "patch-add" +source = "0001-Clang-Add-azurelinux-to-fallback-triples.patch" + +[[components.llvm20.overlays]] +description = "Manually add above patch, because llvm uses some advanced %autopatch and doesn't pick this up automatically." +type = "spec-append-lines" +section = "%prep" +lines = ["%patch -p1 -P2202"] diff --git a/locks/llvm20.lock b/locks/llvm20.lock index 1ddda1f6a49..49c04763674 100644 --- a/locks/llvm20.lock +++ b/locks/llvm20.lock @@ -2,5 +2,5 @@ version = 1 import-commit = '2cecf3d98071e54a6bfc29d9656698c89a07a535' upstream-commit = '2cecf3d98071e54a6bfc29d9656698c89a07a535' -input-fingerprint = 'sha256:273220b2bf27b1985e554a23c3f8e887b6c56a64798220697bdb74bed071be38' +input-fingerprint = 'sha256:006439c7b66139db7ae25f8f3b61a13880b2e1c614848596b9d077d0aa335881' resolution-input-hash = 'sha256:466421704711c4fd3c71f0b2ed715a0e61d49e3e26f3a2637fee755795849c8e' diff --git a/specs/l/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch b/specs/l/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch new file mode 100644 index 00000000000..84c52eb5f42 --- /dev/null +++ b/specs/l/llvm20/0001-Clang-Add-azurelinux-to-fallback-triples.patch @@ -0,0 +1,110 @@ +From 59fc631cea3757e47f8cb202f388c228ce070994 Mon Sep 17 00:00:00 2001 +From: Tobias Brick +Date: Fri, 29 May 2026 19:08:42 +0000 +Subject: [PATCH] [Clang] Add azurelinux to fallback triples + +--- + clang/lib/Driver/ToolChains/Gnu.cpp | 6 +++-- + .../Driver/Inputs/azurelinux_tree/lib/.keep | 0 + .../aarch64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/aarch64-azurelinux-linux/11/crtend.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtbegin.o | 0 + .../gcc/x86_64-azurelinux-linux/11/crtend.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crt1.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crti.o | 0 + .../Inputs/azurelinux_tree/usr/lib64/crtn.o | 0 + clang/test/Driver/linux-ld.c | 22 +++++++++++++++++++ + 10 files changed, 26 insertions(+), 2 deletions(-) + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/lib/.keep + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o + create mode 100644 clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o + +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 131dd725c728..6c1e67bd0fff 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2337,7 +2337,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + // lists should shrink over time. Please don't add more elements to *Triples. + static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; + static const char *const AArch64Triples[] = { +- "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux"}; ++ "aarch64-none-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux", ++ "aarch64-azurelinux-linux"}; + static const char *const AArch64beLibDirs[] = {"/lib"}; + static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu"}; + +@@ -2365,7 +2366,8 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( + "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", + "x86_64-redhat-linux", "x86_64-suse-linux", + "x86_64-manbo-linux-gnu", "x86_64-slackware-linux", +- "x86_64-unknown-linux", "x86_64-amazon-linux"}; ++ "x86_64-unknown-linux", "x86_64-amazon-linux", ++ "x86_64-azurelinux-linux"}; + static const char *const X32Triples[] = {"x86_64-linux-gnux32", + "x86_64-pc-linux-gnux32"}; + static const char *const X32LibDirs[] = {"/libx32", "/lib"}; +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep b/clang/test/Driver/Inputs/azurelinux_tree/lib/.keep +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/aarch64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtbegin.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib/gcc/x86_64-azurelinux-linux/11/crtend.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crt1.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crti.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o b/clang/test/Driver/Inputs/azurelinux_tree/usr/lib64/crtn.o +new file mode 100644 +index 000000000000..e69de29bb2d1 +diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c +index 8de1988d606c..787b22f26628 100644 +--- a/clang/test/Driver/linux-ld.c ++++ b/clang/test/Driver/linux-ld.c +@@ -1789,6 +1789,28 @@ + // CHECK-LD-AMI: "-lc" + // CHECK-LD-AMI: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" + ++ ++// Check that Azure Linux GCC is found via fallback triple detection (x86_64). ++// The sysroot has GCC installed under x86_64-azurelinux-linux, but we target ++// the generic x86_64-unknown-linux-gnu to exercise the fallback triple list. ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=x86_64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX %s ++// CHECK-LD-AZURELINUX: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX: "{{.*}}/usr/lib/gcc/x86_64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-azurelinux-linux/11/../../../../lib64" ++ ++// Check that Azure Linux GCC is found via fallback triple detection (aarch64). ++// RUN: %clang -### %s -no-pie 2>&1 \ ++// RUN: --target=aarch64-unknown-linux-gnu -rtlib=libgcc --unwindlib=platform \ ++// RUN: --sysroot=%S/Inputs/azurelinux_tree \ ++// RUN: | FileCheck --check-prefix=CHECK-LD-AZURELINUX-AARCH64 %s ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" ++// CHECK-LD-AZURELINUX-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-azurelinux-linux/11{{/|\\\\}}crtbegin.o" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11" ++// CHECK-LD-AZURELINUX-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-azurelinux-linux/11/../../../../lib64" + // Check whether the OpenEmbedded ARM libs are added correctly. + // RUN: %clang -### %s -no-pie 2>&1 \ + // RUN: --target=arm-oe-linux-gnueabi -rtlib=libgcc --unwindlib=platform \ +-- +2.52.0 + diff --git a/specs/l/llvm20/llvm20.spec b/specs/l/llvm20/llvm20.spec index 512850711e8..77487507fdb 100644 --- a/specs/l/llvm20/llvm20.spec +++ b/specs/l/llvm20/llvm20.spec @@ -2,7 +2,7 @@ ## (rpmautospec version 0.8.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: - release_number = 5; + release_number = 6; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} @@ -606,6 +606,7 @@ Requires: %{pkg_name_llvm}-libs%{?_isa} = %{version}-%{release} Provides: llvm(major) = %{maj_ver} +Patch2202: 0001-Clang-Add-azurelinux-to-fallback-triples.patch %description LLVM is a compiler infrastructure designed for compile-time, link-time, runtime, and idle-time optimization of programs from arbitrary programming @@ -1263,6 +1264,7 @@ sed -i 's/LLDB_ENABLE_PYTHON/TRUE/' lldb/docs/CMakeLists.txt #endregion prep #region build +%patch -p1 -P2202 %build # TODO(kkleine): In clang we had this %ifarch s390 s390x aarch64 %ix86 ppc64le # Decrease debuginfo verbosity to reduce memory consumption during final library linking. @@ -3518,6 +3520,10 @@ fi %changelog ## START: Generated by rpmautospec +* Tue Jun 02 2026 Tobias Brick - 20.1.8-6 +- chore(llvm20-clang): add azurelinux-specific triple to clang default + fallback list + * Mon May 11 2026 Dan Streetman - 20.1.8-5 - fix(llvm): remove bootstrap workarounds