All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
	"Wangnan (F)" <wangnan0@huawei.com>,
	Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: perf test BPF failing on f24: fix
Date: Mon, 8 Aug 2016 16:33:21 -0300	[thread overview]
Message-ID: <20160808193321.GA3192@kernel.org> (raw)
In-Reply-To: <20160806192948.e366f3fbc4b194de600f8326@kernel.org>

Em Sat, Aug 06, 2016 at 07:29:48PM +0900, Masami Hiramatsu escreveu:
> On Fri, 5 Aug 2016 11:35:32 -0300
> Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> 
> > Em Fri, Aug 05, 2016 at 06:45:50PM +0900, Masami Hiramatsu escreveu:
> > > On Thu, 4 Aug 2016 18:47:24 -0300
> > > Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > > 
> > > > Em Thu, Aug 04, 2016 at 04:36:56PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > > > So:
> > > > > 
> > > > > int err = debuginfo__get_text_offset(dbg, &baseaddr);
> > > > > 
> > > > > is returning 0, no relocation, its dwarf_addrdie() that is not finding
> > > > > SyS_epoll_wait from its address.
> > > > > 
> > > > > Trying to figure out why dwarf_addrdie(0xffffffffbd295b50) fails...
> > > > 
> > > > So, trying to use that vmlinux with objdump to do disassembly I found
> > > > that I need to do some offsetting, and after calculating it, this made
> > > > things works for me:
> > > > 
> > > > diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
> > > > index f2d9ff064e2d..9b95754f28ed 100644
> > > > --- a/tools/perf/util/probe-finder.c
> > > > +++ b/tools/perf/util/probe-finder.c
> > > > @@ -1486,6 +1486,8 @@ retry:
> > > >  	/* Find cu die */
> > > >  	if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) {
> > > >  		if (!reloc && debuginfo__get_text_offset(dbg, &baseaddr) == 0) {
> > > > +			if (baseaddr == 0)
> > > > +				baseaddr = -0x3c000000;
> > > 
> > > Hmm, strange... what's this magic number ...?
> > > Actually debuginfo__get_text_offset() is for kernel modules and it relocate the offset.
> 
> I've found "commit f90acac75713cc6f18a4b2f1b9162bc1cd893c20"
> 
> Actually, I forgot to count the relocation at find_alternative_probe_point().
> Could you try the patch below?
> 
> ------
> perf-probe: Adjust map->reloc offset when finding kernel symbol from map

Does the trick, booting with a kernel built from what is in
tip/perf/urgent, and with CONFIG_RANDOMIZE_BASE=y, before this fix:

[root@jouet ~]# perf probe -v sys_epoll_wait
probe-definition(0): sys_epoll_wait 
symbol:sys_epoll_wait file:(null) line:0 offset:0 return:0 lazy:(null)
0 arguments
Failed to get sdt note: -9
Failed to update/scan SDT cache for (null)
Looking at the vmlinux_path (8 entries long)
Using /lib/modules/4.7.0+/build/vmlinux for symbols
Open Debuginfo file: /lib/modules/4.7.0+/build/vmlinux
Try to find probe point from debuginfo.
Symbol sys_epoll_wait address found : ffffffffac296900
Failed to find debug information for address ffffffffac296900
Probe point 'sys_epoll_wait' not found.
  Error: Failed to add events. Reason: No such file or directory (Code:
-2)
[root@jouet ~]# 
[root@jouet ~]# 

After the fix:

[root@jouet ~]# perf probe -v sys_epoll_wait
probe-definition(0): sys_epoll_wait 
symbol:sys_epoll_wait file:(null) line:0 offset:0 return:0 lazy:(null)
0 arguments
Looking at the vmlinux_path (8 entries long)
Using /lib/modules/4.7.0+/build/vmlinux for symbols
Open Debuginfo file: /lib/modules/4.7.0+/build/vmlinux
Try to find probe point from debuginfo.
Symbol sys_epoll_wait address found : ffffffff81296900
Matched function: SyS_epoll_wait
found inline addr: 0xffffffff81296c97
Probe point found: compat_SyS_epoll_pwait+151
found inline addr: 0xffffffff81296a7a
Probe point found: SyS_epoll_pwait+138
found inline addr: 0xffffffff81296900
Probe point found: SyS_epoll_wait+0
Found 3 probe_trace_events.
Opening /sys/kernel/debug/tracing//kprobe_events write=1
Writing event: p:probe/sys_epoll_wait _text+2714775
Writing event: p:probe/sys_epoll_wait_1 _text+2714234
Writing event: p:probe/sys_epoll_wait_2 _text+2713856
Added new events:
  probe:sys_epoll_wait (on sys_epoll_wait)
  probe:sys_epoll_wait_1 (on sys_epoll_wait)
  probe:sys_epoll_wait_2 (on sys_epoll_wait)

You can now use it in all perf tools, such as:

	perf record -e probe:sys_epoll_wait_2 -aR sleep 1

[root@jouet ~]# 

  reply	other threads:[~2016-08-08 19:33 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-02 19:51 perf test BPF failing on f24: fix Arnaldo Carvalho de Melo
2016-08-02 21:03 ` Alexei Starovoitov
2016-08-03  2:15   ` Arnaldo Carvalho de Melo
2016-08-03  2:57     ` Alexei Starovoitov
2016-08-03  2:41 ` Wangnan (F)
2016-08-03  3:41   ` Wangnan (F)
2016-08-03  8:19 ` Wangnan (F)
2016-08-03 14:45   ` Masami Hiramatsu
2016-08-03 20:04     ` Arnaldo Carvalho de Melo
2016-08-04  6:32       ` Masami Hiramatsu
2016-08-04 12:48         ` Arnaldo Carvalho de Melo
2016-08-04 19:36           ` Arnaldo Carvalho de Melo
2016-08-04 21:47             ` Arnaldo Carvalho de Melo
2016-08-05  9:45               ` Masami Hiramatsu
2016-08-05 14:35                 ` Arnaldo Carvalho de Melo
2016-08-05 15:55                   ` Arnaldo Carvalho de Melo
2016-08-06 10:29                   ` Masami Hiramatsu
2016-08-08 19:33                     ` Arnaldo Carvalho de Melo [this message]
2016-08-09 19:17                     ` [tip:perf/urgent] perf probe: Adjust map->reloc offset when finding kernel symbol from map tip-bot for Masami Hiramatsu
2016-08-03 23:08     ` perf test BPF failing on f24: fix Masami Hiramatsu
2016-08-04  1:50       ` Wangnan (F)
2016-08-04  8:47         ` Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160808193321.GA3192@kernel.org \
    --to=acme@kernel.org \
    --cc=alexei.starovoitov@gmail.com \
    --cc=arnaldo.melo@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.