]> www.infradead.org Git - users/hch/misc.git/commitdiff
perf bpf-filter: Fix opts declaration on older libbpfs
authorIan Rogers <irogers@google.com>
Sat, 30 Aug 2025 05:35:49 +0000 (22:35 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 30 Sep 2025 16:13:19 +0000 (13:13 -0300)
Building perf with LIBBPF_DYNAMIC (ie not the default static linking of
libbpf with perf) is breaking as the libbpf isn't version 1.7 or newer,
where dont_enable is added to bpf_perf_event_opts.

To avoid this breakage add a compile time version check and don't
declare the variable when not present.

Fixes: 5e2ac8e8571df54d ("perf bpf-filter: Enable events manually")
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: bpf@vger.kernel.org
Cc: Hao Ge <gehao@kylinos.cn>
Cc: Ilya Leoshkevich <iii@linux.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/bpf-filter.c

index a0b11f35395f815576eef438a05ae92633ebe19d..92308c38fbb567ba26bdb31f97c61ddd8d0682a5 100644 (file)
@@ -443,6 +443,10 @@ err:
        return -1;
 }
 
+#define LIBBPF_CURRENT_VERSION_GEQ(major, minor)                       \
+       (LIBBPF_MAJOR_VERSION > (major) ||                              \
+        (LIBBPF_MAJOR_VERSION == (major) && LIBBPF_MINOR_VERSION >= (minor)))
+
 int perf_bpf_filter__prepare(struct evsel *evsel, struct target *target)
 {
        int i, x, y, fd, ret;
@@ -451,8 +455,12 @@ int perf_bpf_filter__prepare(struct evsel *evsel, struct target *target)
        struct bpf_link *link;
        struct perf_bpf_filter_entry *entry;
        bool needs_idx_hash = !target__has_cpu(target);
+#if LIBBPF_CURRENT_VERSION_GEQ(1, 7)
        DECLARE_LIBBPF_OPTS(bpf_perf_event_opts, pe_opts,
                            .dont_enable = true);
+#else
+       DECLARE_LIBBPF_OPTS(bpf_perf_event_opts, pe_opts);
+#endif
 
        entry = calloc(MAX_FILTERS, sizeof(*entry));
        if (entry == NULL)