summaryrefslogtreecommitdiffstats
path: root/tools/bpf
diff options
context:
space:
mode:
authorAlan Maguire <alan.maguire@oracle.com>2024-06-13 11:50:11 +0200
committerAndrii Nakryiko <andrii@kernel.org>2024-06-17 23:38:31 +0200
commit6ba77385f386053cea2a1cad33717de74a26db4e (patch)
tree9437b582fa99975de476fa3fec0f3ca0f395a5b9 /tools/bpf
parentlibbpf: Make btf_parse_elf process .BTF.base transparently (diff)
downloadlinux-6ba77385f386053cea2a1cad33717de74a26db4e.tar.xz
linux-6ba77385f386053cea2a1cad33717de74a26db4e.zip
resolve_btfids: Handle presence of .BTF.base section
Now that btf_parse_elf() handles .BTF.base section presence, we need to ensure that resolve_btfids uses .BTF.base when present rather than the vmlinux base BTF passed in via the -B option. Detect .BTF.base section presence and unset the base BTF path to ensure that BTF ELF parsing will do the right thing. Signed-off-by: Alan Maguire <alan.maguire@oracle.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Reviewed-by: Eduard Zingerman <eddyz87@gmail.com> Link: https://lore.kernel.org/bpf/20240613095014.357981-7-alan.maguire@oracle.com
Diffstat (limited to 'tools/bpf')
-rw-r--r--tools/bpf/resolve_btfids/main.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c
index af393c7dee1f..936ef95c3d32 100644
--- a/tools/bpf/resolve_btfids/main.c
+++ b/tools/bpf/resolve_btfids/main.c
@@ -409,6 +409,14 @@ static int elf_collect(struct object *obj)
obj->efile.idlist = data;
obj->efile.idlist_shndx = idx;
obj->efile.idlist_addr = sh.sh_addr;
+ } else if (!strcmp(name, BTF_BASE_ELF_SEC)) {
+ /* If a .BTF.base section is found, do not resolve
+ * BTF ids relative to vmlinux; resolve relative
+ * to the .BTF.base section instead. btf__parse_split()
+ * will take care of this once the base BTF it is
+ * passed is NULL.
+ */
+ obj->base_btf_path = NULL;
}
if (compressed_section_fix(elf, scn, &sh))