aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Maguire <[email protected]>2025-05-19 16:59:34 +0000
committerAndrii Nakryiko <[email protected]>2025-05-20 23:22:30 +0000
commit4e29128a9acec2a622734844bedee013e2901bdf (patch)
treee3a6e524b8feaac031a6d7791eb4a7415be8deba
parentselftests/bpf: Remove unnecessary link dependencies (diff)
downloadkernel-4e29128a9acec2a622734844bedee013e2901bdf.tar.gz
kernel-4e29128a9acec2a622734844bedee013e2901bdf.zip
libbpf/btf: Fix string handling to support multi-split BTF
libbpf handling of split BTF has been written largely with the assumption that multiple splits are possible, i.e. split BTF on top of split BTF on top of base BTF. One area where this does not quite work is string handling in split BTF; the start string offset should be the base BTF string section length + the base BTF string offset. This worked in the past because for a single split BTF with base the start string offset was always 0. Signed-off-by: Alan Maguire <[email protected]> Signed-off-by: Andrii Nakryiko <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
-rw-r--r--tools/lib/bpf/btf.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index f18d7e6a453c..8d0d0b645a75 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -996,7 +996,7 @@ static struct btf *btf_new_empty(struct btf *base_btf)
if (base_btf) {
btf->base_btf = base_btf;
btf->start_id = btf__type_cnt(base_btf);
- btf->start_str_off = base_btf->hdr->str_len;
+ btf->start_str_off = base_btf->hdr->str_len + base_btf->start_str_off;
btf->swapped_endian = base_btf->swapped_endian;
}