aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWang Nan <wangnan0@huawei.com>2016-01-11 08:47:57 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-01-11 17:22:20 -0500
commit8f9e05fb298f16c0cda2e7e78b603331a79f9c10 (patch)
tree4da7ca69cedbe6aa09a1d17fb5248ecd482b94a2
parent3167eea27b27b29d375ee6b34dd83035c04d5da8 (diff)
perf tools: Fix PowerPC native building
Checks BPF syscall number, turn off libbpf building on platform doesn't correctly support sys_bpf instead of blocking compiling. Reported-and-Tested-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Signed-off-by: Wang Nan <wangnan0@huawei.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1452520124-2073-7-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/build/feature/test-bpf.c20
-rw-r--r--tools/lib/bpf/bpf.c4
2 files changed, 21 insertions, 3 deletions
diff --git a/tools/build/feature/test-bpf.c b/tools/build/feature/test-bpf.c
index 062bac811af9..b389026839b9 100644
--- a/tools/build/feature/test-bpf.c
+++ b/tools/build/feature/test-bpf.c
@@ -1,9 +1,23 @@
1#include <asm/unistd.h>
1#include <linux/bpf.h> 2#include <linux/bpf.h>
3#include <unistd.h>
4
5#ifndef __NR_bpf
6# if defined(__i386__)
7# define __NR_bpf 357
8# elif defined(__x86_64__)
9# define __NR_bpf 321
10# elif defined(__aarch64__)
11# define __NR_bpf 280
12# error __NR_bpf not defined. libbpf does not support your arch.
13# endif
14#endif
2 15
3int main(void) 16int main(void)
4{ 17{
5 union bpf_attr attr; 18 union bpf_attr attr;
6 19
20 /* Check fields in attr */
7 attr.prog_type = BPF_PROG_TYPE_KPROBE; 21 attr.prog_type = BPF_PROG_TYPE_KPROBE;
8 attr.insn_cnt = 0; 22 attr.insn_cnt = 0;
9 attr.insns = 0; 23 attr.insns = 0;
@@ -14,5 +28,9 @@ int main(void)
14 attr.kern_version = 0; 28 attr.kern_version = 0;
15 29
16 attr = attr; 30 attr = attr;
17 return 0; 31 /*
32 * Test existence of __NR_bpf and BPF_PROG_LOAD.
33 * This call should fail if we run the testcase.
34 */
35 return syscall(__NR_bpf, BPF_PROG_LOAD, attr, sizeof(attr));
18} 36}
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
index 5bdc6eab6852..1f91cc941b7c 100644
--- a/tools/lib/bpf/bpf.c
+++ b/tools/lib/bpf/bpf.c
@@ -14,8 +14,8 @@
14#include "bpf.h" 14#include "bpf.h"
15 15
16/* 16/*
17 * When building perf, unistd.h is override. Define __NR_bpf is 17 * When building perf, unistd.h is overrided. __NR_bpf is
18 * required to be defined. 18 * required to be defined explicitly.
19 */ 19 */
20#ifndef __NR_bpf 20#ifndef __NR_bpf
21# if defined(__i386__) 21# if defined(__i386__)