Commit 61fce969 authored by Quentin Monnet's avatar Quentin Monnet Committed by Andrii Nakryiko
Browse files

bpftool: Add libbpf's version number to "bpftool version" output



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: default avatarQuentin Monnet <quentin@isovalent.com>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220210104237.11649-2-quentin@isovalent.com
parent 4cc0991a
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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");