1BPFTOOL-BTF(8) BPFTOOL-BTF(8)
2
3
4
6 bpftool-btf - tool for inspection of BTF data
7
9 bpftool [OPTIONS] btf COMMAND
10
11 OPTIONS := { { -j | --json } [{ -p | --pretty }] }
12
13 COMMANDS := { dump | help }
14
16 bpftool btf { show | list } [id BTF_ID]
17 bpftool btf dump BTF_SRC [format FORMAT]
18 bpftool btf help
19
20 BTF_SRC := { id BTF_ID | prog PROG | map MAP [{key | value | kv | all}] | file FILE }
21 FORMAT := { raw | c }
22 MAP := { id MAP_ID | pinned FILE }
23 PROG := { id PROG_ID | pinned FILE | tag PROG_TAG }
24
25
27 bpftool btf { show | list } [id BTF_ID]
28 Show information about loaded BTF objects. If a BTF ID is
29 specified, show information only about given BTF object, oth‐
30 erwise list all BTF objects currently loaded on the system.
31
32 bpftool btf dump BTF_SRC
33 Dump BTF entries from a given BTF_SRC.
34
35 When id is specified, BTF object with that ID will be loaded
36 and all its BTF types emitted.
37
38 When map is provided, it's expected that map has associated
39 BTF object with BTF types describing key and value. It's pos‐
40 sible to select whether to dump only BTF type(s) associated
41 with key (key), value (value), both key and value (kv), or
42 all BTF types present in associated BTF object (all). If not
43 specified, kv is assumed.
44
45 When prog is provided, it's expected that program has associ‐
46 ated BTF object with BTF types.
47
48 When specifying FILE, an ELF file is expected, containing
49 typically produced by clang or pahole.
50
51 format option can be used to override default (raw) output
52 format. Raw (raw) or C-syntax (c) output formats are sup‐
53 ported.
54
55 bpftool btf help
56 Print short help message.
57
59 -h, --help
60 Print short generic help message (similar to bpftool help).
61
62 -V, --version
63 Print version number (similar to bpftool version).
64
65 -j, --json
66 Generate JSON output. For commands that cannot produce JSON,
67 this option has no effect.
68
69 -p, --pretty
70 Generate human-readable JSON output. Implies -j.
71
72 -d, --debug
73 Print all logs available from libbpf, including debug-level
74 information.
75
77 # bpftool btf dump id 1226
78
79 [1] PTR '(anon)' type_id=2
80 [2] STRUCT 'dummy_tracepoint_args' size=16 vlen=2
81 'pad' type_id=3 bits_offset=0
82 'sock' type_id=4 bits_offset=64
83 [3] INT 'long long unsigned int' size=8 bits_offset=0 nr_bits=64 encoding=(none)
84 [4] PTR '(anon)' type_id=5
85 [5] FWD 'sock' fwd_kind=union
86
87 This gives an example of default output for all supported BTF kinds.
88
89 $ cat prog.c
90
91 struct fwd_struct;
92
93 enum my_enum {
94 VAL1 = 3,
95 VAL2 = 7,
96 };
97
98 typedef struct my_struct my_struct_t;
99
100 struct my_struct {
101 const unsigned int const_int_field;
102 int bitfield_field: 4;
103 char arr_field[16];
104 const struct fwd_struct *restrict fwd_field;
105 enum my_enum enum_field;
106 volatile my_struct_t *typedef_ptr_field;
107 };
108
109 union my_union {
110 int a;
111 struct my_struct b;
112 };
113
114 struct my_struct struct_global_var __attribute__((section("data_sec"))) = {
115 .bitfield_field = 3,
116 .enum_field = VAL1,
117 };
118 int global_var __attribute__((section("data_sec"))) = 7;
119
120 __attribute__((noinline))
121 int my_func(union my_union *arg1, int arg2)
122 {
123 static int static_var __attribute__((section("data_sec"))) = 123;
124 static_var++;
125 return static_var;
126 }
127
128 $ bpftool btf dump file prog.o
129
130 [1] PTR '(anon)' type_id=2
131 [2] UNION 'my_union' size=48 vlen=2
132 'a' type_id=3 bits_offset=0
133 'b' type_id=4 bits_offset=0
134 [3] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
135 [4] STRUCT 'my_struct' size=48 vlen=6
136 'const_int_field' type_id=5 bits_offset=0
137 'bitfield_field' type_id=3 bits_offset=32 bitfield_size=4
138 'arr_field' type_id=8 bits_offset=40
139 'fwd_field' type_id=10 bits_offset=192
140 'enum_field' type_id=14 bits_offset=256
141 'typedef_ptr_field' type_id=15 bits_offset=320
142 [5] CONST '(anon)' type_id=6
143 [6] INT 'unsigned int' size=4 bits_offset=0 nr_bits=32 encoding=(none)
144 [7] INT 'char' size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
145 [8] ARRAY '(anon)' type_id=7 index_type_id=9 nr_elems=16
146 [9] INT '__ARRAY_SIZE_TYPE__' size=4 bits_offset=0 nr_bits=32 encoding=(none)
147 [10] RESTRICT '(anon)' type_id=11
148 [11] PTR '(anon)' type_id=12
149 [12] CONST '(anon)' type_id=13
150 [13] FWD 'fwd_struct' fwd_kind=union
151 [14] ENUM 'my_enum' size=4 vlen=2
152 'VAL1' val=3
153 'VAL2' val=7
154 [15] PTR '(anon)' type_id=16
155 [16] VOLATILE '(anon)' type_id=17
156 [17] TYPEDEF 'my_struct_t' type_id=4
157 [18] FUNC_PROTO '(anon)' ret_type_id=3 vlen=2
158 'arg1' type_id=1
159 'arg2' type_id=3
160 [19] FUNC 'my_func' type_id=18
161 [20] VAR 'struct_global_var' type_id=4, linkage=global-alloc
162 [21] VAR 'global_var' type_id=3, linkage=global-alloc
163 [22] VAR 'my_func.static_var' type_id=3, linkage=static
164 [23] DATASEC 'data_sec' size=0 vlen=3
165 type_id=20 offset=0 size=48
166 type_id=21 offset=0 size=4
167 type_id=22 offset=52 size=4
168
169 The following commands print BTF types associated with specified map's
170 key, value, both key and value, and all BTF types, respectively. By
171 default, both key and value types will be printed.
172
173 # bpftool btf dump map id 123 key
174
175 [39] TYPEDEF 'u32' type_id=37
176
177 # bpftool btf dump map id 123 value
178
179 [86] PTR '(anon)' type_id=87
180
181 # bpftool btf dump map id 123 kv
182
183 [39] TYPEDEF 'u32' type_id=37
184 [86] PTR '(anon)' type_id=87
185
186 # bpftool btf dump map id 123 all
187
188 [1] PTR '(anon)' type_id=0
189 .
190 .
191 .
192 [2866] ARRAY '(anon)' type_id=52 index_type_id=51 nr_elems=4
193
194 All the standard ways to specify map or program are supported:
195
196 # bpftool btf dump map id 123
197
198 # bpftool btf dump map pinned /sys/fs/bpf/map_name
199
200 # bpftool btf dump prog id 456
201
202 # bpftool btf dump prog tag b88e0a09b1d9759d
203
204 # bpftool btf dump prog pinned /sys/fs/bpf/prog_name
205
207 bpf(2), bpf-helpers(7), bpftool(8), bpftool-map(8), bpftool-prog(8),
208 bpftool-cgroup(8), bpftool-feature(8), bpftool-net(8),
209 bpftool-perf(8)
210
211
212
213
214 BPFTOOL-BTF(8)