OSDN Git Service

libbpf: Treat STV_INTERNAL same as STV_HIDDEN for functions
authorAndrii Nakryiko <andrii@kernel.org>
Fri, 7 May 2021 05:41:18 +0000 (22:41 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 11 May 2021 22:07:17 +0000 (15:07 -0700)
Do the same global -> static BTF update for global functions with STV_INTERNAL
visibility to turn on static BPF verification mode.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210507054119.270888-7-andrii@kernel.org
tools/lib/bpf/libbpf.c

index e2a3cf4..b8cf93f 100644 (file)
@@ -700,13 +700,14 @@ bpf_object__add_programs(struct bpf_object *obj, Elf_Data *sec_data,
                if (err)
                        return err;
 
-               /* if function is a global/weak symbol, but has hidden
-                * visibility (STV_HIDDEN), mark its BTF FUNC as static to
-                * enable more permissive BPF verification mode with more
-                * outside context available to BPF verifier
+               /* if function is a global/weak symbol, but has restricted
+                * (STV_HIDDEN or STV_INTERNAL) visibility, mark its BTF FUNC
+                * as static to enable more permissive BPF verification mode
+                * with more outside context available to BPF verifier
                 */
                if (GELF_ST_BIND(sym.st_info) != STB_LOCAL
-                   && GELF_ST_VISIBILITY(sym.st_other) == STV_HIDDEN)
+                   && (GELF_ST_VISIBILITY(sym.st_other) == STV_HIDDEN
+                       || GELF_ST_VISIBILITY(sym.st_other) == STV_INTERNAL))
                        prog->mark_btf_static = true;
 
                nr_progs++;