Make libbpf support static initialization of BPF_MAP_TYPE_PROG_ARRAY with a syntax similar to map-in-map initialization: SEC("socket") int tailcall_1(void *ctx) { return 0; } struct { __uint(type, BPF_MAP_TYPE_PROG_ARRAY); __uint(max_entries, 2); __uint(key_size, sizeof(__u32)); __array(values, int (void *)); } prog_array_init SEC(".maps") = { .values = { [1] = (void *)&tailcall_1, }, }; Hengqi Chen (2): libbpf: Support static initialization of BPF_MAP_TYPE_PROG_ARRAY selftests/bpf: Test BPF_MAP_TYPE_PROG_ARRAY static initialization tools/lib/bpf/libbpf.c | 146 +++++++++++++++--- .../bpf/prog_tests/prog_array_init.c | 27 ++++ .../bpf/progs/test_prog_array_init.c | 30 ++++ 3 files changed, 179 insertions(+), 24 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/prog_array_init.c create mode 100644 tools/testing/selftests/bpf/progs/test_prog_array_init.c -- 2.30.2