On Wed, Sep 25, 2019 at 12:58 AM Paul Moore <paul@xxxxxxxxxxxxxx> wrote: > From: Paul Moore <paul@xxxxxxxxxxxxxx> > > On a modern Rawhide system builds that include libbpf require libelf > as well to avoid the following linker errors: > > # cc -g -O0 -Wall -D_GNU_SOURCE -DHAVE_BPF \ > client.c ../bpf/bpf_common.c ../bpf/bpf_common.h -lbpf -o client > /usr/bin/ld: ... libbpf.so: undefined reference to `gelf_getshdr' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_rawdata' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_getscn' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_begin' > /usr/bin/ld: ... libbpf.so: undefined reference to `gelf_getrel' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_memory' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_end' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_strptr' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_nextscn' > /usr/bin/ld: ... libbpf.so: undefined reference to `gelf_getehdr' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_version' > /usr/bin/ld: ... libbpf.so: undefined reference to `elf_getdata' > /usr/bin/ld: ... libbpf.so: undefined reference to `gelf_getsym' This is a bug in libbpf. I filed a bug against the Fedora package [1] and also opened a PR [2] against the upstream repo (which is a modified mirror of the code in the kernel repo under tools/lib/bpf, where the bug is not present), which I think should fix this problem also in the Fedora builds. [1] https://bugzilla.redhat.com/show_bug.cgi?id=1755317 [2] https://github.com/libbpf/libbpf/pull/72 > > Signed-off-by: Paul Moore <paul@xxxxxxxxxxxxxx> > --- > tests/binder/Makefile | 2 +- > tests/bpf/Makefile | 2 +- > tests/fdreceive/Makefile | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/tests/binder/Makefile b/tests/binder/Makefile > index e78ad16..8f3cc28 100644 > --- a/tests/binder/Makefile > +++ b/tests/binder/Makefile > @@ -12,7 +12,7 @@ endif > > ifneq (,$(findstring -DHAVE_BPF,$(CFLAGS))) > DEPS += ../bpf/bpf_common.c ../bpf/bpf_common.h > - LDLIBS += -lbpf > + LDLIBS += -lelf -lbpf > endif > > all: $(TARGETS) > diff --git a/tests/bpf/Makefile b/tests/bpf/Makefile > index 6fb230d..7b00b41 100644 > --- a/tests/bpf/Makefile > +++ b/tests/bpf/Makefile > @@ -1,6 +1,6 @@ > TARGETS = bpf_test > DEPS = bpf_common.c bpf_common.h > -LDLIBS += -lselinux -lbpf > +LDLIBS += -lselinux -lelf -lbpf > > # export so that BPF_ENABLED entries get built correctly on local build > export CFLAGS += -DHAVE_BPF > diff --git a/tests/fdreceive/Makefile b/tests/fdreceive/Makefile > index 895f91c..cf57327 100644 > --- a/tests/fdreceive/Makefile > +++ b/tests/fdreceive/Makefile > @@ -2,7 +2,7 @@ TARGETS = client server > > ifneq (,$(findstring -DHAVE_BPF,$(CFLAGS))) > DEPS = ../bpf/bpf_common.c ../bpf/bpf_common.h > - LDLIBS += -lbpf > + LDLIBS += -lelf -lbpf > endif > > all: $(TARGETS) > -- Ondrej Mosnacek <omosnace at redhat dot com> Software Engineer, Security Technologies Red Hat, Inc.