From 8df8d67f6369cf3f8f7fe73a0b37788bac9b705f Mon Sep 17 00:00:00 2001 From: Alan Maguire Date: Mon, 19 May 2025 17:59:34 +0100 Subject: [PATCH] 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 Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/20250519165935.261614-2-alan.maguire@oracle.com --- src/btf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/btf.c b/src/btf.c index f18d7e6..8d0d0b6 100644 --- a/src/btf.c +++ b/src/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; }