All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Leo Yan <leo.yan@linaro.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Kate Stewart <kstewart@linuxfoundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Allison Randal <allison@lohutok.net>,
	John Garry <john.garry@huawei.com>,
	Enrico Weigelt <info@metux.net>,
	linux-kernel@vger.kernel.org, Mike Leach <mike.leach@linaro.org>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>,
	Hendrik Brueckner <brueckner@linux.vnet.ibm.com>,
	Thomas Richter <tmricht@linux.vnet.ibm.com>
Subject: Re: [PATCH v3] perf symbols: Consolidate symbol fixup issue
Date: Wed, 18 Mar 2020 11:46:49 -0300	[thread overview]
Message-ID: <20200318144649.GE11531@kernel.org> (raw)
In-Reply-To: <20200318110659.GA845874@krava>

Em Wed, Mar 18, 2020 at 12:06:59PM +0100, Jiri Olsa escreveu:
> On Fri, Mar 06, 2020 at 09:57:58AM +0800, Leo Yan wrote:
> > After copying Arm64's perf archive with object files and perf.data file
> > to x86 laptop, the x86's perf kernel symbol resolution fails.  It
> > outputs 'unknown' for all symbols parsing.
> > 
> > This issue is root caused by the function elf__needs_adjust_symbols(),
> > x86 perf tool uses one weak version, Arm64 (and powerpc) has rewritten
> > their own version.  elf__needs_adjust_symbols() decides if need to parse
> > symbols with the relative offset address; but x86 building uses the weak
> > function which misses to check for the elf type 'ET_DYN', so that it
> > cannot parse symbols in Arm DSOs due to the wrong result from
> > elf__needs_adjust_symbols().
> > 
> > The DSO parsing should not depend on any specific architecture perf
> > building; e.g. x86 perf tool can parse Arm and Arm64 DSOs, vice versa.
> > And confirmed by Naveen N. Rao that powerpc64 kernels are not being
> > built as ET_DYN anymore and change to ET_EXEC.
> > 
> > This patch removes the arch specific functions for Arm64 and powerpc and
> > changes elf__needs_adjust_symbols() as a common function.
> > 
> > In the common elf__needs_adjust_symbols(), it checks an extra condition
> > 'ET_DYN' for elf header type.  With this fixing, the Arm64 DSO can be
> > parsed properly with x86's perf tool.
> > 
> > Before:
> > 
> >   # perf script
> >   main  3258          1          branches:                 0 [unknown] ([unknown]) => ffff800010c4665c [unknown] ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c46670 [unknown] ([kernel.kallsyms]) => ffff800010c4eaec [unknown] ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4eaec [unknown] ([kernel.kallsyms]) => ffff800010c4eb00 [unknown] ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4eb08 [unknown] ([kernel.kallsyms]) => ffff800010c4e780 [unknown] ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4e7a0 [unknown] ([kernel.kallsyms]) => ffff800010c4eeac [unknown] ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4eebc [unknown] ([kernel.kallsyms]) => ffff800010c4ed80 [unknown] ([kernel.kallsyms])
> > 
> > After:
> > 
> >   # perf script
> >   main  3258          1          branches:                 0 [unknown] ([unknown]) => ffff800010c4665c coresight_timeout+0x54 ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c46670 coresight_timeout+0x68 ([kernel.kallsyms]) => ffff800010c4eaec etm4_enable_hw+0x3cc ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4eaec etm4_enable_hw+0x3cc ([kernel.kallsyms]) => ffff800010c4eb00 etm4_enable_hw+0x3e0 ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4eb08 etm4_enable_hw+0x3e8 ([kernel.kallsyms]) => ffff800010c4e780 etm4_enable_hw+0x60 ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4e7a0 etm4_enable_hw+0x80 ([kernel.kallsyms]) => ffff800010c4eeac etm4_enable+0x2d4 ([kernel.kallsyms])
> >   main  3258          1          branches:  ffff800010c4eebc etm4_enable+0x2e4 ([kernel.kallsyms]) => ffff800010c4ed80 etm4_enable+0x1a8 ([kernel.kallsyms])
> > 
> > v3: Changed to check for ET_DYN across all architectures.
> > 
> > v2: Fixed Arm64 and powerpc native building.
> > 
> > Reported-by: Mike Leach <mike.leach@linaro.org>
> > Signed-off-by: Leo Yan <leo.yan@linaro.org>
> > Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
> 
> Acked-by: Jiri Olsa <jolsa@redhat.com>

Thanks, applied.

- Arnaldo

  reply	other threads:[~2020-03-18 14:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-06  1:57 [PATCH v3] perf symbols: Consolidate symbol fixup issue Leo Yan
2020-03-18  2:18 ` Leo Yan
2020-03-18 11:06 ` Jiri Olsa
2020-03-18 14:46   ` Arnaldo Carvalho de Melo [this message]
2020-04-04  8:42 ` [tip: perf/urgent] " tip-bot2 for Leo Yan

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=20200318144649.GE11531@kernel.org \
    --to=arnaldo.melo@gmail.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=allison@lohutok.net \
    --cc=brueckner@linux.vnet.ibm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=info@metux.net \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=kstewart@linuxfoundation.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=naveen.n.rao@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tmricht@linux.vnet.ibm.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.