On Wed, 24 Apr 2024 15:35:38 -0700 Yonghong Song <yonghong.song@xxxxxxxxx> wrote: > Nick Desaulniers and Xin Liu separately reported that int type might > have greater-than-16 byte size ([1] and [2]). More specifically, the > reported int type sizes are 1024 and 64 bytes. > > The libbpf and bpf program does not really support any int type greater > than 16 bytes. Therefore, with current pahole, btf encoding will fail > with greater-than-16 byte int types. > > Since for now bpf does not support '> 16' bytes int type, the simplest > way is to sanitize such types, similar to existing conditions like > '!byte_sz' and 'byte_sz & (byte_sz - 1)'. This way, pahole won't > call libbpf with an unsupported int type size. The patch [3] was > proposed before. Now I resubmitted this patch as there are another > failure due to the same issue. > > [1] https://github.com/libbpf/libbpf/pull/680 > [2] https://lore.kernel.org/bpf/20240422144538.351722-1-liuxin350@xxxxxxxxxx/ > [3] https://lore.kernel.org/bpf/20230426055030.3743074-1-yhs@xxxxxx/ > > Cc: Xin Liu <liuxin350@xxxxxxxxxx> > Cc: Alan Maguire <alan.maguire@xxxxxxxxxx> > Signed-off-by: Yonghong Song <yonghong.song@xxxxxxxxx> Reviewed-by: Xin Liu <liuxin350@xxxxxxxxxx> > --- > btf_encoder.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/btf_encoder.c b/btf_encoder.c > index e1e3529..19e9d90 100644 > --- a/btf_encoder.c > +++ b/btf_encoder.c > @@ -393,7 +393,7 @@ static int32_t btf_encoder__add_base_type(struct btf_encoder *encoder, const str > * these non-regular int types to avoid libbpf/kernel complaints. > */ > byte_sz = BITS_ROUNDUP_BYTES(bt->bit_size); > - if (!byte_sz || (byte_sz & (byte_sz - 1))) { > + if (!byte_sz || (byte_sz & (byte_sz - 1)) || byte_sz > 16) { > name = "__SANITIZED_FAKE_INT__"; > byte_sz = 4; > }