Lines Matching refs:btf

4 #include <bpf/btf.h>
7 static void gen_btf(struct btf *btf)
17 str_off = btf__find_str(btf, "int");
20 str_off = btf__add_str(btf, "int");
23 str_off = btf__find_str(btf, "int");
27 id = btf__add_int(btf, "int", 4, BTF_INT_SIGNED);
30 t = btf__type_by_id(btf, 1);
33 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "int", "int_name");
38 ASSERT_STREQ(btf_type_raw_dump(btf, 1),
42 id = btf__add_int(btf, "bad sz int", 7, 0);
45 id = btf__add_int(btf, "bad enc int", 4, 123);
48 id = btf__add_int(btf, NULL, 4, 0);
51 id = btf__add_int(btf, "", 4, 0);
55 id = btf__add_ptr(btf, 1);
57 t = btf__type_by_id(btf, 2);
60 ASSERT_STREQ(btf_type_raw_dump(btf, 2),
63 id = btf__add_const(btf, 5); /* points forward to restrict */
65 t = btf__type_by_id(btf, 3);
68 ASSERT_STREQ(btf_type_raw_dump(btf, 3),
71 id = btf__add_volatile(btf, 3);
73 t = btf__type_by_id(btf, 4);
76 ASSERT_STREQ(btf_type_raw_dump(btf, 4),
79 id = btf__add_restrict(btf, 4);
81 t = btf__type_by_id(btf, 5);
84 ASSERT_STREQ(btf_type_raw_dump(btf, 5),
88 id = btf__add_array(btf, 1, 2, 10); /* int *[10] */
90 t = btf__type_by_id(btf, 6);
95 ASSERT_STREQ(btf_type_raw_dump(btf, 6),
99 err = btf__add_field(btf, "field", 1, 0, 0);
101 id = btf__add_struct(btf, "s1", 8);
103 err = btf__add_field(btf, "f1", 1, 0, 0);
105 err = btf__add_field(btf, "f2", 1, 32, 16);
108 t = btf__type_by_id(btf, 7);
109 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "s1", "struct_name");
115 ASSERT_STREQ(btf__str_by_offset(btf, m->name_off), "f1", "f1_name");
120 ASSERT_STREQ(btf__str_by_offset(btf, m->name_off), "f2", "f2_name");
124 ASSERT_STREQ(btf_type_raw_dump(btf, 7),
130 id = btf__add_union(btf, "u1", 8);
134 err = btf__add_field(btf, "field", 1, 1, 0);
137 err = btf__add_field(btf, "f1", 1, 0, 16);
140 t = btf__type_by_id(btf, 8);
141 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "u1", "union_name");
147 ASSERT_STREQ(btf__str_by_offset(btf, m->name_off), "f1", "f1_name");
151 ASSERT_STREQ(btf_type_raw_dump(btf, 8),
156 id = btf__add_enum(btf, "e1", 4);
158 err = btf__add_enum_value(btf, "v1", 1);
160 err = btf__add_enum_value(btf, "v2", 2);
163 t = btf__type_by_id(btf, 9);
164 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "e1", "enum_name");
169 ASSERT_STREQ(btf__str_by_offset(btf, v->name_off), "v1", "v1_name");
172 ASSERT_STREQ(btf__str_by_offset(btf, v->name_off), "v2", "v2_name");
174 ASSERT_STREQ(btf_type_raw_dump(btf, 9),
180 id = btf__add_fwd(btf, "struct_fwd", BTF_FWD_STRUCT);
182 t = btf__type_by_id(btf, 10);
183 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "struct_fwd", "fwd_name");
186 ASSERT_STREQ(btf_type_raw_dump(btf, 10),
189 id = btf__add_fwd(btf, "union_fwd", BTF_FWD_UNION);
191 t = btf__type_by_id(btf, 11);
192 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "union_fwd", "fwd_name");
195 ASSERT_STREQ(btf_type_raw_dump(btf, 11),
198 id = btf__add_fwd(btf, "enum_fwd", BTF_FWD_ENUM);
200 t = btf__type_by_id(btf, 12);
201 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "enum_fwd", "fwd_name");
205 ASSERT_STREQ(btf_type_raw_dump(btf, 12),
209 id = btf__add_typedef(btf, "typedef1", 1);
211 t = btf__type_by_id(btf, 13);
212 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "typedef1", "typedef_name");
215 ASSERT_STREQ(btf_type_raw_dump(btf, 13),
219 id = btf__add_func(btf, "func1", BTF_FUNC_GLOBAL, 15);
221 t = btf__type_by_id(btf, 14);
222 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "func1", "func_name");
226 ASSERT_STREQ(btf_type_raw_dump(btf, 14),
229 id = btf__add_func_proto(btf, 1);
231 err = btf__add_func_param(btf, "p1", 1);
233 err = btf__add_func_param(btf, "p2", 2);
236 t = btf__type_by_id(btf, 15);
241 ASSERT_STREQ(btf__str_by_offset(btf, p->name_off), "p1", "p1_name");
244 ASSERT_STREQ(btf__str_by_offset(btf, p->name_off), "p2", "p2_name");
246 ASSERT_STREQ(btf_type_raw_dump(btf, 15),
252 id = btf__add_var(btf, "var1", BTF_VAR_GLOBAL_ALLOCATED, 1);
254 t = btf__type_by_id(btf, 16);
255 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "var1", "var_name");
259 ASSERT_STREQ(btf_type_raw_dump(btf, 16),
263 id = btf__add_datasec(btf, "datasec1", 12);
265 err = btf__add_datasec_var_info(btf, 1, 4, 8);
268 t = btf__type_by_id(btf, 17);
269 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "datasec1", "datasec_name");
277 ASSERT_STREQ(btf_type_raw_dump(btf, 17),
282 id = btf__add_decl_tag(btf, "tag1", 16, -1);
284 t = btf__type_by_id(btf, 18);
285 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "tag1", "tag_value");
289 ASSERT_STREQ(btf_type_raw_dump(btf, 18),
292 id = btf__add_decl_tag(btf, "tag2", 14, 1);
294 t = btf__type_by_id(btf, 19);
295 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "tag2", "tag_value");
299 ASSERT_STREQ(btf_type_raw_dump(btf, 19),
303 id = btf__add_type_tag(btf, "tag1", 1);
305 t = btf__type_by_id(btf, 20);
306 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "tag1", "tag_value");
309 ASSERT_STREQ(btf_type_raw_dump(btf, 20),
313 id = btf__add_enum64(btf, "e1", 8, true);
315 err = btf__add_enum64_value(btf, "v1", -1);
317 err = btf__add_enum64_value(btf, "v2", 0x123456789); /* 4886718345 */
319 t = btf__type_by_id(btf, 21);
320 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "e1", "enum64_name");
325 ASSERT_STREQ(btf__str_by_offset(btf, v64->name_off), "v1", "v1_name");
329 ASSERT_STREQ(btf__str_by_offset(btf, v64->name_off), "v2", "v2_name");
332 ASSERT_STREQ(btf_type_raw_dump(btf, 21),
337 id = btf__add_enum64(btf, "e1", 8, false);
339 err = btf__add_enum64_value(btf, "v1", 0xffffffffFFFFFFFF); /* 18446744073709551615 */
341 t = btf__type_by_id(btf, 22);
342 ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "e1", "enum64_name");
347 ASSERT_STREQ(btf__str_by_offset(btf, v64->name_off), "v1", "v1_name");
350 ASSERT_STREQ(btf_type_raw_dump(btf, 22),
357 struct btf *btf;
359 btf = btf__new_empty();
360 if (!ASSERT_OK_PTR(btf, "new_empty"))
363 gen_btf(btf);
366 btf,
401 btf__free(btf);
406 struct btf *btf1 = NULL, *btf2 = NULL;