Lines Matching refs:btf_ext
885 struct btf_ext **btf_ext) in btf_parse_elf() argument
954 } else if (btf_ext && strcmp(name, BTF_EXT_ELF_SEC) == 0) { in btf_parse_elf()
988 if (btf_ext && btf_ext_data) { in btf_parse_elf()
989 *btf_ext = btf_ext__new(btf_ext_data->d_buf, btf_ext_data->d_size); in btf_parse_elf()
990 err = libbpf_get_error(*btf_ext); in btf_parse_elf()
993 } else if (btf_ext) { in btf_parse_elf()
994 *btf_ext = NULL; in btf_parse_elf()
1004 if (btf_ext) in btf_parse_elf()
1005 btf_ext__free(*btf_ext); in btf_parse_elf()
1011 struct btf *btf__parse_elf(const char *path, struct btf_ext **btf_ext) in btf__parse_elf() argument
1013 return libbpf_ptr(btf_parse_elf(path, NULL, btf_ext)); in btf__parse_elf()
1094 static struct btf *btf_parse(const char *path, struct btf *base_btf, struct btf_ext **btf_ext) in btf_parse() argument
1099 if (btf_ext) in btf_parse()
1100 *btf_ext = NULL; in btf_parse()
1108 return btf_parse_elf(path, base_btf, btf_ext); in btf_parse()
1111 struct btf *btf__parse(const char *path, struct btf_ext **btf_ext) in btf__parse() argument
1113 return libbpf_ptr(btf_parse(path, NULL, btf_ext)); in btf__parse()
2542 static int btf_ext_setup_info(struct btf_ext *btf_ext, in btf_ext_setup_info() argument
2560 info = btf_ext->data + btf_ext->hdr->hdr_len + ext_sec->off; in btf_ext_setup_info()
2563 if (btf_ext->data + btf_ext->data_size < info + ext_sec->len) { in btf_ext_setup_info()
2631 static int btf_ext_setup_func_info(struct btf_ext *btf_ext) in btf_ext_setup_func_info() argument
2634 .off = btf_ext->hdr->func_info_off, in btf_ext_setup_func_info()
2635 .len = btf_ext->hdr->func_info_len, in btf_ext_setup_func_info()
2637 .ext_info = &btf_ext->func_info, in btf_ext_setup_func_info()
2641 return btf_ext_setup_info(btf_ext, ¶m); in btf_ext_setup_func_info()
2644 static int btf_ext_setup_line_info(struct btf_ext *btf_ext) in btf_ext_setup_line_info() argument
2647 .off = btf_ext->hdr->line_info_off, in btf_ext_setup_line_info()
2648 .len = btf_ext->hdr->line_info_len, in btf_ext_setup_line_info()
2650 .ext_info = &btf_ext->line_info, in btf_ext_setup_line_info()
2654 return btf_ext_setup_info(btf_ext, ¶m); in btf_ext_setup_line_info()
2657 static int btf_ext_setup_core_relos(struct btf_ext *btf_ext) in btf_ext_setup_core_relos() argument
2660 .off = btf_ext->hdr->core_relo_off, in btf_ext_setup_core_relos()
2661 .len = btf_ext->hdr->core_relo_len, in btf_ext_setup_core_relos()
2663 .ext_info = &btf_ext->core_relo_info, in btf_ext_setup_core_relos()
2667 return btf_ext_setup_info(btf_ext, ¶m); in btf_ext_setup_core_relos()
2706 void btf_ext__free(struct btf_ext *btf_ext) in btf_ext__free() argument
2708 if (IS_ERR_OR_NULL(btf_ext)) in btf_ext__free()
2710 free(btf_ext->data); in btf_ext__free()
2711 free(btf_ext); in btf_ext__free()
2714 struct btf_ext *btf_ext__new(__u8 *data, __u32 size) in btf_ext__new()
2716 struct btf_ext *btf_ext; in btf_ext__new() local
2723 btf_ext = calloc(1, sizeof(struct btf_ext)); in btf_ext__new()
2724 if (!btf_ext) in btf_ext__new()
2727 btf_ext->data_size = size; in btf_ext__new()
2728 btf_ext->data = malloc(size); in btf_ext__new()
2729 if (!btf_ext->data) { in btf_ext__new()
2733 memcpy(btf_ext->data, data, size); in btf_ext__new()
2735 if (btf_ext->hdr->hdr_len < offsetofend(struct btf_ext_header, line_info_len)) { in btf_ext__new()
2740 err = btf_ext_setup_func_info(btf_ext); in btf_ext__new()
2744 err = btf_ext_setup_line_info(btf_ext); in btf_ext__new()
2748 if (btf_ext->hdr->hdr_len < offsetofend(struct btf_ext_header, core_relo_len)) { in btf_ext__new()
2753 err = btf_ext_setup_core_relos(btf_ext); in btf_ext__new()
2759 btf_ext__free(btf_ext); in btf_ext__new()
2763 return btf_ext; in btf_ext__new()
2766 const void *btf_ext__get_raw_data(const struct btf_ext *btf_ext, __u32 *size) in btf_ext__get_raw_data() argument
2768 *size = btf_ext->data_size; in btf_ext__get_raw_data()
2769 return btf_ext->data; in btf_ext__get_raw_data()
2820 const struct btf_ext *btf_ext, in btf_ext__reloc_func_info() argument
2824 return btf_ext_reloc_info(btf, &btf_ext->func_info, sec_name, in btf_ext__reloc_func_info()
2829 const struct btf_ext *btf_ext, in btf_ext__reloc_line_info() argument
2833 return btf_ext_reloc_info(btf, &btf_ext->line_info, sec_name, in btf_ext__reloc_line_info()
2837 __u32 btf_ext__func_info_rec_size(const struct btf_ext *btf_ext) in btf_ext__func_info_rec_size() argument
2839 return btf_ext->func_info.rec_size; in btf_ext__func_info_rec_size()
2842 __u32 btf_ext__line_info_rec_size(const struct btf_ext *btf_ext) in btf_ext__line_info_rec_size() argument
2844 return btf_ext->line_info.rec_size; in btf_ext__line_info_rec_size()
2849 static struct btf_dedup *btf_dedup_new(struct btf *btf, struct btf_ext *btf_ext,
2997 int btf__dedup(struct btf *btf, struct btf_ext *btf_ext, in btf__dedup() argument
3000 struct btf_dedup *d = btf_dedup_new(btf, btf_ext, opts); in btf__dedup()
3064 struct btf_ext *btf_ext; member
3166 static struct btf_dedup *btf_dedup_new(struct btf *btf, struct btf_ext *btf_ext, in btf_dedup_new() argument
3182 d->btf_ext = btf_ext; in btf_dedup_new()
3242 if (!d->btf_ext) in btf_for_each_str_off()
3245 r = btf_ext_visit_str_offs(d->btf_ext, fn, ctx); in btf_for_each_str_off()
4509 if (!d->btf_ext) in btf_dedup_remap_types()
4512 r = btf_ext_visit_type_ids(d->btf_ext, btf_dedup_remap_type_id, d); in btf_dedup_remap_types()
4697 int btf_ext_visit_type_ids(struct btf_ext *btf_ext, type_id_visit_fn visit, void *ctx) in btf_ext_visit_type_ids() argument
4703 seg = &btf_ext->func_info; in btf_ext_visit_type_ids()
4714 seg = &btf_ext->core_relo_info; in btf_ext_visit_type_ids()
4728 int btf_ext_visit_str_offs(struct btf_ext *btf_ext, str_off_visit_fn visit, void *ctx) in btf_ext_visit_str_offs() argument
4734 seg = &btf_ext->func_info; in btf_ext_visit_str_offs()
4741 seg = &btf_ext->line_info; in btf_ext_visit_str_offs()
4759 seg = &btf_ext->core_relo_info; in btf_ext_visit_str_offs()