• Arnaldo Carvalho de Melo's avatar
    perf build: Disable BPF skeletons if clang version is < 12.0.1 · 1768d3a0
    Arnaldo Carvalho de Melo authored
    
    
    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
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Reviewed-by: default avatarIan Rogers <irogers@google.com>
    Link: https://lore.kernel.org/r/ZTvGx/Ou6BVnYBqi@kernel.org
    
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    1768d3a0
Makefile.config 40.9 KB