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


  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         .. include:: common_options.rst
 76                                                << 
 77 -B, --base-btf *FILE*                          << 
 78     Pass a base BTF object. Base BTF objects a << 
 79     objects for kernel modules. To avoid dupli << 
 80     required by modules, BTF objects for modul << 
 81     built incrementally on top of the kernel ( << 
 82     base BTF reference should usually point to << 
 83                                                << 
 84     When the main BTF object to process (for e << 
 85     dump) is passed as a *FILE*, bpftool attem << 
 86     for the base object, and passing this opti << 
 87     BTF object is passed through other handles << 
 88     necessary.                                 << 
 89                                                    75 
 90 EXAMPLES                                           76 EXAMPLES
 91 ========                                           77 ========
 92 **# bpftool btf dump id 1226**                     78 **# bpftool btf dump id 1226**
 93                                                    79 
 94 ::                                                 80 ::
 95                                                    81 
 96   [1] PTR '(anon)' type_id=2                       82   [1] PTR '(anon)' type_id=2
 97   [2] STRUCT 'dummy_tracepoint_args' size=16 v     83   [2] STRUCT 'dummy_tracepoint_args' size=16 vlen=2
 98           'pad' type_id=3 bits_offset=0            84           'pad' type_id=3 bits_offset=0
 99           'sock' type_id=4 bits_offset=64          85           'sock' type_id=4 bits_offset=64
100   [3] INT 'long long unsigned int' size=8 bits     86   [3] INT 'long long unsigned int' size=8 bits_offset=0 nr_bits=64 encoding=(none)
101   [4] PTR '(anon)' type_id=5                       87   [4] PTR '(anon)' type_id=5
102   [5] FWD 'sock' fwd_kind=union                    88   [5] FWD 'sock' fwd_kind=union
103                                                    89 
104 This gives an example of default output for al     90 This gives an example of default output for all supported BTF kinds.
105                                                    91 
106 **$ cat prog.c**                                   92 **$ cat prog.c**
107                                                    93 
108 ::                                                 94 ::
109                                                    95 
110   struct fwd_struct;                               96   struct fwd_struct;
111                                                    97 
112   enum my_enum {                                   98   enum my_enum {
113           VAL1 = 3,                                99           VAL1 = 3,
114           VAL2 = 7,                               100           VAL2 = 7,
115   };                                              101   };
116                                                   102 
117   typedef struct my_struct my_struct_t;           103   typedef struct my_struct my_struct_t;
118                                                   104 
119   struct my_struct {                              105   struct my_struct {
120           const unsigned int const_int_field;     106           const unsigned int const_int_field;
121           int bitfield_field: 4;                  107           int bitfield_field: 4;
122           char arr_field[16];                     108           char arr_field[16];
123           const struct fwd_struct *restrict fw    109           const struct fwd_struct *restrict fwd_field;
124           enum my_enum enum_field;                110           enum my_enum enum_field;
125           volatile my_struct_t *typedef_ptr_fi    111           volatile my_struct_t *typedef_ptr_field;
126   };                                              112   };
127                                                   113 
128   union my_union {                                114   union my_union {
129           int a;                                  115           int a;
130           struct my_struct b;                     116           struct my_struct b;
131   };                                              117   };
132                                                   118 
133   struct my_struct struct_global_var __attribu    119   struct my_struct struct_global_var __attribute__((section("data_sec"))) = {
134           .bitfield_field = 3,                    120           .bitfield_field = 3,
135           .enum_field = VAL1,                     121           .enum_field = VAL1,
136   };                                              122   };
137   int global_var __attribute__((section("data_    123   int global_var __attribute__((section("data_sec"))) = 7;
138                                                   124 
139   __attribute__((noinline))                       125   __attribute__((noinline))
140   int my_func(union my_union *arg1, int arg2)     126   int my_func(union my_union *arg1, int arg2)
141   {                                               127   {
142           static int static_var __attribute__(    128           static int static_var __attribute__((section("data_sec"))) = 123;
143           static_var++;                           129           static_var++;
144           return static_var;                      130           return static_var;
145   }                                               131   }
146                                                   132 
147 **$ bpftool btf dump file prog.o**                133 **$ bpftool btf dump file prog.o**
148                                                   134 
149 ::                                                135 ::
150                                                   136 
151   [1] PTR '(anon)' type_id=2                      137   [1] PTR '(anon)' type_id=2
152   [2] UNION 'my_union' size=48 vlen=2             138   [2] UNION 'my_union' size=48 vlen=2
153           'a' type_id=3 bits_offset=0             139           'a' type_id=3 bits_offset=0
154           'b' type_id=4 bits_offset=0             140           'b' type_id=4 bits_offset=0
155   [3] INT 'int' size=4 bits_offset=0 nr_bits=3    141   [3] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
156   [4] STRUCT 'my_struct' size=48 vlen=6           142   [4] STRUCT 'my_struct' size=48 vlen=6
157           'const_int_field' type_id=5 bits_off    143           'const_int_field' type_id=5 bits_offset=0
158           'bitfield_field' type_id=3 bits_offs    144           'bitfield_field' type_id=3 bits_offset=32 bitfield_size=4
159           'arr_field' type_id=8 bits_offset=40    145           'arr_field' type_id=8 bits_offset=40
160           'fwd_field' type_id=10 bits_offset=1    146           'fwd_field' type_id=10 bits_offset=192
161           'enum_field' type_id=14 bits_offset=    147           'enum_field' type_id=14 bits_offset=256
162           'typedef_ptr_field' type_id=15 bits_    148           'typedef_ptr_field' type_id=15 bits_offset=320
163   [5] CONST '(anon)' type_id=6                    149   [5] CONST '(anon)' type_id=6
164   [6] INT 'unsigned int' size=4 bits_offset=0     150   [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=    151   [7] INT 'char' size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
166   [8] ARRAY '(anon)' type_id=7 index_type_id=9    152   [8] ARRAY '(anon)' type_id=7 index_type_id=9 nr_elems=16
167   [9] INT '__ARRAY_SIZE_TYPE__' size=4 bits_of    153   [9] INT '__ARRAY_SIZE_TYPE__' size=4 bits_offset=0 nr_bits=32 encoding=(none)
168   [10] RESTRICT '(anon)' type_id=11               154   [10] RESTRICT '(anon)' type_id=11
169   [11] PTR '(anon)' type_id=12                    155   [11] PTR '(anon)' type_id=12
170   [12] CONST '(anon)' type_id=13                  156   [12] CONST '(anon)' type_id=13
171   [13] FWD 'fwd_struct' fwd_kind=union            157   [13] FWD 'fwd_struct' fwd_kind=union
172   [14] ENUM 'my_enum' size=4 vlen=2               158   [14] ENUM 'my_enum' size=4 vlen=2
173           'VAL1' val=3                            159           'VAL1' val=3
174           'VAL2' val=7                            160           'VAL2' val=7
175   [15] PTR '(anon)' type_id=16                    161   [15] PTR '(anon)' type_id=16
176   [16] VOLATILE '(anon)' type_id=17               162   [16] VOLATILE '(anon)' type_id=17
177   [17] TYPEDEF 'my_struct_t' type_id=4            163   [17] TYPEDEF 'my_struct_t' type_id=4
178   [18] FUNC_PROTO '(anon)' ret_type_id=3 vlen=    164   [18] FUNC_PROTO '(anon)' ret_type_id=3 vlen=2
179           'arg1' type_id=1                        165           'arg1' type_id=1
180           'arg2' type_id=3                        166           'arg2' type_id=3
181   [19] FUNC 'my_func' type_id=18                  167   [19] FUNC 'my_func' type_id=18
182   [20] VAR 'struct_global_var' type_id=4, link    168   [20] VAR 'struct_global_var' type_id=4, linkage=global-alloc
183   [21] VAR 'global_var' type_id=3, linkage=glo    169   [21] VAR 'global_var' type_id=3, linkage=global-alloc
184   [22] VAR 'my_func.static_var' type_id=3, lin    170   [22] VAR 'my_func.static_var' type_id=3, linkage=static
185   [23] DATASEC 'data_sec' size=0 vlen=3           171   [23] DATASEC 'data_sec' size=0 vlen=3
186           type_id=20 offset=0 size=48             172           type_id=20 offset=0 size=48
187           type_id=21 offset=0 size=4              173           type_id=21 offset=0 size=4
188           type_id=22 offset=52 size=4             174           type_id=22 offset=52 size=4
189                                                   175 
190 The following commands print BTF types associa    176 The following commands print BTF types associated with specified map's key,
191 value, both key and value, and all BTF types,     177 value, both key and value, and all BTF types, respectively. By default, both
192 key and value types will be printed.              178 key and value types will be printed.
193                                                   179 
194 **# bpftool btf dump map id 123 key**             180 **# bpftool btf dump map id 123 key**
195                                                   181 
196 ::                                                182 ::
197                                                   183 
198   [39] TYPEDEF 'u32' type_id=37                   184   [39] TYPEDEF 'u32' type_id=37
199                                                   185 
200 **# bpftool btf dump map id 123 value**           186 **# bpftool btf dump map id 123 value**
201                                                   187 
202 ::                                                188 ::
203                                                   189 
204   [86] PTR '(anon)' type_id=87                    190   [86] PTR '(anon)' type_id=87
205                                                   191 
206 **# bpftool btf dump map id 123 kv**              192 **# bpftool btf dump map id 123 kv**
207                                                   193 
208 ::                                                194 ::
209                                                   195 
210   [39] TYPEDEF 'u32' type_id=37                   196   [39] TYPEDEF 'u32' type_id=37
211   [86] PTR '(anon)' type_id=87                    197   [86] PTR '(anon)' type_id=87
212                                                   198 
213 **# bpftool btf dump map id 123 all**             199 **# bpftool btf dump map id 123 all**
214                                                   200 
215 ::                                                201 ::
216                                                   202 
217   [1] PTR '(anon)' type_id=0                      203   [1] PTR '(anon)' type_id=0
218   .                                               204   .
219   .                                               205   .
220   .                                               206   .
221   [2866] ARRAY '(anon)' type_id=52 index_type_    207   [2866] ARRAY '(anon)' type_id=52 index_type_id=51 nr_elems=4
222                                                   208 
223 All the standard ways to specify map or progra    209 All the standard ways to specify map or program are supported:
224                                                   210 
225 **# bpftool btf dump map id 123**                 211 **# bpftool btf dump map id 123**
226                                                   212 
227 **# bpftool btf dump map pinned /sys/fs/bpf/ma    213 **# bpftool btf dump map pinned /sys/fs/bpf/map_name**
228                                                   214 
229 **# bpftool btf dump prog id 456**                215 **# bpftool btf dump prog id 456**
230                                                   216 
231 **# bpftool btf dump prog tag b88e0a09b1d9759d    217 **# bpftool btf dump prog tag b88e0a09b1d9759d**
232                                                   218 
233 **# bpftool btf dump prog pinned /sys/fs/bpf/p    219 **# bpftool btf dump prog pinned /sys/fs/bpf/prog_name**
234                                                << 
235 |                                              << 
236 | **# bpftool btf dump file /sys/kernel/btf/i2 << 
237 | (or)                                         << 
238 | **# I2C_SMBUS_ID=$(bpftool btf show -p | jq  << 
239 | **# bpftool btf dump id ${I2C_SMBUS_ID} -B / << 
240                                                << 
241 ::                                             << 
242                                                << 
243   [104848] STRUCT 'i2c_smbus_alert' size=40 vl << 
244           'alert' type_id=393 bits_offset=0    << 
245           'ara' type_id=56050 bits_offset=256  << 
246   [104849] STRUCT 'alert_data' size=12 vlen=3  << 
247           'addr' type_id=16 bits_offset=0      << 
248           'type' type_id=56053 bits_offset=32  << 
249           'data' type_id=7 bits_offset=64      << 
250   [104850] PTR '(anon)' type_id=104848         << 
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