From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754960AbbLQI3W (ORCPT ); Thu, 17 Dec 2015 03:29:22 -0500 Received: from mail.bmw-carit.de ([62.245.222.98]:53596 "EHLO mail.bmw-carit.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752971AbbLQI3V (ORCPT ); Thu, 17 Dec 2015 03:29:21 -0500 X-CTCH-RefID: str=0001.0A0C0204.5672725A.0043,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0 Subject: Re: [PATCH 00/10] bpf samples: Uses libbpf in tools/lib to do BPF operations To: "Wangnan (F)" , , , , , , , , , , , References: <1450329794-161948-1-git-send-email-wangnan0@huawei.com> <56725868.6080902@bmw-carit.de> <56725B67.2010309@huawei.com> <56725E59.6090507@bmw-carit.de> CC: , From: Daniel Wagner X-Enigmail-Draft-Status: N1110 Message-ID: <56727259.80002@bmw-carit.de> Date: Thu, 17 Dec 2015 09:29:13 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <56725E59.6090507@bmw-carit.de> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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