Re: [PATCH v2] perf build: Warn for BPF skeletons if endian mismatches

From: Arnaldo Carvalho de Melo
Date: Mon Apr 10 2023 - 18:24:07 EST


Em Mon, Apr 10, 2023 at 09:09:05AM -0700, Ian Rogers escreveu:
> Done as a warning as I'm not fully confident of the test's robustness
> of comparing the macro definition of __BYTE_ORDER__.
>
> Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
>
> v2. Is a rebase following patch 1 being merged.

Thanks, applied.

- Arnaldo

> ---
> tools/perf/Makefile.config | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index 16bea51f0bcd..71442c54c25f 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -663,14 +663,17 @@ ifndef NO_BPF_SKEL
> $(call feature_check,clang-bpf-co-re)
> ifeq ($(feature-clang-bpf-co-re), 0)
> dummy := $(error: ERROR: BPF skeletons unsupported. clang too old/not installed or build with NO_BPF_SKEL=1.)
> - else
> - ifeq ($(filter -DHAVE_LIBBPF_SUPPORT, $(CFLAGS)),)
> - dummy := $(error: ERROR: BPF skeletons unsupported. BPF skeleton support requires libbpf or build with NO_BPF_SKEL=1.)
> - else
> - $(call detected,CONFIG_PERF_BPF_SKEL)
> - CFLAGS += -DHAVE_BPF_SKEL
> - endif
> endif
> + ifeq ($(filter -DHAVE_LIBBPF_SUPPORT, $(CFLAGS)),)
> + dummy := $(error: ERROR: BPF skeletons unsupported. BPF skeleton support requires libbpf or build with NO_BPF_SKEL=1.)
> + endif
> + host_byte_order=$(echo ""|$(HOSTCC) -dM -E -|grep __BYTE_ORDER__)
> + target_byte_order=$(echo ""|$(CC) -dM -E -|grep __BYTE_ORDER__)
> + ifneq ($(host_byte_order), $(target_byte_order))
> + $(warning Possibly mismatched host and target endianness may break BPF skeletons)
> + endif
> + $(call detected,CONFIG_PERF_BPF_SKEL)
> + CFLAGS += -DHAVE_BPF_SKEL
> endif
>
> dwarf-post-unwind := 1
> --
> 2.40.0.577.gac1e443424-goog
>

--

- Arnaldo