~ [ 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.15.171)


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

~ [ 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