diff options
author | Khem Raj <raj.khem@gmail.com> | 2021-09-04 17:41:52 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2021-09-05 08:53:01 -0700 |
commit | 3c131c2bac5ca105270a1ab075632f13cf8d8485 (patch) | |
tree | b5d98f95277ef30a63610550394f98315022693a | |
parent | 46b8d34025d187ce093fcde4210768e2395a5fa4 (diff) | |
download | meta-clang-3c131c2bac5ca105270a1ab075632f13cf8d8485.tar.gz |
bpftrace: Fix build with clang >= 13
Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 files changed, 128 insertions, 7 deletions
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0001-support-clang-upto-version-13.patch b/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0001-support-clang-upto-version-13.patch index c881904..6da2fae 100644 --- a/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0001-support-clang-upto-version-13.patch +++ b/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0001-support-clang-upto-version-13.patch | |||
@@ -1,26 +1,27 @@ | |||
1 | From 7b2f02a7b7d246b24cf029b3a75d8595b7b3c250 Mon Sep 17 00:00:00 2001 | 1 | From a01f0fb44e704a8439e431acf47d6fb0eff5bf9d Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Khem Raj <raj.khem@gmail.com> |
3 | Date: Thu, 5 Aug 2021 22:15:27 -0700 | 3 | Date: Thu, 5 Aug 2021 22:15:27 -0700 |
4 | Subject: [PATCH 1/2] support clang upto version 13 | 4 | Subject: [PATCH 1/2] support clang upto version 13 |
5 | 5 | ||
6 | Upstream-Status: Submitted [https://github.com/iovisor/bpftrace/pull/1962] | 6 | Upstream-Status: Submitted [https://github.com/iovisor/bpftrace/pull/1993] |
7 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 7 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
8 | --- | 8 | --- |
9 | CMakeLists.txt | 2 +- | 9 | CMakeLists.txt | 2 +- |
10 | 1 file changed, 1 insertion(+), 1 deletion(-) | 10 | 1 file changed, 1 insertion(+), 1 deletion(-) |
11 | 11 | ||
12 | diff --git a/CMakeLists.txt b/CMakeLists.txt | 12 | diff --git a/CMakeLists.txt b/CMakeLists.txt |
13 | index 86daa195..73744207 100644 | 13 | index 596b6766..7aab66f1 100644 |
14 | --- a/CMakeLists.txt | 14 | --- a/CMakeLists.txt |
15 | +++ b/CMakeLists.txt | 15 | +++ b/CMakeLists.txt |
16 | @@ -162,7 +162,7 @@ else() | 16 | @@ -164,7 +164,7 @@ else() |
17 | find_package(LLVM REQUIRED) | 17 | find_package(LLVM REQUIRED) |
18 | endif() | 18 | endif() |
19 | 19 | ||
20 | - if((${LLVM_VERSION_MAJOR} VERSION_LESS 6) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER 12)) | 20 | - if((${LLVM_VERSION_MAJOR} VERSION_LESS 6) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER 12)) |
21 | + if((${LLVM_VERSION_MAJOR} VERSION_LESS 6) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER 13)) | 21 | + if((${LLVM_VERSION_MAJOR} VERSION_LESS 6) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER 13)) |
22 | message(SEND_ERROR "Unsupported LLVM version found: ${LLVM_INCLUDE_DIRS}") | 22 | message(SEND_ERROR "Unsupported LLVM version found: ${LLVM_INCLUDE_DIRS}") |
23 | message(SEND_ERROR "Specify an LLVM major version using LLVM_REQUESTED_VERSION=<major version>") | 23 | message(SEND_ERROR "Specify an LLVM major version using LLVM_REQUESTED_VERSION=<major version>") |
24 | endif() | 24 | endif() |
25 | -- | 25 | -- |
26 | 2.32.0 | 26 | 2.33.0 |
27 | |||
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0002-orc-Fix-build-with-clang-13.patch b/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0002-orc-Fix-build-with-clang-13.patch new file mode 100644 index 0000000..a00b006 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace/0002-orc-Fix-build-with-clang-13.patch | |||
@@ -0,0 +1,119 @@ | |||
1 | From fbdf215a0ee9002ae65e87673d50dd40d0cfcf78 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 4 Sep 2021 17:28:17 -0700 | ||
4 | Subject: [PATCH 2/2] orc: Fix build with clang >= 13 | ||
5 | |||
6 | Fixes errors like | ||
7 | 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 | ||
8 | BpfOrc::BpfOrc(TargetMachine *TM, DataLayout DL) | ||
9 | ^ | ||
10 | |||
11 | Fixes https://github.com/iovisor/bpftrace/issues/1963 | ||
12 | |||
13 | Upstream-Status: Submitted [https://github.com/iovisor/bpftrace/pull/1993] | ||
14 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
15 | --- | ||
16 | src/ast/bpforc/bpforc.h | 17 ++++++++++++++++- | ||
17 | src/ast/bpforc/bpforcv2.cpp | 28 ++++++++++++++++++++++++++-- | ||
18 | 2 files changed, 42 insertions(+), 3 deletions(-) | ||
19 | |||
20 | diff --git a/src/ast/bpforc/bpforc.h b/src/ast/bpforc/bpforc.h | ||
21 | index 1b929dfd..fedfe975 100644 | ||
22 | --- a/src/ast/bpforc/bpforc.h | ||
23 | +++ b/src/ast/bpforc/bpforc.h | ||
24 | @@ -72,8 +72,12 @@ private: | ||
25 | std::unique_ptr<TargetMachine> TM; | ||
26 | DataLayout DL; | ||
27 | #if LLVM_VERSION_MAJOR >= 7 | ||
28 | +#ifdef LLVM_ORC_V2 | ||
29 | + std::unique_ptr<ExecutionSession> ES; | ||
30 | +#else // LLVM_ORC_V1 | ||
31 | ExecutionSession ES; | ||
32 | #endif | ||
33 | +#endif | ||
34 | #if LLVM_VERSION_MAJOR >= 7 && LLVM_VERSION_MAJOR < 12 | ||
35 | std::shared_ptr<SymbolResolver> Resolver; | ||
36 | #endif | ||
37 | @@ -98,7 +102,18 @@ private: | ||
38 | #endif | ||
39 | |||
40 | public: | ||
41 | +#ifdef LLVM_ORC_V2 | ||
42 | + ~BpfOrc() | ||
43 | + { | ||
44 | + if (auto Err = ES->endSession()) | ||
45 | + ES->reportError(std::move(Err)); | ||
46 | + } | ||
47 | + BpfOrc(TargetMachine *TM, | ||
48 | + DataLayout DL, | ||
49 | + std::unique_ptr<ExecutionSession> ES); | ||
50 | +#else // LLVM_ORC_V1 | ||
51 | BpfOrc(TargetMachine *TM, DataLayout DL); | ||
52 | +#endif | ||
53 | void compile(std::unique_ptr<Module> M); | ||
54 | |||
55 | /* Helper for creating a orc object, responsible for creating internal objects | ||
56 | @@ -134,7 +149,7 @@ public: | ||
57 | #ifdef LLVM_ORC_V2 | ||
58 | Expected<JITEvaluatedSymbol> lookup(StringRef Name) | ||
59 | { | ||
60 | - return ES.lookup({ &MainJD }, Mangle(Name.str())); | ||
61 | + return ES->lookup({ &MainJD }, Mangle(Name.str())); | ||
62 | } | ||
63 | #endif | ||
64 | }; | ||
65 | diff --git a/src/ast/bpforc/bpforcv2.cpp b/src/ast/bpforc/bpforcv2.cpp | ||
66 | index 9876625b..41ec7ca3 100644 | ||
67 | --- a/src/ast/bpforc/bpforcv2.cpp | ||
68 | +++ b/src/ast/bpforc/bpforcv2.cpp | ||
69 | @@ -1,5 +1,23 @@ | ||
70 | // Included by bpforc.cpp | ||
71 | |||
72 | +#if LLVM_VERSION_MAJOR >= 13 | ||
73 | +BpfOrc::BpfOrc(TargetMachine *TM, | ||
74 | + DataLayout DL, | ||
75 | + std::unique_ptr<ExecutionSession> ES) | ||
76 | + : TM(std::move(TM)), | ||
77 | + DL(std::move(DL)), | ||
78 | + ES(std::move(ES)), | ||
79 | + ObjectLayer(*this->ES, | ||
80 | + []() { return std::make_unique<SectionMemoryManager>(); }), | ||
81 | + CompileLayer(*this->ES, | ||
82 | + ObjectLayer, | ||
83 | + std::make_unique<SimpleCompiler>(*this->TM)), | ||
84 | + Mangle(*this->ES, this->DL), | ||
85 | + CTX(std::make_unique<LLVMContext>()), | ||
86 | + MainJD(cantFail(this->ES->createJITDylib("<main>"))) | ||
87 | +{ | ||
88 | +} | ||
89 | +#else | ||
90 | BpfOrc::BpfOrc(TargetMachine *TM, DataLayout DL) | ||
91 | : TM(std::move(TM)), | ||
92 | DL(std::move(DL)), | ||
93 | @@ -16,6 +34,7 @@ BpfOrc::BpfOrc(TargetMachine *TM, DataLayout DL) | ||
94 | { | ||
95 | } | ||
96 | |||
97 | +#endif | ||
98 | LLVMContext &BpfOrc::getContext() | ||
99 | { | ||
100 | return *CTX.getContext(); | ||
101 | @@ -34,8 +53,13 @@ std::unique_ptr<BpfOrc> BpfOrc::Create() | ||
102 | // return unique_ptrs | ||
103 | auto DL = cantFail(JTMB.getDefaultDataLayoutForTarget()); | ||
104 | auto TM = cantFail(JTMB.createTargetMachine()); | ||
105 | - | ||
106 | - return std::make_unique<BpfOrc>(TM.release(), std::move(DL)); | ||
107 | +#if LLVM_VERSION_MAJOR >= 13 | ||
108 | + auto EPC = SelfExecutorProcessControl::Create(); | ||
109 | + auto ES = std::make_unique<ExecutionSession>(std::move(*EPC)); | ||
110 | + return std::make_unique<BpfOrc>(TM.release(), std::move(DL), std::move(ES)); | ||
111 | +#else | ||
112 | + return std::make_unique<BpfOrc>(TM.release(), std::move(DL), 0); | ||
113 | +#endif | ||
114 | } | ||
115 | |||
116 | void BpfOrc::compile(std::unique_ptr<Module> M) | ||
117 | -- | ||
118 | 2.33.0 | ||
119 | |||
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace_0.13.0.bb b/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace_0.13.0.bb index 952a66f..09d1fd2 100644 --- a/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace_0.13.0.bb +++ b/dynamic-layers/openembedded-layer/recipes-devtools/bpftrace/bpftrace_0.13.0.bb | |||
@@ -18,6 +18,7 @@ RDEPENDS:${PN} += "bash python3 xz" | |||
18 | 18 | ||
19 | SRC_URI = "git://github.com/iovisor/bpftrace;branch=master \ | 19 | SRC_URI = "git://github.com/iovisor/bpftrace;branch=master \ |
20 | file://0001-support-clang-upto-version-13.patch \ | 20 | file://0001-support-clang-upto-version-13.patch \ |
21 | file://0002-orc-Fix-build-with-clang-13.patch \ | ||
21 | " | 22 | " |
22 | SRCREV = "283fe526dfc262fdecddec4beb921835ea0cc89e" | 23 | SRCREV = "283fe526dfc262fdecddec4beb921835ea0cc89e" |
23 | 24 | ||