On 19/07/2024 20:13, Arnaldo Carvalho de Melo wrote: > Adding Alan and Jiri to the CC list. > I'm late chiming in on this one, but judging by the output: BTF .btf.vmlinux.bin.o + LLVM_OBJCOPY=powerpc-linux-gnu-objcopy pahole -J -j --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func --lang_exclude=rust .tmp_vmlinux.btf [102044] ARRAY (anon) type_id=99491 index_type_id=14 nr_elems=12 Error emitting BTF type Encountered error while encoding BTF. ...we hit an error in btf_encoder__add_array() as a result of btf__add_array() failing: btf__log_err(btf, BTF_KIND_ARRAY, NULL, true, "type_id=%u index_type_id=%u nr_elems=%u Error emitting BTF type", type, index_type, nelems); Unfortunately we don't preserve the negative id value (containing the error code) in btf__log_err(); I'm thinking one thing we should do is modify btf__log_err() to preserves errors for cases where the encoding errors out due to a libbpf-returned -errno, something like -__attribute ((format (printf, 5, 6))) +__attribute ((format (printf, 6, 7))) -static void btf__log_err(const struct btf *btf, int kind, const char *name, +static void btf__log_err(const struct btf *btf, int libbpf_err, int kind, const char *name, bool output_cr, const char *fmt, ...) { fprintf(stderr, "[%u] %s %s", btf__type_cnt(btf), btf_kind_str[kind], name ?: "(anon)"); if (fmt && *fmt) { va_list ap; fprintf(stderr, " "); va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); } + if (libbpf_err) + fprintf(stderr, " libbpf error %d", libbpf_err); if (output_cr) fprintf(stderr, "\n"); } So at least if this error recurs we'd have a clearer picture of what's happening in libbpf. What do you think? I'll submit a patch for this if it makes sense. Alan