2022-10-21 15:38 UTC-0700 ~ Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> > 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)? Yes agreed, this and the related warning in prog.c. And cleaning up all the libbpf_get_error() too. I'll work on this when I find some time. Thanks, Quentin