OSDN Git Service

tools/resolve_btfids: Warn when having multiple IDs for single type
authorJiri Olsa <jolsa@kernel.org>
Tue, 5 Jan 2021 23:42:19 +0000 (00:42 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 6 Jan 2021 02:11:55 +0000 (18:11 -0800)
commit67208692802ce3cacfa00fe586dc0cb1bef0a51c
tree3d5c98459529fef58f07a5772a340c874ceaf8fa
parent04901aab40ea3779f6fc6383ef74d8e130e817bf
tools/resolve_btfids: Warn when having multiple IDs for single type

The kernel image can contain multiple types (structs/unions)
with the same name. This causes distinct type hierarchies in
BTF data and makes resolve_btfids fail with error like:

  BTFIDS  vmlinux
FAILED unresolved symbol udp6_sock

as reported by Qais Yousef [1].

This change adds warning when multiple types of the same name
are detected:

  BTFIDS  vmlinux
WARN: multiple IDs found for 'file': 526, 113351 - using 526
WARN: multiple IDs found for 'sk_buff': 2744, 113958 - using 2744

We keep the lower ID for the given type instance and let the
build continue.

Also changing the 'nr' variable name to 'nr_types' to avoid confusion.

[1] https://lore.kernel.org/lkml/20201229151352.6hzmjvu3qh6p2qgg@e107158-lin/

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210105234219.970039-1-jolsa@kernel.org
tools/bpf/resolve_btfids/main.c