perf script: Initialize callchain_param.record_mode
Milian Wolff reported non functional DWARF unwind under perf script. The reason is that perf script does not properly configure callchain_param.record_mode, which is needed by unwind code. Stealing the code from report and leaving the place for more initialization code in a hope we could merge it with report__setup_sample_type one day. Reported-by: Milian Wolff <mail@milianw.de> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Milian Wolff <milian.wolff@kdab.com> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/20150813071724.GA21322@krava.brq.redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
7f4f800131
commit
7322d6c98d
1 changed files with 17 additions and 0 deletions
|
@ -1561,6 +1561,22 @@ static int have_cmd(int argc, const char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void script__setup_sample_type(struct perf_script *script)
|
||||||
|
{
|
||||||
|
struct perf_session *session = script->session;
|
||||||
|
u64 sample_type = perf_evlist__combined_sample_type(session->evlist);
|
||||||
|
|
||||||
|
if (symbol_conf.use_callchain || symbol_conf.cumulate_callchain) {
|
||||||
|
if ((sample_type & PERF_SAMPLE_REGS_USER) &&
|
||||||
|
(sample_type & PERF_SAMPLE_STACK_USER))
|
||||||
|
callchain_param.record_mode = CALLCHAIN_DWARF;
|
||||||
|
else if (sample_type & PERF_SAMPLE_BRANCH_STACK)
|
||||||
|
callchain_param.record_mode = CALLCHAIN_LBR;
|
||||||
|
else
|
||||||
|
callchain_param.record_mode = CALLCHAIN_FP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
|
int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
{
|
{
|
||||||
bool show_full_info = false;
|
bool show_full_info = false;
|
||||||
|
@ -1849,6 +1865,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
goto out_delete;
|
goto out_delete;
|
||||||
|
|
||||||
script.session = session;
|
script.session = session;
|
||||||
|
script__setup_sample_type(&script);
|
||||||
|
|
||||||
session->itrace_synth_opts = &itrace_synth_opts;
|
session->itrace_synth_opts = &itrace_synth_opts;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue