Re: failed to add c++ probe

From: Masami Hiramatsu
Date: Fri Sep 23 2016 - 09:32:35 EST

On Thu, 22 Sep 2016 10:54:06 +0200
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Wed, Sep 21, 2016 at 01:43:24PM +0900, Masami Hiramatsu wrote:
> > On Wed, 21 Sep 2016 12:37:59 +0900
> > Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote:
> > Hmm, I found there are 3 issues in perf-probe to define event on C++ libs.
> >
> > 1) No mangle/demangle symbol support. This needs a) fix option parser to
> > accept C++ method name correctly, b) mangle that method, and c) demangle
> > it when we show the probe point.
> I think we should also allow using the mangled name, supporting (de)mangling
> is of course nice, but not required per-se. Esp. since there's more than
> just C++ mangling. Having the mangling stuff as optional makes it a
> convenience but still allows using this on other languages for which we
> do not support the mangling.

Agreed. I also learned that mangling depends on the compiler and no
good way to get demangled name to mangled name. Moreover, the demangled
name will include arguments, templates etc. because of supporting polymorphism.
At this phase, I would like to support only "method name" or "mangled name".

> > 2) @plt symbol should be skipped since the real function will be called(jumped)
> > from plt, when searching probe point.
> >
> > 3) Event group name is including some characters which can not be used (e.g. "++").
> > Thus we have to remove it or replace it with '_' or other alphabet.("PP"?)
> What is the problem with the '+' character? Why cannot this be used?

In the ftrace, it is not considered to use such characters for event/group
name, because the name is used for generating symbols for tracepoints.
IOW, other tracepoint events have the name same as C naming conventions.
(Maybe that is also good for out-of-tree tools and scripts to parse it.)

Thank you,

Masami Hiramatsu <mhiramat@xxxxxxxxxx>