Re: [RFC PATCH v6 32/32] perf record: Add LLVM options for compiling BPF scripts

From: Wangnan (F)
Date: Tue Jun 09 2015 - 09:43:22 EST




On 2015/6/9 13:50, Wang Nan wrote:
Although previous patch allows setting BPF compiler related options in
perfconfig, on some ad-hoc situation it still requires passing options
through cmdline. This patch introduces 4 options to 'perf record' for
this propose: --clang-path, --clang-opt, --llc-path and --llc-opt.

Signed-off-by: Wang Nan <wangnan0@xxxxxxxxxx>
---
tools/perf/builtin-record.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 235c3d9..ad5892e 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -1070,6 +1070,14 @@ struct option __record_options[] = {
parse_clockid),
OPT_STRING_OPTARG('S', "snapshot", &record.opts.auxtrace_snapshot_opts,
"opts", "AUX area tracing Snapshot Mode", ""),
+ OPT_STRING(0, "clang-path", &bpf_param.clang_path, "clang patch",
+ "clang binary to use for compiling BPF scriptlets"),
+ OPT_STRING(0, "clang-opt", &bpf_param.clang_opt, "clang options",
+ "options passed to clang when compiling BPF scriptlets"),
+ OPT_STRING(0, "llc-path", &bpf_param.llc_path, "llc path",
+ "llc binary to use for compiling BPF scriptlets"),
+ OPT_STRING(0, "llc-opt", &bpf_param.llc_opt, "llc opt",
+ "options passed to llc when compiling BPF scriptlets"),
OPT_END()
};
These 4 options should be wrapped inside "#ifdef HAVE_LIBBPF_SUPPORT" because
it requires bpf_param which won't be compiled if HAVE_LIBBPF_SUPPORT is set.

Another choice should be introducing something like tools/perf/utils/llvm.c and
putting all llvm related things into it. If other part of perf also use llvm,
making a new file to hold those options should be a better way.


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