|
@@ -35,6 +35,7 @@ static char const *input_name = "perf.data";
|
|
|
|
|
|
static int force;
|
|
|
static bool hide_unresolved;
|
|
|
+static bool dont_use_callchains;
|
|
|
|
|
|
static int show_threads;
|
|
|
static struct perf_read_values show_threads_values;
|
|
@@ -172,7 +173,8 @@ static int perf_session__setup_sample_type(struct perf_session *self)
|
|
|
" -g?\n");
|
|
|
return -1;
|
|
|
}
|
|
|
- } else if (callchain_param.mode != CHAIN_NONE && !symbol_conf.use_callchain) {
|
|
|
+ } else if (!dont_use_callchains && callchain_param.mode != CHAIN_NONE &&
|
|
|
+ !symbol_conf.use_callchain) {
|
|
|
symbol_conf.use_callchain = true;
|
|
|
if (register_callchain_param(&callchain_param) < 0) {
|
|
|
fprintf(stderr, "Can't register callchain"
|
|
@@ -246,11 +248,19 @@ out_delete:
|
|
|
|
|
|
static int
|
|
|
parse_callchain_opt(const struct option *opt __used, const char *arg,
|
|
|
- int unset __used)
|
|
|
+ int unset)
|
|
|
{
|
|
|
char *tok;
|
|
|
char *endptr;
|
|
|
|
|
|
+ /*
|
|
|
+ * --no-call-graph
|
|
|
+ */
|
|
|
+ if (unset) {
|
|
|
+ dont_use_callchains = true;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
symbol_conf.use_callchain = true;
|
|
|
|
|
|
if (!arg)
|