Re: [PATCHv2 2/8] perf probe: Improve detection of file/function name in the probe pattern

From: Naveen N. Rao
Date: Mon Apr 27 2015 - 01:06:04 EST


On 2015/03/13 08:20PM, Masami Hiramatsu wrote:
> (2015/03/13 5:24), Arnaldo Carvalho de Melo wrote:
> > Em Mon, Dec 15, 2014 at 08:20:32PM +0530, Naveen N. Rao escreveu:
> >> Currently, perf probe considers patterns including a '.' to be a file.
> >> However, this causes problems on powerpc ABIv1 where all functions have
> >> a leading '.':
> >>
> >> $ perf probe -F | grep schedule_timeout_interruptible
> >> .schedule_timeout_interruptible
> >> $ perf probe .schedule_timeout_interruptible
> >> Semantic error :File always requires line number or lazy pattern.
> >> Error: Command Parse Error.
> >>
> >> Fix this by checking the probe pattern in more detail.
> >
> > Masami, can I have your Acked-by or Reviewed-by?
>
> As far as I can see, this is not enough for fixing that issue.
> Could you fold the first half of [4/8] to this patch?

Sure.

> I also have some comments on it. See below.
>
> >
> >> Signed-off-by: Naveen N. Rao <naveen.n.rao@xxxxxxxxxxxxxxxxxx>
> >> ---
> >> tools/perf/util/probe-event.c | 23 ++++++++++++++++++++---
> >> 1 file changed, 20 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
> >> index 28eb141..9943ff3 100644
> >> --- a/tools/perf/util/probe-event.c
> >> +++ b/tools/perf/util/probe-event.c
> >> @@ -999,6 +999,24 @@ static int parse_perf_probe_point(char *arg, struct perf_probe_event *pev)
> >> arg = tmp;
> >> }
> >>
> >> + /*
> >> + * Check arg is function or file name and copy it.
> >> + *
> >> + * We consider arg to be a file spec if and only if it satisfies
> >> + * all of the below criteria::
> >> + * - it does not include any of "+@%",
> >> + * - it includes one of ":;", and
> >> + * - it has a period '.' in the name.
> >> + *
> >> + * Otherwise, we consider arg to be a function specification.
> >> + */
> >> + c = 0;
>
> Oh please, don't reuse 'char c' for a boolean flag, you should
> introduce new 'bool file_loc' etc.
>
> >> + if (!strpbrk(arg, "+@%") && (ptr = strpbrk(arg, ";:")) != NULL) {
> >> + /* This is a file spec if it includes a '.' before ; or : */
> >> + if (memchr(arg, '.', ptr-arg))
> ^^ add spaces around '-'.

Sure.

- Naveen


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/