On Fri, 2024-08-30 at 14:25 -0700, Andrii Nakryiko wrote: [...] > > err = bpf_object__elf_init(obj); > > - err = err ? : bpf_object__check_endianness(obj); > > err = err ? : bpf_object__elf_collect(obj); > > err = err ? : bpf_object__collect_externs(obj); > > err = err ? : bpf_object_fixup_btf(obj); > > @@ -8500,6 +8529,10 @@ static int bpf_object_load(struct bpf_object *obj, int extra_log_level, const ch > > > > if (obj->gen_loader) > > bpf_gen__init(obj->gen_loader, extra_log_level, obj->nr_programs, obj->nr_maps); > > nit: add {} around if, both sides should either have or not have {} > > > + else if (!is_native_endianness(obj)) { > > + pr_warn("object '%s' is not native endianness\n", obj->name); > > "object '%s': load is not supported in non-native endianness\n" > > > > + return libbpf_err(-LIBBPF_ERRNO__ENDIAN); > > + } Silly question: why load is allowed to proceed for non-native endianness when obj->gen_loader is set?