perf report: Set callchain_param.record_mode for future use
authorNamhyung Kim <namhyung@kernel.org>
Mon, 6 Oct 2014 00:45:59 +0000 (09:45 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 15 Oct 2014 19:20:03 +0000 (16:20 -0300)
Normally the callchain_param.record_mode is used only for record path.
But as it might need to prepare something for dwarf unwinding, setup
this info for perf report too.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jean Pihet <jean.pihet@linaro.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1412556363-26229-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-report.c
tools/perf/tests/dwarf-unwind.c

index 2cfc4b93991f71008ec336825f207831f6351720..140a6cd883514b0b14f65a8d7c5fe3e082a8cc64 100644 (file)
@@ -257,6 +257,13 @@ static int report__setup_sample_type(struct report *rep)
                }
        }
 
+       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
+                       callchain_param.record_mode = CALLCHAIN_FP;
+       }
        return 0;
 }
 
index 96adb730b74491efb473ebb3be8d006374dd63fc..fc25e57f4a5d2bdf5455c9db75298b4700b34c04 100644 (file)
@@ -9,6 +9,7 @@
 #include "perf_regs.h"
 #include "map.h"
 #include "thread.h"
+#include "callchain.h"
 
 static int mmap_handler(struct perf_tool *tool __maybe_unused,
                        union perf_event *event,
@@ -120,6 +121,8 @@ int test__dwarf_unwind(void)
                return -1;
        }
 
+       callchain_param.record_mode = CALLCHAIN_DWARF;
+
        if (init_live_machine(machine)) {
                pr_err("Could not init machine\n");
                goto out;