On Tue, Aug 18, 2020 at 6:21 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > On Tue, Aug 18, 2020 at 03:39:12PM -0700, Andrii Nakryiko wrote: > > This patch set adds libbpf support to two new classes of CO-RE relocations: > > type-based (TYPE_EXISTS/TYPE_SIZE/TYPE_ID_LOCAL/TYPE_ID_TARGET) and enum > > value-vased (ENUMVAL_EXISTS/ENUMVAL_VALUE): > > > > LLVM patches adding these relocation in Clang: > > - __builtin_btf_type_id() ([0], [1], [2]); > > - __builtin_preserve_type_info(), __builtin_preserve_enum_value() ([3], [4]). > > I've applied patches 1-4, since they're somewhat indepedent of new features in 5+. > What should be the process to land the rest? > Land llvm first and add to bpf/README.rst that certain llvm commmits are necessary > to build the tests? Clang patches landed about two weeks ago, so they are already in Clang nightly builds. libbpf CI should work fine as it uses clang-12 nightly builds. > But CI will start failing. We can wait for that to be fixed, > but I wonder is there way to detect new clang __builtins automatically in > selftests and skip them if clang is too old? There is a way to detect built-ins availability (__has_builtin macro, [0]) from C code. If we want to do it from Makefile, though, we'd need to do feature detection similar to how we did reallocarray and libbpf-elf-mmap detection I just removed in the other patch set :). Then we'll also need to somehow blacklist tests. Maintaining that would be a pain, honestly. So far selftests/bpf assumed the latest Clang, though, so do you think we should change that, or you were worried that patches hadn't landed yet?