Messages in this thread Patch in this message | | | Date | Fri, 11 Oct 2013 16:04:43 -0600 | From | David Ahern <> | Subject | Re: [PATCHSET 0/8] perf tools: Fix scalability problem on callchain merging (v5) |
| |
On 10/11/13 3:51 PM, Andi Kleen wrote: > David Ahern <dsahern@gmail.com> writes: > >> On 10/11/13 9:11 AM, David Ahern wrote: >>> It would be nice to fix the callchain arg handler to not attempt to >>> process the next argument if it is not fp or dwarf. >> >> Specifically, something like this which maintains syntax and default >> fp option: > > Yes please! This happens to me all the time too > > (usually I train myself to use -g --, but i still sometimes forget) > > It still wouldn't handle -ga, but naked -g seems to be the common case.
grrr... you're right. I ran right through that. With -ga the 'a' gets lost.
This seems to do the trick:
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 92ca541..726d2c2 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -721,7 +721,11 @@ int record_parse_callchain_opt(const struct option *opt, return 0;
/* We specified default option if none is provided. */ - BUG_ON(!arg); + if (!arg) { + opts->call_graph = CALLCHAIN_FP; + return 0; + } +
/* We need buffer that we know we can write to. */ buf = malloc(strlen(arg) + 1); @@ -766,8 +770,8 @@ int record_parse_callchain_opt(const struct option *opt, opts->stack_dump_size); #endif /* HAVE_LIBUNWIND_SUPPORT */ } else { - pr_err("callchain: Unknown -g option " - "value: %s\n", arg); + opts->call_graph = CALLCHAIN_FP; + ret = 0; break; }
@@ -855,7 +859,7 @@ const struct option record_options[] = { perf_evlist__parse_mmap_pages), OPT_BOOLEAN(0, "group", &record.opts.group, "put the counters into a counter group"), - OPT_CALLBACK_DEFAULT('g', "call-graph", &record.opts, + OPT_CALLBACK_DEFAULT_NOOPT('g', "call-graph", &record.opts, "mode[,dump_size]", record_callchain_help, &record_parse_callchain_opt, "fp"), OPT_INCR('v', "verbose", &verbose,
| |