On Thu, Apr 25, 2024 at 09:43:40PM +0800, Xin Liu wrote: > 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> Thanks, applied to next, - Arnaldo > > --- > > 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; > > }