On 7/31/21 3:26 AM, Andrii Nakryiko wrote: > On Fri, Jul 30, 2021 at 4:40 AM Hengqi Chen <hengqi.chen@xxxxxxxxx> wrote: >> >> Add two new APIs: btf__load_vmlinux_btf and btf__load_module_btf. >> btf__load_vmlinux_btf is just an alias to the existing API named >> libbpf_find_kernel_btf, rename to be more precisely and consistent >> with existing BTF APIs. btf__load_module_btf can be used to load >> module BTF, add it for completeness. These two APIs are useful for >> implementing tracing tools and introspection tools. This is part >> of the effort towards libbpf 1.0. [1] >> >> [1] https://github.com/libbpf/libbpf/issues/280 > > I changed this to > > [0] Closes: https://github.com/libbpf/libbpf/issues/280 > > which will close an associated Github issue when we sync sources to > Github next time. Let's see how this works in practice. > >> >> Signed-off-by: Hengqi Chen <hengqi.chen@xxxxxxxxx> >> --- > > Thanks, applied to bpf-next. But please follow up with a selftest that > would utilize this new module BTF API. It's good to have all APIs > exercised regularly. Look at test_progs. > Thanks, will do. >> tools/lib/bpf/btf.c | 15 ++++++++++++++- >> tools/lib/bpf/btf.h | 6 ++++-- >> tools/lib/bpf/libbpf.c | 4 ++-- >> tools/lib/bpf/libbpf.map | 2 ++ >> 4 files changed, 22 insertions(+), 5 deletions(-) >> >> diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c >> index cafa4f6bd9b1..56e84583e283 100644 >> --- a/tools/lib/bpf/btf.c >> +++ b/tools/lib/bpf/btf.c >> @@ -4036,7 +4036,7 @@ static void btf_dedup_merge_hypot_map(struct btf_dedup *d) >> */ >> if (d->hypot_adjust_canon) >> continue; >> - >> + >> if (t_kind == BTF_KIND_FWD && c_kind != BTF_KIND_FWD) >> d->map[t_id] = c_id; >> >> @@ -4410,6 +4410,11 @@ static int btf_dedup_remap_types(struct btf_dedup *d) >> * data out of it to use for target BTF. >> */ >> struct btf *libbpf_find_kernel_btf(void) > > I switched this to __attribute__((alias("btf__load_vmlinux_btf"))); to > match what Quentin did recently. Also moved comment above to be next > to btf__load_vmlinux_btf. > OK, the alias attribute look nicer. >> +{ >> + return btf__load_vmlinux_btf(); >> +} >> + >> +struct btf *btf__load_vmlinux_btf(void) >> { >> struct { >> const char *path_fmt; > > [...] > >> diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map >> index 5aca3686ca5e..a2f471950213 100644 >> --- a/tools/lib/bpf/libbpf.map >> +++ b/tools/lib/bpf/libbpf.map >> @@ -380,4 +380,6 @@ LIBBPF_0.5.0 { >> btf__load_into_kernel; >> btf_dump__dump_type_data; >> libbpf_set_strict_mode; >> + btf__load_vmlinux_btf; >> + btf__load_module_btf; > > This list needs to be alphabetically sorted. I'll fix it up while > applying, but please remember it for the future. > Yeah, will keep this in mind. >> } LIBBPF_0.4.0; >> -- >> 2.25.1 >>