Lines Matching refs:btf
286 struct btf *btf; member
1019 skip_mods_and_typedefs(const struct btf *btf, __u32 id, __u32 *res_id) in skip_mods_and_typedefs() argument
1021 const struct btf_type *t = btf__type_by_id(btf, id); in skip_mods_and_typedefs()
1029 t = btf__type_by_id(btf, t->type); in skip_mods_and_typedefs()
1042 static bool get_map_field_int(const char *map_name, const struct btf *btf, in get_map_field_int() argument
1045 const struct btf_type *t = skip_mods_and_typedefs(btf, m->type, NULL); in get_map_field_int()
1046 const char *name = btf__name_by_offset(btf, m->name_off); in get_map_field_int()
1056 arr_t = btf__type_by_id(btf, t->type); in get_map_field_int()
1086 var = btf__type_by_id(obj->btf, vi->type); in bpf_object__init_user_btf_map()
1088 map_name = btf__name_by_offset(obj->btf, var->name_off); in bpf_object__init_user_btf_map()
1111 def = skip_mods_and_typedefs(obj->btf, var->type, NULL); in bpf_object__init_user_btf_map()
1140 const char *name = btf__name_by_offset(obj->btf, m->name_off); in bpf_object__init_user_btf_map()
1148 if (!get_map_field_int(map_name, obj->btf, def, m, in bpf_object__init_user_btf_map()
1154 if (!get_map_field_int(map_name, obj->btf, def, m, in bpf_object__init_user_btf_map()
1160 if (!get_map_field_int(map_name, obj->btf, def, m, in bpf_object__init_user_btf_map()
1168 if (!get_map_field_int(map_name, obj->btf, def, m, in bpf_object__init_user_btf_map()
1182 t = btf__type_by_id(obj->btf, m->type); in bpf_object__init_user_btf_map()
1193 sz = btf__resolve_size(obj->btf, t->type); in bpf_object__init_user_btf_map()
1211 if (!get_map_field_int(map_name, obj->btf, def, m, in bpf_object__init_user_btf_map()
1225 t = btf__type_by_id(obj->btf, m->type); in bpf_object__init_user_btf_map()
1236 sz = btf__resolve_size(obj->btf, t->type); in bpf_object__init_user_btf_map()
1291 nr_types = btf__get_nr_types(obj->btf); in bpf_object__init_user_btf_maps()
1293 t = btf__type_by_id(obj->btf, i); in bpf_object__init_user_btf_maps()
1296 name = btf__name_by_offset(obj->btf, t->name_off); in bpf_object__init_user_btf_maps()
1366 struct btf *btf = obj->btf; in bpf_object__sanitize_btf() local
1370 if (!obj->btf || (has_func && has_datasec)) in bpf_object__sanitize_btf()
1373 for (i = 1; i <= btf__get_nr_types(btf); i++) { in bpf_object__sanitize_btf()
1374 t = (struct btf_type *)btf__type_by_id(btf, i); in bpf_object__sanitize_btf()
1393 name = (char *)btf__name_by_offset(btf, t->name_off); in bpf_object__sanitize_btf()
1407 vt = (void *)btf__type_by_id(btf, v->type); in bpf_object__sanitize_btf()
1446 obj->btf = btf__new(btf_data->d_buf, btf_data->d_size); in bpf_object__init_btf()
1447 if (IS_ERR(obj->btf)) { in bpf_object__init_btf()
1452 err = btf__finalize_data(obj, obj->btf); in bpf_object__init_btf()
1460 if (!obj->btf) { in bpf_object__init_btf()
1475 if (err || IS_ERR(obj->btf)) { in bpf_object__init_btf()
1477 err = err ? : PTR_ERR(obj->btf); in bpf_object__init_btf()
1480 if (!IS_ERR_OR_NULL(obj->btf)) in bpf_object__init_btf()
1481 btf__free(obj->btf); in bpf_object__init_btf()
1482 obj->btf = NULL; in bpf_object__init_btf()
1484 if (btf_required && !obj->btf) { in bpf_object__init_btf()
1495 if (!obj->btf) in bpf_object__sanitize_and_load_btf()
1501 err = btf__load(obj->btf); in bpf_object__sanitize_and_load_btf()
1505 btf__free(obj->btf); in bpf_object__sanitize_and_load_btf()
1506 obj->btf = NULL; in bpf_object__sanitize_and_load_btf()
1864 ret = btf__get_map_kv_tids(obj->btf, map->name, def->key_size, in bpf_map_find_btf_info()
1872 ret = btf__find_by_name(obj->btf, in bpf_map_find_btf_info()
2182 if (obj->btf && !bpf_map_find_btf_info(obj, map)) { in bpf_object__create_maps()
2183 create_attr.btf_fd = btf__fd(obj->btf); in bpf_object__create_maps()
2271 err = btf_ext__reloc_func_info(obj->btf, obj->btf_ext, in bpf_program_reloc_btf_ext()
2284 err = btf_ext__reloc_line_info(obj->btf, obj->btf_ext, in bpf_program_reloc_btf_ext()
2309 const struct btf *btf; member
2358 static int bpf_core_spec_parse(const struct btf *btf, in bpf_core_spec_parse() argument
2373 spec->btf = btf; in bpf_core_spec_parse()
2391 t = skip_mods_and_typedefs(btf, type_id, &id); in bpf_core_spec_parse()
2400 sz = btf__resolve_size(btf, id); in bpf_core_spec_parse()
2406 t = skip_mods_and_typedefs(btf, id, &id); in bpf_core_spec_parse()
2428 name = btf__name_by_offset(btf, m->name_off); in bpf_core_spec_parse()
2442 t = skip_mods_and_typedefs(btf, a->type, &id); in bpf_core_spec_parse()
2450 sz = btf__resolve_size(btf, id); in bpf_core_spec_parse()
2500 static struct ids_vec *bpf_core_find_cands(const struct btf *local_btf, in bpf_core_find_cands()
2502 const struct btf *targ_btf) in bpf_core_find_cands()
2566 static int bpf_core_fields_are_compat(const struct btf *local_btf, in bpf_core_fields_are_compat()
2568 const struct btf *targ_btf, in bpf_core_fields_are_compat()
2622 static int bpf_core_match_member(const struct btf *local_btf, in bpf_core_match_member()
2624 const struct btf *targ_btf, in bpf_core_match_member()
2704 const struct btf *targ_btf, __u32 targ_id, in bpf_core_spec_match()
2713 targ_spec->btf = targ_btf; in bpf_core_spec_match()
2719 targ_type = skip_mods_and_typedefs(targ_spec->btf, targ_id, in bpf_core_spec_match()
2725 matched = bpf_core_match_member(local_spec->btf, in bpf_core_spec_match()
2816 static struct btf *btf_load_raw(const char *path) in btf_load_raw()
2818 struct btf *btf; in btf_load_raw() local
2833 btf = ERR_PTR(-errno); in btf_load_raw()
2840 btf = ERR_PTR(-EBADF); in btf_load_raw()
2844 btf = btf__new(data, read_cnt); in btf_load_raw()
2848 return btf; in btf_load_raw()
2855 static struct btf *bpf_core_find_kernel_btf(void) in bpf_core_find_kernel_btf()
2874 struct btf *btf; in bpf_core_find_kernel_btf() local
2886 btf = btf_load_raw(path); in bpf_core_find_kernel_btf()
2888 btf = btf__parse_elf(path, NULL); in bpf_core_find_kernel_btf()
2891 path, IS_ERR(btf) ? PTR_ERR(btf) : 0); in bpf_core_find_kernel_btf()
2892 if (IS_ERR(btf)) in bpf_core_find_kernel_btf()
2895 return btf; in bpf_core_find_kernel_btf()
2914 t = btf__type_by_id(spec->btf, type_id); in bpf_core_dump_spec()
2915 s = btf__name_by_offset(spec->btf, t->name_off); in bpf_core_dump_spec()
3001 const struct btf *local_btf, in bpf_core_reloc_offset()
3002 const struct btf *targ_btf, in bpf_core_reloc_offset()
3116 struct btf *targ_btf; in bpf_core_reloc_offsets()
3138 sec_name = btf__name_by_offset(obj->btf, sec->sec_name_off); in bpf_core_reloc_offsets()
3155 err = bpf_core_reloc_offset(prog, rec, i, obj->btf, in bpf_core_reloc_offsets()
4191 btf__free(obj->btf); in bpf_object__close()
4247 struct btf *bpf_object__btf(const struct bpf_object *obj) in bpf_object__btf()
4249 return obj ? obj->btf : NULL; in bpf_object__btf()
4254 return obj->btf ? btf__fd(obj->btf) : -1; in bpf_object__btf_fd()