[PATCH 2/2] perf bpf: Check libbpf version to use btf_dump_type_data_opts.emit_strings

Arnaldo Carvalho de Melo posted 2 patches 1 week, 5 days ago
[PATCH 2/2] perf bpf: Check libbpf version to use btf_dump_type_data_opts.emit_strings
Posted by Arnaldo Carvalho de Melo 1 week, 5 days ago
From: Arnaldo Carvalho de Melo <acme@redhat.com>

When building perf with LIBBPF_DINAMIC=1 on a fedora system with
libbpf-devel 1.5 I it was breaking with:

util/bpf-event.c: In function ‘format_btf_variable’:
util/bpf-event.c:291:18: error: ‘const struct btf_dump_type_data_opts’ has no member named ‘emit_strings’
  291 |                 .emit_strings = 1,
      |                  ^~~~~~~~~~~~
util/bpf-event.c:291:33: error: initialized field overwritten [-Werror=override-init]
  291 |                 .emit_strings = 1,
      |                                 ^
util/bpf-event.c:291:33: note: (near initialization for ‘opts.skip_names’)

Check the version before using that feature.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Ian Rogers <irogers@google.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/bpf-event.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c
index 2298cd396c4235e2..59f84aef91b4a2ec 100644
--- a/tools/perf/util/bpf-event.c
+++ b/tools/perf/util/bpf-event.c
@@ -288,7 +288,9 @@ static void format_btf_variable(struct btf *btf, char *buf, size_t buf_size,
 		.sz = sizeof(struct btf_dump_type_data_opts),
 		.skip_names = 1,
 		.compact = 1,
+#if LIBBPF_CURRENT_VERSION_GEQ(1, 7)
 		.emit_strings = 1,
+#endif
 	};
 	struct btf_dump *d;
 	size_t btf_size;
-- 
2.51.0

Re: [PATCH 2/2] perf bpf: Check libbpf version to use btf_dump_type_data_opts.emit_strings
Posted by Ian Rogers 1 week, 5 days ago
On Fri, Sep 19, 2025 at 2:07 PM Arnaldo Carvalho de Melo
<acme@kernel.org> wrote:
>
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> When building perf with LIBBPF_DINAMIC=1 on a fedora system with

nit: s/DINAMIC/DYNAMIC/

> libbpf-devel 1.5 I it was breaking with:
>
> util/bpf-event.c: In function ‘format_btf_variable’:
> util/bpf-event.c:291:18: error: ‘const struct btf_dump_type_data_opts’ has no member named ‘emit_strings’
>   291 |                 .emit_strings = 1,
>       |                  ^~~~~~~~~~~~
> util/bpf-event.c:291:33: error: initialized field overwritten [-Werror=override-init]
>   291 |                 .emit_strings = 1,
>       |                                 ^
> util/bpf-event.c:291:33: note: (near initialization for ‘opts.skip_names’)
>
> Check the version before using that feature.
>
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Andrii Nakryiko <andrii@kernel.org>
> Cc: Ian Rogers <irogers@google.com>
> Cc: James Clark <james.clark@linaro.org>
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Kan Liang <kan.liang@linux.intel.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Reviewed-by: Ian Rogers <irogers@google.com>

Thanks,
Ian

> ---
>  tools/perf/util/bpf-event.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c
> index 2298cd396c4235e2..59f84aef91b4a2ec 100644
> --- a/tools/perf/util/bpf-event.c
> +++ b/tools/perf/util/bpf-event.c
> @@ -288,7 +288,9 @@ static void format_btf_variable(struct btf *btf, char *buf, size_t buf_size,
>                 .sz = sizeof(struct btf_dump_type_data_opts),
>                 .skip_names = 1,
>                 .compact = 1,
> +#if LIBBPF_CURRENT_VERSION_GEQ(1, 7)
>                 .emit_strings = 1,
> +#endif
>         };
>         struct btf_dump *d;
>         size_t btf_size;
> --
> 2.51.0
>