Commit 08b8191b authored by Quentin Monnet's avatar Quentin Monnet Committed by Alexei Starovoitov
Browse files

bpftool: Add llvm feature to "bpftool version"



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: default avatarQuentin Monnet <quentin@isovalent.com>
Tested-by: default avatarNiklas Söderlund <niklas.soderlund@corigine.com>
Acked-by: default avatarYonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/r/20221025150329.97371-9-quentin@isovalent.com


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent ce4f6608
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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);