On Thu, Mar 28, 2019 at 10:32 PM Yonghong Song <y...@fb.com> wrote:
>
> For multiple dimensional arrays like below,
>   int a[2][3]
> both llvm and pahole generated one BTF_KIND_ARRAY type like
>   . element_type: int
>   . index_type: unsigned int
>   . number of elements: 6
>
> Such a collapsed BTF_KIND_ARRAY type will cause the divergence
> in BTF vs. the user code. In the compile-once-run-everywhere
> project, the header file is generated from BTF and used for bpf
> program, and the definition in the header file will be different
> from what user expects.
>
> But the kernel actually supports chained multi-dimensional array
> types properly. The above "int a[2][3]" can be represented as
>   Type #n:
>     . element_type: int
>     . index_type: unsigned int
>     . number of elements: 3
>   Type #(n+1):
>     . element_type: type #n
>     . index_type: unsigned int
>     . number of elements: 2
>
> The following llvm commit
>   https://reviews.llvm.org/rL357215
> also enables llvm to generated proper chained multi-dimensional arrays.
>
> The test_btf already has a raw test ("struct test #1") for chained
> multi-dimensional arrays. This patch added amended bpffs test for
> chained multi-dimensional arrays.
>
> Acked-by: Martin KaFai Lau <ka...@fb.com>
> Signed-off-by: Yonghong Song <y...@fb.com>

Applied. Thanks

Reply via email to