Re: [PATCH bpf-next 0/5] BTF: arbitrary __attribute__ encoding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/22/25 2:13 AM, Alan Maguire wrote:
> On 22/01/2025 02:53, Ihor Solodrai wrote:
>> This patch series extends BPF Type Format (BTF) to support arbitrary
>> __attribute__ encoding.
>>
>> Setting the kind_flag to 1 in BTF type tags and decl tags now changes
>> the meaning for the encoded tag, in particular with respect to
>> btf_dump in libbpf.
>>
>> If the kflag is set, then the string encoded by the tag represents the
>> full attribute-list of an attribute specifier [1].
>>
>> This feature will allow extending tools such as pahole and bpftool to
>> capture and use more granular type information, and make it easier to
>> manage compatibility between clang and gcc BPF compilers.
>>
>
> sounds good! So presumably pahole will then have a "full_attribute" or
> similar BTF feature that will only do full attribute encoding for
> kernels that expect the kind flag to be set? Otherwise we'll run the
> risk of generating invalid BTF for older kernels with newer pahole
> (since those older kernels will fail to verify tags with a kind flag set).

Hi Alan. Sorry I missed this message on the first pass.

Yes, this BTF extension enables pahole to encode any __attribute__ in
BTF. There is already a use case for that, which led me to this patch
series: expressing bpf_arena tags in vmlinux.h.

As to "full_attribute"-like feature in pahole, my intuition is that
it's a significant chunk of work, and it might not be necessary in the
near future. But with these changes in BTF it at least becomes a
possibility. And you're right, it will have to be an optional feature.

>
> Thanks!
>
> Alan
>
>> [1] https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/Attribute-Syntax.html
>>
>> Ihor Solodrai (5):
>>   libbpf: introduce kflag for type_tags and decl_tags in BTF
>>   libbpf: check the kflag of type tags in btf_dump
>>   selftests/bpf: add a btf_dump test for type_tags
>>   bpf: allow kind_flag for BTF type and decl tags
>>   selftests/bpf: add a BTF verification test for kflagged type_tag
>>
>>  Documentation/bpf/btf.rst                     |  27 +++-
>>  kernel/bpf/btf.c                              |   7 +-
>>  tools/include/uapi/linux/btf.h                |   3 +-
>>  tools/lib/bpf/btf.c                           |  87 +++++++---
>>  tools/lib/bpf/btf.h                           |   3 +
>>  tools/lib/bpf/btf_dump.c                      |   5 +-
>>  tools/lib/bpf/libbpf.map                      |   2 +
>>  tools/testing/selftests/bpf/prog_tests/btf.c  |  23 ++-
>>  .../selftests/bpf/prog_tests/btf_dump.c       | 148 +++++++++++++-----
>>  tools/testing/selftests/bpf/test_btf.h        |   6 +
>>  10 files changed, 234 insertions(+), 77 deletions(-)
>>
>




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux