On Thu, Oct 20, 2022 at 5:37 AM Quentin Monnet <quentin@xxxxxxxxxxxxx> wrote: > > Similarly to "libbfd", add a "llvm" feature to the output of command > "bpftool version" to indicate that LLVM is used for disassembling JIT-ed > programs. This feature is mutually exclusive with "libbfd". > > Signed-off-by: Quentin Monnet <quentin@xxxxxxxxxxxxx> > Tested-by: Niklas Söderlund <niklas.soderlund@xxxxxxxxxxxx> > Acked-by: Yonghong Song <yhs@xxxxxx> > --- > Note: There's a conflict on this change with the patch at > https://lore.kernel.org/bpf/20221020100332.69563-1-quentin@xxxxxxxxxxxxx/ > Supposiing both are accepted, I will of course rebase one or the other, > accordingly. > --- > tools/bpf/bpftool/Documentation/common_options.rst | 8 ++++---- > tools/bpf/bpftool/main.c | 10 ++++++++++ > 2 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/tools/bpf/bpftool/Documentation/common_options.rst b/tools/bpf/bpftool/Documentation/common_options.rst > index 4107a586b68b..05350a1aadf9 100644 > --- a/tools/bpf/bpftool/Documentation/common_options.rst > +++ b/tools/bpf/bpftool/Documentation/common_options.rst > @@ -7,10 +7,10 @@ > Print bpftool's version number (similar to **bpftool version**), the > number of the libbpf version in use, and optional features that were > included when bpftool was compiled. Optional features include linking > - against libbfd to provide the disassembler for JIT-ted programs > - (**bpftool prog dump jited**) and usage of BPF skeletons (some > - features like **bpftool prog profile** or showing pids associated to > - BPF objects may rely on it). > + against LLVM or libbfd to provide the disassembler for JIT-ted > + programs (**bpftool prog dump jited**) and usage of BPF skeletons > + (some features like **bpftool prog profile** or showing pids > + associated to BPF objects may rely on it). > > -j, --json > Generate JSON output. For commands that cannot produce JSON, this > diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c > index ccd7457f92bf..7e06ca2c5d42 100644 > --- a/tools/bpf/bpftool/main.c > +++ b/tools/bpf/bpftool/main.c > @@ -89,6 +89,11 @@ static int do_version(int argc, char **argv) > #else > const bool has_libbfd = false; > #endif > +#ifdef HAVE_LLVM_SUPPORT > + const bool has_llvm = true; > +#else > + const bool has_llvm = false; > +#endif > #ifdef BPFTOOL_WITHOUT_SKELETONS > const bool has_skeletons = false; > #else > @@ -112,6 +117,7 @@ static int do_version(int argc, char **argv) > jsonw_name(json_wtr, "features"); > jsonw_start_object(json_wtr); /* features */ > jsonw_bool_field(json_wtr, "libbfd", has_libbfd); > + jsonw_bool_field(json_wtr, "llvm", has_llvm); > jsonw_bool_field(json_wtr, "libbpf_strict", !legacy_libbpf); > jsonw_bool_field(json_wtr, "skeletons", has_skeletons); > jsonw_end_object(json_wtr); /* features */ > @@ -132,6 +138,10 @@ static int do_version(int argc, char **argv) > printf(" libbfd"); > nb_features++; > } > + if (has_llvm) { > + printf(" llvm"); > + nb_features++; > + } > if (!legacy_libbpf) { completely unrelated to your patch set, but we don't have legacy libbpf anymore, right? let's clean this part up (separately from this patch set, of course)? > printf("%s libbpf_strict", nb_features++ ? "," : ""); > nb_features++; > -- > 2.34.1 >