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