On 12/17/2015 08:03 AM, Daniel Wagner wrote: > On 12/17/2015 07:51 AM, Wangnan (F) wrote: >> On 2015/12/17 14:38, Daniel Wagner wrote: >>> On 12/17/2015 06:23 AM, Wang Nan wrote: >>>> Since we already have libbpf in tools/lib, we don't need to maintain >>>> another bpf loader and operations library in samples/bpf. >>>> >>>> In patchset: >>>> >>>> Patch 1/10 - 7/10 improves libbpf, add missing features to support >>>> samples, >>>> >>>> Patch 8/10 adds utils.[ch], which creates similar API like old >>>> bpf_load.c and libbpf.c. >>>> >>>> Patch 9/10 replace all sampels to use API provides by utils.[ch] and >>>> libbpf. >>>> >>>> Patch 10/10 removes unneeded files. >>> Which tree did you use for your patches? I tried to apply them against >>> mainline and net-next which didn't really work out. >> >> These patches based on Arnaldo's 'perf/core' because of those libbpf >> changes. > > Okay, I'll try with this one.
I applied those patches on top of 5c560cfcf1c0 ("tools subcmd: Rename subcmd header include guards") Patch number 2 didn't apply cleanly. After fixing this manually I was able to continue to the build step: $ make samples/bpf/ CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh make -C /home/wagi/src/linux/tools/lib/bpf O=/home/wagi/src/linux/samples/bpf/libbpf CFLAGS= LDFLAGS= V=1 /home/wagi/src/linux/samples/bpf/libbpf/libbpf.a No libelf found Makefile:203: recipe for target 'elfdep' failed make[2]: *** [elfdep] Error 255 samples/bpf/Makefile:10: recipe for target 'samples/bpf/libbpf/libbpf.a' failed make[1]: *** [samples/bpf/libbpf/libbpf.a] Error 2 Makefile:1550: recipe for target 'samples/bpf/' failed make: *** [samples/bpf/] Error 2 Executing the above command line by myself in order to figure out what's going on ended in this mess: $ make -C /home/wagi/src/linux/tools/lib/bpf O=/home/wagi/src/linux/samples/bpf/libbpf CFLAGS= LDFLAGS= V=1 /home/wagi/src/linux/samples/bpf/libbpf/libbpf.a make: Entering directory '/home/wagi/src/linux/tools/lib/bpf' Auto-detecting system features: ... libelf: [ on ] ... bpf: [ on ] [...] samples/bpf/fds_example.c: In function ‘bpf_do_map’: samples/bpf/fds_example.c:78:9: warning: implicit declaration of function ‘bpf_pin_object’ [-Wimplicit-function-declaration] ret = bpf_pin_object(fd, file); ^ samples/bpf/fds_example.c:82:8: warning: implicit declaration of function ‘bpf_get_pinned_object’ [-Wimplicit-function-declaration] fd = bpf_get_pinned_object(file); ^ gcc -Lsamples/bpf/libbpf -o samples/bpf/fds_example samples/bpf/utils.o samples/bpf/fds_example.o -lelf -lbpf samples/bpf/fds_example.o: In function `main': fds_example.c:(.text.startup+0x20e): undefined reference to `bpf_pin_object' fds_example.c:(.text.startup+0x2b0): undefined reference to `bpf_pin_object' fds_example.c:(.text.startup+0x2f3): undefined reference to `bpf_get_pinned_object' fds_example.c:(.text.startup+0x344): undefined reference to `bpf_get_pinned_object' collect2: error: ld returned 1 exit status scripts/Makefile.host:100: recipe for target 'samples/bpf/fds_example' failed make[1]: *** [samples/bpf/fds_example] Error 1 Makefile:1550: recipe for target 'samples/bpf/' failed make: *** [samples/bpf/] Error 2 [wagi@handman linux (bpf-test)]$ make samples/bpf/ CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh HOSTLD samples/bpf/fds_example samples/bpf/fds_example.o: In function `main': fds_example.c:(.text.startup+0x20e): undefined reference to `bpf_pin_object' fds_example.c:(.text.startup+0x2b0): undefined reference to `bpf_pin_object' fds_example.c:(.text.startup+0x2f3): undefined reference to `bpf_get_pinned_object' fds_example.c:(.text.startup+0x344): undefined reference to `bpf_get_pinned_object' collect2: error: ld returned 1 exit status What is the canonical why to build the samples? I must doing something really stupid I guess. cheers, daniel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/