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

Wangnan (F)
2015-06-09T13:43:18Z

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@huawei.com>
> ---
> 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.