* [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD
@ 2026-02-20 6:02 Deepesh.Varatharajan
2026-02-20 6:02 ` [PATCH 1/4] clang-tools-extra: disable tests Deepesh.Varatharajan
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Deepesh.Varatharajan @ 2026-02-20 6:02 UTC (permalink / raw)
To: openembedded-core; +Cc: Sundeep.Kokkonda, Deepesh.Varatharajan, Randy.MacLeod
From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
This patch series introduces a test framework to run selftests for
target builds of Clang, LLVM, and LLD.
Summary of changes:
-Patch 1: Disable clang-tools-extra tests, as Clang's CMake cannot
detect the llvm-bcanalyzer target.
-Patch 2: Enabled the necessary CMake flags for clang, llvm & lld tests
-Patch 3: Selftest script for Clang, LLVM, and LLD including exclude list
-Patch 4: Fix rust build failure by replacing target llvm-config with native
Testing:
1. The test suite has been successfully validated on x86-64, arm64, riscv64
and arm32 for all Clang, LLD & LLVM components.
2. Clang and LLD tests passed successfully on x86. LLVM tests are skipped
on x86 since it's broken. A follow-up bug will be filed and addressed.
3. Clang, LLVM & LLD all together ~80K tests are there and we currently
~250 tests to exclude list which are failing (0.32%).
Impact on build time:
These builds were executed in a controlled environment without poky-sstate
enabled.
Default(without changes):
| Target | Run 1 | Run 2 | Run 3 | Average |
| --------- | ---------- | ---------- | ---------- | -------------- |
| llvm | 22m18.441s | 22m31.905s | 22m23.718s | 22m24.688s |
| clang | 30m09.774s | 30m22.680s | 30m15.312s | 30m15.922s |
| lld | 1m26.994s | 1m30.415s | 1m29.006s | 1m28.805s |
With the testsuite changes applied:
| Target | Run 1 | Run 2 | Run 3 | Average |
| --------- | ---------- | ---------- | ---------- | -------------- |
| llvm | 23m32.104s | 23m45.887s | 23m38.157s | 23m38.716s |
| clang | 30m31.402s | 30m46.198s | 30m39.445s | 30m39.015s |
| lld | 1m29.845s | 1m34.212s | 1m31.925s | 1m31.994s |
Comparison:
| Target | Default Avg | With Changes Avg | **Diff** |
| --------- | ----------- | ---------------- | ---------------- |
| llvm | 22m24.688s | 23m38.716s | +1m14.028s |
| clang | 30m15.922s | 30m39.015s | +0m23.093s |
| lld | 1m28.805s | 1m31.994s | +0m3.189s |
Impact on tmpdir size:
| Metric | Size |
| ------------------------------------ | ----- |
| Default target `tmpdir` size | 74 GB |
| Target `tmpdir` size (after changes) | 79 GB |
| Difference | +5 GB |
Deepesh Varatharajan (4):
clang-tools-extra: disable tests
clang: Enable cmake flags for llvm, clang, lld tests
oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD
rust: Fix rust build failure
meta/lib/oeqa/selftest/cases/clang.py | 298 ++++++++++++++++++
.../0042-guard-clang-tools-extra-test.patch | 74 +++++
meta/recipes-devtools/clang/clang_git.bb | 2 +
meta/recipes-devtools/clang/common.inc | 1 +
meta/recipes-devtools/clang/lld_git.bb | 2 +
meta/recipes-devtools/clang/llvm_git.bb | 8 +-
meta/recipes-devtools/rust/rust_1.93.0.bb | 5 +-
7 files changed, 387 insertions(+), 3 deletions(-)
create mode 100644 meta/lib/oeqa/selftest/cases/clang.py
create mode 100644 meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch
--
2.49.0
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/4] clang-tools-extra: disable tests 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan @ 2026-02-20 6:02 ` Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 2/4] clang: Enable cmake flags for llvm, clang, lld tests Deepesh.Varatharajan ` (4 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Deepesh.Varatharajan @ 2026-02-20 6:02 UTC (permalink / raw) To: openembedded-core; +Cc: Sundeep.Kokkonda, Deepesh.Varatharajan, Randy.MacLeod From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> clang-tools-extra tests depend on the llvm-bcanalyzer CMake target, which exists in LLVM's CMake project but is not visible when Clang is built separately. To run clang tests, disable clang-tools-extra tests for now. Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> --- .../0042-guard-clang-tools-extra-test.patch | 74 +++++++++++++++++++ meta/recipes-devtools/clang/common.inc | 1 + 2 files changed, 75 insertions(+) create mode 100644 meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch diff --git a/meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch b/meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch new file mode 100644 index 0000000000..a37ab65975 --- /dev/null +++ b/meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch @@ -0,0 +1,74 @@ +clang-tools-extra tests depend on the llvm-bcanalyzer CMake target, which +exists in LLVM's CMake project but is not visible when Clang is built +separately. To run clang tests, disable clang-tools-extra tests for now. + +Without this patch when CLANG_INCLUDE_TESTS is ON got the following error + +-------------------------------------------------------------------------------- +| CMake Error at ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2113 (add_dependencies): +| The dependency target "llvm-bcanalyzer" of target +| "check-clang-extra-clang-tidy-infrastructure-header-filter-from-config-file-simple" +| does not exist. +| Call Stack (most recent call first): +| ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2221 (add_lit_target) +| tools/extra/test/CMakeLists.txt:87 (add_lit_testsuites) +| +| CMake Error at ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2113 (add_dependencies): +| The dependency target "llvm-bcanalyzer" of target +| "check-clang-extra-modularize" does not exist. +| Call Stack (most recent call first): +| ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2221 (add_lit_target) +| tools/extra/test/CMakeLists.txt:87 (add_lit_testsuites) +------------------------------------------------------------------------------- + +Upstream-Status: Inappropriate [OE-Specific] +Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> + +diff --git a/clang-tools-extra/CMakeLists.txt b/clang-tools-extra/CMakeLists.txt +index 6b6f2b1..26e4c10 100644 +--- a/clang-tools-extra/CMakeLists.txt ++++ b/clang-tools-extra/CMakeLists.txt +@@ -6,7 +6,7 @@ include(GNUInstallDirs) + option(CLANG_TIDY_ENABLE_STATIC_ANALYZER + "Include static analyzer checks in clang-tidy" ON) + +-if(CLANG_INCLUDE_TESTS) ++if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS) + umbrella_lit_testsuite_begin(check-clang-tools) + + option(CLANG_TOOLS_TEST_USE_VG "Run Clang tools' tests under Valgrind" OFF) +@@ -43,7 +43,7 @@ if (CLANG_ENABLE_CLANGD) + endif() + + # Add the common testsuite after all the tools. +-if(CLANG_INCLUDE_TESTS) ++if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS) + add_subdirectory(test) + add_subdirectory(unittests) + umbrella_lit_testsuite_end(check-clang-tools) +diff --git a/clang-tools-extra/include-cleaner/CMakeLists.txt b/clang-tools-extra/include-cleaner/CMakeLists.txt +index dc147f9..4855577 100644 +--- a/clang-tools-extra/include-cleaner/CMakeLists.txt ++++ b/clang-tools-extra/include-cleaner/CMakeLists.txt +@@ -1,7 +1,7 @@ + include_directories(include) + add_subdirectory(lib) + add_subdirectory(tool) +-if(CLANG_INCLUDE_TESTS) ++if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS) + add_subdirectory(test) + add_subdirectory(unittests) + endif() +diff --git a/clang-tools-extra/clangd/CMakeLists.txt b/clang-tools-extra/clangd/CMakeLists.txt +index a1e9da4..94dcb96 100644 +--- a/clang-tools-extra/clangd/CMakeLists.txt ++++ b/clang-tools-extra/clangd/CMakeLists.txt +@@ -213,7 +213,7 @@ endif() + option(CLANGD_BUILD_DEXP "Build the dexp tool as part of Clangd" ON) + llvm_canonicalize_cmake_booleans(CLANGD_BUILD_DEXP) + +-if(CLANG_INCLUDE_TESTS) ++if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS) + add_subdirectory(test) + add_subdirectory(unittests) + endif() diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc index 1e70e9c64b..c5f607aa21 100644 --- a/meta/recipes-devtools/clang/common.inc +++ b/meta/recipes-devtools/clang/common.inc @@ -65,6 +65,7 @@ SRC_URI = "\ file://0001-dont-expose-LLVM_HAVE_OPT_VIEWER_MODULES.patch \ file://0001-clang-Support-building-native-tools-when-cross-compi.patch \ file://clang-no-tblgen.patch \ + file://0042-guard-clang-tools-extra-test.patch \ " # Fallback to no-PIE if not set GCCPIE ??= "" -- 2.49.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/4] clang: Enable cmake flags for llvm, clang, lld tests 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 1/4] clang-tools-extra: disable tests Deepesh.Varatharajan @ 2026-02-20 6:02 ` Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 3/4] oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD Deepesh.Varatharajan ` (3 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Deepesh.Varatharajan @ 2026-02-20 6:02 UTC (permalink / raw) To: openembedded-core; +Cc: Sundeep.Kokkonda, Deepesh.Varatharajan, Randy.MacLeod From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> Enable the necessary CMake flags to build and run tests for LLVM, Clang and LLD. Install the LLVM target tools needed to run tests via llvm-lit inside QEMU. Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> --- meta/recipes-devtools/clang/clang_git.bb | 2 ++ meta/recipes-devtools/clang/lld_git.bb | 2 ++ meta/recipes-devtools/clang/llvm_git.bb | 8 +++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index e10c327a2a..a6950e433e 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -77,6 +77,8 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ -DCMAKE_STRIP=${STAGING_BINDIR_NATIVE}/llvm-strip \ " +EXTRA_OECMAKE:append:class-target = "-DCLANG_INCLUDE_TESTS=ON -DLLVM_INCLUDE_TESTS=ON" + DEPENDS = "llvm-tblgen-native llvm-native llvm binutils zlib zstd libffi libxml2 libxml2-native" DEPENDS:append:class-target = " ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcxx', '', d)}" diff --git a/meta/recipes-devtools/clang/lld_git.bb b/meta/recipes-devtools/clang/lld_git.bb index ba36942790..798e76746a 100644 --- a/meta/recipes-devtools/clang/lld_git.bb +++ b/meta/recipes-devtools/clang/lld_git.bb @@ -19,4 +19,6 @@ OECMAKE_SOURCEPATH = "${S}/lld" EXTRA_OECMAKE += "-DLLVM_INCLUDE_TESTS=OFF -DLLVM_USE_SYMLINKS=ON \ -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen" +EXTRA_OECMAKE:append:class-target = "-DLLVM_INCLUDE_TESTS=ON" + BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/clang/llvm_git.bb b/meta/recipes-devtools/clang/llvm_git.bb index 96ea383731..d99d6336ff 100644 --- a/meta/recipes-devtools/clang/llvm_git.bb +++ b/meta/recipes-devtools/clang/llvm_git.bb @@ -48,6 +48,7 @@ EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=MinSizeRel \ -DLLVM_INCLUDE_EXAMPLES=OFF \ -DLLVM_TOOL_OBJ2YAML_BUILD=OFF \ -DLLVM_TOOL_YAML2OBJ_BUILD=OFF \ + -DLLVM_TOOL_LLVM_EXEGESIS_BUILD=ON \ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ @@ -58,6 +59,11 @@ EXTRA_OECMAKE:append:class-target = "\ -DLLVM_TARGET_ARCH=${HOST_ARCH} \ -DLLVM_HOST_TRIPLE=${TARGET_SYS}${HF} \ -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config \ + -DLLVM_INCLUDE_TESTS=ON \ + -DLLVM_BUILD_TESTS=ON \ + -DLLVM_INSTALL_GTEST=ON \ + -DLLVM_TOOL_OBJ2YAML_BUILD=ON \ + -DLLVM_TOOL_YAML2OBJ_BUILD=ON \ " EXTRA_OECMAKE:append:class-nativesdk = "\ @@ -69,7 +75,6 @@ PACKAGECONFIG ??= "eh rtti shared-libs ${@bb.utils.filter('DISTRO_FEATURES', 'lt PACKAGECONFIG:remove:class-native = "lto thin-lto" PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF" -PACKAGECONFIG[exegesis] = "-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=ON,-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=OFF" PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit" PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF" PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,-DLLVM_BUILD_LLVM_DYLIB=OFF -DLLVM_LINK_LLVM_DYLIB=OFF" @@ -124,6 +129,7 @@ SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " llvm_sysroot_preprocess" llvm_sysroot_preprocess() { install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/ install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/ + install -m 0755 ${B}/bin/* ${SYSROOT_DESTDIR}${bindir}/ } FILES:${PN}-dev += "${libdir}/llvm-config" -- 2.49.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/4] oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 1/4] clang-tools-extra: disable tests Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 2/4] clang: Enable cmake flags for llvm, clang, lld tests Deepesh.Varatharajan @ 2026-02-20 6:02 ` Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 4/4] rust: Fix rust build failure Deepesh.Varatharajan ` (2 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Deepesh.Varatharajan @ 2026-02-20 6:02 UTC (permalink / raw) To: openembedded-core; +Cc: Sundeep.Kokkonda, Deepesh.Varatharajan, Randy.MacLeod From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> Introduce selftests to validate LLVM, Clang, and LLD test suites using llvm-lit for target builds. The tests cover: - Target tests execution under QEMU via NFS using llvm-lit - Architecture and OS-specific test filtering - Known failing test exclusions - LLVM testing is skipped for x86 Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> --- meta/lib/oeqa/selftest/cases/clang.py | 298 ++++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 meta/lib/oeqa/selftest/cases/clang.py diff --git a/meta/lib/oeqa/selftest/cases/clang.py b/meta/lib/oeqa/selftest/cases/clang.py new file mode 100644 index 0000000000..c307c324b9 --- /dev/null +++ b/meta/lib/oeqa/selftest/cases/clang.py @@ -0,0 +1,298 @@ +# +# Copyright (c) 2026 by Wind River Systems, Inc. +# +# SPDX-License-Identifier: MIT +# +import time +import contextlib +import subprocess +from oeqa.core.decorator import OETestTag +from oeqa.core.decorator.data import skipIfArch +from oeqa.selftest.case import OESelftestTestCase +from oeqa.utils.commands import bitbake, get_bb_var, runqemu +from oeqa.utils.nfs import unfs_server + +class ClangFamilyBase(OESelftestTestCase): + + ALL_ARCHS = [ + "aarch64", "arm", "i386", "x86_64", "x86", + "mips", "riscv", "riscv64", "ppc", "ppc64", + "hexagon", "sparc", "sparcv9", "msp430", + "loongarch" + ] + + EXCLUDE_OS = [ + "Mac", "macho", "Darwin", "OSX", "wasm", + "Windows", "Win", "MinGW", "COFF", "zos", + "FreeBSD", "aix", "fuchsia", "ve" + ] + + DEFAULT_PACKAGES = [ + "libgcc", + "libstdc++", + "llvm", + "python3", + "python3-core", + "python3-modules", + "nfs-utils", + ] + + def setUp(self): + super().setUp() + self.target_arch = get_bb_var("TARGET_ARCH") + self.tmpdir = get_bb_var("TMPDIR") + arches = [a for a in self.ALL_ARCHS if a != self.target_arch] + self.filter_out = "|".join(arches + self.EXCLUDE_OS) + + def build_core_image(self): + features = [ + 'IMAGE_FEATURES += "ssh-server-openssh"', + 'CORE_IMAGE_EXTRA_INSTALL += "{}"'.format(" ".join(self.DEFAULT_PACKAGES)) + ] + self.write_config("\n".join(features)) + bitbake("core-image-minimal") + + def start_qemu_nfs(self): + ctx = contextlib.ExitStack() + s = ctx.__enter__() + nfsport, mountport = s.enter_context(unfs_server(self.tmpdir, udp=False)) + qemu = s.enter_context( + runqemu("core-image-minimal", runqemuparams="nographic", qemuparams="-m 3072") + ) + + status, _ = qemu.run("uname") + if status != 0: + raise AssertionError("QEMU SSH check failed") + + status, _ = qemu.run(f"mkdir -p {self.tmpdir}") + if status != 0: + raise AssertionError("Failed to create TMPDIR on target") + + mountcmd = ( + f"mount -o noac,nfsvers=3,port={nfsport},mountport={mountport} " + f"\"{qemu.server_ip}:{self.tmpdir}\" \"{self.tmpdir}\"" + ) + status, output = qemu.run(mountcmd) + if status != 0: + raise AssertionError(f"NFS mount failed: {output}") + return ctx, qemu + + def run_llvm_lit(self, recipe, extra_filter=None, timeout=None): + build_dir = get_bb_var("B", recipe) + workdir = get_bb_var("WORKDIR", recipe) + lit_bin = f"{build_dir}/bin/llvm-lit" + test_dir = f"{build_dir}/test" + guest_result = f"/tmp/{recipe}-target-results.json" + host_result = f"{workdir}/{recipe}-target-results.log" + + filter_regex = self.filter_out + if extra_filter: + filter_regex += "|" + "|".join(extra_filter) + + cmd = ( + f"cd {build_dir}/bin && " + f"python3 ./llvm-lit --filter-out '{filter_regex}' ../test -o {guest_result}" + ) + + return cmd, guest_result, host_result + +@OETestTag("toolchain-system") +@OETestTag("toolchain-user") +@OETestTag("runqemu") +class LLVMSelfTestSystemEmulated(ClangFamilyBase): + + LLVM_EXTRA_EXCLUDE = [ + "BugPoint/compile-custom\\.ll$", + "BugPoint/replace-funcs-with-null\\.ll$", + "CodeGen/AMDGPU/lds-run-twice-absolute-md\\.ll$", + "CodeGen/AMDGPU/lds-run-twice\\.ll$", + "CodeGen/Generic/fp128-math-libcalls\\.ll$", + "CodeGen/Thumb/2009-08-20-ISelBug\\.ll$", + "CodeGen/Thumb/2010-07-15-debugOrdering\\.ll$", + "CodeGen/Thumb/2014-06-10-thumb1-ldst-opt-bug\\.ll$", + "CodeGen/Thumb/PR17309\\.ll$", + "CodeGen/Thumb/dyn-stackalloc\\.ll$", + "CodeGen/Thumb/frame-access\\.ll$", + "CodeGen/Thumb/ldm-merge-call\\.ll$", + "CodeGen/Thumb/pop\\.ll$", + "CodeGen/Thumb/pr35836\\.ll$", + "CodeGen/Thumb/pr35836_2\\.ll$", + "CodeGen/Thumb/smul_fix\\.ll$", + "CodeGen/Thumb/stack-guard-xo\\.ll$", + "CodeGen/Thumb/stm-deprecated\\.ll$", + "CodeGen/Thumb/stm-merge\\.ll$", + "CodeGen/Thumb/thumb-ldm\\.ll$", + "CodeGen/Thumb/ucmp\\.ll$", + "CodeGen/Thumb/vargs\\.ll$", + "CodeGen/Thumb2/2009-08-21-PostRAKill4\\.ll$", + "CodeGen/Thumb2/2009-09-01-PostRAProlog\\.ll$", + "CodeGen/Thumb2/constant-islands\\.ll$", + "CodeGen/Thumb2/ldr-str-imm12\\.ll$", + "CodeGen/Thumb2/pacbti-m-varargs-1\\.ll$", + "CodeGen/Thumb2/pacbti-m-varargs-2\\.ll$", + "CodeGen/Thumb2/thumb2-ldm\\.ll$", + "ExecutionEngine/MCJIT/.*", + "Other/spirv-sim/.*", + "Transforms/LoopLoadElim/.*", + "tools/llvm-cgdata/merge-combined-funcmap-hashtree\\.test$", + "tools/llvm-cgdata/merge-funcmap-concat\\.test$", + "tools/llvm-cgdata/merge-funcmap-double\\.test$", + "tools/llvm-cgdata/merge-funcmap-single\\.test$", + "tools/llvm-cgdata/merge-hashtree-concat\\.test$", + "tools/llvm-cgdata/merge-hashtree-double\\.test$", + "tools/llvm-cgdata/merge-hashtree-single\\.test$", + "tools/llvm-locstats/locstats\\.ll$", + "tools/llvm-locstats/no_scope_bytes\\.ll$", + "tools/llvm-objcopy/ELF/basic-binary-copy\\.test$", + "tools/llvm-objcopy/ELF/binary-first-seg-offset-zero\\.test$", + "tools/llvm-objcopy/ELF/binary-no-paddr\\.test$", + "tools/llvm-objcopy/ELF/binary-paddr\\.test$", + "tools/llvm-objcopy/ELF/binary-segment-layout\\.test$", + "tools/llvm-objcopy/ELF/check-addr-offset-align-binary\\.test$", + "tools/llvm-objcopy/ELF/dump-section\\.test$", + "tools/llvm-objcopy/ELF/gap-fill\\.test$", + "tools/llvm-objcopy/ELF/pad-to\\.test$", + "tools/llvm-objcopy/ELF/parent-loop-check\\.test$", + "tools/llvm-objcopy/ELF/strip-all-gnu\\.test$", + "tools/llvm-objcopy/ELF/strip-sections-keep\\.test$", + "tools/llvm-objcopy/ELF/strip-sections-only-section\\.test$", + "tools/llvm-objcopy/ELF/strip-sections\\.test$", + "tools/llvm-objcopy/ELF/update-section\\.test$", + "tools/llvm-original-di-preservation/basic\\.test$", + "tools/llvm-reduce/temporary-files-as-bitcode-split\\.ll$", + "tools/opt-viewer/.*", + "tools/UpdateTestChecks/.*", + "tools/yaml2obj/ELF/custom-fill\\.yaml$", + "tools/yaml2obj/ELF/header-elfdatanone\\.yaml$", + "tools/yaml2obj/ELF/header-sh-fields\\.yaml$", + "tools/yaml2obj/GOFF/GOFF-header-end\\.yaml$", + "tools/yaml2obj/GOFF/GOFF-header-settings\\.yaml$", + ] + + #Fixme LLVM module testing is broken for x86 + @skipIfArch(['i686']) + def test_llvm(self): + bitbake("llvm") + self.build_core_image() + ctx, qemu = self.start_qemu_nfs() + with ctx: + cmd, guest_result, host_result = self.run_llvm_lit( + "llvm", extra_filter=self.LLVM_EXTRA_EXCLUDE + ) + status, output = qemu.run(cmd, timeout=7200) + if status != 0: + raise AssertionError(f"llvm-lit failed for LLVM: {output}") + status, _ = qemu.run(f"cp {guest_result} {host_result}") + if status != 0: + raise AssertionError("Failed to copy LLVM lit results back to host") + +@OETestTag("toolchain-system") +@OETestTag("toolchain-user") +@OETestTag("runqemu") +class ClangSelfTestSystemEmulated(ClangFamilyBase): + + CLANG_EXTRA_EXCLUDE = [ + "APINotes/yaml-roundtrip-2\\.test$", + "APINotes/yaml-roundtrip\\.test$", + "AST/ByteCode/builtin-bit-cast-long-double\\.cpp$", + "AST/ByteCode/builtin-bit-cast\\.cpp$", + "AST/ByteCode/builtin-functions\\.cpp$", + "AST/ByteCode/c\\.c$", + "AST/ByteCode/codegen\\.cpp$", + "AST/ByteCode/complex\\.c$", + "AST/ByteCode/complex\\.cpp$", + "AST/ByteCode/const-fpfeatures\\.cpp$", + "AST/ByteCode/constexpr\\.c$", + "AST/ByteCode/fixed-point\\.cpp$", + "AST/ByteCode/floats\\.cpp$", + "AST/ByteCode/functions\\.cpp$", + "AST/ByteCode/intap\\.cpp$", + "AST/ByteCode/invalid\\.cpp$", + "AST/ByteCode/lambda\\.cpp$", + "AST/ByteCode/literals\\.cpp$", + "AST/ByteCode/placement-new\\.cpp$", + "AST/ByteCode/records\\.cpp$", + "AST/ByteCode/spaceship\\.cpp$", + "AST/ByteCode/unions\\.cpp$", + "Analysis/dead-stores\\.c$", + "Analysis/exploded-graph-rewriter/.*", + "Analysis/scan-build/cxx-name\\.test$", + "Analysis/scan-build/deduplication\\.test$", + "Analysis/scan-build/exclude_directories\\.test$", + "Analysis/scan-build/help\\.test$", + "Analysis/scan-build/html_output\\.test$", + "Analysis/scan-build/plist_html_output\\.test$", + "Analysis/scan-build/plist_output\\.test$", + "Analysis/scan-build/rebuild_index/rebuild_index\\.test$", + "Analysis/scan-build/silence-core-checkers\\.test$", + "Analysis/virtualcall-fixits\\.cpp$", + "C/C23/n3018\\.c$", + "ClangScanDeps/module.*", + "ClangScanDeps/multiple-commands\\.c$", + "ClangScanDeps/optimize-vfs-edgecases\\.m$", + "ClangScanDeps/optimize-vfs-pch\\.m$", + "ClangScanDeps/visible-modules\\.c$", + "ClangScanDeps/Wsystem-headers-in-module\\.c$", + "CodeGen/compound-literal\\.c$", + "CodeGenOpenCLCXX/constexpr\\.clcpp$", + "Format/docs_updated\\.test$", + "Interpreter/cxx20-modules\\.cppm$", + "Modules/double-quotes\\.m$", + "Modules/framework-public-includes-private\\.m$", + "Modules/implicit-module-header-maps\\.cpp$", + "Preprocessor/header-search-crash\\.c$", + "Preprocessor/headermap-rel\\.c$", + "Preprocessor/headermap-rel2\\.c$", + "Preprocessor/include-header-missing-in-framework-with-headermap\\.c$", + "Preprocessor/search-path-usage\\.m$", + "Sema/arithmetic-fence-builtin\\.c$", + "Sema/atomic-expr\\.c$", + "Sema/builtin-expect-with-probability\\.cpp$", + "Sema/constant-builtins-fmax\\.cpp$", + "Sema/constant-builtins-fmaximum-num\\.cpp$", + "Sema/constant-builtins-fmin\\.cpp$", + "Sema/constant-builtins-fminimum-num\\.cpp$", + ] + + def test_clang(self): + bitbake("clang") + self.build_core_image() + ctx, qemu = self.start_qemu_nfs() + with ctx: + cmd, guest_result, host_result = self.run_llvm_lit( + "clang", extra_filter=self.CLANG_EXTRA_EXCLUDE + ) + status, output = qemu.run(cmd, timeout=3600) + if status != 0: + raise AssertionError(f"llvm-lit failed for Clang: {output}") + status, _ = qemu.run(f"cp {guest_result} {host_result}") + if status != 0: + raise AssertionError("Failed to copy Clang lit results back to host") + +@OETestTag("toolchain-system") +@OETestTag("toolchain-user") +@OETestTag("runqemu") +class LLDSelfTestSystemEmulated(ClangFamilyBase): + + LLD_EXTRA_EXCLUDE = [ + "ELF/fill-trap\\.s$", + "ELF/oformat-binary-ttext\\.s$", + "ELF/oformat-binary\\.s$", + "ELF/partition-synthetic-sections\\.s$", + "ELF/reproduce\\.s$", + ] + + def test_lld(self): + bitbake("lld") + self.build_core_image() + ctx, qemu = self.start_qemu_nfs() + with ctx: + cmd, guest_result, host_result = self.run_llvm_lit( + "lld", extra_filter=self.LLD_EXTRA_EXCLUDE + ) + status, output = qemu.run(cmd, timeout=3600) + if status != 0: + raise AssertionError(f"llvm-lit failed for LLD: {output}") + status, _ = qemu.run(f"cp {guest_result} {host_result}") + if status != 0: + raise AssertionError("Failed to copy LLD lit results back to host") -- 2.49.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/4] rust: Fix rust build failure 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan ` (2 preceding siblings ...) 2026-02-20 6:02 ` [PATCH 3/4] oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD Deepesh.Varatharajan @ 2026-02-20 6:02 ` Deepesh.Varatharajan 2026-02-21 8:23 ` [OE-core] [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Mathieu Dubois-Briand 2026-02-26 15:31 ` Randy MacLeod 5 siblings, 0 replies; 9+ messages in thread From: Deepesh.Varatharajan @ 2026-02-20 6:02 UTC (permalink / raw) To: openembedded-core; +Cc: Sundeep.Kokkonda, Deepesh.Varatharajan, Randy.MacLeod From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> Target LLVM tools are installed in the sysroot because they are needed for llvm-lit to run tests. However, this leads Rust to pick up a target llvm-config that cannot run on the host. Overwrite it with the native llvm-config so Rust can execute it correctly. Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> --- meta/recipes-devtools/rust/rust_1.93.0.bb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meta/recipes-devtools/rust/rust_1.93.0.bb b/meta/recipes-devtools/rust/rust_1.93.0.bb index 2be0bd8d89..86da4f99d4 100644 --- a/meta/recipes-devtools/rust/rust_1.93.0.bb +++ b/meta/recipes-devtools/rust/rust_1.93.0.bb @@ -236,9 +236,10 @@ rust_runx () { # Copy the natively built llvm-config into the target so we can run it. Horrible, # but works! - if [ ${RUST_ALTERNATE_EXE_PATH_NATIVE} != ${RUST_ALTERNATE_EXE_PATH} -a ! -f ${RUST_ALTERNATE_EXE_PATH} ]; then + if [ ${RUST_ALTERNATE_EXE_PATH_NATIVE} != ${RUST_ALTERNATE_EXE_PATH} ]; then mkdir -p `dirname ${RUST_ALTERNATE_EXE_PATH}` - cp ${RUST_ALTERNATE_EXE_PATH_NATIVE} ${RUST_ALTERNATE_EXE_PATH} + rm -f ${RUST_ALTERNATE_EXE_PATH} + cp -f ${RUST_ALTERNATE_EXE_PATH_NATIVE} ${RUST_ALTERNATE_EXE_PATH} patchelf --remove-rpath ${RUST_ALTERNATE_EXE_PATH} fi -- 2.49.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan ` (3 preceding siblings ...) 2026-02-20 6:02 ` [PATCH 4/4] rust: Fix rust build failure Deepesh.Varatharajan @ 2026-02-21 8:23 ` Mathieu Dubois-Briand 2026-02-25 8:56 ` Deepesh Varatharajan 2026-02-26 15:31 ` Randy MacLeod 5 siblings, 1 reply; 9+ messages in thread From: Mathieu Dubois-Briand @ 2026-02-21 8:23 UTC (permalink / raw) To: deepesh.varatharajan, openembedded-core Cc: Sundeep.Kokkonda, Deepesh.Varatharajan, Randy.MacLeod On Fri Feb 20, 2026 at 7:02 AM CET, Deepesh via lists.openembedded.org Varatharajan wrote: > From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> > > This patch series introduces a test framework to run selftests for > target builds of Clang, LLVM, and LLD. > > Summary of changes: > -Patch 1: Disable clang-tools-extra tests, as Clang's CMake cannot > detect the llvm-bcanalyzer target. > -Patch 2: Enabled the necessary CMake flags for clang, llvm & lld tests > -Patch 3: Selftest script for Clang, LLVM, and LLD including exclude list > -Patch 4: Fix rust build failure by replacing target llvm-config with native > > Testing: > 1. The test suite has been successfully validated on x86-64, arm64, riscv64 > and arm32 for all Clang, LLD & LLVM components. > 2. Clang and LLD tests passed successfully on x86. LLVM tests are skipped > on x86 since it's broken. A follow-up bug will be filed and addressed. > 3. Clang, LLVM & LLD all together ~80K tests are there and we currently > ~250 tests to exclude list which are failing (0.32%). > > Impact on build time: > These builds were executed in a controlled environment without poky-sstate > enabled. > > Default(without changes): > | Target | Run 1 | Run 2 | Run 3 | Average | > | --------- | ---------- | ---------- | ---------- | -------------- | > | llvm | 22m18.441s | 22m31.905s | 22m23.718s | 22m24.688s | > | clang | 30m09.774s | 30m22.680s | 30m15.312s | 30m15.922s | > | lld | 1m26.994s | 1m30.415s | 1m29.006s | 1m28.805s | > > With the testsuite changes applied: > | Target | Run 1 | Run 2 | Run 3 | Average | > | --------- | ---------- | ---------- | ---------- | -------------- | > | llvm | 23m32.104s | 23m45.887s | 23m38.157s | 23m38.716s | > | clang | 30m31.402s | 30m46.198s | 30m39.445s | 30m39.015s | > | lld | 1m29.845s | 1m34.212s | 1m31.925s | 1m31.994s | > > Comparison: > | Target | Default Avg | With Changes Avg | **Diff** | > | --------- | ----------- | ---------------- | ---------------- | > | llvm | 22m24.688s | 23m38.716s | +1m14.028s | > | clang | 30m15.922s | 30m39.015s | +0m23.093s | > | lld | 1m28.805s | 1m31.994s | +0m3.189s | > > Impact on tmpdir size: > | Metric | Size | > | ------------------------------------ | ----- | > | Default target `tmpdir` size | 74 GB | > | Target `tmpdir` size (after changes) | 79 GB | > | Difference | +5 GB | > > Deepesh Varatharajan (4): Hi Deepesh, It looks like some selftests are failing: 2026-02-20 20:32:17,178 - oe-selftest - INFO - clang.LLVMSelfTestSystemEmulated.test_llvm (subunit.RemotedTestCase) 2026-02-20 20:32:17,179 - oe-selftest - INFO - ... FAIL ... 2026-02-20 20:32:17,179 - oe-selftest - INFO - 3: 1/1 8/21 (298.44s) (0 failed) (clang.LLVMSelfTestSystemEmulated.test_llvm) 2026-02-20 20:32:17,179 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/qemux86-64-tc/build/layers/openembedded-core/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f return func(*args, **kwargs) File "/srv/pokybuild/yocto-worker/qemux86-64-tc/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/clang.py", line 184, in test_llvm raise AssertionError(f"llvm-lit failed for LLVM: {output}") AssertionError: llvm-lit failed for LLVM: sh: cd: line 0: can't cd to /srv/pokybuild/yocto-worker/qemux86-64-tc/build/build-st-177928/tmp/work/x86-64-v3-poky-linux/llvm/21.1.8/build/bin: No such file or directory ... 2026-02-20 20:32:20,596 - oe-selftest - INFO - clang.LLDSelfTestSystemEmulated.test_lld (subunit.RemotedTestCase) 2026-02-20 20:32:20,597 - oe-selftest - INFO - ... FAIL ... 2026-02-20 20:32:20,814 - oe-selftest - INFO - clang.ClangSelfTestSystemEmulated.test_clang (subunit.RemotedTestCase) 2026-02-20 20:32:20,815 - oe-selftest - INFO - ... FAIL https://autobuilder.yoctoproject.org/valkyrie/#/builders/66/builds/3243 https://autobuilder.yoctoproject.org/valkyrie/#/builders/58/builds/1069 https://autobuilder.yoctoproject.org/valkyrie/#/builders/42/builds/3147 https://autobuilder.yoctoproject.org/valkyrie/#/builders/28/builds/3165 https://autobuilder.yoctoproject.org/valkyrie/#/builders/5/builds/3151 Can you have a look at these failures? Thanks, Mathieu -- Mathieu Dubois-Briand, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD 2026-02-21 8:23 ` [OE-core] [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Mathieu Dubois-Briand @ 2026-02-25 8:56 ` Deepesh Varatharajan 0 siblings, 0 replies; 9+ messages in thread From: Deepesh Varatharajan @ 2026-02-25 8:56 UTC (permalink / raw) To: Mathieu Dubois-Briand, openembedded-core; +Cc: Sundeep.Kokkonda, Randy.MacLeod On 21-02-2026 13:53, Mathieu Dubois-Briand wrote: > CAUTION: This email comes from a non Wind River email account! > Do not click links or open attachments unless you recognize the sender and know the content is safe. > > On Fri Feb 20, 2026 at 7:02 AM CET, Deepesh via lists.openembedded.org Varatharajan wrote: >> From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> >> >> This patch series introduces a test framework to run selftests for >> target builds of Clang, LLVM, and LLD. >> >> Summary of changes: >> -Patch 1: Disable clang-tools-extra tests, as Clang's CMake cannot >> detect the llvm-bcanalyzer target. >> -Patch 2: Enabled the necessary CMake flags for clang, llvm & lld tests >> -Patch 3: Selftest script for Clang, LLVM, and LLD including exclude list >> -Patch 4: Fix rust build failure by replacing target llvm-config with native >> >> Testing: >> 1. The test suite has been successfully validated on x86-64, arm64, riscv64 >> and arm32 for all Clang, LLD & LLVM components. >> 2. Clang and LLD tests passed successfully on x86. LLVM tests are skipped >> on x86 since it's broken. A follow-up bug will be filed and addressed. >> 3. Clang, LLVM & LLD all together ~80K tests are there and we currently >> ~250 tests to exclude list which are failing (0.32%). >> >> Impact on build time: >> These builds were executed in a controlled environment without poky-sstate >> enabled. >> >> Default(without changes): >> | Target | Run 1 | Run 2 | Run 3 | Average | >> | --------- | ---------- | ---------- | ---------- | -------------- | >> | llvm | 22m18.441s | 22m31.905s | 22m23.718s | 22m24.688s | >> | clang | 30m09.774s | 30m22.680s | 30m15.312s | 30m15.922s | >> | lld | 1m26.994s | 1m30.415s | 1m29.006s | 1m28.805s | >> >> With the testsuite changes applied: >> | Target | Run 1 | Run 2 | Run 3 | Average | >> | --------- | ---------- | ---------- | ---------- | -------------- | >> | llvm | 23m32.104s | 23m45.887s | 23m38.157s | 23m38.716s | >> | clang | 30m31.402s | 30m46.198s | 30m39.445s | 30m39.015s | >> | lld | 1m29.845s | 1m34.212s | 1m31.925s | 1m31.994s | >> >> Comparison: >> | Target | Default Avg | With Changes Avg | **Diff** | >> | --------- | ----------- | ---------------- | ---------------- | >> | llvm | 22m24.688s | 23m38.716s | +1m14.028s | >> | clang | 30m15.922s | 30m39.015s | +0m23.093s | >> | lld | 1m28.805s | 1m31.994s | +0m3.189s | >> >> Impact on tmpdir size: >> | Metric | Size | >> | ------------------------------------ | ----- | >> | Default target `tmpdir` size | 74 GB | >> | Target `tmpdir` size (after changes) | 79 GB | >> | Difference | +5 GB | >> >> Deepesh Varatharajan (4): > Hi Deepesh, > > It looks like some selftests are failing: > > 2026-02-20 20:32:17,178 - oe-selftest - INFO - clang.LLVMSelfTestSystemEmulated.test_llvm (subunit.RemotedTestCase) > 2026-02-20 20:32:17,179 - oe-selftest - INFO - ... FAIL > ... > 2026-02-20 20:32:17,179 - oe-selftest - INFO - 3: 1/1 8/21 (298.44s) (0 failed) (clang.LLVMSelfTestSystemEmulated.test_llvm) > 2026-02-20 20:32:17,179 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last): > File "/srv/pokybuild/yocto-worker/qemux86-64-tc/build/layers/openembedded-core/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f > return func(*args, **kwargs) > File "/srv/pokybuild/yocto-worker/qemux86-64-tc/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/clang.py", line 184, in test_llvm > raise AssertionError(f"llvm-lit failed for LLVM: {output}") > AssertionError: llvm-lit failed for LLVM: sh: cd: line 0: can't cd to /srv/pokybuild/yocto-worker/qemux86-64-tc/build/build-st-177928/tmp/work/x86-64-v3-poky-linux/llvm/21.1.8/build/bin: No such file or directory > ... > 2026-02-20 20:32:20,596 - oe-selftest - INFO - clang.LLDSelfTestSystemEmulated.test_lld (subunit.RemotedTestCase) > 2026-02-20 20:32:20,597 - oe-selftest - INFO - ... FAIL > ... > 2026-02-20 20:32:20,814 - oe-selftest - INFO - clang.ClangSelfTestSystemEmulated.test_clang (subunit.RemotedTestCase) > 2026-02-20 20:32:20,815 - oe-selftest - INFO - ... FAIL > > https://autobuilder.yoctoproject.org/valkyrie/#/builders/66/builds/3243 > https://autobuilder.yoctoproject.org/valkyrie/#/builders/58/builds/1069 > https://autobuilder.yoctoproject.org/valkyrie/#/builders/42/builds/3147 > https://autobuilder.yoctoproject.org/valkyrie/#/builders/28/builds/3165 > https://autobuilder.yoctoproject.org/valkyrie/#/builders/5/builds/3151 > > Can you have a look at these failures? Hi Mathieu, These failures appear to be intermittent and were not caught during our testing. We’ve been able to reproduce the issue locally and have implemented a fix. V2 incoming. Regards, Deepesh > > Thanks, > Mathieu > > -- > Mathieu Dubois-Briand, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan ` (4 preceding siblings ...) 2026-02-21 8:23 ` [OE-core] [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Mathieu Dubois-Briand @ 2026-02-26 15:31 ` Randy MacLeod 2026-03-02 6:53 ` Deepesh Varatharajan 5 siblings, 1 reply; 9+ messages in thread From: Randy MacLeod @ 2026-02-26 15:31 UTC (permalink / raw) To: Deepesh.Varatharajan, openembedded-core; +Cc: Sundeep.Kokkonda [-- Attachment #1: Type: text/plain, Size: 27084 bytes --] On 2026-02-20 1:02 a.m., Deepesh.Varatharajan@windriver.com wrote: > From: Deepesh Varatharajan<Deepesh.Varatharajan@windriver.com> > > This patch series introduces a test framework to run selftests for > target builds of Clang, LLVM, and LLD. > > Summary of changes: > -Patch 1: Disable clang-tools-extra tests, as Clang's CMake cannot > detect the llvm-bcanalyzer target. > -Patch 2: Enabled the necessary CMake flags for clang, llvm & lld tests > -Patch 3: Selftest script for Clang, LLVM, and LLD including exclude list > -Patch 4: Fix rust build failure by replacing target llvm-config with native > > Testing: > 1. The test suite has been successfully validated on x86-64, arm64, riscv64 > and arm32 for all Clang, LLD & LLVM components. > 2. Clang and LLD tests passed successfully on x86. LLVM tests are skipped > on x86 since it's broken. A follow-up bug will be filed and addressed. > 3. Clang, LLVM & LLD all together ~80K tests are there and we currently > ~250 tests to exclude list which are failing (0.32%). > > Impact on build time: > These builds were executed in a controlled environment without poky-sstate > enabled. > > Default(without changes): > | Target | Run 1 | Run 2 | Run 3 | Average | > | --------- | ---------- | ---------- | ---------- | -------------- | > | llvm | 22m18.441s | 22m31.905s | 22m23.718s | 22m24.688s | > | clang | 30m09.774s | 30m22.680s | 30m15.312s | 30m15.922s | > | lld | 1m26.994s | 1m30.415s | 1m29.006s | 1m28.805s | > > With the testsuite changes applied: > | Target | Run 1 | Run 2 | Run 3 | Average | > | --------- | ---------- | ---------- | ---------- | -------------- | > | llvm | 23m32.104s | 23m45.887s | 23m38.157s | 23m38.716s | > | clang | 30m31.402s | 30m46.198s | 30m39.445s | 30m39.015s | > | lld | 1m29.845s | 1m34.212s | 1m31.925s | 1m31.994s | > > Comparison: > | Target | Default Avg | With Changes Avg | **Diff** | > | --------- | ----------- | ---------------- | ---------------- | > | llvm | 22m24.688s | 23m38.716s | +1m14.028s | > | clang | 30m15.922s | 30m39.015s | +0m23.093s | > | lld | 1m28.805s | 1m31.994s | +0m3.189s | > > Impact on tmpdir size: > | Metric | Size | > | ------------------------------------ | ----- | > | Default target `tmpdir` size | 74 GB | > | Target `tmpdir` size (after changes) | 79 GB | > | Difference | +5 GB | Nice data and nicely presented. Thanks. I was wondering if there was any other impact due to the changes so I added clang and llvm to my local.conf: IMAGE_INSTALL:append = " clang llvm" I know this isn't a common work-flow but I was curious. I also added: INHERIT += "buildhistory" BUILDHISTORY_COMMIT = "1" as explained here: https://docs.yoctoproject.org/dev-manual/build-quality.html#enabling-and-disabling-build-history I made sure there were -no- llvm or clang files in my tmp dir or sstate-cache, then I ran: ❯ bitbake core-image-minimal ... I applied your patches and built again: ❯ bitbake core-image-minimal ... and ran (1). My summary (with some AI bot help) is: |+---------------------+----------+----------+-----------+------------+ | Package | Old (MB) | New (MB) | Diff (MB) | Change (%) | +=====================+==========+==========+===========+============+ | clang/clang-dbg | 44.99 | 59.79 | +14.81 | +32.92% | | clang/clang-dev | 30.22 | 30.22 | -0.00 | -0.00% | | clang/clang-tools | 5.05 | 29.58 | +24.53 | +485.87% | | llvm/llvm-bin | 16.40 | 71.77 | +55.36 | +337.50% | | llvm/llvm-dbg | 386.79 | 646.12 | +259.33 | +67.05% | | llvm/llvm-dev | 32.67 | 33.67 | +1.00 | +3.05% | | llvm/llvm-src | 387.54 | 389.44 | +1.90 | +0.49% | | llvm/llvm-staticdev | 609.68 | 616.80 | +7.12 | +1.17% | +---------------------+----------+----------+-----------+------------+| I think you already have a solution to this target package size bloat that you mentioned in private chat. Please explain here and send a new patchset when ready. Thanks, ../Randy 1) ❯ buildhistory-diff -a images/qemux86_64/glibc/core-image-minimal: IMAGESIZE changed from 273524 to 273528 (+0%) packages/x86-64-v3-oe-linux/clang/clang-dbg: FILELIST: added "/usr/bin/.debug/c-index-test" packages/x86-64-v3-oe-linux/clang/clang-dbg: PKGSIZE changed from 47171320 to 62698976 (+33%) packages/x86-64-v3-oe-linux/clang/clang-dbg: RRECOMMENDS: added "libclang-dbg libxml2-dbg" packages/x86-64-v3-oe-linux/clang/clang-dev: PKGSIZE changed from 31692933 to 31692927 (-0%) packages/x86-64-v3-oe-linux/clang/clang-tools: RDEPENDS: added "libxml2 (['>= 2.15.1']) libclang (['>= 21.1.8'])" packages/x86-64-v3-oe-linux/clang/clang-tools: FILELIST: added "/usr/bin/c-index-test" packages/x86-64-v3-oe-linux/clang/clang-tools: PKGSIZE changed from 5294619 to 31019723 (+486%) packages/x86-64-v3-oe-linux/llvm/llvm-bin: RDEPENDS: added "libzstd (['>= 1.5.7']) zlib (['>= 1.3.2'])" packages/x86-64-v3-oe-linux/llvm/llvm-bin: FILELIST: added "/usr/bin/llvm-exegesis /usr/bin/obj2yaml /usr/bin/yaml2obj" packages/x86-64-v3-oe-linux/llvm/llvm-bin: PKGSIZE changed from 17200574 to 75253038 (+338%) packages/x86-64-v3-oe-linux/llvm/llvm-dbg: FILELIST: added "/usr/bin/.debug/obj2yaml /usr/bin/.debug/llvm-exegesis /usr/bin/.debug/yaml2obj" packages/x86-64-v3-oe-linux/llvm/llvm-dbg: PKGSIZE changed from 405577928 to 677509048 (+67%) packages/x86-64-v3-oe-linux/llvm/llvm-dev: FILELIST: added "/usr/include/llvm-gtest/gtest/internal/gtest-param-util.h /usr/include/llvm-gmock/gmock/internal/custom/gmock-generated-actions.h /usr/include/llvm-gtest/gtest/internal/gtest-filepath.h /usr/include/llvm-gmock/gmock/gmock-actions.h /usr/include/llvm-gmock/gmock/gmock.h /usr/include/llvm-gtest/gtest/gtest-test-part.h /usr/include/llvm-gtest/gtest/gtest-param-test.h /usr/include/llvm-gtest/gtest/internal/custom/gtest-port.h /usr/include/llvm-gtest/gtest/internal/custom/raw-ostream.h /usr/include/llvm-gtest/gtest/gtest-spi.h /usr/include/llvm-gtest/gtest/gtest-assertion-result.h /usr/include/llvm-gtest/gtest/internal/gtest-death-test-internal.h /usr/include/llvm-gtest/gtest/internal/custom/README.md /usr/include/llvm-gtest/gtest/gtest-printers.h /usr/include/llvm-gtest/gtest/internal/gtest-type-util.h /usr/include/llvm-gtest/gtest/internal/gtest-internal.h /usr/include/llvm-gmock/gmock/internal/gmock-port.h /usr/include/llvm-gtest/gtest/gtest_prod.h /usr/include/llvm-gmock/gmock/gmock-more-actions.h /usr/include/llvm-gmock/gmock/internal/gmock-pp.h /usr/include/llvm-gtest/gtest/internal/custom/gtest-printers.h /usr/include/llvm-gtest/gtest/gtest.h /usr/include/llvm-gtest/gtest/gtest-typed-test.h /usr/include/llvm-gmock/gmock/internal/custom/gmock-matchers.h /usr/include/llvm-gtest/gtest/gtest-message.h /usr/include/llvm-gmock/gmock/gmock-more-matchers.h /usr/include/llvm-gmock/gmock/gmock-cardinalities.h /usr/include/llvm-gtest/gtest/gtest-death-test.h /usr/include/llvm-gtest/gtest/internal/custom/gtest.h /usr/include/llvm-gtest/gtest/internal/gtest-port-arch.h /usr/include/llvm-gtest/gtest/internal/gtest-string.h /usr/include/llvm-gmock/gmock/internal/gmock-internal-utils.h /usr/include/llvm-gmock/gmock/internal/custom/README.md /usr/include/llvm-gmock/gmock/internal/custom/gmock-port.h /usr/include/llvm-gtest/gtest/internal/gtest-port.h /usr/include/llvm-gmock/gmock/gmock-spec-builders.h /usr/include/llvm-gtest/gtest/gtest-matchers.h /usr/include/llvm-gmock/gmock/gmock-matchers.h /usr/include/llvm-gmock/gmock/gmock-function-mocker.h /usr/include/llvm-gmock/gmock/gmock-nice-strict.h /usr/include/llvm-gtest/gtest/gtest_pred_impl.h" packages/x86-64-v3-oe-linux/llvm/llvm-dev: PKGSIZE changed from 34258809 to 35304811 (+3%) packages/x86-64-v3-oe-linux/llvm/llvm-src: FILELIST: added "/usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest.cc /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock-matchers.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkCode.h /usr/src/debug/llvm/21.1.8/llvm/include/llvm/ADT/CombinationGenerator.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/Target.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/RISCVExegesisPreprocessing.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ParallelSnippetGenerator.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SubprocessMemory.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock-cardinalities.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SchedClassResolution.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterValue.h /usr/src/debug/llvm/21.1.8/llvm/include/llvm/ADT/PackedVector.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterAliasing.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/wasm2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/xcoff2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/elf2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/PowerPC/Target.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-death-test.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-test-part.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetFile.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterAliasing.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-internal-utils.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/PerfHelper.h /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/archive2yaml.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/UnitTestMain/TestMain.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SerialSnippetGenerator.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-internal-inl.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetRepetitor.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ResultAggregator.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ValidationEvent.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Analysis.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ParallelSnippetGenerator.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/RISCVExegesisPasses.h /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/obj2yaml.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Target.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/UopsBenchmarkRunner.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-typed-test.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/CodeTemplate.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Target.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/UopsBenchmarkRunner.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-test-part.cc /usr/src/debug/llvm/21.1.8/llvm/include/llvm/Support/raw_os_ostream.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-spec-builders.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Error.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-matchers.h /usr/src/debug/llvm/21.1.8/lib/Target/AArch64/AArch64GenExegesis.inc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetGenerator.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-matchers.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/X86/Target.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-printers.h /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/offload2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/dxcontainer2yaml.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-message.h /usr/src/debug/llvm/21.1.8/lib/Target/X86/X86GenExegesis.inc /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-assertion-result.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/RISCVExegesisPostprocessing.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Assembler.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Analysis.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-port.cc /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-port.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/TargetSelect.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp /usr/src/debug/llvm/21.1.8/llvm/lib/Testing/Support/Error.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-internal.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-filepath.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/custom/raw-ostream.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SubprocessMemory.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/obj2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/minidump2yaml.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-matchers.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Error.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/internal/gmock-internal-utils.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LlvmState.h /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/dwarf2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/MCInstrDescView.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-filepath.cc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SerialSnippetGenerator.cpp /usr/src/debug/llvm/21.1.8/llvm/lib/Testing/Annotations/Annotations.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetRepetitor.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Assembler.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Clustering.h /usr/src/debug/llvm/21.1.8/include/llvm/Config/TargetExegesis.def /usr/src/debug/llvm/21.1.8/llvm/tools/yaml2obj/yaml2obj.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Mips/Target.cpp /usr/src/debug/llvm/21.1.8/lib/Target/RISCV/RISCVGenExegesis.inc /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/coff2yaml.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/CodeTemplate.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ProgressMeter.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock.cc /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock.h /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/macho2yaml.cpp /usr/src/debug/llvm/21.1.8/lib/Target/Mips/MipsGenExegesis.inc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetGenerator.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-cardinalities.cc /usr/src/debug/llvm/21.1.8/lib/Target/PowerPC/PPCGenExegesis.inc /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/llvm-exegesis.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SchedClassResolution.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LlvmState.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkResult.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-death-test.cc /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock-spec-builders.h /usr/src/debug/llvm/21.1.8/llvm/lib/Testing/Support/SupportHelpers.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ValidationEvent.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Clustering.cpp /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-param-util.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterValue.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-printers.cc /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-assertion-result.h /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-death-test-internal.h /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ResultAggregator.cpp /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/PerfHelper.cpp" packages/x86-64-v3-oe-linux/llvm/llvm-src: PKGSIZE changed from 406369891 to 408360607 (+0%) packages/x86-64-v3-oe-linux/llvm/llvm-staticdev: FILELIST: added "/usr/lib/libllvm_gtest_main.a /usr/lib/libLLVMTestingAnnotations.a /usr/lib/libLLVMExegesisMips.a /usr/lib/libLLVMExegesis.a /usr/lib/libLLVMTestingSupport.a /usr/lib/libLLVMExegesisPowerPC.a /usr/lib/libLLVMExegesisX86.a /usr/lib/libLLVMExegesisAArch64.a /usr/lib/libllvm_gtest.a /usr/lib/libLLVMExegesisRISCV.a" packages/x86-64-v3-oe-linux/llvm/llvm-staticdev: PKGSIZE changed from 639292726 to 646763728 (+1%) Changes to packages/x86-64-v3-oe-linux/llvm (sysroot): /usr/bin/bugpoint was added /usr/bin/count was added /usr/bin/dsymutil was added /usr/bin/FileCheck was added /usr/bin/llc was added /usr/bin/lli was added /usr/bin/lli-child-target was added /usr/bin/llvm-addr2line was added /usr/bin/llvm-ar was added /usr/bin/llvm-as was added /usr/bin/llvm-bcanalyzer was added /usr/bin/llvm-bitcode-strip was added /usr/bin/llvm-cat was added /usr/bin/llvm-cfi-verify was added /usr/bin/llvm-cgdata was added /usr/bin/llvm-config was added /usr/bin/llvm-cov was added /usr/bin/llvm-c-test was added /usr/bin/llvm-ctxprof-util was added /usr/bin/llvm-cvtres was added /usr/bin/llvm-cxxdump was added /usr/bin/llvm-cxxfilt was added /usr/bin/llvm-cxxmap was added /usr/bin/llvm-debuginfo-analyzer was added /usr/bin/llvm-debuginfod was added /usr/bin/llvm-debuginfod-find was added /usr/bin/llvm-diff was added /usr/bin/llvm-dis was added /usr/bin/llvm-dlang-demangle-fuzzer was added /usr/bin/llvm-dlltool was added /usr/bin/llvm-dwarfdump was added /usr/bin/llvm-dwarfutil was added /usr/bin/llvm-dwp was added /usr/bin/llvm-exegesis was added /usr/bin/llvm-extract was added /usr/bin/llvm-gsymutil was added /usr/bin/llvm-ifs was added /usr/bin/llvm-install-name-tool was added /usr/bin/llvm-isel-fuzzer was added /usr/bin/llvm-itanium-demangle-fuzzer was added /usr/bin/llvm-jitlink was added /usr/bin/llvm-jitlink-executor was added /usr/bin/llvm-lib was added /usr/bin/llvm-libtool-darwin was added /usr/bin/llvm-link was added /usr/bin/llvm-lipo was added /usr/bin/llvm-lit was added /usr/bin/llvm-locstats was added /usr/bin/llvm-lto was added /usr/bin/llvm-lto2 was added /usr/bin/llvm-mc was added /usr/bin/llvm-mca was added /usr/bin/llvm-microsoft-demangle-fuzzer was added /usr/bin/llvm-ml was added /usr/bin/llvm-ml64 was added /usr/bin/llvm-modextract was added /usr/bin/llvm-mt was added /usr/bin/llvm-nm was added /usr/bin/llvm-objcopy was added /usr/bin/llvm-objdump was added /usr/bin/llvm-opt-fuzzer was added /usr/bin/llvm-opt-report was added /usr/bin/llvm-otool was added /usr/bin/llvm-pdbutil was added /usr/bin/llvm-PerfectShuffle was added /usr/bin/llvm-profdata was added /usr/bin/llvm-profgen was added /usr/bin/llvm-ranlib was added /usr/bin/llvm-rc was added /usr/bin/llvm-readelf was added /usr/bin/llvm-readobj was added /usr/bin/llvm-readtapi was added /usr/bin/llvm-reduce was added /usr/bin/llvm-remarkutil was added /usr/bin/llvm-rtdyld was added /usr/bin/llvm-rust-demangle-fuzzer was added /usr/bin/llvm-sim was added /usr/bin/llvm-size was added /usr/bin/llvm-special-case-list-fuzzer was added /usr/bin/llvm-split was added /usr/bin/llvm-stress was added /usr/bin/llvm-strings was added /usr/bin/llvm-strip was added /usr/bin/llvm-symbolizer was added /usr/bin/llvm-tblgen was added /usr/bin/llvm-test-mustache-spec was added /usr/bin/llvm-tli-checker was added /usr/bin/llvm-undname was added /usr/bin/llvm-windres was added /usr/bin/llvm-xray was added /usr/bin/llvm-yaml-numeric-parser-fuzzer was added /usr/bin/llvm-yaml-parser-fuzzer was added /usr/bin/not was added /usr/bin/obj2yaml was added /usr/bin/opt was added /usr/bin/reduce-chunk-list was added /usr/bin/sancov was added /usr/bin/sanstats was added /usr/bin/split-file was added /usr/bin/UnicodeNameMappingGenerator was added /usr/bin/verify-uselistorder was added /usr/bin/yaml2obj was added /usr/bin/yaml-bench was added /usr/include/llvm-gmock was added /usr/include/llvm-gmock/gmock was added /usr/include/llvm-gmock/gmock/gmock-actions.h was added /usr/include/llvm-gmock/gmock/gmock-cardinalities.h was added /usr/include/llvm-gmock/gmock/gmock-function-mocker.h was added /usr/include/llvm-gmock/gmock/gmock.h was added /usr/include/llvm-gmock/gmock/gmock-matchers.h was added /usr/include/llvm-gmock/gmock/gmock-more-actions.h was added /usr/include/llvm-gmock/gmock/gmock-more-matchers.h was added /usr/include/llvm-gmock/gmock/gmock-nice-strict.h was added /usr/include/llvm-gmock/gmock/gmock-spec-builders.h was added /usr/include/llvm-gmock/gmock/internal was added /usr/include/llvm-gmock/gmock/internal/custom was added /usr/include/llvm-gmock/gmock/internal/custom/gmock-generated-actions.h was added /usr/include/llvm-gmock/gmock/internal/custom/gmock-matchers.h was added /usr/include/llvm-gmock/gmock/internal/custom/gmock-port.h was added /usr/include/llvm-gmock/gmock/internal/custom/README.md was added /usr/include/llvm-gmock/gmock/internal/gmock-internal-utils.h was added /usr/include/llvm-gmock/gmock/internal/gmock-port.h was added /usr/include/llvm-gmock/gmock/internal/gmock-pp.h was added /usr/include/llvm-gtest was added /usr/include/llvm-gtest/gtest was added /usr/include/llvm-gtest/gtest/gtest-assertion-result.h was added /usr/include/llvm-gtest/gtest/gtest-death-test.h was added /usr/include/llvm-gtest/gtest/gtest.h was added /usr/include/llvm-gtest/gtest/gtest-matchers.h was added /usr/include/llvm-gtest/gtest/gtest-message.h was added /usr/include/llvm-gtest/gtest/gtest-param-test.h was added /usr/include/llvm-gtest/gtest/gtest_pred_impl.h was added /usr/include/llvm-gtest/gtest/gtest-printers.h was added /usr/include/llvm-gtest/gtest/gtest_prod.h was added /usr/include/llvm-gtest/gtest/gtest-spi.h was added /usr/include/llvm-gtest/gtest/gtest-test-part.h was added /usr/include/llvm-gtest/gtest/gtest-typed-test.h was added /usr/include/llvm-gtest/gtest/internal was added /usr/include/llvm-gtest/gtest/internal/custom was added /usr/include/llvm-gtest/gtest/internal/custom/gtest.h was added /usr/include/llvm-gtest/gtest/internal/custom/gtest-port.h was added /usr/include/llvm-gtest/gtest/internal/custom/gtest-printers.h was added /usr/include/llvm-gtest/gtest/internal/custom/raw-ostream.h was added /usr/include/llvm-gtest/gtest/internal/custom/README.md was added /usr/include/llvm-gtest/gtest/internal/gtest-death-test-internal.h was added /usr/include/llvm-gtest/gtest/internal/gtest-filepath.h was added /usr/include/llvm-gtest/gtest/internal/gtest-internal.h was added /usr/include/llvm-gtest/gtest/internal/gtest-param-util.h was added /usr/include/llvm-gtest/gtest/internal/gtest-port-arch.h was added /usr/include/llvm-gtest/gtest/internal/gtest-port.h was added /usr/include/llvm-gtest/gtest/internal/gtest-string.h was added /usr/include/llvm-gtest/gtest/internal/gtest-type-util.h was added /usr/lib/libLLVMExegesis.a was added /usr/lib/libLLVMExegesisAArch64.a was added /usr/lib/libLLVMExegesisMips.a was added /usr/lib/libLLVMExegesisPowerPC.a was added /usr/lib/libLLVMExegesisRISCV.a was added /usr/lib/libLLVMExegesisX86.a was added /usr/lib/libllvm_gtest.a was added /usr/lib/libllvm_gtest_main.a was added /usr/lib/libLLVMTestingAnnotations.a was added /usr/lib/libLLVMTestingSupport.a was added Changes to packages/x86_64-linux/llvm-native (sysroot): /usr/bin/llvm-exegesis was added /usr/lib/libLLVMExegesis.a was added /usr/lib/libLLVMExegesisAArch64.a was added /usr/lib/libLLVMExegesisMips.a was added /usr/lib/libLLVMExegesisPowerPC.a was added /usr/lib/libLLVMExegesisRISCV.a was added /usr/lib/libLLVMExegesisX86.a was added > > Deepesh Varatharajan (4): > clang-tools-extra: disable tests > clang: Enable cmake flags for llvm, clang, lld tests > oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD > rust: Fix rust build failure > > meta/lib/oeqa/selftest/cases/clang.py | 298 ++++++++++++++++++ > .../0042-guard-clang-tools-extra-test.patch | 74 +++++ > meta/recipes-devtools/clang/clang_git.bb | 2 + > meta/recipes-devtools/clang/common.inc | 1 + > meta/recipes-devtools/clang/lld_git.bb | 2 + > meta/recipes-devtools/clang/llvm_git.bb | 8 +- > meta/recipes-devtools/rust/rust_1.93.0.bb | 5 +- > 7 files changed, 387 insertions(+), 3 deletions(-) > create mode 100644 meta/lib/oeqa/selftest/cases/clang.py > create mode 100644 meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch > -- # Randy MacLeod # Wind River Linux [-- Attachment #2: Type: text/html, Size: 31639 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD 2026-02-26 15:31 ` Randy MacLeod @ 2026-03-02 6:53 ` Deepesh Varatharajan 0 siblings, 0 replies; 9+ messages in thread From: Deepesh Varatharajan @ 2026-03-02 6:53 UTC (permalink / raw) To: Randy MacLeod, openembedded-core; +Cc: Sundeep.Kokkonda [-- Attachment #1: Type: text/plain, Size: 28209 bytes --] On 26-02-2026 21:01, Randy MacLeod wrote: > On 2026-02-20 1:02 a.m., Deepesh.Varatharajan@windriver.com wrote: >> From: Deepesh Varatharajan<Deepesh.Varatharajan@windriver.com> >> >> This patch series introduces a test framework to run selftests for >> target builds of Clang, LLVM, and LLD. >> >> Summary of changes: >> -Patch 1: Disable clang-tools-extra tests, as Clang's CMake cannot >> detect the llvm-bcanalyzer target. >> -Patch 2: Enabled the necessary CMake flags for clang, llvm & lld tests >> -Patch 3: Selftest script for Clang, LLVM, and LLD including exclude list >> -Patch 4: Fix rust build failure by replacing target llvm-config with native >> >> Testing: >> 1. The test suite has been successfully validated on x86-64, arm64, riscv64 >> and arm32 for all Clang, LLD & LLVM components. >> 2. Clang and LLD tests passed successfully on x86. LLVM tests are skipped >> on x86 since it's broken. A follow-up bug will be filed and addressed. >> 3. Clang, LLVM & LLD all together ~80K tests are there and we currently >> ~250 tests to exclude list which are failing (0.32%). >> >> Impact on build time: >> These builds were executed in a controlled environment without poky-sstate >> enabled. >> >> Default(without changes): >> | Target | Run 1 | Run 2 | Run 3 | Average | >> | --------- | ---------- | ---------- | ---------- | -------------- | >> | llvm | 22m18.441s | 22m31.905s | 22m23.718s | 22m24.688s | >> | clang | 30m09.774s | 30m22.680s | 30m15.312s | 30m15.922s | >> | lld | 1m26.994s | 1m30.415s | 1m29.006s | 1m28.805s | >> >> With the testsuite changes applied: >> | Target | Run 1 | Run 2 | Run 3 | Average | >> | --------- | ---------- | ---------- | ---------- | -------------- | >> | llvm | 23m32.104s | 23m45.887s | 23m38.157s | 23m38.716s | >> | clang | 30m31.402s | 30m46.198s | 30m39.445s | 30m39.015s | >> | lld | 1m29.845s | 1m34.212s | 1m31.925s | 1m31.994s | >> >> Comparison: >> | Target | Default Avg | With Changes Avg | **Diff** | >> | --------- | ----------- | ---------------- | ---------------- | >> | llvm | 22m24.688s | 23m38.716s | +1m14.028s | >> | clang | 30m15.922s | 30m39.015s | +0m23.093s | >> | lld | 1m28.805s | 1m31.994s | +0m3.189s | >> >> Impact on tmpdir size: >> | Metric | Size | >> | ------------------------------------ | ----- | >> | Default target `tmpdir` size | 74 GB | >> | Target `tmpdir` size (after changes) | 79 GB | >> | Difference | +5 GB | > > > Nice data and nicely presented. Thanks. > > I was wondering if there was any other impact due to the changes so I > added clang and llvm to my local.conf: > IMAGE_INSTALL:append = " clang llvm" > > I know this isn't a common work-flow but I was curious. > > I also added: > INHERIT += "buildhistory" > BUILDHISTORY_COMMIT = "1" > > as explained here: > https://docs.yoctoproject.org/dev-manual/build-quality.html#enabling-and-disabling-build-history > > I made sure there were -no- llvm or clang files in my tmp dir or > sstate-cache, then I ran: > > ❯ bitbake core-image-minimal > ... > I applied your patches and built again: > > ❯ bitbake core-image-minimal > ... > > and ran (1). > > My summary (with some AI bot help) is: > > |+---------------------+----------+----------+-----------+------------+ > | Package | Old (MB) | New (MB) | Diff (MB) | Change (%) | > +=====================+==========+==========+===========+============+ > | clang/clang-dbg | 44.99 | 59.79 | +14.81 | +32.92% | | > clang/clang-dev | 30.22 | 30.22 | -0.00 | -0.00% | | clang/clang-tools > | 5.05 | 29.58 | +24.53 | +485.87% | | llvm/llvm-bin | 16.40 | 71.77 | > +55.36 | +337.50% | | llvm/llvm-dbg | 386.79 | 646.12 | +259.33 | > +67.05% | | llvm/llvm-dev | 32.67 | 33.67 | +1.00 | +3.05% | | > llvm/llvm-src | 387.54 | 389.44 | +1.90 | +0.49% | | > llvm/llvm-staticdev | 609.68 | 616.80 | +7.12 | +1.17% | > +---------------------+----------+----------+-----------+------------+| > > I think you already have a solution to this target package size bloat > that you mentioned in private chat. > > Please explain here and send a new patchset when ready. > Thank you, Randy, for putting in the effort to gather this data. To address this impact, we implemented a fix that ensures the test suite related flags are enabled only during test execution, controlled through the CLANG_ENABLE_TESTSUITE variable. The relevant changes were made and sent V2. Regards, Deepesh > > Thanks, > > ../Randy > > > 1) > > ❯ buildhistory-diff -a > images/qemux86_64/glibc/core-image-minimal: IMAGESIZE changed from > 273524 to 273528 (+0%) > packages/x86-64-v3-oe-linux/clang/clang-dbg: FILELIST: added > "/usr/bin/.debug/c-index-test" > packages/x86-64-v3-oe-linux/clang/clang-dbg: PKGSIZE changed from > 47171320 to 62698976 (+33%) > packages/x86-64-v3-oe-linux/clang/clang-dbg: RRECOMMENDS: added > "libclang-dbg libxml2-dbg" > packages/x86-64-v3-oe-linux/clang/clang-dev: PKGSIZE changed from > 31692933 to 31692927 (-0%) > packages/x86-64-v3-oe-linux/clang/clang-tools: RDEPENDS: added > "libxml2 (['>= 2.15.1']) libclang (['>= 21.1.8'])" > packages/x86-64-v3-oe-linux/clang/clang-tools: FILELIST: added > "/usr/bin/c-index-test" > packages/x86-64-v3-oe-linux/clang/clang-tools: PKGSIZE changed from > 5294619 to 31019723 (+486%) > packages/x86-64-v3-oe-linux/llvm/llvm-bin: RDEPENDS: added "libzstd > (['>= 1.5.7']) zlib (['>= 1.3.2'])" > packages/x86-64-v3-oe-linux/llvm/llvm-bin: FILELIST: added > "/usr/bin/llvm-exegesis /usr/bin/obj2yaml /usr/bin/yaml2obj" > packages/x86-64-v3-oe-linux/llvm/llvm-bin: PKGSIZE changed from > 17200574 to 75253038 (+338%) > packages/x86-64-v3-oe-linux/llvm/llvm-dbg: FILELIST: added > "/usr/bin/.debug/obj2yaml /usr/bin/.debug/llvm-exegesis > /usr/bin/.debug/yaml2obj" > packages/x86-64-v3-oe-linux/llvm/llvm-dbg: PKGSIZE changed from > 405577928 to 677509048 (+67%) > packages/x86-64-v3-oe-linux/llvm/llvm-dev: FILELIST: added > "/usr/include/llvm-gtest/gtest/internal/gtest-param-util.h > /usr/include/llvm-gmock/gmock/internal/custom/gmock-generated-actions.h > /usr/include/llvm-gtest/gtest/internal/gtest-filepath.h > /usr/include/llvm-gmock/gmock/gmock-actions.h > /usr/include/llvm-gmock/gmock/gmock.h > /usr/include/llvm-gtest/gtest/gtest-test-part.h > /usr/include/llvm-gtest/gtest/gtest-param-test.h > /usr/include/llvm-gtest/gtest/internal/custom/gtest-port.h > /usr/include/llvm-gtest/gtest/internal/custom/raw-ostream.h > /usr/include/llvm-gtest/gtest/gtest-spi.h > /usr/include/llvm-gtest/gtest/gtest-assertion-result.h > /usr/include/llvm-gtest/gtest/internal/gtest-death-test-internal.h > /usr/include/llvm-gtest/gtest/internal/custom/README.md > /usr/include/llvm-gtest/gtest/gtest-printers.h > /usr/include/llvm-gtest/gtest/internal/gtest-type-util.h > /usr/include/llvm-gtest/gtest/internal/gtest-internal.h > /usr/include/llvm-gmock/gmock/internal/gmock-port.h > /usr/include/llvm-gtest/gtest/gtest_prod.h > /usr/include/llvm-gmock/gmock/gmock-more-actions.h > /usr/include/llvm-gmock/gmock/internal/gmock-pp.h > /usr/include/llvm-gtest/gtest/internal/custom/gtest-printers.h > /usr/include/llvm-gtest/gtest/gtest.h > /usr/include/llvm-gtest/gtest/gtest-typed-test.h > /usr/include/llvm-gmock/gmock/internal/custom/gmock-matchers.h > /usr/include/llvm-gtest/gtest/gtest-message.h > /usr/include/llvm-gmock/gmock/gmock-more-matchers.h > /usr/include/llvm-gmock/gmock/gmock-cardinalities.h > /usr/include/llvm-gtest/gtest/gtest-death-test.h > /usr/include/llvm-gtest/gtest/internal/custom/gtest.h > /usr/include/llvm-gtest/gtest/internal/gtest-port-arch.h > /usr/include/llvm-gtest/gtest/internal/gtest-string.h > /usr/include/llvm-gmock/gmock/internal/gmock-internal-utils.h > /usr/include/llvm-gmock/gmock/internal/custom/README.md > /usr/include/llvm-gmock/gmock/internal/custom/gmock-port.h > /usr/include/llvm-gtest/gtest/internal/gtest-port.h > /usr/include/llvm-gmock/gmock/gmock-spec-builders.h > /usr/include/llvm-gtest/gtest/gtest-matchers.h > /usr/include/llvm-gmock/gmock/gmock-matchers.h > /usr/include/llvm-gmock/gmock/gmock-function-mocker.h > /usr/include/llvm-gmock/gmock/gmock-nice-strict.h > /usr/include/llvm-gtest/gtest/gtest_pred_impl.h" > packages/x86-64-v3-oe-linux/llvm/llvm-dev: PKGSIZE changed from > 34258809 to 35304811 (+3%) > packages/x86-64-v3-oe-linux/llvm/llvm-src: FILELIST: added > "/usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest.cc > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock-matchers.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkCode.h > /usr/src/debug/llvm/21.1.8/llvm/include/llvm/ADT/CombinationGenerator.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/Target.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/RISCVExegesisPreprocessing.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ParallelSnippetGenerator.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SubprocessMemory.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock-cardinalities.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SchedClassResolution.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterValue.h > /usr/src/debug/llvm/21.1.8/llvm/include/llvm/ADT/PackedVector.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterAliasing.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/wasm2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/xcoff2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/elf2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/PowerPC/Target.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-death-test.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-test-part.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetFile.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterAliasing.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-internal-utils.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/PerfHelper.h > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/archive2yaml.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/UnitTestMain/TestMain.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SerialSnippetGenerator.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-internal-inl.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetRepetitor.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ResultAggregator.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ValidationEvent.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Analysis.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ParallelSnippetGenerator.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/RISCVExegesisPasses.h > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/obj2yaml.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Target.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/UopsBenchmarkRunner.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-typed-test.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/CodeTemplate.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Target.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/UopsBenchmarkRunner.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-test-part.cc > /usr/src/debug/llvm/21.1.8/llvm/include/llvm/Support/raw_os_ostream.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-spec-builders.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Error.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-matchers.h > /usr/src/debug/llvm/21.1.8/lib/Target/AArch64/AArch64GenExegesis.inc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetGenerator.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-matchers.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/DisassemblerHelper.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/X86/Target.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-printers.h > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/offload2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/dxcontainer2yaml.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-message.h > /usr/src/debug/llvm/21.1.8/lib/Target/X86/X86GenExegesis.inc > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-assertion-result.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RISCV/RISCVExegesisPostprocessing.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Assembler.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Analysis.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-port.cc > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-port.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/TargetSelect.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp > /usr/src/debug/llvm/21.1.8/llvm/lib/Testing/Support/Error.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-internal.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-filepath.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/custom/raw-ostream.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SubprocessMemory.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/obj2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/minidump2yaml.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-matchers.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Error.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/internal/gmock-internal-utils.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LlvmState.h > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/dwarf2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/MCInstrDescView.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-filepath.cc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SerialSnippetGenerator.cpp > /usr/src/debug/llvm/21.1.8/llvm/lib/Testing/Annotations/Annotations.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetRepetitor.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Assembler.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Clustering.h > /usr/src/debug/llvm/21.1.8/include/llvm/Config/TargetExegesis.def > /usr/src/debug/llvm/21.1.8/llvm/tools/yaml2obj/yaml2obj.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Mips/Target.cpp > /usr/src/debug/llvm/21.1.8/lib/Target/RISCV/RISCVGenExegesis.inc > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/coff2yaml.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/CodeTemplate.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ProgressMeter.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock.cc > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock.h > /usr/src/debug/llvm/21.1.8/llvm/tools/obj2yaml/macho2yaml.cpp > /usr/src/debug/llvm/21.1.8/lib/Target/Mips/MipsGenExegesis.inc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetGenerator.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/src/gmock-cardinalities.cc > /usr/src/debug/llvm/21.1.8/lib/Target/PowerPC/PPCGenExegesis.inc > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/llvm-exegesis.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LatencyBenchmarkRunner.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SchedClassResolution.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/LlvmState.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkResult.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-death-test.cc > /usr/src/debug/llvm/21.1.8/third-party/unittest/googlemock/include/gmock/gmock-spec-builders.h > /usr/src/debug/llvm/21.1.8/llvm/lib/Testing/Support/SupportHelpers.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ValidationEvent.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/Clustering.cpp > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-param-util.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/RegisterValue.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/src/gtest-printers.cc > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/gtest-assertion-result.h > /usr/src/debug/llvm/21.1.8/third-party/unittest/googletest/include/gtest/internal/gtest-death-test-internal.h > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/ResultAggregator.cpp > /usr/src/debug/llvm/21.1.8/llvm/tools/llvm-exegesis/lib/PerfHelper.cpp" > packages/x86-64-v3-oe-linux/llvm/llvm-src: PKGSIZE changed from > 406369891 to 408360607 (+0%) > packages/x86-64-v3-oe-linux/llvm/llvm-staticdev: FILELIST: added > "/usr/lib/libllvm_gtest_main.a /usr/lib/libLLVMTestingAnnotations.a > /usr/lib/libLLVMExegesisMips.a /usr/lib/libLLVMExegesis.a > /usr/lib/libLLVMTestingSupport.a /usr/lib/libLLVMExegesisPowerPC.a > /usr/lib/libLLVMExegesisX86.a /usr/lib/libLLVMExegesisAArch64.a > /usr/lib/libllvm_gtest.a /usr/lib/libLLVMExegesisRISCV.a" > packages/x86-64-v3-oe-linux/llvm/llvm-staticdev: PKGSIZE changed from > 639292726 to 646763728 (+1%) > Changes to packages/x86-64-v3-oe-linux/llvm (sysroot): > /usr/bin/bugpoint was added > /usr/bin/count was added > /usr/bin/dsymutil was added > /usr/bin/FileCheck was added > /usr/bin/llc was added > /usr/bin/lli was added > /usr/bin/lli-child-target was added > /usr/bin/llvm-addr2line was added > /usr/bin/llvm-ar was added > /usr/bin/llvm-as was added > /usr/bin/llvm-bcanalyzer was added > /usr/bin/llvm-bitcode-strip was added > /usr/bin/llvm-cat was added > /usr/bin/llvm-cfi-verify was added > /usr/bin/llvm-cgdata was added > /usr/bin/llvm-config was added > /usr/bin/llvm-cov was added > /usr/bin/llvm-c-test was added > /usr/bin/llvm-ctxprof-util was added > /usr/bin/llvm-cvtres was added > /usr/bin/llvm-cxxdump was added > /usr/bin/llvm-cxxfilt was added > /usr/bin/llvm-cxxmap was added > /usr/bin/llvm-debuginfo-analyzer was added > /usr/bin/llvm-debuginfod was added > /usr/bin/llvm-debuginfod-find was added > /usr/bin/llvm-diff was added > /usr/bin/llvm-dis was added > /usr/bin/llvm-dlang-demangle-fuzzer was added > /usr/bin/llvm-dlltool was added > /usr/bin/llvm-dwarfdump was added > /usr/bin/llvm-dwarfutil was added > /usr/bin/llvm-dwp was added > /usr/bin/llvm-exegesis was added > /usr/bin/llvm-extract was added > /usr/bin/llvm-gsymutil was added > /usr/bin/llvm-ifs was added > /usr/bin/llvm-install-name-tool was added > /usr/bin/llvm-isel-fuzzer was added > /usr/bin/llvm-itanium-demangle-fuzzer was added > /usr/bin/llvm-jitlink was added > /usr/bin/llvm-jitlink-executor was added > /usr/bin/llvm-lib was added > /usr/bin/llvm-libtool-darwin was added > /usr/bin/llvm-link was added > /usr/bin/llvm-lipo was added > /usr/bin/llvm-lit was added > /usr/bin/llvm-locstats was added > /usr/bin/llvm-lto was added > /usr/bin/llvm-lto2 was added > /usr/bin/llvm-mc was added > /usr/bin/llvm-mca was added > /usr/bin/llvm-microsoft-demangle-fuzzer was added > /usr/bin/llvm-ml was added > /usr/bin/llvm-ml64 was added > /usr/bin/llvm-modextract was added > /usr/bin/llvm-mt was added > /usr/bin/llvm-nm was added > /usr/bin/llvm-objcopy was added > /usr/bin/llvm-objdump was added > /usr/bin/llvm-opt-fuzzer was added > /usr/bin/llvm-opt-report was added > /usr/bin/llvm-otool was added > /usr/bin/llvm-pdbutil was added > /usr/bin/llvm-PerfectShuffle was added > /usr/bin/llvm-profdata was added > /usr/bin/llvm-profgen was added > /usr/bin/llvm-ranlib was added > /usr/bin/llvm-rc was added > /usr/bin/llvm-readelf was added > /usr/bin/llvm-readobj was added > /usr/bin/llvm-readtapi was added > /usr/bin/llvm-reduce was added > /usr/bin/llvm-remarkutil was added > /usr/bin/llvm-rtdyld was added > /usr/bin/llvm-rust-demangle-fuzzer was added > /usr/bin/llvm-sim was added > /usr/bin/llvm-size was added > /usr/bin/llvm-special-case-list-fuzzer was added > /usr/bin/llvm-split was added > /usr/bin/llvm-stress was added > /usr/bin/llvm-strings was added > /usr/bin/llvm-strip was added > /usr/bin/llvm-symbolizer was added > /usr/bin/llvm-tblgen was added > /usr/bin/llvm-test-mustache-spec was added > /usr/bin/llvm-tli-checker was added > /usr/bin/llvm-undname was added > /usr/bin/llvm-windres was added > /usr/bin/llvm-xray was added > /usr/bin/llvm-yaml-numeric-parser-fuzzer was added > /usr/bin/llvm-yaml-parser-fuzzer was added > /usr/bin/not was added > /usr/bin/obj2yaml was added > /usr/bin/opt was added > /usr/bin/reduce-chunk-list was added > /usr/bin/sancov was added > /usr/bin/sanstats was added > /usr/bin/split-file was added > /usr/bin/UnicodeNameMappingGenerator was added > /usr/bin/verify-uselistorder was added > /usr/bin/yaml2obj was added > /usr/bin/yaml-bench was added > /usr/include/llvm-gmock was added > /usr/include/llvm-gmock/gmock was added > /usr/include/llvm-gmock/gmock/gmock-actions.h was added > /usr/include/llvm-gmock/gmock/gmock-cardinalities.h was added > /usr/include/llvm-gmock/gmock/gmock-function-mocker.h was added > /usr/include/llvm-gmock/gmock/gmock.h was added > /usr/include/llvm-gmock/gmock/gmock-matchers.h was added > /usr/include/llvm-gmock/gmock/gmock-more-actions.h was added > /usr/include/llvm-gmock/gmock/gmock-more-matchers.h was added > /usr/include/llvm-gmock/gmock/gmock-nice-strict.h was added > /usr/include/llvm-gmock/gmock/gmock-spec-builders.h was added > /usr/include/llvm-gmock/gmock/internal was added > /usr/include/llvm-gmock/gmock/internal/custom was added > /usr/include/llvm-gmock/gmock/internal/custom/gmock-generated-actions.h > was added > /usr/include/llvm-gmock/gmock/internal/custom/gmock-matchers.h was added > /usr/include/llvm-gmock/gmock/internal/custom/gmock-port.h was added > /usr/include/llvm-gmock/gmock/internal/custom/README.md was added > /usr/include/llvm-gmock/gmock/internal/gmock-internal-utils.h was added > /usr/include/llvm-gmock/gmock/internal/gmock-port.h was added > /usr/include/llvm-gmock/gmock/internal/gmock-pp.h was added > /usr/include/llvm-gtest was added > /usr/include/llvm-gtest/gtest was added > /usr/include/llvm-gtest/gtest/gtest-assertion-result.h was added > /usr/include/llvm-gtest/gtest/gtest-death-test.h was added > /usr/include/llvm-gtest/gtest/gtest.h was added > /usr/include/llvm-gtest/gtest/gtest-matchers.h was added > /usr/include/llvm-gtest/gtest/gtest-message.h was added > /usr/include/llvm-gtest/gtest/gtest-param-test.h was added > /usr/include/llvm-gtest/gtest/gtest_pred_impl.h was added > /usr/include/llvm-gtest/gtest/gtest-printers.h was added > /usr/include/llvm-gtest/gtest/gtest_prod.h was added > /usr/include/llvm-gtest/gtest/gtest-spi.h was added > /usr/include/llvm-gtest/gtest/gtest-test-part.h was added > /usr/include/llvm-gtest/gtest/gtest-typed-test.h was added > /usr/include/llvm-gtest/gtest/internal was added > /usr/include/llvm-gtest/gtest/internal/custom was added > /usr/include/llvm-gtest/gtest/internal/custom/gtest.h was added > /usr/include/llvm-gtest/gtest/internal/custom/gtest-port.h was added > /usr/include/llvm-gtest/gtest/internal/custom/gtest-printers.h was added > /usr/include/llvm-gtest/gtest/internal/custom/raw-ostream.h was added > /usr/include/llvm-gtest/gtest/internal/custom/README.md was added > /usr/include/llvm-gtest/gtest/internal/gtest-death-test-internal.h was > added > /usr/include/llvm-gtest/gtest/internal/gtest-filepath.h was added > /usr/include/llvm-gtest/gtest/internal/gtest-internal.h was added > /usr/include/llvm-gtest/gtest/internal/gtest-param-util.h was added > /usr/include/llvm-gtest/gtest/internal/gtest-port-arch.h was added > /usr/include/llvm-gtest/gtest/internal/gtest-port.h was added > /usr/include/llvm-gtest/gtest/internal/gtest-string.h was added > /usr/include/llvm-gtest/gtest/internal/gtest-type-util.h was added > /usr/lib/libLLVMExegesis.a was added > /usr/lib/libLLVMExegesisAArch64.a was added > /usr/lib/libLLVMExegesisMips.a was added > /usr/lib/libLLVMExegesisPowerPC.a was added > /usr/lib/libLLVMExegesisRISCV.a was added > /usr/lib/libLLVMExegesisX86.a was added > /usr/lib/libllvm_gtest.a was added > /usr/lib/libllvm_gtest_main.a was added > /usr/lib/libLLVMTestingAnnotations.a was added > /usr/lib/libLLVMTestingSupport.a was added > Changes to packages/x86_64-linux/llvm-native (sysroot): > /usr/bin/llvm-exegesis was added > /usr/lib/libLLVMExegesis.a was added > /usr/lib/libLLVMExegesisAArch64.a was added > /usr/lib/libLLVMExegesisMips.a was added > /usr/lib/libLLVMExegesisPowerPC.a was added > /usr/lib/libLLVMExegesisRISCV.a was added > /usr/lib/libLLVMExegesisX86.a was added > > >> Deepesh Varatharajan (4): >> clang-tools-extra: disable tests >> clang: Enable cmake flags for llvm, clang, lld tests >> oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD >> rust: Fix rust build failure >> >> meta/lib/oeqa/selftest/cases/clang.py | 298 ++++++++++++++++++ >> .../0042-guard-clang-tools-extra-test.patch | 74 +++++ >> meta/recipes-devtools/clang/clang_git.bb | 2 + >> meta/recipes-devtools/clang/common.inc | 1 + >> meta/recipes-devtools/clang/lld_git.bb | 2 + >> meta/recipes-devtools/clang/llvm_git.bb | 8 +- >> meta/recipes-devtools/rust/rust_1.93.0.bb | 5 +- >> 7 files changed, 387 insertions(+), 3 deletions(-) >> create mode 100644 meta/lib/oeqa/selftest/cases/clang.py >> create mode 100644 meta/recipes-devtools/clang/clang/0042-guard-clang-tools-extra-test.patch >> > > -- > # Randy MacLeod > # Wind River Linux [-- Attachment #2: Type: text/html, Size: 33303 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-03-02 6:53 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-20 6:02 [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 1/4] clang-tools-extra: disable tests Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 2/4] clang: Enable cmake flags for llvm, clang, lld tests Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 3/4] oeqa/selftest/clang: Add oe-seltests for Clang/LLVM/LLD Deepesh.Varatharajan 2026-02-20 6:02 ` [PATCH 4/4] rust: Fix rust build failure Deepesh.Varatharajan 2026-02-21 8:23 ` [OE-core] [PATCH 0/4] Oe-selftest for Clang, LLVM, LLD Mathieu Dubois-Briand 2026-02-25 8:56 ` Deepesh Varatharajan 2026-02-26 15:31 ` Randy MacLeod 2026-03-02 6:53 ` Deepesh Varatharajan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox