adapt libbpf v0.8

(cherry picked from commit 692e6ed146b15729a991e54a7b57223e9484e15c)
This commit is contained in:
wo_cow 2022-11-17 21:11:40 +08:00 committed by openeuler-sync-bot
parent d7ac92e344
commit dd9945e2a1
2 changed files with 146 additions and 1 deletions

140
adapt-libbpf-v08.patch Normal file
View File

@ -0,0 +1,140 @@
From d3a5b078c4566c966280dad7a5efa7e74053b718 Mon Sep 17 00:00:00 2001
From: wo_cow <niuqianqian@huawei.com>
Date: Thu, 17 Nov 2022 16:29:47 +0800
Subject: [PATCH] adapt libbpf v0.8
---
.../ebpf.probe/src/include/__bpf_usr.h | 32 ++++++++++++++-----
.../extends/ebpf.probe/src/include/bpf.h | 4 ++-
.../ebpf.probe/src/ioprobe/io_count.bpf.c | 2 +-
.../ebpf.probe/src/ioprobe/io_err.bpf.c | 2 +-
src/probes/extends/ebpf.probe/src/mk/var.mk | 5 +++
5 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/src/probes/extends/ebpf.probe/src/include/__bpf_usr.h b/src/probes/extends/ebpf.probe/src/include/__bpf_usr.h
index d75070c..95e7160 100644
--- a/src/probes/extends/ebpf.probe/src/include/__bpf_usr.h
+++ b/src/probes/extends/ebpf.probe/src/include/__bpf_usr.h
@@ -37,14 +37,6 @@
#define bpf_section(NAME) __attribute__((section(NAME), used))
-#define UPROBE(func, type) \
- bpf_section("uprobe/" #func) \
- void ubpf_##func(struct type *ctx)
-
-#define URETPROBE(func, type) \
- bpf_section("uretprobe/" #func) \
- void ubpf_ret_##func(struct type *ctx)
-
#define UPROBE_PARMS_STASH(func, ctx, prog_id) \
do { \
int ret; \
@@ -63,7 +55,30 @@
} \
} while (0)
+#if (CURRENT_LIBBPF_VERSION >= LIBBPF_VERSION(0, 8))
+#define UPROBE(func, type) \
+ bpf_section("uprobe") \
+ void ubpf_##func(struct type *ctx)
+
+#define URETPROBE(func, type) \
+ bpf_section("uretprobe") \
+ void ubpf_ret_##func(struct type *ctx)
+#define UPROBE_RET(func, type, prog_id) \
+ bpf_section("uprobe") \
+ void __uprobe_bpf_##func(struct type *ctx) { \
+ UPROBE_PARMS_STASH(func, ctx, prog_id); \
+ } \
+ \
+ bpf_section("uretprobe") \
+ void __uprobe_ret_bpf_##func(struct type *ctx)
+#else
+#define UPROBE(func, type) \
+ bpf_section("uprobe/" #func) \
+ void ubpf_##func(struct type *ctx)
+#define URETPROBE(func, type) \
+ bpf_section("uretprobe/" #func) \
+ void ubpf_ret_##func(struct type *ctx)
#define UPROBE_RET(func, type, prog_id) \
bpf_section("uprobe/" #func) \
void __uprobe_bpf_##func(struct type *ctx) { \
@@ -72,6 +87,7 @@
\
bpf_section("uretprobe/" #func) \
void __uprobe_ret_bpf_##func(struct type *ctx)
+#endif
#endif
diff --git a/src/probes/extends/ebpf.probe/src/include/bpf.h b/src/probes/extends/ebpf.probe/src/include/bpf.h
index cfeca26..5008c2a 100644
--- a/src/probes/extends/ebpf.probe/src/include/bpf.h
+++ b/src/probes/extends/ebpf.probe/src/include/bpf.h
@@ -19,10 +19,12 @@
#include "common.h"
-
#define KERNEL_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c))
#define CURRENT_KERNEL_VERSION KERNEL_VERSION(KER_VER_MAJOR, KER_VER_MINOR, KER_VER_PATCH)
+#define LIBBPF_VERSION(a, b) (((a) << 8) + (b))
+#define CURRENT_LIBBPF_VERSION LIBBPF_VERSION(LIBBPF_VER_MAJOR, LIBBPF_VER_MINOR)
+
#include "__share_map_match.h"
#include "__obj_map.h"
#include "__bpf_kern.h"
diff --git a/src/probes/extends/ebpf.probe/src/ioprobe/io_count.bpf.c b/src/probes/extends/ebpf.probe/src/ioprobe/io_count.bpf.c
index 042292d..8fd71cb 100644
--- a/src/probes/extends/ebpf.probe/src/ioprobe/io_count.bpf.c
+++ b/src/probes/extends/ebpf.probe/src/ioprobe/io_count.bpf.c
@@ -105,7 +105,7 @@ static __always_inline char is_write_bio(struct block_bio_queue_args *bio)
}
bpf_section("tracepoint/block/block_bio_queue")
-static void tracepoint_block_bio_queue(struct block_bio_queue_args *ctx)
+void tracepoint_block_bio_queue(struct block_bio_queue_args *ctx)
{
u32 bio_size;
int major, minor;
diff --git a/src/probes/extends/ebpf.probe/src/ioprobe/io_err.bpf.c b/src/probes/extends/ebpf.probe/src/ioprobe/io_err.bpf.c
index d60a3d7..b48f766 100644
--- a/src/probes/extends/ebpf.probe/src/ioprobe/io_err.bpf.c
+++ b/src/probes/extends/ebpf.probe/src/ioprobe/io_err.bpf.c
@@ -112,7 +112,7 @@ static __always_inline void update_io_err(struct block_rq_complete_args* ctx, st
}
bpf_section("tracepoint/block/block_rq_complete")
-static void tracepoint_block_rq_complete(struct block_rq_complete_args *ctx)
+void tracepoint_block_rq_complete(struct block_rq_complete_args *ctx)
{
int major, minor;
struct io_err_s *io_err = NULL;
diff --git a/src/probes/extends/ebpf.probe/src/mk/var.mk b/src/probes/extends/ebpf.probe/src/mk/var.mk
index e41603c..2522a6f 100644
--- a/src/probes/extends/ebpf.probe/src/mk/var.mk
+++ b/src/probes/extends/ebpf.probe/src/mk/var.mk
@@ -30,12 +30,17 @@ KER_VER_PATCH = $(shell echo $(KER_VER) | awk -F'.' '{print $$3}')
RELEASE_INFOS = $(shell uname -r | awk -F'-' '{print $$2}')
KER_RELEASE = $(shell echo $(RELEASE_INFOS) | awk -F'.' '{print $$1}')
+LIBBPF_VER = $(shell rpm -qa | grep libbpf-devel | awk -F'-' '{print $$3}')
+LIBBPF_VER_MAJOR = $(shell echo $(LIBBPF_VER) | awk -F'.' '{print $$1}')
+LIBBPF_VER_MINOR = $(shell echo $(LIBBPF_VER) | awk -F'.' '{print $$2}')
+
LINK_TARGET ?= -lpthread -lbpf -lelf -llog4cplus -lz -lconfig
EXTRA_CFLAGS ?= -g -O2 -Wall -fPIC
EXTRA_CDEFINE ?= -D__TARGET_ARCH_$(ARCH)
CFLAGS := $(EXTRA_CFLAGS) $(EXTRA_CDEFINE)
CFLAGS += -DKER_VER_MAJOR=$(KER_VER_MAJOR) -DKER_VER_MINOR=$(KER_VER_MINOR) -DKER_VER_PATCH=$(KER_VER_PATCH)
CFLAGS += -DKER_RELEASE=$(KER_RELEASE)
+CFLAGS += -DLIBBPF_VER_MAJOR=$(LIBBPF_VER_MAJOR) -DLIBBPF_VER_MINOR=$(LIBBPF_VER_MINOR)
LDFLAGS += -Wl,--copy-dt-needed-entries -Wl,-z,relro,-z,now
CXXFLAGS += -std=c++11 -g -O2 -Wall -fPIC
--
2.36.0.windows.1

View File

@ -4,7 +4,7 @@
Summary: Intelligent ops toolkit for openEuler
Name: gala-gopher
Version: 1.0.0
Release: 5
Release: 6
License: Mulan PSL v2
URL: https://gitee.com/openeuler/gala-gopher
Source: %{name}-%{version}.tar.gz
@ -25,6 +25,7 @@ patch1: modify-to-adapt-to-oe2203-LTS-SP1-x86.patch
patch1: modify-to-adapt-to-oe2203-LTS-SP1-arm.patch
%endif
patch2: fix-pgsliprobe.patch
patch3: adapt-libbpf-v08.patch
%description
gala-gopher is a low-overhead eBPF-based probes framework
@ -71,6 +72,10 @@ popd
/usr/lib/systemd/system/gala-gopher.service
%changelog
* Thu Nov 17 2022 wo_cow <niuqianqian@huawei.com> - 1.0.0-6
- adapt libbpf v0.8
* Thu Nov 17 2022 Zhen Chen <chenzhen126@huawei.com> - 1.0.0-5
- add flamegraph-stackcollapse to Requires