On 11/13, Quentin Monnet wrote: > 2018-11-12 14:02 UTC-0800 ~ Jakub Kicinski <jakub.kicin...@netronome.com> > > On Mon, 12 Nov 2018 13:44:10 -0800, Stanislav Fomichev wrote: > >> Make it possible to build bpftool without libbfd. libbfd and libopcodes are > >> typically provided in dev/dbg packages (binutils-dev in debian) which we > >> usually don't have installed on the fleet machines and we'd like a way to > >> have > >> bpftool version that works without installing any additional packages. > >> 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> > > > > Seems reasonable, thanks! > > > > Acked-by: Jakub Kicinski <jakub.kicin...@netronome.com> > > > > Thanks Stanislav! > > There is a problem with this patch on some distributions, Ubuntu at least. > > Feature detection for libbfd has been used for perf before being also > used with bpftool. Since commit 280e7c48c3b8 the feature needs libz and > libiberty to be present on the system, otherwise the feature would not > compile (and be detected) on OpenSuse. > > On Ubuntu, libiberty is not needed (libbfd might be statically linked > against it, if I remember correctly?), which means that we are able to > build bpftool as long as binutils-dev has been installed, even if > libiberty-dev has not been installed. The BFD feature, in that case, > will appear as “undetected”. It is a bug. But since the Makefile does > not stop compilation in that case (another bug), in the end we're good. > > With your patch, the problem is that libbpf detection will fail on > Ubuntu if libiberty-dev is not present, even though all the necessary > libraries for using the JIT disassembler are available. And in that case > it _will_ make a difference, since the Makefile will no more compile the > libbfd-related bits. > > So I'm not against the idea, but we have to fix libbfd detection first. Yeah, libbfd feature detection looks broken on ubuntu, this patch just exercises this brokenness :-). I can take a look somewhere this week, thanks for spotting it!
I wonder, how does it work on opensuse currently if we link only against -lbfd (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/bpf/bpftool/Makefile#n56)? It might be broken everywhere... (Resent with proper formatting and without HTML). > Thanks, > Quentin