You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bpftrace/SOURCES/0001-Use-btf_dump__new_depr...

68 lines
2.1 KiB

From 680faba73538413bdbac4c01398d73b58c6b1874 Mon Sep 17 00:00:00 2001
From: Sergey Cherevko <s.cherevko@msvsphere.ru>
Date: Wed, 17 May 2023 16:42:35 +0300
Subject: [PATCH] Use btf_dump__new_deprecated only if available
---
CMakeLists.txt | 4 ++++
cmake/FindLibBpf.cmake | 10 ++++++++++
src/btf.cpp | 6 +++++-
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e63bc83..0e45811 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -261,6 +261,10 @@ if (LIBBPF_BTF_DUMP_FOUND)
endif()
endif(LIBBPF_BTF_DUMP_FOUND)
+if (HAVE_LIBBPF_BTF_DUMP_NEW_DEPRECATED)
+ set(BPFTRACE_FLAGS "${BPFTRACE_FLAGS}" HAVE_LIBBPF_BTF_DUMP_NEW_DEPRECATED)
+endif(HAVE_LIBBPF_BTF_DUMP_NEW_DEPRECATED)
+
if (HAVE_LIBBPF_BPF_PROG_LOAD)
set(BPFTRACE_FLAGS "${BPFTRACE_FLAGS}" HAVE_LIBBPF_BPF_PROG_LOAD)
endif(HAVE_LIBBPF_BPF_PROG_LOAD)
diff --git a/cmake/FindLibBpf.cmake b/cmake/FindLibBpf.cmake
index dd0eeea..7c04655 100644
--- a/cmake/FindLibBpf.cmake
+++ b/cmake/FindLibBpf.cmake
@@ -48,6 +48,16 @@ check_symbol_exists(btf_dump__new "${LIBBPF_INCLUDE_DIRS}/bpf/btf.h" HAVE_BTF_DU
if (HAVE_BTF_DUMP)
set(LIBBPF_BTF_DUMP_FOUND TRUE)
endif ()
+if (LIBBPF_BTF_DUMP_FOUND)
+ CHECK_CXX_SOURCE_COMPILES("
+ #include <bpf/btf.h>
+ int main(void) {
+ btf_dump__new_deprecated(NULL, NULL, NULL, NULL);
+ return 0;
+ }
+ " HAVE_LIBBPF_BTF_DUMP_NEW_DEPRECATED)
+endif()
+
check_symbol_exists(btf_dump__emit_type_decl "${LIBBPF_INCLUDE_DIRS}/bpf/btf.h" HAVE_LIBBPF_BTF_DUMP_EMIT_TYPE_DECL)
check_symbol_exists(bpf_prog_load "${LIBBPF_INCLUDE_DIRS}/bpf/bpf.h" HAVE_LIBBPF_BPF_PROG_LOAD)
diff --git a/src/btf.cpp b/src/btf.cpp
index b8c6bd6..32375a1 100644
--- a/src/btf.cpp
+++ b/src/btf.cpp
@@ -23,7 +23,11 @@
#include <bpf/btf.h>
#pragma GCC diagnostic pop
#include <bpf/libbpf.h>
-
+#ifdef HAVE_LIBBPF_BTF_DUMP_NEW_DEPRECATED
+#if LIBBPF_MAJOR_VERSION == 0 && LIBBPF_MINOR_VERSION >= 6
+#define btf_dump__new(a1, a2, a3, a4) btf_dump__new_deprecated(a1, a2, a3, a4)
+#endif
+#endif
#include "bpftrace.h"
namespace bpftrace {
--
2.39.2