lkml.org 
[lkml]   [2016]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH 00/14] perf clang: Support compiling BPF script use builtin clang
Date
This patch set is the first step to implement features I announced
in LinuxCon NA 2016. See page 31 of:

http://events.linuxfoundation.org/sites/events/files/slides/Performance%20Monitoring%20and%20Analysis%20Using%20perf%20and%20BPF_1.pdf

This patch set links LLVM and Clang libraries to perf, so perf
is able to compile BPF script to BPF object on the fly.

To make this this patch set work, developer should first install llvm-devel
and clang-devel (libLLVM*.a and libclang*.a, I compile LLVM from source to
get them and I see ubuntu also ships them), then build perf with LIBCLANGLLVM=1,
and provide a valid llvm-config through LLVM_CONFIG if necessary.

The first 4 patches introduce initial building environment. 3 new
feature detectors are added to ensure the dependency. Patch 5 - 10
support compile C file into IR then object, each step can be tested
by newly introduced 'perf test clang'. Patch 11 - 14 fixes missing
features like kbuild detection and some default macros.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>

Wang Nan (14):
tools build: Support compiling C++ source file
perf tools: Add feature detection for g++
perf tools: Add feature detection for LLVM
perf tools: Add feature detection for clang
perf build: Add clang and llvm compile and linking support
perf clang: Add builtin clang support ant test case
perf clang: Use real file system for #include
perf clang: Allow passing CFLAGS to builtin clang
perf clang: Update test case to use real BPF script
perf clang: Support compile IR to BPF object and add testcase
perf tools: Extract kernel build option detector as utils
perf bpf: Compile BPF script use builtin cflags support
perf clang: Pass fill path compiler
perf clang: Pass correct CFLAGS to builtin clang

tools/build/Build.include | 1 +
tools/build/Makefile.build | 7 +
tools/build/Makefile.feature | 2 +-
tools/build/feature/Makefile | 28 +++-
tools/build/feature/test-clang.cpp | 21 +++
tools/build/feature/test-cxx.cpp | 15 +++
tools/build/feature/test-llvm.cpp | 8 ++
tools/perf/Makefile.config | 62 +++++++--
tools/perf/Makefile.perf | 23 +++-
tools/perf/tests/Build | 1 +
tools/perf/tests/builtin-test.c | 9 ++
tools/perf/tests/clang.c | 46 +++++++
tools/perf/tests/llvm-cxx.h | 13 ++
tools/perf/tests/make | 2 +
tools/perf/tests/tests.h | 3 +
tools/perf/util/Build | 2 +
tools/perf/util/bpf-loader.c | 15 ++-
tools/perf/util/c++/Build | 2 +
tools/perf/util/c++/clang-c.h | 43 ++++++
tools/perf/util/c++/clang-test.cpp | 58 ++++++++
tools/perf/util/c++/clang.cpp | 268 +++++++++++++++++++++++++++++++++++++
tools/perf/util/c++/clang.h | 26 ++++
tools/perf/util/llvm-utils-cxx.h | 14 ++
tools/perf/util/llvm-utils.c | 44 +++++-
tools/perf/util/llvm-utils.h | 5 +-
tools/perf/util/util-cxx.h | 26 ++++
26 files changed, 718 insertions(+), 26 deletions(-)
create mode 100644 tools/build/feature/test-clang.cpp
create mode 100644 tools/build/feature/test-cxx.cpp
create mode 100644 tools/build/feature/test-llvm.cpp
create mode 100644 tools/perf/tests/clang.c
create mode 100644 tools/perf/tests/llvm-cxx.h
create mode 100644 tools/perf/util/c++/Build
create mode 100644 tools/perf/util/c++/clang-c.h
create mode 100644 tools/perf/util/c++/clang-test.cpp
create mode 100644 tools/perf/util/c++/clang.cpp
create mode 100644 tools/perf/util/c++/clang.h
create mode 100644 tools/perf/util/llvm-utils-cxx.h
create mode 100644 tools/perf/util/util-cxx.h

--
1.8.3.4

\
 
 \ /
  Last update: 2016-09-23 14:51    [W:0.151 / U:0.180 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site