From 680faba73538413bdbac4c01398d73b58c6b1874 Mon Sep 17 00:00:00 2001 From: Sergey Cherevko 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 + 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 #pragma GCC diagnostic pop #include - +#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