From bde7b370c7f4d52b050a6b8fa554af057516f777 Mon Sep 17 00:00:00 2001 From: Viktor Malik Date: Mon, 15 May 2023 08:31:25 +0200 Subject: [PATCH] Rebuild for LLMV 16 Resolves: rhbz#2192953 Signed-off-by: Viktor Malik --- ...onal-in-CodegenLLVM-CodegenLLVM-call.patch | 44 ++++++++++++++++++ ....0-0004-Set-cmake-policy-for-CMP0057.patch | 46 +++++++++++++++++++ ...e-Raise-max-llvm-major-version-to-16.patch | 26 +++++++++++ bpftrace.spec | 8 +++- 4 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 bpftrace-0.17.0-0003-ast-Use-std-optional-in-CodegenLLVM-CodegenLLVM-call.patch create mode 100644 bpftrace-0.17.0-0004-Set-cmake-policy-for-CMP0057.patch create mode 100644 bpftrace-0.17.0-0005-cmake-Raise-max-llvm-major-version-to-16.patch diff --git a/bpftrace-0.17.0-0003-ast-Use-std-optional-in-CodegenLLVM-CodegenLLVM-call.patch b/bpftrace-0.17.0-0003-ast-Use-std-optional-in-CodegenLLVM-CodegenLLVM-call.patch new file mode 100644 index 0000000..faf1a8a --- /dev/null +++ b/bpftrace-0.17.0-0003-ast-Use-std-optional-in-CodegenLLVM-CodegenLLVM-call.patch @@ -0,0 +1,44 @@ +From 1632c1fb41d03730a5106696c4fed64cd4a86785 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 13 Mar 2023 21:30:27 -0700 +Subject: [PATCH 1/3] ast: Use std::optional in CodegenLLVM::CodegenLLVM call + +Fixes build with clang-16 + +src/ast/passes/codegen_llvm.cpp:63:53: error: use of undeclared identifier 'Optional'; did you mean 'std::optional'? + +Signed-off-by: Khem Raj +--- + src/ast/passes/codegen_llvm.cpp | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/ast/passes/codegen_llvm.cpp b/src/ast/passes/codegen_llvm.cpp +index 4e2a18e1..efeb4160 100644 +--- a/src/ast/passes/codegen_llvm.cpp ++++ b/src/ast/passes/codegen_llvm.cpp +@@ -56,11 +56,17 @@ CodegenLLVM::CodegenLLVM(Node *root, BPFtrace &bpftrace) + throw std::runtime_error( + "Could not find bpf llvm target, does your llvm support it?"); + +- target_machine_.reset(target->createTargetMachine(LLVMTargetTriple, +- "generic", +- "", +- TargetOptions(), +- Optional())); ++ target_machine_.reset( ++ target->createTargetMachine(LLVMTargetTriple, ++ "generic", ++ "", ++ TargetOptions(), ++#if LLVM_VERSION_MAJOR >= 16 ++ std::optional() ++#else ++ Optional() ++#endif ++ )); + target_machine_->setOptLevel(llvm::CodeGenOpt::Aggressive); + + module_->setTargetTriple(LLVMTargetTriple); +-- +2.40.1 + diff --git a/bpftrace-0.17.0-0004-Set-cmake-policy-for-CMP0057.patch b/bpftrace-0.17.0-0004-Set-cmake-policy-for-CMP0057.patch new file mode 100644 index 0000000..f332cec --- /dev/null +++ b/bpftrace-0.17.0-0004-Set-cmake-policy-for-CMP0057.patch @@ -0,0 +1,46 @@ +From 6a1eb84833fd40e9aa49b610089c6ce11f38ba43 Mon Sep 17 00:00:00 2001 +From: Viktor Malik +Date: Wed, 10 May 2023 13:30:59 +0200 +Subject: [PATCH 1/2] Set cmake policy for CMP0057 + +Building with LLVM16 fails with the error: +CMake Warning (dev) at /usr/lib/llvm-16/lib/cmake/llvm/LLVM-Config.cmake:230 (if): + Policy CMP0057 is not set: Support new IN_LIST if() operator. Run "cmake + --help-policy CMP0057" for policy details. Use the cmake_policy command to + set the policy and suppress this warning. + + IN_LIST will be interpreted as an operator when the policy is set to NEW. + Since the policy is not set the OLD behavior will be used. +Call Stack (most recent call first): + cmake/clang_libs.cmake:32 (llvm_map_components_to_libnames) + src/cc/CMakeLists.txt:126 (include) +This warning is for project developers. Use -Wno-dev to suppress it. + +CMake Error at /usr/lib/llvm-16/lib/cmake/llvm/LLVM-Config.cmake:230 (if): + if given arguments: + + "engine" "IN_LIST" "link_components" + + Unknown arguments specified + +Set cmake policy for CMP0057 explicitly. +--- + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0a7914f5..045e9d97 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,8 @@ + cmake_minimum_required(VERSION 3.13.0) + project(bpftrace) + ++cmake_policy(SET CMP0057 NEW) ++ + # bpftrace version number components. + set(bpftrace_VERSION_MAJOR 0) + set(bpftrace_VERSION_MINOR 17) +-- +2.40.1 + diff --git a/bpftrace-0.17.0-0005-cmake-Raise-max-llvm-major-version-to-16.patch b/bpftrace-0.17.0-0005-cmake-Raise-max-llvm-major-version-to-16.patch new file mode 100644 index 0000000..bf70e44 --- /dev/null +++ b/bpftrace-0.17.0-0005-cmake-Raise-max-llvm-major-version-to-16.patch @@ -0,0 +1,26 @@ +From 359a4067c96580cd6d11202ea1ea97a72b4db650 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 10 Mar 2023 00:08:27 -0800 +Subject: [PATCH 2/2] cmake: Raise max llvm major version to 16 + +Signed-off-by: Khem Raj +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 045e9d97..88867b5b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -167,7 +167,7 @@ else() + endif() + + set(MIN_LLVM_MAJOR 6) +- set(MAX_LLVM_MAJOR 15) ++ set(MAX_LLVM_MAJOR 16) + + if((${LLVM_VERSION_MAJOR} VERSION_LESS ${MIN_LLVM_MAJOR}) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER ${MAX_LLVM_MAJOR})) + message(SEND_ERROR "Unsupported LLVM version found via ${LLVM_INCLUDE_DIRS}: ${LLVM_VERSION_MAJOR}") +-- +2.40.1 + diff --git a/bpftrace.spec b/bpftrace.spec index 499408e..cf3b361 100644 --- a/bpftrace.spec +++ b/bpftrace.spec @@ -1,6 +1,6 @@ Name: bpftrace Version: 0.17.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: High-level tracing language for Linux eBPF License: ASL 2.0 @@ -15,6 +15,9 @@ Source1: https://github.com/USCiLab/cereal/archive/v%{cereal_version}/cer Patch0: %{name}-%{version}-0001-Parse-kernel-configuration.patch Patch1: %{name}-%{version}-0002-arm64-define-the-KASAN_SHADOW_SCALE_SHIFT-macro.patch +Patch2: %{name}-%{version}-0003-ast-Use-std-optional-in-CodegenLLVM-CodegenLLVM-call.patch +Patch3: %{name}-%{version}-0004-Set-cmake-policy-for-CMP0057.patch +Patch4: %{name}-%{version}-0005-cmake-Raise-max-llvm-major-version-to-16.patch Patch10: %{name}-%{version}-RHEL-aarch64-fixes-statsnoop-and-opensnoop.patch @@ -96,6 +99,9 @@ find %{buildroot}%{_datadir}/%{name}/tools -type f -exec \ %exclude %{_datadir}/%{name}/tools/old %changelog +* Mon May 15 2023 Viktor Malik - 0.17.0-2 +- Rebuild for LLVM 16 (rhbz#2192953) + * Tue Mar 14 2023 Viktor Malik - 0.17.0-1 - Rebase on bpftrace 0.17.0 (RHEL-286) - Fix runqlat.bt, tcpdrop.bt, and undump.bt on aarch64 (rhbz#2170838)