bpftool: Add libbpf's version number to "bpftool version" output
authorQuentin Monnet <quentin@isovalent.com>
Thu, 10 Feb 2022 10:42:36 +0000 (10:42 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 11 Feb 2022 05:09:47 +0000 (21:09 -0800)
To help users check what version of libbpf is being used with bpftool,
print the number along with bpftool's own version number.

Output:

    $ ./bpftool version
    ./bpftool v5.16.0
    using libbpf v0.7
    features: libbfd, libbpf_strict, skeletons

    $ ./bpftool version --json --pretty
    {
        "version": "5.16.0",
        "libbpf_version": "0.7",
        "features": {
            "libbfd": true,
            "libbpf_strict": true,
            "skeletons": true
        }
    }

Note that libbpf does not expose its patch number.

Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220210104237.11649-2-quentin@isovalent.com
tools/bpf/bpftool/Documentation/common_options.rst
tools/bpf/bpftool/main.c

index 908487b9c2adfd2f9c8470ffbfb3c3a76c29a3b3..4107a586b68b946ef825c8013219d3e6c5ef2087 100644 (file)
@@ -4,12 +4,13 @@
          Print short help message (similar to **bpftool help**).
 
 -V, --version
-         Print version number (similar to **bpftool version**), 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).
+         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).
 
 -j, --json
          Generate JSON output. For commands that cannot produce JSON, this
index 490f7bd54e4c272637b31acbe746222744660a04..0f2f8de514a495a1f31f91578ad2d1e221e776f4 100644 (file)
@@ -89,6 +89,9 @@ static int do_version(int argc, char **argv)
 
                jsonw_name(json_wtr, "version");
                jsonw_printf(json_wtr, "\"%s\"", BPFTOOL_VERSION);
+               jsonw_name(json_wtr, "libbpf_version");
+               jsonw_printf(json_wtr, "\"%d.%d\"",
+                            libbpf_major_version(), libbpf_minor_version());
 
                jsonw_name(json_wtr, "features");
                jsonw_start_object(json_wtr);   /* features */
@@ -102,6 +105,7 @@ static int do_version(int argc, char **argv)
                unsigned int nb_features = 0;
 
                printf("%s v%s\n", bin_name, BPFTOOL_VERSION);
+               printf("using libbpf %s\n", libbpf_version_string());
                printf("features:");
                if (has_libbfd) {
                        printf(" libbfd");