1 |
commit: 542f1c70470d93d8f66fb8ef04ece7fb83221512 |
2 |
Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Aug 29 17:39:38 2022 +0000 |
4 |
Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Aug 29 17:39:38 2022 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=542f1c70 |
7 |
|
8 |
dev-util/bpftrace: Add patch to build with bcc-0.25 (bug #866611) |
9 |
|
10 |
Closes: https://bugs.gentoo.org/866611 |
11 |
Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org> |
12 |
|
13 |
dev-util/bpftrace/bpftrace-0.15.0-r1.ebuild | 1 + |
14 |
.../bpftrace/files/bpftrace-0.15.0-bcc-025.patch | 88 ++++++++++++++++++++++ |
15 |
2 files changed, 89 insertions(+) |
16 |
|
17 |
diff --git a/dev-util/bpftrace/bpftrace-0.15.0-r1.ebuild b/dev-util/bpftrace/bpftrace-0.15.0-r1.ebuild |
18 |
index 1b080a8637d2..51346cb3d38d 100644 |
19 |
--- a/dev-util/bpftrace/bpftrace-0.15.0-r1.ebuild |
20 |
+++ b/dev-util/bpftrace/bpftrace-0.15.0-r1.ebuild |
21 |
@@ -52,6 +52,7 @@ PATCHES=( |
22 |
"${FILESDIR}/bpftrace-0.15.0-install-libs.patch" |
23 |
"${FILESDIR}/bpftrace-0.15.0-dont-compress-man.patch" |
24 |
"${FILESDIR}/bpftrace-0.11.4-old-kernels.patch" |
25 |
+ "${FILESDIR}/bpftrace-0.15.0-bcc-025.patch" |
26 |
) |
27 |
|
28 |
pkg_pretend() { |
29 |
|
30 |
diff --git a/dev-util/bpftrace/files/bpftrace-0.15.0-bcc-025.patch b/dev-util/bpftrace/files/bpftrace-0.15.0-bcc-025.patch |
31 |
new file mode 100644 |
32 |
index 000000000000..ef2ca76e1c50 |
33 |
--- /dev/null |
34 |
+++ b/dev-util/bpftrace/files/bpftrace-0.15.0-bcc-025.patch |
35 |
@@ -0,0 +1,88 @@ |
36 |
+From f86c3bde84d9e75ec2780a51a1ca7dc20a4740e6 Mon Sep 17 00:00:00 2001 |
37 |
+From: Dominique Martinet <asmadeus@×××××××××.org> |
38 |
+Date: Thu, 25 Aug 2022 21:47:30 +0900 |
39 |
+Subject: [PATCH] Fix builds against bcc >= 0.25.0 |
40 |
+ |
41 |
+libbpf 1.0.0 removed bpf_load_program_attr in |
42 |
+https://github.com/libbpf/libbpf/commit/9476dce6fe905a6bf1d4c483f7b2b8575c4ffb2d |
43 |
+and bcc 0.25.0 in turn changed bcc_prog_load_xattr to use |
44 |
+bpf_prog_load_opts instead in |
45 |
+https://github.com/iovisor/bcc/commit/185143bdec6134255363446f644acd766ffb3825 |
46 |
+ |
47 |
+Add a compile check to use the appropriate version |
48 |
+ |
49 |
+diff --git a/CMakeLists.txt b/CMakeLists.txt |
50 |
+index c5c4c39630d2..f23b2ba52740 100644 |
51 |
+--- a/CMakeLists.txt |
52 |
++++ b/CMakeLists.txt |
53 |
+@@ -138,7 +138,7 @@ check_symbol_exists(bpf_attach_kfunc "${LIBBCC_INCLUDE_DIRS}/bcc/libbpf.h" HAVE_ |
54 |
+ check_symbol_exists(bcc_usdt_addsem_probe "${LIBBCC_INCLUDE_DIRS}/bcc/bcc_usdt.h" HAVE_BCC_USDT_ADDSEM) |
55 |
+ check_symbol_exists(bcc_procutils_which_so "${LIBBCC_INCLUDE_DIRS}/bcc/bcc_proc.h" HAVE_BCC_WHICH_SO) |
56 |
+ |
57 |
+-# bcc_prog_load_xattr needs struct bpf_load_program_attr, |
58 |
++# bcc_prog_load_xattr needs struct bpf_prog_load_opts or bpf_load_program_attr, |
59 |
+ # which is defined in libbpf |
60 |
+ if (LIBBPF_FOUND) |
61 |
+ check_symbol_exists(bcc_prog_load_xattr "${LIBBCC_INCLUDE_DIRS}/bcc/libbpf.h" HAVE_BCC_PROG_LOAD_XATTR) |
62 |
+@@ -236,6 +236,10 @@ if(LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) |
63 |
+ set(BPFTRACE_FLAGS "${BPFTRACE_FLAGS}" LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) |
64 |
+ endif(LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) |
65 |
+ |
66 |
++if(LIBBCC_PROG_LOAD_XATTRS_WITH_OPTS) |
67 |
++ set(BPFTRACE_FLAGS "${BPFTRACE_FLAGS}" LIBBCC_PROG_LOAD_XATTRS_WITH_OPTS) |
68 |
++endif(LIBBCC_PROG_LOAD_XATTRS_WITH_OPTS) |
69 |
++ |
70 |
+ if (HAVE_BCC_KFUNC) |
71 |
+ set(BPFTRACE_FLAGS "${BPFTRACE_FLAGS}" HAVE_BCC_KFUNC) |
72 |
+ endif(HAVE_BCC_KFUNC) |
73 |
+diff --git a/cmake/FindLibBcc.cmake b/cmake/FindLibBcc.cmake |
74 |
+index 7b4f12835786..20d2e68cd75f 100644 |
75 |
+--- a/cmake/FindLibBcc.cmake |
76 |
++++ b/cmake/FindLibBcc.cmake |
77 |
+@@ -85,6 +85,16 @@ int main(void) { |
78 |
+ return 0; |
79 |
+ } |
80 |
+ " LIBBCC_ATTACH_UPROBE_SEVEN_ARGS_SIGNATURE) |
81 |
++CHECK_CXX_SOURCE_COMPILES(" |
82 |
++#include <bcc/libbpf.h> |
83 |
++ |
84 |
++int main(void) { |
85 |
++ struct bpf_prog_load_opts *opts = (struct bpf_prog_load_opts*) 1; |
86 |
++ |
87 |
++ bcc_prog_load_xattr(BPF_PROG_TYPE_UNSPEC, 0, 0, 0, opts, 0, 0, 0, true); |
88 |
++ return 0; |
89 |
++} |
90 |
++" LIBBCC_PROG_LOAD_XATTRS_WITH_OPTS) |
91 |
+ SET(CMAKE_REQUIRED_INCLUDES) |
92 |
+ |
93 |
+ SET(CMAKE_REQUIRED_LIBRARIES ${LIBBCC_BPF_LIBRARIES}) |
94 |
+diff --git a/src/attached_probe.cpp b/src/attached_probe.cpp |
95 |
+index 60778e53ce44..dd46f15fd8d2 100644 |
96 |
+--- a/src/attached_probe.cpp |
97 |
++++ b/src/attached_probe.cpp |
98 |
+@@ -731,7 +731,24 @@ void AttachedProbe::load_prog() |
99 |
+ continue; |
100 |
+ } |
101 |
+ |
102 |
+-#ifdef HAVE_BCC_PROG_LOAD_XATTR |
103 |
++#ifdef LIBBCC_PROG_LOAD_XATTRS_WITH_OPTS |
104 |
++ struct bpf_prog_load_opts opts = { }; |
105 |
++ |
106 |
++ opts.sz = sizeof(opts); |
107 |
++ opts.log_level = log_level; |
108 |
++ |
109 |
++ progfd_ = bcc_prog_load_xattr( |
110 |
++ progtype(probe_.type), |
111 |
++ name.c_str(), |
112 |
++ license, |
113 |
++ reinterpret_cast<struct bpf_insn *>(insns), |
114 |
++ &opts, |
115 |
++ prog_len, |
116 |
++ log_buf.get(), |
117 |
++ log_buf_size, |
118 |
++ true); |
119 |
++ |
120 |
++#elif HAVE_BCC_PROG_LOAD_XATTR |
121 |
+ struct bpf_load_program_attr attr = {}; |
122 |
+ |
123 |
+ attr.prog_type = progtype(probe_.type); |