Gentoo Archives: gentoo-commits

From: Patrick McLean <chutzpah@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-util/bpftrace/files/, dev-util/bpftrace/
Date: Mon, 29 Aug 2022 17:40:13
Message-Id: 1661794778.542f1c70470d93d8f66fb8ef04ece7fb83221512.chutzpah@gentoo
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);