BPF: change BTF_KIND_TAG format
authorYonghong Song <yhs@fb.com>
Fri, 10 Sep 2021 01:31:18 +0000 (18:31 -0700)
committerYonghong Song <yhs@fb.com>
Fri, 10 Sep 2021 02:03:57 +0000 (19:03 -0700)
commite52617c31de1171c208b7ba0bb96520b78d130b3
treea298e2fbc12ea96e948f8e9f79f39f45766b9b0b
parent12f80c0bbda2b1492f521345b287343457ccd03c
BPF: change BTF_KIND_TAG format

Previously we have the following binary representation:
    struct bpf_type { name, info, type }
    struct btf_tag { __u32 component_idx; }
If the tag points to a struct/union/var/func type, we will have
   kflag = 1, component_idx = 0
if the tag points to struct/union member or func argument, we will have
   kflag = 0, component_idx = 0, ..., vlen - 1

The above rather makes interface complex to have both kflag and
component needed to determine its legality and index.

This patch simplifies the interface by removing kflag involvement.
   component_idx = (u32)-1 : tag pointing to a type
   component_idx = 0 ... vlen - 1 : tag pointing to a member or argument
and kflag is always 0 and there is no need to check.

Differential Revision: https://reviews.llvm.org/D109560
llvm/lib/Target/BPF/BTFDebug.cpp
llvm/test/CodeGen/BPF/BTF/tag-1.ll
llvm/test/CodeGen/BPF/BTF/tag-2.ll