On Wed, 21 Sep 2016 12:37:59 +0900
Masami Hiramatsu <mhira...@kernel.org> wrote:

> On Tue, 20 Sep 2016 01:32:04 +0200 (CEST)
> Thomas Gleixner <t...@linutronix.de> wrote:
> 
> > Masami,
> > 
> > On Tue, 20 Sep 2016, Masami Hiramatsu wrote:
> > > Hmm, could you try to find mangled symbol from the library as below?
> > > 
> > > ./perf probe -x /usr/lib64/libstdc++.so.6 -F \*
> > > 
> > > And also try to do adding probe with -v option again?
> > > 
> > > In my case, I could find the mangled symbol, but failed to setup the 
> > > probe...
> > 
> > ./perf probe -x /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -v 
> > _X_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv
> > probe-definition(0): _X_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv 
> > symbol:_X_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv file:(null) 
> > line:0 offset:0 return:0 lazy:(null)
> > 0 arguments
> > symbol:catch file:(null) line:0 offset:0 return:0 lazy:(null)
> > symbol:throw file:(null) line:0 offset:0 return:0 lazy:(null)
> > symbol:rethrow file:(null) line:0 offset:0 return:0 lazy:(null)
> > Open Debuginfo file: 
> > /usr/lib/debug/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22
> > Try to find probe point from debuginfo.
> > Symbol _X_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv address found 
> > : 8c620
> > Matched function: is_open
> > found inline addr: 0x8cad0
> > Probe point found: is_open+0
> > found inline addr: 0x8cac0
> > Probe point found: is_open+0
> > found inline addr: 0x8cab0
> > Probe point found: is_open+0
> > Matched function: is_open
> > An error occurred in debuginfo analysis (-2).
> > Trying to use symbols.
> > Opening /sys/kernel/tracing//uprobe_events write=1
> > Writing event: 
> > p:probe_libstdc++/_X_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv 
> > /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22:0x8c620
> > Failed to write event: Invalid argument
> >   Error: Failed to add events. Reason: Invalid argument (Code: -22)
> > 
> > [16568.176464] Failed to allocate trace_uprobe.(-22)
> > [16568.176468] Failed to parse address or file.
> > 
> > Aside of that mangled symbols with a @plt suffix do not work at all.
> 
> Oh, OK. I could reproduce it. I'll investigate it. :)
> 

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.

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"?)

Thank you,

-- 
Masami Hiramatsu <mhira...@kernel.org>

Reply via email to