~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/bpf/bpftool/Documentation/bpftool-btf.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/bpf/bpftool/Documentation/bpftool-btf.rst (Version linux-6.12-rc7) and /tools/bpf/bpftool/Documentation/bpftool-btf.rst (Version linux-5.9.16)


  1 .. SPDX-License-Identifier: (GPL-2.0-only OR B << 
  2                                                << 
  3 ================                                    1 ================
  4 bpftool-btf                                         2 bpftool-btf
  5 ================                                    3 ================
  6 ----------------------------------------------      4 -------------------------------------------------------------------------------
  7 tool for inspection of BTF data                     5 tool for inspection of BTF data
  8 ----------------------------------------------      6 -------------------------------------------------------------------------------
  9                                                     7 
 10 :Manual section: 8                                  8 :Manual section: 8
 11                                                     9 
 12 .. include:: substitutions.rst                 << 
 13                                                << 
 14 SYNOPSIS                                           10 SYNOPSIS
 15 ========                                           11 ========
 16                                                    12 
 17 **bpftool** [*OPTIONS*] **btf** *COMMAND*      !!  13         **bpftool** [*OPTIONS*] **btf** *COMMAND*
 18                                                    14 
 19 *OPTIONS* := { |COMMON_OPTIONS| | { **-B** | * !!  15         *OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] }
 20                                                    16 
 21 *COMMANDS* := { **dump** | **help** }          !!  17         *COMMANDS* := { **dump** | **help** }
 22                                                    18 
 23 BTF COMMANDS                                       19 BTF COMMANDS
 24 =============                                      20 =============
 25                                                    21 
 26 | **bpftool** **btf** { **show** | **list** }  !!  22 |       **bpftool** **btf** { **show** | **list** } [**id** *BTF_ID*]
 27 | **bpftool** **btf dump** *BTF_SRC* [**format !!  23 |       **bpftool** **btf dump** *BTF_SRC* [**format** *FORMAT*]
 28 | **bpftool** **btf help**                     !!  24 |       **bpftool** **btf help**
 29 |                                                  25 |
 30 | *BTF_SRC* := { **id** *BTF_ID* | **prog** *P !!  26 |       *BTF_SRC* := { **id** *BTF_ID* | **prog** *PROG* | **map** *MAP* [{**key** | **value** | **kv** | **all**}] | **file** *FILE* }
 31 | *FORMAT* := { **raw** | **c** [**unsorted**] !!  27 |       *FORMAT* := { **raw** | **c** }
 32 | *MAP* := { **id** *MAP_ID* | **pinned** *FIL !!  28 |       *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
 33 | *PROG* := { **id** *PROG_ID* | **pinned** *F !!  29 |       *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
 34                                                    30 
 35 DESCRIPTION                                        31 DESCRIPTION
 36 ===========                                        32 ===========
 37 bpftool btf { show | list } [id *BTF_ID*]      !!  33         **bpftool btf { show | list }** [**id** *BTF_ID*]
 38     Show information about loaded BTF objects. !!  34                   Show information about loaded BTF objects. If a BTF ID is
 39     information only about given BTF object, o !!  35                   specified, show information only about given BTF object,
 40     currently loaded on the system.            !!  36                   otherwise list all BTF objects currently loaded on the
 41                                                !!  37                   system.
 42     Since Linux 5.8 bpftool is able to discove !!  38 
 43     that hold open file descriptors (FDs) agai !!  39                   Since Linux 5.8 bpftool is able to discover information about
 44     bpftool will automatically emit this infor !!  40                   processes that hold open file descriptors (FDs) against BTF
 45                                                !!  41                   objects. On such kernels bpftool will automatically emit this
 46 bpftool btf dump *BTF_SRC*                     !!  42                   information as well.
 47     Dump BTF entries from a given *BTF_SRC*.   !!  43 
 48                                                !!  44         **bpftool btf dump** *BTF_SRC*
 49     When **id** is specified, BTF object with  !!  45                   Dump BTF entries from a given *BTF_SRC*.
 50     its BTF types emitted.                     !!  46 
 51                                                !!  47                   When **id** is specified, BTF object with that ID will be
 52     When **map** is provided, it's expected th !!  48                   loaded and all its BTF types emitted.
 53     with BTF types describing key and value. I !!  49 
 54     dump only BTF type(s) associated with key  !!  50                   When **map** is provided, it's expected that map has
 55     both key and value (**kv**), or all BTF ty !!  51                   associated BTF object with BTF types describing key and
 56     object (**all**). If not specified, **kv** !!  52                   value. It's possible to select whether to dump only BTF
 57                                                !!  53                   type(s) associated with key (**key**), value (**value**),
 58     When **prog** is provided, it's expected t !!  54                   both key and value (**kv**), or all BTF types present in
 59     object with BTF types.                     !!  55                   associated BTF object (**all**). If not specified, **kv**
 60                                                !!  56                   is assumed.
 61     When specifying *FILE*, an ELF file is exp !!  57 
 62     with well-defined BTF binary format data,  !!  58                   When **prog** is provided, it's expected that program has
 63     pahole.                                    !!  59                   associated BTF object with BTF types.
 64                                                !!  60 
 65     **format** option can be used to override  !!  61                   When specifying *FILE*, an ELF file is expected, containing
 66     (**raw**) or C-syntax (**c**) output forma !!  62                   .BTF section with well-defined BTF binary format data,
 67     formatting, the output is sorted by defaul !!  63                   typically produced by clang or pahole.
 68     to avoid sorting the output.               !!  64 
                                                   >>  65                   **format** option can be used to override default (raw)
                                                   >>  66                   output format. Raw (**raw**) or C-syntax (**c**) output
                                                   >>  67                   formats are supported.
 69                                                    68 
 70 bpftool btf help                               !!  69         **bpftool btf help**
 71     Print short help message.                  !!  70                   Print short help message.
 72                                                    71 
 73 OPTIONS                                            72 OPTIONS
 74 =======                                            73 =======
 75 .. include:: common_options.rst                !!  74         -h, --help
                                                   >>  75                   Print short generic help message (similar to **bpftool help**).
                                                   >>  76 
                                                   >>  77         -V, --version
                                                   >>  78                   Print version number (similar to **bpftool version**).
 76                                                    79 
 77 -B, --base-btf *FILE*                          !!  80         -j, --json
 78     Pass a base BTF object. Base BTF objects a !!  81                   Generate JSON output. For commands that cannot produce JSON, this
 79     objects for kernel modules. To avoid dupli !!  82                   option has no effect.
 80     required by modules, BTF objects for modul !!  83 
 81     built incrementally on top of the kernel ( !!  84         -p, --pretty
 82     base BTF reference should usually point to !!  85                   Generate human-readable JSON output. Implies **-j**.
 83                                                !!  86 
 84     When the main BTF object to process (for e !!  87         -d, --debug
 85     dump) is passed as a *FILE*, bpftool attem !!  88                   Print all logs available from libbpf, including debug-level
 86     for the base object, and passing this opti !!  89                   information.
 87     BTF object is passed through other handles << 
 88     necessary.                                 << 
 89                                                    90 
 90 EXAMPLES                                           91 EXAMPLES
 91 ========                                           92 ========
 92 **# bpftool btf dump id 1226**                     93 **# bpftool btf dump id 1226**
 93                                                << 
 94 ::                                                 94 ::
 95                                                    95 
 96   [1] PTR '(anon)' type_id=2                       96   [1] PTR '(anon)' type_id=2
 97   [2] STRUCT 'dummy_tracepoint_args' size=16 v     97   [2] STRUCT 'dummy_tracepoint_args' size=16 vlen=2
 98           'pad' type_id=3 bits_offset=0            98           'pad' type_id=3 bits_offset=0
 99           'sock' type_id=4 bits_offset=64          99           'sock' type_id=4 bits_offset=64
100   [3] INT 'long long unsigned int' size=8 bits    100   [3] INT 'long long unsigned int' size=8 bits_offset=0 nr_bits=64 encoding=(none)
101   [4] PTR '(anon)' type_id=5                      101   [4] PTR '(anon)' type_id=5
102   [5] FWD 'sock' fwd_kind=union                   102   [5] FWD 'sock' fwd_kind=union
103                                                   103 
104 This gives an example of default output for al    104 This gives an example of default output for all supported BTF kinds.
105                                                   105 
106 **$ cat prog.c**                                  106 **$ cat prog.c**
107                                                << 
108 ::                                                107 ::
109                                                   108 
110   struct fwd_struct;                              109   struct fwd_struct;
111                                                   110 
112   enum my_enum {                                  111   enum my_enum {
113           VAL1 = 3,                               112           VAL1 = 3,
114           VAL2 = 7,                               113           VAL2 = 7,
115   };                                              114   };
116                                                   115 
117   typedef struct my_struct my_struct_t;           116   typedef struct my_struct my_struct_t;
118                                                   117 
119   struct my_struct {                              118   struct my_struct {
120           const unsigned int const_int_field;     119           const unsigned int const_int_field;
121           int bitfield_field: 4;                  120           int bitfield_field: 4;
122           char arr_field[16];                     121           char arr_field[16];
123           const struct fwd_struct *restrict fw    122           const struct fwd_struct *restrict fwd_field;
124           enum my_enum enum_field;                123           enum my_enum enum_field;
125           volatile my_struct_t *typedef_ptr_fi    124           volatile my_struct_t *typedef_ptr_field;
126   };                                              125   };
127                                                   126 
128   union my_union {                                127   union my_union {
129           int a;                                  128           int a;
130           struct my_struct b;                     129           struct my_struct b;
131   };                                              130   };
132                                                   131 
133   struct my_struct struct_global_var __attribu    132   struct my_struct struct_global_var __attribute__((section("data_sec"))) = {
134           .bitfield_field = 3,                    133           .bitfield_field = 3,
135           .enum_field = VAL1,                     134           .enum_field = VAL1,
136   };                                              135   };
137   int global_var __attribute__((section("data_    136   int global_var __attribute__((section("data_sec"))) = 7;
138                                                   137 
139   __attribute__((noinline))                       138   __attribute__((noinline))
140   int my_func(union my_union *arg1, int arg2)     139   int my_func(union my_union *arg1, int arg2)
141   {                                               140   {
142           static int static_var __attribute__(    141           static int static_var __attribute__((section("data_sec"))) = 123;
143           static_var++;                           142           static_var++;
144           return static_var;                      143           return static_var;
145   }                                               144   }
146                                                   145 
147 **$ bpftool btf dump file prog.o**                146 **$ bpftool btf dump file prog.o**
148                                                << 
149 ::                                                147 ::
150                                                   148 
151   [1] PTR '(anon)' type_id=2                      149   [1] PTR '(anon)' type_id=2
152   [2] UNION 'my_union' size=48 vlen=2             150   [2] UNION 'my_union' size=48 vlen=2
153           'a' type_id=3 bits_offset=0             151           'a' type_id=3 bits_offset=0
154           'b' type_id=4 bits_offset=0             152           'b' type_id=4 bits_offset=0
155   [3] INT 'int' size=4 bits_offset=0 nr_bits=3    153   [3] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
156   [4] STRUCT 'my_struct' size=48 vlen=6           154   [4] STRUCT 'my_struct' size=48 vlen=6
157           'const_int_field' type_id=5 bits_off    155           'const_int_field' type_id=5 bits_offset=0
158           'bitfield_field' type_id=3 bits_offs    156           'bitfield_field' type_id=3 bits_offset=32 bitfield_size=4
159           'arr_field' type_id=8 bits_offset=40    157           'arr_field' type_id=8 bits_offset=40
160           'fwd_field' type_id=10 bits_offset=1    158           'fwd_field' type_id=10 bits_offset=192
161           'enum_field' type_id=14 bits_offset=    159           'enum_field' type_id=14 bits_offset=256
162           'typedef_ptr_field' type_id=15 bits_    160           'typedef_ptr_field' type_id=15 bits_offset=320
163   [5] CONST '(anon)' type_id=6                    161   [5] CONST '(anon)' type_id=6
164   [6] INT 'unsigned int' size=4 bits_offset=0     162   [6] INT 'unsigned int' size=4 bits_offset=0 nr_bits=32 encoding=(none)
165   [7] INT 'char' size=1 bits_offset=0 nr_bits=    163   [7] INT 'char' size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
166   [8] ARRAY '(anon)' type_id=7 index_type_id=9    164   [8] ARRAY '(anon)' type_id=7 index_type_id=9 nr_elems=16
167   [9] INT '__ARRAY_SIZE_TYPE__' size=4 bits_of    165   [9] INT '__ARRAY_SIZE_TYPE__' size=4 bits_offset=0 nr_bits=32 encoding=(none)
168   [10] RESTRICT '(anon)' type_id=11               166   [10] RESTRICT '(anon)' type_id=11
169   [11] PTR '(anon)' type_id=12                    167   [11] PTR '(anon)' type_id=12
170   [12] CONST '(anon)' type_id=13                  168   [12] CONST '(anon)' type_id=13
171   [13] FWD 'fwd_struct' fwd_kind=union            169   [13] FWD 'fwd_struct' fwd_kind=union
172   [14] ENUM 'my_enum' size=4 vlen=2               170   [14] ENUM 'my_enum' size=4 vlen=2
173           'VAL1' val=3                            171           'VAL1' val=3
174           'VAL2' val=7                            172           'VAL2' val=7
175   [15] PTR '(anon)' type_id=16                    173   [15] PTR '(anon)' type_id=16
176   [16] VOLATILE '(anon)' type_id=17               174   [16] VOLATILE '(anon)' type_id=17
177   [17] TYPEDEF 'my_struct_t' type_id=4            175   [17] TYPEDEF 'my_struct_t' type_id=4
178   [18] FUNC_PROTO '(anon)' ret_type_id=3 vlen=    176   [18] FUNC_PROTO '(anon)' ret_type_id=3 vlen=2
179           'arg1' type_id=1                        177           'arg1' type_id=1
180           'arg2' type_id=3                        178           'arg2' type_id=3
181   [19] FUNC 'my_func' type_id=18                  179   [19] FUNC 'my_func' type_id=18
182   [20] VAR 'struct_global_var' type_id=4, link    180   [20] VAR 'struct_global_var' type_id=4, linkage=global-alloc
183   [21] VAR 'global_var' type_id=3, linkage=glo    181   [21] VAR 'global_var' type_id=3, linkage=global-alloc
184   [22] VAR 'my_func.static_var' type_id=3, lin    182   [22] VAR 'my_func.static_var' type_id=3, linkage=static
185   [23] DATASEC 'data_sec' size=0 vlen=3           183   [23] DATASEC 'data_sec' size=0 vlen=3
186           type_id=20 offset=0 size=48             184           type_id=20 offset=0 size=48
187           type_id=21 offset=0 size=4              185           type_id=21 offset=0 size=4
188           type_id=22 offset=52 size=4             186           type_id=22 offset=52 size=4
189                                                   187 
190 The following commands print BTF types associa    188 The following commands print BTF types associated with specified map's key,
191 value, both key and value, and all BTF types,     189 value, both key and value, and all BTF types, respectively. By default, both
192 key and value types will be printed.              190 key and value types will be printed.
193                                                   191 
194 **# bpftool btf dump map id 123 key**             192 **# bpftool btf dump map id 123 key**
195                                                   193 
196 ::                                                194 ::
197                                                   195 
198   [39] TYPEDEF 'u32' type_id=37                   196   [39] TYPEDEF 'u32' type_id=37
199                                                   197 
200 **# bpftool btf dump map id 123 value**           198 **# bpftool btf dump map id 123 value**
201                                                   199 
202 ::                                                200 ::
203                                                   201 
204   [86] PTR '(anon)' type_id=87                    202   [86] PTR '(anon)' type_id=87
205                                                   203 
206 **# bpftool btf dump map id 123 kv**              204 **# bpftool btf dump map id 123 kv**
207                                                   205 
208 ::                                                206 ::
209                                                   207 
210   [39] TYPEDEF 'u32' type_id=37                   208   [39] TYPEDEF 'u32' type_id=37
211   [86] PTR '(anon)' type_id=87                    209   [86] PTR '(anon)' type_id=87
212                                                   210 
213 **# bpftool btf dump map id 123 all**             211 **# bpftool btf dump map id 123 all**
214                                                   212 
215 ::                                                213 ::
216                                                   214 
217   [1] PTR '(anon)' type_id=0                      215   [1] PTR '(anon)' type_id=0
218   .                                               216   .
219   .                                               217   .
220   .                                               218   .
221   [2866] ARRAY '(anon)' type_id=52 index_type_    219   [2866] ARRAY '(anon)' type_id=52 index_type_id=51 nr_elems=4
222                                                   220 
223 All the standard ways to specify map or progra    221 All the standard ways to specify map or program are supported:
224                                                   222 
225 **# bpftool btf dump map id 123**                 223 **# bpftool btf dump map id 123**
226                                                   224 
227 **# bpftool btf dump map pinned /sys/fs/bpf/ma    225 **# bpftool btf dump map pinned /sys/fs/bpf/map_name**
228                                                   226 
229 **# bpftool btf dump prog id 456**                227 **# bpftool btf dump prog id 456**
230                                                   228 
231 **# bpftool btf dump prog tag b88e0a09b1d9759d    229 **# bpftool btf dump prog tag b88e0a09b1d9759d**
232                                                   230 
233 **# bpftool btf dump prog pinned /sys/fs/bpf/p    231 **# bpftool btf dump prog pinned /sys/fs/bpf/prog_name**
234                                                   232 
235 |                                              !! 233 SEE ALSO
236 | **# bpftool btf dump file /sys/kernel/btf/i2 !! 234 ========
237 | (or)                                         !! 235         **bpf**\ (2),
238 | **# I2C_SMBUS_ID=$(bpftool btf show -p | jq  !! 236         **bpf-helpers**\ (7),
239 | **# bpftool btf dump id ${I2C_SMBUS_ID} -B / !! 237         **bpftool**\ (8),
240                                                !! 238         **bpftool-btf**\ (8),
241 ::                                             !! 239         **bpftool-cgroup**\ (8),
242                                                !! 240         **bpftool-feature**\ (8),
243   [104848] STRUCT 'i2c_smbus_alert' size=40 vl !! 241         **bpftool-gen**\ (8),
244           'alert' type_id=393 bits_offset=0    !! 242         **bpftool-iter**\ (8),
245           'ara' type_id=56050 bits_offset=256  !! 243         **bpftool-link**\ (8),
246   [104849] STRUCT 'alert_data' size=12 vlen=3  !! 244         **bpftool-map**\ (8),
247           'addr' type_id=16 bits_offset=0      !! 245         **bpftool-net**\ (8),
248           'type' type_id=56053 bits_offset=32  !! 246         **bpftool-perf**\ (8),
249           'data' type_id=7 bits_offset=64      !! 247         **bpftool-prog**\ (8),
250   [104850] PTR '(anon)' type_id=104848         !! 248         **bpftool-struct_ops**\ (8)
251   [104851] PTR '(anon)' type_id=104849         << 
252   [104852] FUNC 'i2c_register_spd' type_id=847 << 
253   [104853] FUNC 'smbalert_driver_init' type_id << 
254   [104854] FUNC_PROTO '(anon)' ret_type_id=18  << 
255           'ara' type_id=56050                  << 
256   [104855] FUNC 'i2c_handle_smbus_alert' type_ << 
257   [104856] FUNC 'smbalert_remove' type_id=1048 << 
258   [104857] FUNC_PROTO '(anon)' ret_type_id=18  << 
259           'ara' type_id=56050                  << 
260           'id' type_id=56056                   << 
261   [104858] FUNC 'smbalert_probe' type_id=10485 << 
262   [104859] FUNC 'smbalert_work' type_id=9695 l << 
263   [104860] FUNC 'smbus_alert' type_id=71367 li << 
264   [104861] FUNC 'smbus_do_alert' type_id=84827 << 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php