aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/builtin-script.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 7b376d215e94..105332e950a9 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -1561,6 +1561,22 @@ static int have_cmd(int argc, const char **argv)
1561 return 0; 1561 return 0;
1562} 1562}
1563 1563
1564static void script__setup_sample_type(struct perf_script *script)
1565{
1566 struct perf_session *session = script->session;
1567 u64 sample_type = perf_evlist__combined_sample_type(session->evlist);
1568
1569 if (symbol_conf.use_callchain || symbol_conf.cumulate_callchain) {
1570 if ((sample_type & PERF_SAMPLE_REGS_USER) &&
1571 (sample_type & PERF_SAMPLE_STACK_USER))
1572 callchain_param.record_mode = CALLCHAIN_DWARF;
1573 else if (sample_type & PERF_SAMPLE_BRANCH_STACK)
1574 callchain_param.record_mode = CALLCHAIN_LBR;
1575 else
1576 callchain_param.record_mode = CALLCHAIN_FP;
1577 }
1578}
1579
1564int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) 1580int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
1565{ 1581{
1566 bool show_full_info = false; 1582 bool show_full_info = false;
@@ -1849,6 +1865,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
1849 goto out_delete; 1865 goto out_delete;
1850 1866
1851 script.session = session; 1867 script.session = session;
1868 script__setup_sample_type(&script);
1852 1869
1853 session->itrace_synth_opts = &itrace_synth_opts; 1870 session->itrace_synth_opts = &itrace_synth_opts;
1854 1871