Re: [PATCH 00/10] bpf samples: Uses libbpf in tools/lib to do BPF operations

From: Wangnan (F)
Date: Thu Dec 17 2015 - 05:15:16 EST




On 2015/12/17 16:29, Daniel Wagner wrote:
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.

Because I have another patch in my local tree which also modifis bpf Makefile:

http://lkml.kernel.org/g/1450316632-152513-1-git-send-email-wangnan0@xxxxxxxxxx

sorry.

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

When you see this, could you please have a look at:

/home/wagi/src/linux/samples/bpf/libbpf/feature/test-*.make.output

?

This error means it can't find libelf on your platform, but it is not true obviously.



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


Could you please check whether this patch:

bpf tools: Support BPF_OBJ_PIN and BPF_OBJ_GET

is applied properly?

Thank you.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/