diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature index 64f8cfa6c9af..34cf2bff72ca 100644 --- a/tools/build/Makefile.feature +++ b/tools/build/Makefile.feature @@ -101,6 +101,7 @@ FEATURE_TESTS_EXTRA := \ libbpf-btf__load_from_kernel_by_id \ libbpf-bpf_prog_load \ libbpf-bpf_object__next_program \ + libbpf-bpf_object__next_map \ libpfm4 \ libdebuginfod \ clang-bpf-co-re diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index 6eb829704cb9..aecb6a28a770 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile @@ -60,6 +60,7 @@ FILES= \ test-libbpf-btf__load_from_kernel_by_id.bin \ test-libbpf-bpf_prog_load.bin \ test-libbpf-bpf_object__next_program.bin \ + test-libbpf-bpf_object__next_map.bin \ test-get_cpuid.bin \ test-sdt.bin \ test-cxx.bin \ @@ -299,6 +300,9 @@ $(OUTPUT)test-libbpf-bpf_prog_load.bin: $(OUTPUT)test-libbpf-bpf_object__next_program.bin: $(BUILD) -lbpf +$(OUTPUT)test-libbpf-bpf_object__next_map.bin: + $(BUILD) -lbpf + $(OUTPUT)test-sdt.bin: $(BUILD) diff --git a/tools/build/feature/test-libbpf-bpf_object__next_map.c b/tools/build/feature/test-libbpf-bpf_object__next_map.c new file mode 100644 index 000000000000..64adb519e97e --- /dev/null +++ b/tools/build/feature/test-libbpf-bpf_object__next_map.c @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 +#include + +int main(void) +{ + bpf_object__next_map(NULL /* obj */, NULL /* prev */); + return 0; +} diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index 046e10f65ae7..a7a80e2280bd 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -581,6 +581,10 @@ ifndef NO_LIBELF ifeq ($(feature-libbpf-bpf_object__next_program), 1) CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_PROGRAM endif + $(call feature_check,libbpf-bpf_object__next_map) + ifeq ($(feature-libbpf-bpf_object__next_map), 1) + CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_MAP + endif else dummy := $(error Error: No libbpf devel library found, please install libbpf-devel); endif @@ -588,6 +592,7 @@ ifndef NO_LIBELF CFLAGS += -DHAVE_LIBBPF_BTF__LOAD_FROM_KERNEL_BY_ID CFLAGS += -DHAVE_LIBBPF_BPF_PROG_LOAD CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_PROGRAM + CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_MAP endif endif diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c index c68d88ca1ece..91c4c5dcab7f 100644 --- a/tools/perf/util/bpf-event.c +++ b/tools/perf/util/bpf-event.c @@ -61,7 +61,8 @@ bpf_object__next_program(const struct bpf_object *obj, struct bpf_program *prev) } #endif -struct bpf_map * __weak +#ifndef HAVE_LIBBPF_BPF_OBJECT__NEXT_MAP +struct bpf_map * bpf_object__next_map(const struct bpf_object *obj, const struct bpf_map *prev) { #pragma GCC diagnostic push @@ -69,6 +70,7 @@ bpf_object__next_map(const struct bpf_object *obj, const struct bpf_map *prev) return bpf_map__next(prev, obj); #pragma GCC diagnostic pop } +#endif const void * __weak btf__raw_data(const struct btf *btf_ro, __u32 *size)