lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 27 Oct 2023 08:00:05 -0700
From:   Ian Rogers <irogers@...gle.com>
To:     Arnaldo Carvalho de Melo <acme@...nel.org>
Cc:     Namhyung Kim <namhyung@...nel.org>,
        Adrian Hunter <adrian.hunter@...el.com>,
        Jiri Olsa <jolsa@...nel.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        linux-perf-users@...r.kernel.org
Subject: Re: [PATCH 1/1] perf build: Disable BPF skeletons if clang version is
 < 12.0.1

On Fri, Oct 27, 2023 at 7:18 AM Arnaldo Carvalho de Melo
<acme@...nel.org> wrote:
>
> While building on a wide range of distros and clang versions it was
> noticed that at least version 12.0.1 (noticed on Alpine 3.15 with
> "Alpine clang version 12.0.1") is needed to not fail with BTF generation
> errors such as:
>
> Debian:10
>
>   Debian clang version 11.0.1-2~deb10u1:
>
>     CLANG   /tmp/build/perf/util/bpf_skel/.tmp/sample_filter.bpf.o
>   <SNIP>
>     GENSKEL /tmp/build/perf/util/bpf_skel/sample_filter.skel.h
>   libbpf: failed to find BTF for extern 'bpf_cast_to_kern_ctx' [21] section: -2
>   Error: failed to open BPF object file: No such file or directory
>   make[2]: *** [Makefile.perf:1121: /tmp/build/perf/util/bpf_skel/sample_filter.skel.h] Error 254
>   make[2]: *** Deleting file '/tmp/build/perf/util/bpf_skel/sample_filter.skel.h'
>
> Amazon Linux 2:
>
>   clang version 11.1.0 (Amazon Linux 2 11.1.0-1.amzn2.0.2)
>
>     GENSKEL /tmp/build/perf/util/bpf_skel/sample_filter.skel.h
>   libbpf: elf: skipping unrecognized data section(18) .eh_frame
>   libbpf: elf: skipping relo section(19) .rel.eh_frame for section(18) .eh_frame
>   libbpf: failed to find BTF for extern 'bpf_cast_to_kern_ctx' [21] section: -2
>   Error: failed to open BPF object file: No such file or directory
>   make[2]: *** [/tmp/build/perf/util/bpf_skel/sample_filter.skel.h] Error 254
>   make[2]: *** Deleting file `/tmp/build/perf/util/bpf_skel/sample_filter.skel.h'
>
> Ubuntu 20.04:
>
>   clang version 10.0.0-4ubuntu1
>
>     CLANG   /tmp/build/perf/util/bpf_skel/.tmp/augmented_raw_syscalls.bpf.o
>     GENSKEL /tmp/build/perf/util/bpf_skel/bench_uprobe.skel.h
>     GENSKEL /tmp/build/perf/util/bpf_skel/bperf_leader.skel.h
>   libbpf: sec '.reluprobe': corrupted symbol #27 pointing to invalid section #65522 for relo #0
>     GENSKEL /tmp/build/perf/util/bpf_skel/bperf_follower.skel.h
>   Error: failed to open BPF object file: BPF object format invalid
>   make[2]: *** [Makefile.perf:1121: /tmp/build/perf/util/bpf_skel/bench_uprobe.skel.h] Error 95
>   make[2]: *** Deleting file '/tmp/build/perf/util/bpf_skel/bench_uprobe.skel.h'
>
> So check if the version is at least 12.0.1 otherwise disable building
> BPF skels and provide a message about it, continuing the build.
>
> The message, when running on amazonlinux:2:
>
>   Makefile.config:698: Warning: Disabled BPF skeletons as reliable BTF generation needs at least clang version 12.0.1
>
> Cc: Adrian Hunter <adrian.hunter@...el.com>
> Cc: Ian Rogers <irogers@...gle.com>
> Cc: Jiri Olsa <jolsa@...nel.org>
> Cc: Namhyung Kim <namhyung@...nel.org>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>

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

Thanks,
Ian

> ---
>  tools/perf/Makefile.config | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index 4300a9e4253a0c87..8b6cffbc485834c8 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -693,6 +693,13 @@ ifeq ($(BUILD_BPF_SKEL),1)
>      dummy := $(warning Warning: Disabled BPF skeletons as clang ($(CLANG)) is missing)
>      BUILD_BPF_SKEL := 0
>    else
> +    CLANG_VERSION := $(shell $(CLANG) --version | head -1 | sed 's/.*clang version \([[:digit:]]\+.[[:digit:]]\+.[[:digit:]]\+\).*/\1/g')
> +    ifeq ($(call version-lt3,$(CLANG_VERSION),12.0.1),1)
> +      dummy := $(warning Warning: Disabled BPF skeletons as reliable BTF generation needs at least $(CLANG) version 12.0.1)
> +      BUILD_BPF_SKEL := 0
> +    endif
> +  endif
> +  ifeq ($(BUILD_BPF_SKEL),1)
>      $(call feature_check,clang-bpf-co-re)
>      ifeq ($(feature-clang-bpf-co-re), 0)
>        dummy := $(warning Warning: Disabled BPF skeletons as clang is too old)
> --
> 2.41.0
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ