On 11/12, Jakub Kicinski wrote: > On Mon, 12 Nov 2018 10:53:28 -0800, Stanislav Fomichev wrote: > > Make it possible to build bpftool without libbfd. This excludes support for > > disassembling jit-ted code and prints an error if the user tries to use > > these features. > > > > Tested by: > > cat > FEATURES_DUMP.bpftool <<EOF > > feature-libbfd=0 > > feature-disassembler-four-args=1 > > feature-reallocarray=0 > > feature-libelf=1 > > feature-libelf-mmap=1 > > feature-bpf=1 > > EOF > > FEATURES_DUMP=$PWD/FEATURES_DUMP.bpftool make > > ldd bpftool | grep libbfd > > > > Signed-off-by: Stanislav Fomichev <s...@google.com> > > Would you mind spelling out the motivation? Ack, will do in v2 commit message. tldr - some fleet machines don't have dev/dbg stuff installed; would like an option to have bpftool that works everywhere for introspection.
> > diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h > > index 61d82020af58..ec1bc2ae3c71 100644 > > --- a/tools/bpf/bpftool/main.h > > +++ b/tools/bpf/bpftool/main.h > > @@ -147,8 +147,19 @@ int prog_parse_fd(int *argc, char ***argv); > > int map_parse_fd(int *argc, char ***argv); > > int map_parse_fd_and_info(int *argc, char ***argv, void *info, __u32 > > *info_len); > > > > +#ifdef HAVE_LIBBFD_SUPPORT > > void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes, > > const char *arch, const char *disassembler_options); > > +void disasm_init(void); > > +#else > > +static inline > > +void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes, > > + const char *arch, const char *disassembler_options) > > +{ > > + p_err("No libbfd support"); > > +} > > I think an error per instruction is a bit much, could we make sure we > error out earlier? I can return int from disasm_print_insn as an indication to stop/continue. Let me know if you have better ideas, will post v2 later today. > > +static inline void disasm_init(void) {} > > +#endif > > void print_data_json(uint8_t *data, size_t len); > > void print_hex_data_json(uint8_t *data, size_t len); > > Otherwise LGTM. Thanks!