linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/14] perf clang: Support compiling BPF script use builtin clang
@ 2016-09-23 12:49 Wang Nan
  2016-09-23 12:49 ` [PATCH 01/14] tools build: Support compiling C++ source file Wang Nan
                   ` (14 more replies)
  0 siblings, 15 replies; 20+ messages in thread
From: Wang Nan @ 2016-09-23 12:49 UTC (permalink / raw)
  To: acme, ast
  Cc: pi3orama, linux-kernel, lizefan, Wang Nan,
	Arnaldo Carvalho de Melo, He Kuang, Jiri Olsa

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2016-09-28 14:33 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-23 12:49 [PATCH 00/14] perf clang: Support compiling BPF script use builtin clang Wang Nan
2016-09-23 12:49 ` [PATCH 01/14] tools build: Support compiling C++ source file Wang Nan
2016-09-28 14:33   ` Jiri Olsa
2016-09-23 12:49 ` [PATCH 02/14] perf tools: Add feature detection for g++ Wang Nan
2016-09-23 12:49 ` [PATCH 03/14] perf tools: Add feature detection for LLVM Wang Nan
2016-09-23 12:49 ` [PATCH 04/14] perf tools: Add feature detection for clang Wang Nan
2016-09-23 12:49 ` [PATCH 05/14] perf build: Add clang and llvm compile and linking support Wang Nan
2016-09-23 12:49 ` [PATCH 06/14] perf clang: Add builtin clang support ant test case Wang Nan
2016-09-23 12:49 ` [PATCH 07/14] perf clang: Use real file system for #include Wang Nan
2016-09-23 12:49 ` [PATCH 08/14] perf clang: Allow passing CFLAGS to builtin clang Wang Nan
2016-09-23 12:49 ` [PATCH 09/14] perf clang: Update test case to use real BPF script Wang Nan
2016-09-23 12:49 ` [PATCH 10/14] perf clang: Support compile IR to BPF object and add testcase Wang Nan
2016-09-23 12:49 ` [PATCH 11/14] perf tools: Extract kernel build option detector as utils Wang Nan
2016-09-23 12:49 ` [PATCH 12/14] perf bpf: Compile BPF script use builtin cflags support Wang Nan
2016-09-23 12:50 ` [PATCH 13/14] perf clang: Pass fill path compiler Wang Nan
2016-09-23 12:50 ` [PATCH 14/14] perf clang: Pass correct CFLAGS to builtin clang Wang Nan
2016-09-24 15:16 ` [PATCH 00/14] perf clang: Support compiling BPF script use " Alexei Starovoitov
2016-09-26  1:49   ` Wangnan (F)
2016-09-26 23:47     ` Alexei Starovoitov
     [not found]       ` <CA+JHD93WWAnyPM8e2MGw4SoJ16f_j52qdWsS=MuEzBkzCdXYEw@mail.gmail.com>
2016-09-27  1:49         ` Wangnan (F)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).