bpftrace/Choose-to-use-a-functional-interface-to-fix-build-error.patch
cherry530 82e67bd879 fix build error
Signed-off-by: cherry530 <xuping33@huawei.com>
2022-11-11 10:31:01 +08:00

42 lines
1.3 KiB
Diff

From e3894c8fac52ce6b7861bd491ef70406545d0f40 Mon Sep 17 00:00:00 2001
From: Jerome Marchand <jmarchan@redhat.com>
Date: Wed, 23 Mar 2022 09:47:25 +0100
Subject: [PATCH] Fix libbtf 0.6.0 build
Libbpf 0.6.0 introduced a new version of btf_dump__new(). The new
version is btf_dump__new_v0_6_0() while the old version was renamed
btf_dump__new_deprecated(). btf_dump__new() is now overloaded,
unfortunately the macro doesn't work on cpp.
Let's call btf_dump__new_deprecated() explicitely when libbpbf version
is above 0.6.0. That should work till support for the deprecated
function is removed in libbpf 1.0.0.
Fixes #2068
Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
---
src/btf.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/btf.cpp b/src/btf.cpp
index 7d83cf687e..83bc6e901e 100644
--- a/src/btf.cpp
+++ b/src/btf.cpp
@@ -24,6 +24,15 @@
#pragma GCC diagnostic pop
#include <bpf/libbpf.h>
+/*
+ * Since libbtf 0.6, btf_dump__new() has been overloaded and now can design
+ * either btf_dump__new_v0_6_0() or btf_dump__new_deprecated(), which is the
+ * same as btf_dump__new() for libbtf < 0.6, and the one we still use.
+ */
+#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
+
#include "bpftrace.h"
namespace bpftrace {