summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/tests/Build9
-rw-r--r--tools/perf/tests/bpf-script-test-kbuild.c21
-rw-r--r--tools/perf/tests/llvm.c4
-rw-r--r--tools/perf/tests/llvm.h2
4 files changed, 35 insertions, 1 deletions
diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build
index 6c095b3d92a9..a47b21193fb2 100644
--- a/tools/perf/tests/Build
+++ b/tools/perf/tests/Build
@@ -31,7 +31,7 @@ perf-y += sample-parsing.o
31perf-y += parse-no-sample-id-all.o 31perf-y += parse-no-sample-id-all.o
32perf-y += kmod-path.o 32perf-y += kmod-path.o
33perf-y += thread-map.o 33perf-y += thread-map.o
34perf-y += llvm.o llvm-src-base.o 34perf-y += llvm.o llvm-src-base.o llvm-src-kbuild.o
35perf-y += topology.o 35perf-y += topology.o
36 36
37$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c 37$(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c
@@ -41,6 +41,13 @@ $(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c
41 $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@ 41 $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@
42 $(Q)echo ';' >> $@ 42 $(Q)echo ';' >> $@
43 43
44$(OUTPUT)tests/llvm-src-kbuild.c: tests/bpf-script-test-kbuild.c
45 $(call rule_mkdir)
46 $(Q)echo '#include <tests/llvm.h>' > $@
47 $(Q)echo 'const char test_llvm__bpf_test_kbuild_prog[] =' >> $@
48 $(Q)sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/g' $< >> $@
49 $(Q)echo ';' >> $@
50
44ifeq ($(ARCH),$(filter $(ARCH),x86 arm arm64)) 51ifeq ($(ARCH),$(filter $(ARCH),x86 arm arm64))
45perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o 52perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o
46endif 53endif
diff --git a/tools/perf/tests/bpf-script-test-kbuild.c b/tools/perf/tests/bpf-script-test-kbuild.c
new file mode 100644
index 000000000000..3626924740d8
--- /dev/null
+++ b/tools/perf/tests/bpf-script-test-kbuild.c
@@ -0,0 +1,21 @@
1/*
2 * bpf-script-test-kbuild.c
3 * Test include from kernel header
4 */
5#ifndef LINUX_VERSION_CODE
6# error Need LINUX_VERSION_CODE
7# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig'
8#endif
9#define SEC(NAME) __attribute__((section(NAME), used))
10
11#include <uapi/linux/fs.h>
12#include <uapi/asm/ptrace.h>
13
14SEC("func=vfs_llseek")
15int bpf_func__vfs_llseek(void *ctx)
16{
17 return 0;
18}
19
20char _license[] SEC("license") = "GPL";
21int _version SEC("version") = LINUX_VERSION_CODE;
diff --git a/tools/perf/tests/llvm.c b/tools/perf/tests/llvm.c
index 05683c5f183e..bc4cf507cde5 100644
--- a/tools/perf/tests/llvm.c
+++ b/tools/perf/tests/llvm.c
@@ -40,6 +40,10 @@ static struct {
40 .source = test_llvm__bpf_base_prog, 40 .source = test_llvm__bpf_base_prog,
41 .desc = "Basic BPF llvm compiling test", 41 .desc = "Basic BPF llvm compiling test",
42 }, 42 },
43 [LLVM_TESTCASE_KBUILD] = {
44 .source = test_llvm__bpf_test_kbuild_prog,
45 .desc = "Test kbuild searching",
46 },
43}; 47};
44 48
45 49
diff --git a/tools/perf/tests/llvm.h b/tools/perf/tests/llvm.h
index bd63cee687b5..d91d8f44efee 100644
--- a/tools/perf/tests/llvm.h
+++ b/tools/perf/tests/llvm.h
@@ -5,9 +5,11 @@
5#include <stdbool.h> /* for bool */ 5#include <stdbool.h> /* for bool */
6 6
7extern const char test_llvm__bpf_base_prog[]; 7extern const char test_llvm__bpf_base_prog[];
8extern const char test_llvm__bpf_test_kbuild_prog[];
8 9
9enum test_llvm__testcase { 10enum test_llvm__testcase {
10 LLVM_TESTCASE_BASE, 11 LLVM_TESTCASE_BASE,
12 LLVM_TESTCASE_KBUILD,
11 __LLVM_TESTCASE_MAX, 13 __LLVM_TESTCASE_MAX,
12}; 14};
13 15