mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Arnaldo Carvalho de Melo <acme@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: Sat, 6 Aug 2016 19:29:48 +0900	[thread overview]
Message-ID: <20160806192948.e366f3fbc4b194de600f8326@kernel.org> (raw)
In-Reply-To: <20160805143532.GO14639@kernel.org>

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

From: Masami Hiramatsu <masami.hiramatsu@linaro.org>

Adjust map->reloc offset for the unmapped address when
finding alternative symbol address from map, because
KASLR can relocate the kernel symbol address.

The same adjustment has been done when finding appropriate
kernel symbol address from map which was introduced by
commit f90acac75713 ("perf probe: Find given address from offline dwarf")

Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
---
 tools/perf/util/probe-event.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 953dc1a..d5ccb65 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -385,7 +385,7 @@ static int find_alternative_probe_point(struct debuginfo *dinfo,
 		if (uprobes)
 			address = sym->start;
 		else
-			address = map->unmap_ip(map, sym->start);
+			address = map->unmap_ip(map, sym->start) - map->reloc;
 		break;
 	}
 	if (!address) {

  parent reply	other threads:[~2016-08-06 21:06 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-02 19:51 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 [this message]
2016-08-08 19:33                     ` Arnaldo Carvalho de Melo
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=20160806192948.e366f3fbc4b194de600f8326@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=acme@kernel.org \
    --cc=alexei.starovoitov@gmail.com \
    --cc=arnaldo.melo@gmail.com \
    --cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome