Re: [PATCH] perf: bpf: Fix build breakage due to libbpf

From: Wangnan (F)
Date: Mon Dec 14 2015 - 06:54:28 EST


Hi Naveen,

On 2015/12/14 18:50, Naveen N. Rao wrote:
perf build is currently (v4.4-rc5) broken on powerpc:

bpf.c:28:4: error: #error __NR_bpf not defined. libbpf does not support
your arch.
# error __NR_bpf not defined. libbpf does not support your arch.
^

Fix this by including tools/perf/config/Makefile.arch for the proper
$ARCH macro. While at it, remove redundant LP64 macro definition.

Signed-off-by: Naveen N. Rao <naveen.n.rao@xxxxxxxxxxxxxxxxxx>
---
tools/lib/bpf/Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
index 636e3dd..050e0e8 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -31,7 +31,8 @@ INSTALL = install
DESTDIR ?=
DESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
-LP64 := $(shell echo __LP64__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1)
+include $(srctree)/tools/perf/config/Makefile.arch
+
ifeq ($(LP64), 1)
libdir_relative = lib64
else

Are you doing cross compiling? In this case you should provide an 'ARCH' to make
through cmdline. For example, this is how yocto help me build perf on
aarch64:

$ make -C /patch/to/kernel/tools/perf O=/path/to/output \
CROSS_COMPILE=aarch64-oe-linux- ARCH=arm64 \
CC=aarch64-oe-linux-gcc --sysroot=... AR=aarch64-oe-linux-ar ...

If you include Makefile.arch, I think you are seeking for a 'uname -m' result,
then you are not doing cross compiling, right? In this case what you need is providing
a __NR_bpf entry for your platform, because in some cases that value is overrided because
we have

$ find ./tools/ -name "unistd*"
./tools/perf/util/include/asm/unistd_64.h
./tools/perf/util/include/asm/unistd_32.h

You can find the reason of these two files through: eae7a755ee81129370c8f555b0d5672e6673735d

I posted a patch by replying this mail. I think you can find it through [1] soon.
I don't have PPC environment to check it. Could you please help me check this patch
in your environment?

[1] http://lkml.kernel.org/g/1450092932-123588-1-git-send-email-wangnan0@xxxxxxxxxx

--
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/