Compare commits
No commits in common. "c8-stream-rhel8" and "c10s" have entirely different histories.
c8-stream-
...
c10s
17
.copr/Makefile
Normal file
17
.copr/Makefile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# See https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
|
||||||
|
# See for the --setopt option in the enabling of copr repo see:
|
||||||
|
# https://pagure.io/copr/copr/issue/184
|
||||||
|
|
||||||
|
COPR_USERNAME=$(shell rpm --eval %copr_username)
|
||||||
|
COPR_PROJECT=$(shell rpm --eval %copr_projectname)
|
||||||
|
|
||||||
|
.PHONY: srpm
|
||||||
|
srpm:
|
||||||
|
dnf install -y dnf-plugins-core fedora-packager
|
||||||
|
dnf copr enable -y --setopt=reposdir=/tmp/yum.repos.d $(COPR_USERNAME)/$(COPR_PROJECT)
|
||||||
|
dnf install -y --setopt=reposdir=/tmp/yum.repos.d llvm-snapshot-builder
|
||||||
|
rpmbuild \
|
||||||
|
--define "_srcrpmdir $(outdir)" \
|
||||||
|
--define "_sourcedir $(shell pwd)" \
|
||||||
|
--define "_disable_source_fetch 0" \
|
||||||
|
-bs $(spec)
|
1
.fmf/version
Normal file
1
.fmf/version
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
13
.gitignore
vendored
13
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
SOURCES/cmake-18.1.8.src.tar.xz
|
/*.src.rpm
|
||||||
SOURCES/cmake-18.1.8.src.tar.xz.sig
|
/*.src.tar.xz
|
||||||
SOURCES/llvm-18.1.8.src.tar.xz
|
/*.src.tar.xz.sig
|
||||||
SOURCES/llvm-18.1.8.src.tar.xz.sig
|
/cmake/
|
||||||
SOURCES/third-party-18.1.8.src.tar.xz
|
/llvm-*.src/
|
||||||
SOURCES/third-party-18.1.8.src.tar.xz.sig
|
/results_llvm/
|
||||||
|
/third-party/
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
1ea03e355b705b4cada3051bd7301a57daa19283 SOURCES/cmake-18.1.8.src.tar.xz
|
|
||||||
33c2f4327abc20c6098be064ab6bbc15536031f2 SOURCES/cmake-18.1.8.src.tar.xz.sig
|
|
||||||
f9befa4cbef3f688ab48fca42449e13c5bcb872d SOURCES/llvm-18.1.8.src.tar.xz
|
|
||||||
8310ebfda8205233b5ecb6baa7f5272efae31155 SOURCES/llvm-18.1.8.src.tar.xz.sig
|
|
||||||
ada9cf5deaec0a730c751ffd84145acedc6eafeb SOURCES/third-party-18.1.8.src.tar.xz
|
|
||||||
b87b233f778b610a7f8ed1cf9aea4112dfcd7a06 SOURCES/third-party-18.1.8.src.tar.xz.sig
|
|
29
0001-18-Always-build-shared-libs-for-LLD.patch
Normal file
29
0001-18-Always-build-shared-libs-for-LLD.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From b1c60d7fa322a2d208556087df9e7ef94bfbffb8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nikita Popov <npopov@redhat.com>
|
||||||
|
Date: Wed, 8 May 2024 12:30:36 +0900
|
||||||
|
Subject: [PATCH] Always build shared libs for LLD
|
||||||
|
|
||||||
|
We don't want to enable BUILD_SHARED_LIBS for the whole build,
|
||||||
|
but we do want to build lld libraries.
|
||||||
|
---
|
||||||
|
lld/cmake/modules/AddLLD.cmake | 5 ++---
|
||||||
|
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake
|
||||||
|
index 2ee066b41535..270c03f096ac 100644
|
||||||
|
--- a/lld/cmake/modules/AddLLD.cmake
|
||||||
|
+++ b/lld/cmake/modules/AddLLD.cmake
|
||||||
|
@@ -7,9 +7,8 @@ macro(add_lld_library name)
|
||||||
|
""
|
||||||
|
""
|
||||||
|
${ARGN})
|
||||||
|
- if(ARG_SHARED)
|
||||||
|
- set(ARG_ENABLE_SHARED SHARED)
|
||||||
|
- endif()
|
||||||
|
+ # Always build shared libs for LLD.
|
||||||
|
+ set(ARG_ENABLE_SHARED SHARED)
|
||||||
|
llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS})
|
||||||
|
set_target_properties(${name} PROPERTIES FOLDER "lld libraries")
|
||||||
|
|
||||||
|
--
|
||||||
|
2.44.0
|
30
0001-19-Always-build-shared-libs-for-LLD.patch
Normal file
30
0001-19-Always-build-shared-libs-for-LLD.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 69faadbc396000bfa60c722f6fb9c0fc3fb2daf0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nikita Popov <npopov@redhat.com>
|
||||||
|
Date: Wed, 8 May 2024 12:30:36 +0900
|
||||||
|
Subject: [PATCH] Always build shared libs for LLD
|
||||||
|
|
||||||
|
We don't want to enable BUILD_SHARED_LIBS for the whole build,
|
||||||
|
but we do want to build lld libraries.
|
||||||
|
---
|
||||||
|
lld/cmake/modules/AddLLD.cmake | 5 ++---
|
||||||
|
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake
|
||||||
|
index 9f2684b6f933..743ec87814a2 100644
|
||||||
|
--- a/lld/cmake/modules/AddLLD.cmake
|
||||||
|
+++ b/lld/cmake/modules/AddLLD.cmake
|
||||||
|
@@ -7,9 +7,8 @@ macro(add_lld_library name)
|
||||||
|
""
|
||||||
|
""
|
||||||
|
${ARGN})
|
||||||
|
- if(ARG_SHARED)
|
||||||
|
- set(ARG_ENABLE_SHARED SHARED)
|
||||||
|
- endif()
|
||||||
|
+ # Always build shared libs for LLD.
|
||||||
|
+ set(ARG_ENABLE_SHARED SHARED)
|
||||||
|
llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS})
|
||||||
|
|
||||||
|
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||||
|
--
|
||||||
|
2.45.1
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From 73d3b4047d757ef35850e2cef38285b96be82f0f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nikita Popov <npopov@redhat.com>
|
||||||
|
Date: Tue, 23 May 2023 12:17:29 +0200
|
||||||
|
Subject: [PATCH] [Driver] Give devtoolset path precedence over InstalledDir
|
||||||
|
|
||||||
|
This is a followup to the change from c5fe10f365247c3dd9416b7ec8bad73a60b5946e.
|
||||||
|
While that commit correctly adds the bindir from devtoolset to the
|
||||||
|
path, the driver dir / install dir still comes first. This means
|
||||||
|
we'll still end up picking /usr/bin/ld rather than the one from
|
||||||
|
devtoolset.
|
||||||
|
|
||||||
|
Unfortunately, I don't see any way to test this. In the environment
|
||||||
|
the tests are run, this would only result in a behavior difference
|
||||||
|
if there is an ld binary present in the LLVM build directory, which
|
||||||
|
isn't the case.
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D151203
|
||||||
|
---
|
||||||
|
clang/lib/Driver/ToolChains/Linux.cpp | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||||
|
index 853ff99d9fe5..aecabb46d4b9 100644
|
||||||
|
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||||
|
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||||
|
@@ -244,9 +244,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
|
||||||
|
// With devtoolset on RHEL, we want to add a bin directory that is relative
|
||||||
|
// to the detected gcc install, because if we are using devtoolset gcc then
|
||||||
|
// we want to use other tools from devtoolset (e.g. ld) instead of the
|
||||||
|
- // standard system tools.
|
||||||
|
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() +
|
||||||
|
- "/../bin").str());
|
||||||
|
+ // standard system tools. This should take precedence over InstalledDir.
|
||||||
|
+ PPaths.insert(PPaths.begin(),
|
||||||
|
+ Twine(GCCInstallation.getParentLibPath() + "/../bin").str());
|
||||||
|
|
||||||
|
if (Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb)
|
||||||
|
ExtraOpts.push_back("-X");
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
25
0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch
Normal file
25
0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 5f73befe5a0df82e455f4b1052e62f34009e98bb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Stellard <tstellar@redhat.com>
|
||||||
|
Date: Tue, 23 Apr 2024 15:08:34 -0700
|
||||||
|
Subject: [PATCH] Fix page size constant on aarch64 and ppc64le
|
||||||
|
|
||||||
|
---
|
||||||
|
compiler-rt/lib/cfi/cfi.cpp | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/compiler-rt/lib/cfi/cfi.cpp b/compiler-rt/lib/cfi/cfi.cpp
|
||||||
|
index ad1c91623514..e7e86e5807a8 100644
|
||||||
|
--- a/compiler-rt/lib/cfi/cfi.cpp
|
||||||
|
+++ b/compiler-rt/lib/cfi/cfi.cpp
|
||||||
|
@@ -53,6 +53,8 @@ namespace __cfi {
|
||||||
|
|
||||||
|
#if SANITIZER_LOONGARCH64
|
||||||
|
#define kCfiShadowLimitsStorageSize 16384 // 16KiB on loongarch64 per page
|
||||||
|
+#elif defined(__aarch64__) || defined(__powerpc64__)
|
||||||
|
+#define kCfiShadowLimitsStorageSize 65536 // 1 page
|
||||||
|
#else
|
||||||
|
#define kCfiShadowLimitsStorageSize 4096 // 1 page
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From 49f827b09db549de62dcaf8b90b3fcb3e08c0ee5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Serge Guelton <sguelton@redhat.com>
|
||||||
|
Date: Mon, 6 Mar 2023 12:37:48 +0100
|
||||||
|
Subject: [PATCH] Make -funwind-tables the default on all archs
|
||||||
|
|
||||||
|
---
|
||||||
|
clang/lib/Driver/ToolChains/Gnu.cpp | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
index 24fbdcffc07b..8fed46b49515 100644
|
||||||
|
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||||
|
@@ -2904,6 +2904,10 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const {
|
||||||
|
case llvm::Triple::riscv64:
|
||||||
|
case llvm::Triple::x86:
|
||||||
|
case llvm::Triple::x86_64:
|
||||||
|
+ // Enable -funwind-tables on all architectures supported by Fedora:
|
||||||
|
+ // rhbz#1655546
|
||||||
|
+ case llvm::Triple::systemz:
|
||||||
|
+ case llvm::Triple::arm:
|
||||||
|
return UnwindTableLevel::Asynchronous;
|
||||||
|
default:
|
||||||
|
return UnwindTableLevel::None;
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
30
0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
Normal file
30
0001-Workaround-a-bug-in-ORC-on-ppc64le.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From a2449cee8c995b56f1892502aab3dfad3d6f3ca1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tulio Magno Quites Machado Filho <tuliom@redhat.com>
|
||||||
|
Date: Fri, 8 Sep 2023 11:45:34 -0300
|
||||||
|
Subject: [PATCH] Workaround a bug in ORC on ppc64le
|
||||||
|
|
||||||
|
The Jit code appears to be returning the wrong printf symbol on ppc64le
|
||||||
|
after the transition of the default long double to IEEE 128-bit floating
|
||||||
|
point.
|
||||||
|
---
|
||||||
|
clang/unittests/Interpreter/InterpreterTest.cpp | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp
|
||||||
|
index abb8e6377aab..7b6697ebc6ed 100644
|
||||||
|
--- a/clang/unittests/Interpreter/InterpreterTest.cpp
|
||||||
|
+++ b/clang/unittests/Interpreter/InterpreterTest.cpp
|
||||||
|
@@ -243,7 +243,9 @@ TEST(IncrementalProcessing, FindMangledNameSymbol) {
|
||||||
|
EXPECT_FALSE(!Addr);
|
||||||
|
|
||||||
|
// FIXME: Re-enable when we investigate the way we handle dllimports on Win.
|
||||||
|
-#ifndef _WIN32
|
||||||
|
+ // FIXME: The printf symbol returned from the Jit may not be correct on
|
||||||
|
+ // ppc64le when the default long double is IEEE 128-bit fp.
|
||||||
|
+#if !defined _WIN32 && !(defined __PPC64__ && defined __LITTLE_ENDIAN__)
|
||||||
|
EXPECT_EQ((uintptr_t)&printf, Addr->getValue());
|
||||||
|
#endif // _WIN32
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.41.0
|
||||||
|
|
62
0001-openmp-Add-option-to-disable-tsan-tests-111548.patch
Normal file
62
0001-openmp-Add-option-to-disable-tsan-tests-111548.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
From b2edeb58b8cb3268acee425cd52b406eb60a8095 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nikita Popov <npopov@redhat.com>
|
||||||
|
Date: Wed, 9 Oct 2024 11:29:30 +0200
|
||||||
|
Subject: [PATCH] [openmp] Add option to disable tsan tests (#111548)
|
||||||
|
|
||||||
|
This adds a OPENMP_TEST_ENABLE_TSAN option that allows to override
|
||||||
|
whether tests using tsan will be enabled. The option defaults to the
|
||||||
|
existing auto-detection.
|
||||||
|
|
||||||
|
The background here is
|
||||||
|
https://github.com/llvm/llvm-project/issues/111492, where we have some
|
||||||
|
systems where tsan doesn't work, but we do still want to build it and
|
||||||
|
run tests that don't use tsan.
|
||||||
|
---
|
||||||
|
openmp/cmake/OpenMPTesting.cmake | 3 +++
|
||||||
|
openmp/tools/archer/tests/CMakeLists.txt | 2 +-
|
||||||
|
openmp/tools/archer/tests/lit.site.cfg.in | 2 +-
|
||||||
|
3 files changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/openmp/cmake/OpenMPTesting.cmake b/openmp/cmake/OpenMPTesting.cmake
|
||||||
|
index c67ad8b1cbd9..14cc5c67d84c 100644
|
||||||
|
--- a/openmp/cmake/OpenMPTesting.cmake
|
||||||
|
+++ b/openmp/cmake/OpenMPTesting.cmake
|
||||||
|
@@ -163,6 +163,9 @@ else()
|
||||||
|
set(OPENMP_TEST_COMPILER_HAS_OMIT_FRAME_POINTER_FLAGS 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+set(OPENMP_TEST_ENABLE_TSAN "${OPENMP_TEST_COMPILER_HAS_TSAN_FLAGS}" CACHE BOOL
|
||||||
|
+ "Whether to enable tests using tsan")
|
||||||
|
+
|
||||||
|
# Function to set compiler features for use in lit.
|
||||||
|
function(update_test_compiler_features)
|
||||||
|
set(FEATURES "[")
|
||||||
|
diff --git a/openmp/tools/archer/tests/CMakeLists.txt b/openmp/tools/archer/tests/CMakeLists.txt
|
||||||
|
index 5de91148fa4b..412c7d63725e 100644
|
||||||
|
--- a/openmp/tools/archer/tests/CMakeLists.txt
|
||||||
|
+++ b/openmp/tools/archer/tests/CMakeLists.txt
|
||||||
|
@@ -28,7 +28,7 @@ macro(pythonize_bool var)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
pythonize_bool(LIBARCHER_HAVE_LIBATOMIC)
|
||||||
|
-pythonize_bool(OPENMP_TEST_COMPILER_HAS_TSAN_FLAGS)
|
||||||
|
+pythonize_bool(OPENMP_TEST_ENABLE_TSAN)
|
||||||
|
|
||||||
|
set(ARCHER_TSAN_TEST_DEPENDENCE "")
|
||||||
|
if(TARGET tsan)
|
||||||
|
diff --git a/openmp/tools/archer/tests/lit.site.cfg.in b/openmp/tools/archer/tests/lit.site.cfg.in
|
||||||
|
index 55edfde9738e..ddcb7b8bc3a5 100644
|
||||||
|
--- a/openmp/tools/archer/tests/lit.site.cfg.in
|
||||||
|
+++ b/openmp/tools/archer/tests/lit.site.cfg.in
|
||||||
|
@@ -12,7 +12,7 @@ config.omp_library_dir = "@LIBOMP_LIBRARY_DIR@"
|
||||||
|
config.omp_header_dir = "@LIBOMP_INCLUDE_DIR@"
|
||||||
|
config.operating_system = "@CMAKE_SYSTEM_NAME@"
|
||||||
|
config.has_libatomic = @LIBARCHER_HAVE_LIBATOMIC@
|
||||||
|
-config.has_tsan = @OPENMP_TEST_COMPILER_HAS_TSAN_FLAGS@
|
||||||
|
+config.has_tsan = @OPENMP_TEST_ENABLE_TSAN@
|
||||||
|
|
||||||
|
config.test_archer_flags = "@LIBARCHER_TEST_FLAGS@"
|
||||||
|
config.libarcher_obj_root = "@CMAKE_CURRENT_BINARY_DIR@"
|
||||||
|
--
|
||||||
|
2.46.0
|
||||||
|
|
51
0001-openmp-Support-CET-in-z_Linux_asm.S-123213.patch
Normal file
51
0001-openmp-Support-CET-in-z_Linux_asm.S-123213.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
From 90a05f32166c4a45224a5eedbec9c5c7e21d2dbf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nikita Popov <npopov@redhat.com>
|
||||||
|
Date: Fri, 17 Jan 2025 09:26:49 +0100
|
||||||
|
Subject: [PATCH] [openmp] Support CET in z_Linux_asm.S (#123213)
|
||||||
|
|
||||||
|
When libomp is built with -cf-protection, add endbr instructions to the
|
||||||
|
start of functions for Intel CET support.
|
||||||
|
---
|
||||||
|
openmp/runtime/src/z_Linux_asm.S | 12 ++++++++++++
|
||||||
|
1 file changed, 12 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/openmp/runtime/src/z_Linux_asm.S b/openmp/runtime/src/z_Linux_asm.S
|
||||||
|
index cc5344cdd124..0bf9f07a13f1 100644
|
||||||
|
--- a/openmp/runtime/src/z_Linux_asm.S
|
||||||
|
+++ b/openmp/runtime/src/z_Linux_asm.S
|
||||||
|
@@ -19,6 +19,16 @@
|
||||||
|
|
||||||
|
#if KMP_ARCH_X86 || KMP_ARCH_X86_64
|
||||||
|
|
||||||
|
+# if defined(__ELF__) && defined(__CET__) && defined(__has_include)
|
||||||
|
+# if __has_include(<cet.h>)
|
||||||
|
+# include <cet.h>
|
||||||
|
+# endif
|
||||||
|
+# endif
|
||||||
|
+
|
||||||
|
+# if !defined(_CET_ENDBR)
|
||||||
|
+# define _CET_ENDBR
|
||||||
|
+# endif
|
||||||
|
+
|
||||||
|
# if KMP_MIC
|
||||||
|
// the 'delay r16/r32/r64' should be used instead of the 'pause'.
|
||||||
|
// The delay operation has the effect of removing the current thread from
|
||||||
|
@@ -66,6 +76,7 @@
|
||||||
|
ALIGN 4
|
||||||
|
.globl KMP_PREFIX_UNDERSCORE($0)
|
||||||
|
KMP_PREFIX_UNDERSCORE($0):
|
||||||
|
+ _CET_ENDBR
|
||||||
|
.endmacro
|
||||||
|
# else // KMP_OS_DARWIN
|
||||||
|
# define KMP_PREFIX_UNDERSCORE(x) x //no extra underscore for Linux* OS symbols
|
||||||
|
@@ -92,6 +103,7 @@ KMP_PREFIX_UNDERSCORE($0):
|
||||||
|
.globl KMP_PREFIX_UNDERSCORE(\proc)
|
||||||
|
KMP_PREFIX_UNDERSCORE(\proc):
|
||||||
|
.cfi_startproc
|
||||||
|
+ _CET_ENDBR
|
||||||
|
.endm
|
||||||
|
.macro KMP_CFI_DEF_OFFSET sz
|
||||||
|
.cfi_def_cfa_offset \sz
|
||||||
|
--
|
||||||
|
2.47.1
|
||||||
|
|
205
0001-openmp-Use-core_siblings_list-if-physical_package_id.patch
Normal file
205
0001-openmp-Use-core_siblings_list-if-physical_package_id.patch
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
From 5fb4d7f6079a76b2907ccc8c53c7c509c30a3dca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nikita Popov <npopov@redhat.com>
|
||||||
|
Date: Thu, 10 Oct 2024 12:47:33 +0000
|
||||||
|
Subject: [PATCH] [openmp] Use core_siblings_list if physical_package_id not
|
||||||
|
available
|
||||||
|
|
||||||
|
On powerpc, physical_package_id may not be available. Currently,
|
||||||
|
this causes openmp to fall back to flat topology and various
|
||||||
|
affinity tests fail.
|
||||||
|
|
||||||
|
Fix this by parsing core_siblings_list to deterimine which cpus
|
||||||
|
belong to the same socket. This matches what the testing code
|
||||||
|
does. The code to parse the CPU list format thankfully already
|
||||||
|
exists.
|
||||||
|
|
||||||
|
Fixes https://github.com/llvm/llvm-project/issues/111809.
|
||||||
|
---
|
||||||
|
openmp/runtime/src/kmp_affinity.cpp | 100 +++++++++++++------
|
||||||
|
openmp/runtime/test/affinity/kmp-hw-subset.c | 2 +-
|
||||||
|
2 files changed, 72 insertions(+), 30 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/openmp/runtime/src/kmp_affinity.cpp b/openmp/runtime/src/kmp_affinity.cpp
|
||||||
|
index cf5cad04eb57..c3d5ecf1345e 100644
|
||||||
|
--- a/openmp/runtime/src/kmp_affinity.cpp
|
||||||
|
+++ b/openmp/runtime/src/kmp_affinity.cpp
|
||||||
|
@@ -1589,15 +1589,13 @@ kmp_str_buf_t *__kmp_affinity_str_buf_mask(kmp_str_buf_t *buf,
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
-// Return (possibly empty) affinity mask representing the offline CPUs
|
||||||
|
-// Caller must free the mask
|
||||||
|
-kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() {
|
||||||
|
- kmp_affin_mask_t *offline;
|
||||||
|
- KMP_CPU_ALLOC(offline);
|
||||||
|
- KMP_CPU_ZERO(offline);
|
||||||
|
+static kmp_affin_mask_t *__kmp_parse_cpu_list(const char *path) {
|
||||||
|
+ kmp_affin_mask_t *mask;
|
||||||
|
+ KMP_CPU_ALLOC(mask);
|
||||||
|
+ KMP_CPU_ZERO(mask);
|
||||||
|
#if KMP_OS_LINUX
|
||||||
|
int n, begin_cpu, end_cpu;
|
||||||
|
- kmp_safe_raii_file_t offline_file;
|
||||||
|
+ kmp_safe_raii_file_t file;
|
||||||
|
auto skip_ws = [](FILE *f) {
|
||||||
|
int c;
|
||||||
|
do {
|
||||||
|
@@ -1606,29 +1604,29 @@ kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() {
|
||||||
|
if (c != EOF)
|
||||||
|
ungetc(c, f);
|
||||||
|
};
|
||||||
|
- // File contains CSV of integer ranges representing the offline CPUs
|
||||||
|
+ // File contains CSV of integer ranges representing the CPUs
|
||||||
|
// e.g., 1,2,4-7,9,11-15
|
||||||
|
- int status = offline_file.try_open("/sys/devices/system/cpu/offline", "r");
|
||||||
|
+ int status = file.try_open(path, "r");
|
||||||
|
if (status != 0)
|
||||||
|
- return offline;
|
||||||
|
- while (!feof(offline_file)) {
|
||||||
|
- skip_ws(offline_file);
|
||||||
|
- n = fscanf(offline_file, "%d", &begin_cpu);
|
||||||
|
+ return mask;
|
||||||
|
+ while (!feof(file)) {
|
||||||
|
+ skip_ws(file);
|
||||||
|
+ n = fscanf(file, "%d", &begin_cpu);
|
||||||
|
if (n != 1)
|
||||||
|
break;
|
||||||
|
- skip_ws(offline_file);
|
||||||
|
- int c = fgetc(offline_file);
|
||||||
|
+ skip_ws(file);
|
||||||
|
+ int c = fgetc(file);
|
||||||
|
if (c == EOF || c == ',') {
|
||||||
|
// Just single CPU
|
||||||
|
end_cpu = begin_cpu;
|
||||||
|
} else if (c == '-') {
|
||||||
|
// Range of CPUs
|
||||||
|
- skip_ws(offline_file);
|
||||||
|
- n = fscanf(offline_file, "%d", &end_cpu);
|
||||||
|
+ skip_ws(file);
|
||||||
|
+ n = fscanf(file, "%d", &end_cpu);
|
||||||
|
if (n != 1)
|
||||||
|
break;
|
||||||
|
- skip_ws(offline_file);
|
||||||
|
- c = fgetc(offline_file); // skip ','
|
||||||
|
+ skip_ws(file);
|
||||||
|
+ c = fgetc(file); // skip ','
|
||||||
|
} else {
|
||||||
|
// Syntax problem
|
||||||
|
break;
|
||||||
|
@@ -1638,13 +1636,19 @@ kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() {
|
||||||
|
end_cpu >= __kmp_xproc || begin_cpu > end_cpu) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
- // Insert [begin_cpu, end_cpu] into offline mask
|
||||||
|
+ // Insert [begin_cpu, end_cpu] into mask
|
||||||
|
for (int cpu = begin_cpu; cpu <= end_cpu; ++cpu) {
|
||||||
|
- KMP_CPU_SET(cpu, offline);
|
||||||
|
+ KMP_CPU_SET(cpu, mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
- return offline;
|
||||||
|
+ return mask;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// Return (possibly empty) affinity mask representing the offline CPUs
|
||||||
|
+// Caller must free the mask
|
||||||
|
+kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() {
|
||||||
|
+ return __kmp_parse_cpu_list("/sys/devices/system/cpu/offline");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the number of available procs
|
||||||
|
@@ -3175,6 +3179,37 @@ static inline const char *__kmp_cpuinfo_get_envvar() {
|
||||||
|
return envvar;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool __kmp_package_id_from_core_siblings_list(unsigned **threadInfo,
|
||||||
|
+ unsigned num_avail,
|
||||||
|
+ unsigned idx) {
|
||||||
|
+ if (!KMP_AFFINITY_CAPABLE())
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ char path[256];
|
||||||
|
+ KMP_SNPRINTF(path, sizeof(path),
|
||||||
|
+ "/sys/devices/system/cpu/cpu%u/topology/core_siblings_list",
|
||||||
|
+ threadInfo[idx][osIdIndex]);
|
||||||
|
+ kmp_affin_mask_t *siblings = __kmp_parse_cpu_list(path);
|
||||||
|
+ for (unsigned i = 0; i < num_avail; ++i) {
|
||||||
|
+ unsigned cpu_id = threadInfo[i][osIdIndex];
|
||||||
|
+ KMP_ASSERT(cpu_id < __kmp_affin_mask_size * CHAR_BIT);
|
||||||
|
+ if (!KMP_CPU_ISSET(cpu_id, siblings))
|
||||||
|
+ continue;
|
||||||
|
+ if (threadInfo[i][pkgIdIndex] == UINT_MAX) {
|
||||||
|
+ // Arbitrarily pick the first index we encounter, it only matters that
|
||||||
|
+ // the value is the same for all siblings.
|
||||||
|
+ threadInfo[i][pkgIdIndex] = idx;
|
||||||
|
+ } else if (threadInfo[i][pkgIdIndex] != idx) {
|
||||||
|
+ // Contradictory sibling lists.
|
||||||
|
+ KMP_CPU_FREE(siblings);
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ KMP_ASSERT(threadInfo[idx][pkgIdIndex] != UINT_MAX);
|
||||||
|
+ KMP_CPU_FREE(siblings);
|
||||||
|
+ return true;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Parse /proc/cpuinfo (or an alternate file in the same format) to obtain the
|
||||||
|
// affinity map. On AIX, the map is obtained through system SRAD (Scheduler
|
||||||
|
// Resource Allocation Domain).
|
||||||
|
@@ -3550,18 +3585,13 @@ static bool __kmp_affinity_create_cpuinfo_map(int *line,
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- // Check for missing fields. The osId field must be there, and we
|
||||||
|
- // currently require that the physical id field is specified, also.
|
||||||
|
+ // Check for missing fields. The osId field must be there. The physical
|
||||||
|
+ // id field will be checked later.
|
||||||
|
if (threadInfo[num_avail][osIdIndex] == UINT_MAX) {
|
||||||
|
CLEANUP_THREAD_INFO;
|
||||||
|
*msg_id = kmp_i18n_str_MissingProcField;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
- if (threadInfo[0][pkgIdIndex] == UINT_MAX) {
|
||||||
|
- CLEANUP_THREAD_INFO;
|
||||||
|
- *msg_id = kmp_i18n_str_MissingPhysicalIDField;
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
|
||||||
|
// Skip this proc if it is not included in the machine model.
|
||||||
|
if (KMP_AFFINITY_CAPABLE() &&
|
||||||
|
@@ -3591,6 +3621,18 @@ static bool __kmp_affinity_create_cpuinfo_map(int *line,
|
||||||
|
}
|
||||||
|
*line = 0;
|
||||||
|
|
||||||
|
+ // At least on powerpc, Linux may return -1 for physical_package_id. Try
|
||||||
|
+ // to reconstruct topology from core_siblings_list in that case.
|
||||||
|
+ for (i = 0; i < num_avail; ++i) {
|
||||||
|
+ if (threadInfo[i][pkgIdIndex] == UINT_MAX) {
|
||||||
|
+ if (!__kmp_package_id_from_core_siblings_list(threadInfo, num_avail, i)) {
|
||||||
|
+ CLEANUP_THREAD_INFO;
|
||||||
|
+ *msg_id = kmp_i18n_str_MissingPhysicalIDField;
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
#if KMP_MIC && REDUCE_TEAM_SIZE
|
||||||
|
unsigned teamSize = 0;
|
||||||
|
#endif // KMP_MIC && REDUCE_TEAM_SIZE
|
||||||
|
diff --git a/openmp/runtime/test/affinity/kmp-hw-subset.c b/openmp/runtime/test/affinity/kmp-hw-subset.c
|
||||||
|
index 606fcdfbada9..0b49969bd3b1 100644
|
||||||
|
--- a/openmp/runtime/test/affinity/kmp-hw-subset.c
|
||||||
|
+++ b/openmp/runtime/test/affinity/kmp-hw-subset.c
|
||||||
|
@@ -25,7 +25,7 @@ static int compare_hw_subset_places(const place_list_t *openmp_places,
|
||||||
|
expected_per_place = nthreads_per_core;
|
||||||
|
} else {
|
||||||
|
expected_total = nsockets;
|
||||||
|
- expected_per_place = ncores_per_socket;
|
||||||
|
+ expected_per_place = ncores_per_socket * nthreads_per_core;
|
||||||
|
}
|
||||||
|
if (openmp_places->num_places != expected_total) {
|
||||||
|
fprintf(stderr, "error: KMP_HW_SUBSET did not half each resource layer!\n");
|
||||||
|
--
|
||||||
|
2.47.0
|
||||||
|
|
@ -0,0 +1,86 @@
|
|||||||
|
From ccc2b792e57d632bc887b226a4e7f0a8189eab8b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Josh Stone <jistone@redhat.com>
|
||||||
|
Date: Mon, 4 Nov 2024 16:37:49 -0800
|
||||||
|
Subject: [PATCH] [profile] Use base+vaddr for `__llvm_write_binary_ids` note
|
||||||
|
pointers
|
||||||
|
|
||||||
|
This function is always examining its own ELF headers in memory, but it
|
||||||
|
was trying to use conditions between examining files or memory, and it
|
||||||
|
wasn't accounting for LOAD offsets at runtime. This is especially bad if
|
||||||
|
a loaded segment has additional padding that's not in the file offsets.
|
||||||
|
|
||||||
|
Now we do a first scan of the program headers to figure out the runtime
|
||||||
|
base address based on `PT_PHDR` and/or `PT_DYNAMIC` (else assume zero),
|
||||||
|
similar to libc's `do_start`. Then each `PT_NOTE` pointer is simply the
|
||||||
|
base plus the segments's `pt_vaddr`, which includes LOAD offsets.
|
||||||
|
|
||||||
|
Fixes #114605
|
||||||
|
---
|
||||||
|
.../lib/profile/InstrProfilingPlatformLinux.c | 40 ++++++++-----------
|
||||||
|
1 file changed, 16 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c b/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c
|
||||||
|
index e2c06d51e0c6..c365129a0768 100644
|
||||||
|
--- a/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c
|
||||||
|
+++ b/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c
|
||||||
|
@@ -194,41 +194,33 @@ static int WriteBinaryIds(ProfDataWriter *Writer, const ElfW(Nhdr) * Note,
|
||||||
|
*/
|
||||||
|
COMPILER_RT_VISIBILITY int __llvm_write_binary_ids(ProfDataWriter *Writer) {
|
||||||
|
extern const ElfW(Ehdr) __ehdr_start __attribute__((visibility("hidden")));
|
||||||
|
+ extern ElfW(Dyn) _DYNAMIC[] __attribute__((weak, visibility("hidden")));
|
||||||
|
+
|
||||||
|
const ElfW(Ehdr) *ElfHeader = &__ehdr_start;
|
||||||
|
const ElfW(Phdr) *ProgramHeader =
|
||||||
|
(const ElfW(Phdr) *)((uintptr_t)ElfHeader + ElfHeader->e_phoff);
|
||||||
|
|
||||||
|
+ /* Compute the added base address in case of position-independent code. */
|
||||||
|
+ uintptr_t Base = 0;
|
||||||
|
+ for (uint32_t I = 0; I < ElfHeader->e_phnum; I++) {
|
||||||
|
+ if (ProgramHeader[I].p_type == PT_PHDR)
|
||||||
|
+ Base = (uintptr_t)ProgramHeader - ProgramHeader[I].p_vaddr;
|
||||||
|
+ if (ProgramHeader[I].p_type == PT_DYNAMIC && _DYNAMIC)
|
||||||
|
+ Base = (uintptr_t)_DYNAMIC - ProgramHeader[I].p_vaddr;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
int TotalBinaryIdsSize = 0;
|
||||||
|
- uint32_t I;
|
||||||
|
/* Iterate through entries in the program header. */
|
||||||
|
- for (I = 0; I < ElfHeader->e_phnum; I++) {
|
||||||
|
+ for (uint32_t I = 0; I < ElfHeader->e_phnum; I++) {
|
||||||
|
/* Look for the notes segment in program header entries. */
|
||||||
|
if (ProgramHeader[I].p_type != PT_NOTE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* There can be multiple notes segment, and examine each of them. */
|
||||||
|
- const ElfW(Nhdr) * Note;
|
||||||
|
- const ElfW(Nhdr) * NotesEnd;
|
||||||
|
- /*
|
||||||
|
- * When examining notes in file, use p_offset, which is the offset within
|
||||||
|
- * the elf file, to find the start of notes.
|
||||||
|
- */
|
||||||
|
- if (ProgramHeader[I].p_memsz == 0 ||
|
||||||
|
- ProgramHeader[I].p_memsz == ProgramHeader[I].p_filesz) {
|
||||||
|
- Note = (const ElfW(Nhdr) *)((uintptr_t)ElfHeader +
|
||||||
|
- ProgramHeader[I].p_offset);
|
||||||
|
- NotesEnd = (const ElfW(Nhdr) *)((const char *)(Note) +
|
||||||
|
- ProgramHeader[I].p_filesz);
|
||||||
|
- } else {
|
||||||
|
- /*
|
||||||
|
- * When examining notes in memory, use p_vaddr, which is the address of
|
||||||
|
- * section after loaded to memory, to find the start of notes.
|
||||||
|
- */
|
||||||
|
- Note =
|
||||||
|
- (const ElfW(Nhdr) *)((uintptr_t)ElfHeader + ProgramHeader[I].p_vaddr);
|
||||||
|
- NotesEnd =
|
||||||
|
- (const ElfW(Nhdr) *)((const char *)(Note) + ProgramHeader[I].p_memsz);
|
||||||
|
- }
|
||||||
|
+ const ElfW(Nhdr) *Note =
|
||||||
|
+ (const ElfW(Nhdr) *)(Base + ProgramHeader[I].p_vaddr);
|
||||||
|
+ const ElfW(Nhdr) *NotesEnd =
|
||||||
|
+ (const ElfW(Nhdr) *)((const char *)(Note) + ProgramHeader[I].p_memsz);
|
||||||
|
|
||||||
|
int BinaryIdsSize = WriteBinaryIds(Writer, Note, NotesEnd);
|
||||||
|
if (TotalBinaryIdsSize == -1)
|
||||||
|
--
|
||||||
|
2.47.0
|
||||||
|
|
25
0003-PATCH-clang-Don-t-install-static-libraries.patch
Normal file
25
0003-PATCH-clang-Don-t-install-static-libraries.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 88704fc2eabb9dd19a9c3eb81a9b3dc37d95651c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tom Stellard <tstellar@redhat.com>
|
||||||
|
Date: Fri, 31 Jan 2020 11:04:57 -0800
|
||||||
|
Subject: [PATCH][clang] Don't install static libraries
|
||||||
|
|
||||||
|
---
|
||||||
|
clang/cmake/modules/AddClang.cmake | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
|
||||||
|
index 5752f4277444..0f52822d91f0 100644
|
||||||
|
--- a/clang/cmake/modules/AddClang.cmake
|
||||||
|
+++ b/clang/cmake/modules/AddClang.cmake
|
||||||
|
@@ -113,7 +113,7 @@ macro(add_clang_library name)
|
||||||
|
if(TARGET ${lib})
|
||||||
|
target_link_libraries(${lib} INTERFACE ${LLVM_COMMON_LIBS})
|
||||||
|
|
||||||
|
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)
|
||||||
|
+ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN))
|
||||||
|
get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA clang-libraries)
|
||||||
|
install(TARGETS ${lib}
|
||||||
|
COMPONENT ${lib}
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
diff --git a/llvm/docs/conf.py b/llvm/docs/conf.py
|
|
||||||
index cf8a75980b53..b208ad138e89 100644
|
|
||||||
--- a/llvm/docs/conf.py
|
|
||||||
+++ b/llvm/docs/conf.py
|
|
||||||
@@ -26,7 +26,7 @@ from datetime import date
|
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
|
||||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
||||||
-extensions = ["myst_parser", "sphinx.ext.intersphinx", "sphinx.ext.todo"]
|
|
||||||
+extensions = ["sphinx.ext.intersphinx", "sphinx.ext.todo"]
|
|
||||||
|
|
||||||
# Automatic anchors for markdown titles
|
|
||||||
from llvm_slug import make_slug
|
|
1032
SPECS/llvm.spec
1032
SPECS/llvm.spec
File diff suppressed because it is too large
Load Diff
18
gating.yaml
Normal file
18
gating.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
--- !Policy
|
||||||
|
product_versions:
|
||||||
|
- fedora-*
|
||||||
|
decision_contexts:
|
||||||
|
- bodhi_update_push_testing
|
||||||
|
- bodhi_update_push_stable
|
||||||
|
- bodhi_update_push_stable_critpath
|
||||||
|
subject_type: koji_build
|
||||||
|
rules:
|
||||||
|
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||||
|
--- !Policy
|
||||||
|
product_versions:
|
||||||
|
- rhel-10
|
||||||
|
decision_context: osci_compose_gate
|
||||||
|
rules:
|
||||||
|
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier0-tmt-x86_64-aarch64.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier0-tmt-s390x-ppc64le.functional}
|
||||||
|
- !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation}
|
18
llvm.rpmlintrc
Normal file
18
llvm.rpmlintrc
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# This library has no dependencies.
|
||||||
|
addFilter("llvm-libs.x86_64: E: shared-lib-without-dependency-information /usr/lib64/libRemarks.so.[0-9]+")
|
||||||
|
addFilter("llvm-googletest.x86_64: W: devel-file-in-non-devel-package")
|
||||||
|
|
||||||
|
# same for llvm-test utilities
|
||||||
|
addFilter("llvm-test.x86_64: W: no-manual-page-for-binary")
|
||||||
|
|
||||||
|
# Don't warn about libs in llvm-libs
|
||||||
|
addFilter("llvm-libs.x86_64: W: devel-file-in-non-devel-package /usr/lib64/lib")
|
||||||
|
# These is ok in the llvm gold plugin
|
||||||
|
addFilter("llvm-libs.x86_64: W: shared-lib-calls-exit /usr/lib64/LLVMgold.so")
|
||||||
|
addFilter("llvm-libs.x86_64: W: no-soname /usr/lib64/LLVMgold.so")
|
||||||
|
|
||||||
|
# These are without documentation
|
||||||
|
addFilter("llvm-googletest.x86_64: W: no-documentation")
|
||||||
|
addFilter("llvm-libs.x86_64: W: no-documentation")
|
||||||
|
addFilter("llvm-static.x86_64: W: no-documentation")
|
||||||
|
addFilter("llvm-test.x86_64: W: no-documentation")
|
11
macros.clang
Normal file
11
macros.clang
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
%clang_major_version @@CLANG_MAJOR_VERSION@@
|
||||||
|
%clang_minor_version @@CLANG_MINOR_VERSION@@
|
||||||
|
%clang_patch_version @@CLANG_PATCH_VERSION@@
|
||||||
|
|
||||||
|
%clang_version %{clang_major_version}.%{clang_minor_version}.%{clang_patch_version}
|
||||||
|
|
||||||
|
# This is the path to the clang resource directory that has clang's internal
|
||||||
|
# headers and libraries. This path should be used by packages that need to
|
||||||
|
# install files into this directory. This macro's value changes every time
|
||||||
|
# clang's version changes.
|
||||||
|
%clang_resource_dir %{_prefix}/lib/clang/%{clang_major_version}
|
20
rpminspect.yaml
Normal file
20
rpminspect.yaml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
badfuncs:
|
||||||
|
# For compiler-rt, we allow the following forbidden functions:
|
||||||
|
# - gethostbyname
|
||||||
|
# - gethostbyname2
|
||||||
|
# - gethostbyaddr
|
||||||
|
# - inet_aton
|
||||||
|
# These are never actually used, and are installed just as interceptors.
|
||||||
|
allowed:
|
||||||
|
/usr/lib*/clang/*/lib/*/libclang_rt.?san.so:
|
||||||
|
- gethostbyaddr
|
||||||
|
- gethostbyname
|
||||||
|
- gethostbyname2
|
||||||
|
- inet_aton
|
||||||
|
/usr/lib*/clang/*/lib/*/libclang_rt.memprof.so:
|
||||||
|
- gethostbyaddr
|
||||||
|
- gethostbyname
|
||||||
|
- gethostbyname2
|
||||||
|
- inet_aton
|
||||||
|
|
2
sources
Normal file
2
sources
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SHA512 (llvm-project-19.1.7.src.tar.xz) = c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
|
||||||
|
SHA512 (llvm-project-19.1.7.src.tar.xz.sig) = 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
|
6
tests/README.md
Normal file
6
tests/README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Gating testplans for LLVM
|
||||||
|
|
||||||
|
The tests for LLVM are in a separate repo: https://src.fedoraproject.org/tests/llvm
|
||||||
|
This directory should contain only fmf plans (such as build-gating.fmf) which import
|
||||||
|
the tests from the tests repo. This can be done using the "url" parameter of the
|
||||||
|
plan's "discover" step. Reference: https://tmt.readthedocs.io/en/stable/spec/plans.html#fmf
|
59
tests/build-gating.fmf
Normal file
59
tests/build-gating.fmf
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#
|
||||||
|
# Build/PR gating tests for *LLVM 13*
|
||||||
|
#
|
||||||
|
# Compatible with various LLVM 13 distributions:
|
||||||
|
#
|
||||||
|
# * Fedora (ursine packages)
|
||||||
|
# * Centos 9 stream (ursine packages)
|
||||||
|
# * RHEL-9 (ursine packages)
|
||||||
|
# * RHEL-8 (Red Hat module)
|
||||||
|
# * RHEL-7 (software collection)
|
||||||
|
#
|
||||||
|
|
||||||
|
summary: LLVM tests for build/PR gating
|
||||||
|
adjust:
|
||||||
|
- because: "Plan to be ran when either executed locally, or executed by CI system to gate a build or PR."
|
||||||
|
when: >-
|
||||||
|
trigger is defined
|
||||||
|
and trigger != commit
|
||||||
|
and trigger != build
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
- because: "When testing SCL-ized LLVM, the collection must be enabled first"
|
||||||
|
environment+:
|
||||||
|
WITH_SCL: "scl enable llvm-toolset-13.0 rust-toolset-1.58"
|
||||||
|
when: "collection == llvm-toolset-13.0"
|
||||||
|
- because: "When testing SCL-ized LLVM, the collection must be enabled first"
|
||||||
|
environment+:
|
||||||
|
WITH_SCL: "scl enable llvm-toolset-14.0 rust-toolset-1.62"
|
||||||
|
when: "collection == llvm-toolset-14.0"
|
||||||
|
|
||||||
|
# Unfortunatelly, TMT does not support more declarative approach, we need to run commands on our own.
|
||||||
|
- because: "On CentOS, CRB must be enabled to provide rarer packages"
|
||||||
|
prepare+:
|
||||||
|
- name: Enable CRB
|
||||||
|
how: shell
|
||||||
|
script: dnf config-manager --set-enabled crb
|
||||||
|
when: >-
|
||||||
|
distro == centos
|
||||||
|
|
||||||
|
# Unfortunately, TMT does not support more declarative approach, we need to run commands on our own.
|
||||||
|
- because: "On RHEL, CRB must be enabled to provide rarer packages"
|
||||||
|
prepare+:
|
||||||
|
- name: Enable CRB
|
||||||
|
how: shell
|
||||||
|
script: dnf config-manager --set-enabled rhel-CRB
|
||||||
|
when: >-
|
||||||
|
distro == rhel-9
|
||||||
|
or distro == rhel-8
|
||||||
|
|
||||||
|
discover:
|
||||||
|
- name: llvm-tests
|
||||||
|
how: fmf
|
||||||
|
url: https://gitlab.com/redhat/centos-stream/tests/llvm.git
|
||||||
|
ref: main
|
||||||
|
execute:
|
||||||
|
how: tmt
|
||||||
|
provision:
|
||||||
|
hardware:
|
||||||
|
memory: ">= 4 GiB"
|
Loading…
Reference in New Issue
Block a user