Commit 1d0654b7 authored by Blake Jones's avatar Blake Jones Committed by Namhyung Kim
Browse files

perf build: detect support for libbpf's emit_strings option

This creates a config option that detects libbpf's ability to display
character arrays as strings, which was just added to the BPF tree
(https://git.kernel.org/bpf/bpf-next/c/87c9c79a02b4

).

To test this change, I built perf (from later in this patch set) with:

 - static libbpf (default, using source from kernel tree)
 - dynamic libbpf (LIBBPF_DYNAMIC=1 LIBBPF_INCLUDE=/usr/local/include)

For both the static and dynamic versions, I used headers with and without
the ".emit_strings" option.

I verified that of the four resulting binaries, the two with
".emit_strings" would successfully record BPF_METADATA events, and the two
without wouldn't.  All four binaries would successfully display
BPF_METADATA events, because the relevant bit of libbpf code is only used
during "perf record".

Signed-off-by: default avatarBlake Jones <blakejones@google.com>
Link: https://lore.kernel.org/r/20250612194939.162730-2-blakejones@google.com


Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent 13b38e6b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -126,6 +126,7 @@ FEATURE_TESTS_EXTRA := \
         llvm                           \
         clang                          \
         libbpf                         \
         libbpf-strings                 \
         libpfm4                        \
         libdebuginfod			\
         clang-bpf-co-re		\
+4 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ FILES= \
         test-lzma.bin                          \
         test-bpf.bin                           \
         test-libbpf.bin                        \
         test-libbpf-strings.bin                \
         test-get_cpuid.bin                     \
         test-sdt.bin                           \
         test-cxx.bin                           \
@@ -339,6 +340,9 @@ $(OUTPUT)test-bpf.bin:
$(OUTPUT)test-libbpf.bin:
	$(BUILD) -lbpf

$(OUTPUT)test-libbpf-strings.bin:
	$(BUILD)

$(OUTPUT)test-sdt.bin:
	$(BUILD)

+10 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
#include <bpf/btf.h>

int main(void)
{
	struct btf_dump_type_data_opts opts;

	opts.emit_strings = 0;
	return opts.emit_strings;
}
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ feature::
                dwarf-unwind            /  HAVE_DWARF_UNWIND_SUPPORT
                auxtrace                /  HAVE_AUXTRACE_SUPPORT
                libbfd                  /  HAVE_LIBBFD_SUPPORT
                libbpf-strings          /  HAVE_LIBBPF_STRINGS_SUPPORT
                libcapstone             /  HAVE_LIBCAPSTONE_SUPPORT
                libcrypto               /  HAVE_LIBCRYPTO_SUPPORT
                libdw-dwarf-unwind      /  HAVE_LIBDW_SUPPORT
+8 −0
Original line number Diff line number Diff line
@@ -595,8 +595,16 @@ ifndef NO_LIBELF
          LIBBPF_STATIC := 1
          $(call detected,CONFIG_LIBBPF)
          CFLAGS += -DHAVE_LIBBPF_SUPPORT
	  LIBBPF_INCLUDE = $(LIBBPF_DIR)/..
        endif
      endif

      FEATURE_CHECK_CFLAGS-libbpf-strings="-I$(LIBBPF_INCLUDE)"
      $(call feature_check,libbpf-strings)
      ifeq ($(feature-libbpf-strings), 1)
        $(call detected,CONFIG_LIBBPF_STRINGS)
        CFLAGS += -DHAVE_LIBBPF_STRINGS_SUPPORT
      endif
    endif
  endif # NO_LIBBPF
endif # NO_LIBELF
Loading