• Andrii Nakryiko's avatar
    tools/bpftool: Add support for in-kernel and named BTF in `btf show` · cecaf4a0
    Andrii Nakryiko authored
    Display vmlinux BTF name and kernel module names when listing available BTFs
    on the system.
    
    In human-readable output mode, module BTFs are reported with "name
    [module-name]", while vmlinux BTF will be reported as "name [vmlinux]".
    Square brackets are added by bpftool and follow kernel convention when
    displaying modules in human-readable text outputs.
    
    [vmuser@archvm bpf]$ sudo ../../../bpf/bpftool/bpftool btf s
    1: name [vmlinux]  size 4082281B
    6: size 2365B  prog_ids 8,6  map_ids 3
    7: name [button]  size 46895B
    8: name [pcspkr]  size 42328B
    9: name [serio_raw]  size 39375B
    10: name [floppy]  size 57185B
    11: name [i2c_core]  size 76186B
    12: name [crc32c_intel]  size 16036B
    13: name [i2c_piix4]  size 50497B
    14: name [irqbypass]  size 14124B
    15: name [kvm]  size 197985B
    16: name [kvm_intel]  size 123564B
    17: name [cryptd]  size 42466B
    18: name [crypto_simd]  size 17187B
    19: name [glue_helper]  size 39205B
    20: name [aesni_intel]  size 41034B
    25: size 36150B
            pids bpftool(2519)
    
    In JSON mode, two fields (boolean "kernel" and string "name") are reported for
    each BTF object. vmlinux BTF is reported with name "vmlinux" (kernel itself
    returns and empty name for vmlinux BTF).
    
    [vmuser@archvm bpf]$ sudo ../../../bpf/bpftool/bpftool btf s -jp
    [{
            "id": 1,
            "size": 4082281,
            "prog_ids": [],
            "map_ids": [],
            "kernel": true,
            "name": "vmlinux"
        },{
            "id": 6,
            "size": 2365,
            "prog_ids": [8,6
            ],
            "map_ids": [3
            ],
            "kernel": false
        },{
            "id": 7,
            "size": 46895,
            "prog_ids": [],
            "map_ids": [],
            "kernel": true,
            "name": "button"
        },{
    
    ...
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Tested-by: default avatarAlan Maguire <alan.maguire@oracle.com>
    Link: https://lore.kernel.org/bpf/20201110011932.3201430-6-andrii@kernel.org
    cecaf4a0
btf.c 20.9 KB