diff --git a/SOURCES/bpftrace-0.12.1-orc-Fix-build-with-clang-13.patch b/SOURCES/bpftrace-0.12.1-orc-Fix-build-with-clang-13.patch new file mode 100644 index 0000000..2157003 --- /dev/null +++ b/SOURCES/bpftrace-0.12.1-orc-Fix-build-with-clang-13.patch @@ -0,0 +1,132 @@ +From ddbd909505ed0530f0e4dec45c195e0cb315d516 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 4 Sep 2021 17:28:17 -0700 +Subject: [PATCH] orc: Fix build with clang >= 13 + +Fixes errors like +src/ast/bpforc/bpforcv2.cpp:3:9: error: constructor for 'bpftrace::BpfOrc' must explicitly initialize the member 'ES' which does not have a default constructor +BpfOrc::BpfOrc(TargetMachine *TM, DataLayout DL) + ^ + +Fixes https://github.com/iovisor/bpftrace/issues/1963 + +Signed-off-by: Khem Raj +--- + src/bpforc.h | 23 ++++++++++++++++++++++- + src/bpforcv2.cpp | 23 +++++++++++++++-------- + 2 files changed, 37 insertions(+), 9 deletions(-) + +diff --git a/src/bpforc.h b/src/bpforc.h +index 5634c544..1900e497 100644 +--- a/src/bpforc.h ++++ b/src/bpforc.h +@@ -20,6 +20,9 @@ + #ifdef LLVM_ORC_V2 + #include + #include ++#if LLVM_VERSION_MAJOR >= 13 ++#include ++#endif + #endif + + #include +@@ -66,8 +69,12 @@ class BpfOrc + std::unique_ptr TM; + DataLayout DL; + #if LLVM_VERSION_MAJOR >= 7 ++#ifdef LLVM_ORC_V2 ++ std::unique_ptr ES; ++#else // LLVM_ORC_V1 + ExecutionSession ES; + #endif ++#endif + #if LLVM_VERSION_MAJOR >= 7 && LLVM_VERSION_MAJOR < 12 + std::shared_ptr Resolver; + #endif +@@ -92,7 +99,21 @@ class BpfOrc + #endif + + public: ++#if LLVM_VERSION_MAJOR >= 13 ++ ~BpfOrc() ++ { ++ if (auto Err = ES->endSession()) ++ ES->reportError(std::move(Err)); ++ } ++#endif ++#ifdef LLVM_ORC_V2 ++ BpfOrc(TargetMachine *TM, ++ DataLayout DL, ++ std::unique_ptr ES); ++#else + BpfOrc(TargetMachine *TM, DataLayout DL); ++#endif ++ + void compile(std::unique_ptr M); + + /* Helper for creating a orc object, responsible for creating internal objects +@@ -125,7 +146,7 @@ class BpfOrc + #ifdef LLVM_ORC_V2 + Expected lookup(StringRef Name) + { +- return ES.lookup({ &MainJD }, Mangle(Name.str())); ++ return ES->lookup({ &MainJD }, Mangle(Name.str())); + } + #endif + }; +diff --git a/src/bpforcv2.cpp b/src/bpforcv2.cpp +index 209e08e5..104213b0 100644 +--- a/src/bpforcv2.cpp ++++ b/src/bpforcv2.cpp +@@ -1,24 +1,26 @@ + // Included by bpforc.cpp + +-BpfOrc::BpfOrc(TargetMachine *TM, DataLayout DL) ++BpfOrc::BpfOrc(TargetMachine *TM, ++ DataLayout DL, ++ std::unique_ptr ES) + : TM(std::move(TM)), + DL(std::move(DL)), +- ObjectLayer(ES, ++ ES(std::move(ES)), ++ ObjectLayer(*(this->ES), + [this]() { + return std::make_unique(sections_); + }), +- CompileLayer(ES, ++ CompileLayer(*this->ES, + ObjectLayer, + std::make_unique(*this->TM)), +- Mangle(ES, this->DL), ++ Mangle(*this->ES, this->DL), + CTX(std::make_unique()), +- MainJD(cantFail(ES.createJITDylib("
"))) ++ MainJD(cantFail(this->ES->createJITDylib("
"))) + { + MainJD.addGenerator( + cantFail(DynamicLibrarySearchGenerator::GetForCurrentProcess( + DL.getGlobalPrefix()))); + } +- + LLVMContext &BpfOrc::getContext() + { + return *CTX.getContext(); +@@ -37,8 +39,13 @@ std::unique_ptr BpfOrc::Create() + // return unique_ptrs + auto DL = cantFail(JTMB.getDefaultDataLayoutForTarget()); + auto TM = cantFail(JTMB.createTargetMachine()); +- +- return std::make_unique(TM.release(), std::move(DL)); ++#if LLVM_VERSION_MAJOR >= 13 ++ auto EPC = SelfExecutorProcessControl::Create(); ++ auto ES = std::make_unique(std::move(*EPC)); ++#else ++ auto ES = std::make_unique(); ++#endif ++ return std::make_unique(TM.release(), std::move(DL), std::move(ES)); + } + + void BpfOrc::compile(std::unique_ptr M) +-- +2.31.1 + diff --git a/SPECS/bpftrace.spec b/SPECS/bpftrace.spec index 625465b..a580f8e 100644 --- a/SPECS/bpftrace.spec +++ b/SPECS/bpftrace.spec @@ -1,6 +1,6 @@ Name: bpftrace Version: 0.12.1 -Release: 5%{?dist} +Release: 7%{?dist} Summary: High-level tracing language for Linux eBPF License: ASL 2.0 @@ -8,6 +8,7 @@ URL: https://github.com/iovisor/bpftrace Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz Patch0: %{name}-%{version}-RHEL-9-fixes.patch Patch1: %{name}-%{version}-Fix-mdflush.patch +Patch2: %{name}-%{version}-orc-Fix-build-with-clang-13.patch Patch10: %{name}-%{version}-aarch64-fixes-statsnoop-and-opensnoop.patch @@ -23,7 +24,7 @@ BuildRequires: elfutils-libelf-devel BuildRequires: zlib-devel BuildRequires: llvm-devel BuildRequires: clang-devel -BuildRequires: bcc-devel >= 0.19.0-1 +BuildRequires: bcc-devel >= 0.19.0-8 BuildRequires: libbpf-devel BuildRequires: libbpf-static BuildRequires: binutils-devel @@ -82,6 +83,12 @@ find %{buildroot}%{_datadir}/%{name}/tools -type f -exec \ %{_datadir}/%{name}/tools/doc/*.txt %changelog +* Thu Dec 02 2021 Jerome Marchand - 0.12.1.7 +- Bump up required bcc version. + +* Thu Dec 02 2021 Jerome Marchand - 0.12.1.6 +- Rebuild on LLVM13 + * Mon Oct 18 2021 Jerome Marchand - 0.12.1.5 - threadsnoop: probe libpthread.so.0 - Fix aarch64 failures