On Mon, 28 Oct 2019 15:32:26 +0000 Yonghong Song <yhs@xxxxxx> wrote: > On 10/28/19 6:15 AM, Toke Høiland-Jørgensen wrote: > > Jesper Dangaard Brouer <brouer@xxxxxxxxxx> writes: > > > >> On Sun, 27 Oct 2019 21:53:19 +0100 > >> Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: > >> > >>> diff --git a/tools/testing/selftests/bpf/progs/test_pinning.c b/tools/testing/selftests/bpf/progs/test_pinning.c > >>> new file mode 100644 > >>> index 000000000000..ff2d7447777e > >>> --- /dev/null > >>> +++ b/tools/testing/selftests/bpf/progs/test_pinning.c > >>> @@ -0,0 +1,29 @@ > >>> +// SPDX-License-Identifier: GPL-2.0 > >>> + > >>> +#include <linux/bpf.h> > >>> +#include "bpf_helpers.h" > >>> + > >>> +int _version SEC("version") = 1; > >>> + > >>> +struct { > >>> + __uint(type, BPF_MAP_TYPE_ARRAY); > >>> + __uint(max_entries, 1); > >>> + __type(key, __u32); > >>> + __type(value, __u64); > >>> + __uint(pinning, LIBBPF_PIN_BY_NAME); > >>> +} pinmap SEC(".maps"); > >> > >> So, this is the new BTF-defined maps syntax. > >> > >> Please remind me, what version of LLVM do we need to compile this? > > > > No idea what the minimum version is. I'm running LLVM 9.0 :) > > LLVM 9.0 starts to support .maps. > There is no dependency on pahole. LLVM 9.0.0 is still very new: - 19 September 2019: LLVM 9.0.0 is now available For my XDP-tutorial[1], I cannot required people to have this new llvm version. But I would like to teach people about this new syntax (note, I can upgrade libbpf version via git-submodule, and update bpf_helpers.h). To Andrii, any recommendations on how I can do the transition? I'm thinking, it should be possible to define both ELF-object sections SEC "maps" and ".maps" at the same time. But how does libbpf handle that? (Who takes precedence?) (Alternatively, I can detect the LLVM version, in the Makefile, and have a #ifdef define in the code) -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer [1] https://github.com/xdp-project/xdp-tutorial