Lines Matching refs:strs
1409 void *hdr, *types, *strs, *strs_end, *s;
1423 strs = malloc(btf->hdr->str_len);
1424 if (!hdr || !types || !strs)
1429 memcpy(strs, btf->strs_data, btf->hdr->str_len);
1439 strs_end = strs + btf->hdr->str_len;
1440 for (off = 0, s = strs; s < strs_end; off += strlen(s) + 1, s = strs + off) {
1455 btf->strs_data = strs;
1472 free(strs);
3142 struct btf_str_ptrs *strs;
3148 strs = ctx;
3149 s = bsearch(strs->data + *str_off_ptr, strs->ptrs, strs->cnt,
3159 struct btf_str_ptrs *strs;
3165 strs = ctx;
3166 s = bsearch(strs->data + *str_off_ptr, strs->ptrs, strs->cnt,
3190 struct btf_str_ptrs strs = {
3204 if (strs.cnt + 1 > strs.cap) {
3207 strs.cap += max(strs.cnt / 2, 16U);
3208 new_ptrs = libbpf_reallocarray(strs.ptrs, strs.cap, sizeof(strs.ptrs[0]));
3213 strs.ptrs = new_ptrs;
3216 strs.ptrs[strs.cnt].str = p;
3217 strs.ptrs[strs.cnt].used = false;
3220 strs.cnt++;
3231 strs.ptrs[0].used = true;
3232 err = btf_for_each_str_off(d, btf_str_mark_as_used, &strs);
3237 qsort(strs.ptrs, strs.cnt, sizeof(strs.ptrs[0]), str_sort_by_content);
3245 grp_used = strs.ptrs[0].used;
3247 for (i = 1; i <= strs.cnt; i++) {
3249 * when i == strs.cnt, we want to skip string comparison and go
3253 if (i < strs.cnt &&
3254 !strcmp(strs.ptrs[i].str, strs.ptrs[grp_idx].str)) {
3255 grp_used = grp_used || strs.ptrs[i].used;
3266 __u32 len = strlen(strs.ptrs[grp_idx].str);
3268 memmove(p, strs.ptrs[grp_idx].str, len + 1);
3270 strs.ptrs[j].new_off = new_off;
3274 if (i < strs.cnt) {
3276 grp_used = strs.ptrs[i].used;
3286 qsort(strs.ptrs, strs.cnt, sizeof(strs.ptrs[0]), str_sort_by_offset);
3289 err = btf_for_each_str_off(d, btf_str_remap_offset, &strs);
3298 free(strs.ptrs);