bpftool: Add llvm feature to "bpftool version"
authorQuentin Monnet <quentin@isovalent.com>
Tue, 25 Oct 2022 15:03:29 +0000 (16:03 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 25 Oct 2022 17:11:57 +0000 (10:11 -0700)
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 (from Makefile definitions)
with "libbfd".

Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Tested-by: Niklas Söderlund <niklas.soderlund@corigine.com>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/r/20221025150329.97371-9-quentin@isovalent.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/bpf/bpftool/Documentation/common_options.rst
tools/bpf/bpftool/main.c

index 4107a586b68b946ef825c8013219d3e6c5ef2087..05350a1aadf9067419db7debffd3f46e7dea1ea8 100644 (file)
@@ -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
index b22223df443129a313a54b75053b46283b9df06f..741e50ee0b6c743bd5151df730dc5eee21b1a3da 100644 (file)
@@ -119,6 +119,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
@@ -154,6 +159,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_bool_field(json_wtr, "bootstrap", bootstrap);
@@ -172,6 +178,7 @@ static int do_version(int argc, char **argv)
                printf("using libbpf %s\n", libbpf_version_string());
                printf("features:");
                print_feature("libbfd", has_libbfd, &nb_features);
+               print_feature("llvm", has_llvm, &nb_features);
                print_feature("libbpf_strict", !legacy_libbpf, &nb_features);
                print_feature("skeletons", has_skeletons, &nb_features);
                print_feature("bootstrap", bootstrap, &nb_features);