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


  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 dump** *BTF_SRC* [**format** *FORMAT*]
 27 | **bpftool** **btf dump** *BTF_SRC* [**format !!  23 |       **bpftool** **btf help**
 28 | **bpftool** **btf help**                     << 
 29 |                                                  24 |
 30 | *BTF_SRC* := { **id** *BTF_ID* | **prog** *P !!  25 |       *BTF_SRC* := { **id** *BTF_ID* | **prog** *PROG* | **map** *MAP* [{**key** | **value** | **kv** | **all**}] | **file** *FILE* }
 31 | *FORMAT* := { **raw** | **c** [**unsorted**] !!  26 |       *FORMAT* := { **raw** | **c** }
 32 | *MAP* := { **id** *MAP_ID* | **pinned** *FIL !!  27 |       *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
 33 | *PROG* := { **id** *PROG_ID* | **pinned** *F !!  28 |       *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* }
 34                                                    29 
 35 DESCRIPTION                                        30 DESCRIPTION
 36 ===========                                        31 ===========
 37 bpftool btf { show | list } [id *BTF_ID*]      !!  32         **bpftool btf dump** *BTF_SRC*
 38     Show information about loaded BTF objects. !!  33                   Dump BTF entries from a given *BTF_SRC*.
 39     information only about given BTF object, o !!  34 
 40     currently loaded on the system.            !!  35                   When **id** is specified, BTF object with that ID will be
 41                                                !!  36                   loaded and all its BTF types emitted.
 42     Since Linux 5.8 bpftool is able to discove !!  37 
 43     that hold open file descriptors (FDs) agai !!  38                   When **map** is provided, it's expected that map has
 44     bpftool will automatically emit this infor !!  39                   associated BTF object with BTF types describing key and
 45                                                !!  40                   value. It's possible to select whether to dump only BTF
 46 bpftool btf dump *BTF_SRC*                     !!  41                   type(s) associated with key (**key**), value (**value**),
 47     Dump BTF entries from a given *BTF_SRC*.   !!  42                   both key and value (**kv**), or all BTF types present in
 48                                                !!  43                   associated BTF object (**all**). If not specified, **kv**
 49     When **id** is specified, BTF object with  !!  44                   is assumed.
 50     its BTF types emitted.                     !!  45 
 51                                                !!  46                   When **prog** is provided, it's expected that program has
 52     When **map** is provided, it's expected th !!  47                   associated BTF object with BTF types.
 53     with BTF types describing key and value. I !!  48 
 54     dump only BTF type(s) associated with key  !!  49                   When specifying *FILE*, an ELF file is expected, containing
 55     both key and value (**kv**), or all BTF ty !!  50                   .BTF section with well-defined BTF binary format data,
 56     object (**all**). If not specified, **kv** !!  51                   typically produced by clang or pahole.
 57                                                !!  52 
 58     When **prog** is provided, it's expected t !!  53                   **format** option can be used to override default (raw)
 59     object with BTF types.                     !!  54                   output format. Raw (**raw**) or C-syntax (**c**) output
 60                                                !!  55                   formats are supported.
 61     When specifying *FILE*, an ELF file is exp << 
 62     with well-defined BTF binary format data,  << 
 63     pahole.                                    << 
 64                                                << 
 65     **format** option can be used to override  << 
 66     (**raw**) or C-syntax (**c**) output forma << 
 67     formatting, the output is sorted by defaul << 
 68     to avoid sorting the output.               << 
 69                                                    56 
 70 bpftool btf help                               !!  57         **bpftool btf help**
 71     Print short help message.                  !!  58                   Print short help message.
 72                                                    59 
 73 OPTIONS                                            60 OPTIONS
 74 =======                                            61 =======
 75 .. include:: common_options.rst                !!  62         -h, --help
                                                   >>  63                   Print short generic help message (similar to **bpftool help**).
 76                                                    64 
 77 -B, --base-btf *FILE*                          !!  65         -V, --version
 78     Pass a base BTF object. Base BTF objects a !!  66                   Print version number (similar to **bpftool version**).
 79     objects for kernel modules. To avoid dupli !!  67 
 80     required by modules, BTF objects for modul !!  68         -j, --json
 81     built incrementally on top of the kernel ( !!  69                   Generate JSON output. For commands that cannot produce JSON, this
 82     base BTF reference should usually point to !!  70                   option has no effect.
 83                                                !!  71 
 84     When the main BTF object to process (for e !!  72         -p, --pretty
 85     dump) is passed as a *FILE*, bpftool attem !!  73                   Generate human-readable JSON output. Implies **-j**.
 86     for the base object, and passing this opti !!  74 
 87     BTF object is passed through other handles !!  75         -d, --debug
 88     necessary.                                 !!  76                   Print all logs available from libbpf, including debug-level
                                                   >>  77                   information.
 89                                                    78 
 90 EXAMPLES                                           79 EXAMPLES
 91 ========                                           80 ========
 92 **# bpftool btf dump id 1226**                     81 **# bpftool btf dump id 1226**
 93                                                << 
 94 ::                                                 82 ::
 95                                                    83 
 96   [1] PTR '(anon)' type_id=2                       84   [1] PTR '(anon)' type_id=2
 97   [2] STRUCT 'dummy_tracepoint_args' size=16 v     85   [2] STRUCT 'dummy_tracepoint_args' size=16 vlen=2
 98           'pad' type_id=3 bits_offset=0            86           'pad' type_id=3 bits_offset=0
 99           'sock' type_id=4 bits_offset=64          87           'sock' type_id=4 bits_offset=64
100   [3] INT 'long long unsigned int' size=8 bits     88   [3] INT 'long long unsigned int' size=8 bits_offset=0 nr_bits=64 encoding=(none)
101   [4] PTR '(anon)' type_id=5                       89   [4] PTR '(anon)' type_id=5
102   [5] FWD 'sock' fwd_kind=union                    90   [5] FWD 'sock' fwd_kind=union
103                                                    91 
104 This gives an example of default output for al     92 This gives an example of default output for all supported BTF kinds.
105                                                    93 
106 **$ cat prog.c**                                   94 **$ cat prog.c**
107                                                << 
108 ::                                                 95 ::
109                                                    96 
110   struct fwd_struct;                               97   struct fwd_struct;
111                                                    98 
112   enum my_enum {                                   99   enum my_enum {
113           VAL1 = 3,                               100           VAL1 = 3,
114           VAL2 = 7,                               101           VAL2 = 7,
115   };                                              102   };
116                                                   103 
117   typedef struct my_struct my_struct_t;           104   typedef struct my_struct my_struct_t;
118                                                   105 
119   struct my_struct {                              106   struct my_struct {
120           const unsigned int const_int_field;     107           const unsigned int const_int_field;
121           int bitfield_field: 4;                  108           int bitfield_field: 4;
122           char arr_field[16];                     109           char arr_field[16];
123           const struct fwd_struct *restrict fw    110           const struct fwd_struct *restrict fwd_field;
124           enum my_enum enum_field;                111           enum my_enum enum_field;
125           volatile my_struct_t *typedef_ptr_fi    112           volatile my_struct_t *typedef_ptr_field;
126   };                                              113   };
127                                                   114 
128   union my_union {                                115   union my_union {
129           int a;                                  116           int a;
130           struct my_struct b;                     117           struct my_struct b;
131   };                                              118   };
132                                                   119 
133   struct my_struct struct_global_var __attribu    120   struct my_struct struct_global_var __attribute__((section("data_sec"))) = {
134           .bitfield_field = 3,                    121           .bitfield_field = 3,
135           .enum_field = VAL1,                     122           .enum_field = VAL1,
136   };                                              123   };
137   int global_var __attribute__((section("data_    124   int global_var __attribute__((section("data_sec"))) = 7;
138                                                   125 
139   __attribute__((noinline))                       126   __attribute__((noinline))
140   int my_func(union my_union *arg1, int arg2)     127   int my_func(union my_union *arg1, int arg2)
141   {                                               128   {
142           static int static_var __attribute__(    129           static int static_var __attribute__((section("data_sec"))) = 123;
143           static_var++;                           130           static_var++;
144           return static_var;                      131           return static_var;
145   }                                               132   }
146                                                   133 
147 **$ bpftool btf dump file prog.o**                134 **$ bpftool btf dump file prog.o**
148                                                << 
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                                                   220 
235 |                                              !! 221 SEE ALSO
236 | **# bpftool btf dump file /sys/kernel/btf/i2 !! 222 ========
237 | (or)                                         !! 223         **bpf**\ (2),
238 | **# I2C_SMBUS_ID=$(bpftool btf show -p | jq  !! 224         **bpf-helpers**\ (7),
239 | **# bpftool btf dump id ${I2C_SMBUS_ID} -B / !! 225         **bpftool**\ (8),
240                                                !! 226         **bpftool-map**\ (8),
241 ::                                             !! 227         **bpftool-prog**\ (8),
242                                                !! 228         **bpftool-cgroup**\ (8),
243   [104848] STRUCT 'i2c_smbus_alert' size=40 vl !! 229         **bpftool-feature**\ (8),
244           'alert' type_id=393 bits_offset=0    !! 230         **bpftool-net**\ (8),
245           'ara' type_id=56050 bits_offset=256  !! 231         **bpftool-perf**\ (8)
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