Re: [PATCH 2/2] perf ppc64le: Fix probe location when using DWARF

From: Arnaldo Carvalho de Melo
Date: Thu Aug 11 2016 - 07:51:30 EST


Em Thu, Aug 11, 2016 at 10:01:04AM +0530, Ravi Bangoria escreveu:
>
>
> On Thursday 11 August 2016 05:24 AM, Anton Blanchard wrote:
> > Hi,
> >
> > > Powerpc has Global Entry Point and Local Entry Point for functions.
> > > LEP catches call from both the GEP and the LEP. Symbol table of ELF
> > > contains GEP and Offset from which we can calculate LEP, but debuginfo
> > > does not have LEP info.
> > >
> > > Currently, perf prioritize symbol table over dwarf to probe on LEP
> > > for ppc64le. But when user tries to probe with function parameter,
> > > we fall back to using dwarf(i.e. GEP) and when function called via
> > > LEP, probe will never hit.
> > This patch causes a build failure for me on ppc64le:
> >
> > libperf.a(libperf-in.o): In function `arch__post_process_probe_trace_events':
> >
> > tools/perf/arch/powerpc/util/sym-handling.c:109: undefined reference to `get_target_map'
>
> Thanks Anton. Sorry, I should have caught that.
>
> @Arnaldo, Can you please pick this up. I've prepared this on top of
> acme/perf/core.
>
>
> From 89c977ae9c3ae35c78b16cddabcf2b01d3cf5cc8 Mon Sep 17 00:00:00 2001
> From: Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxxxxxxx>
> Date: Wed, 10 Aug 2016 23:13:45 -0500
> Subject: [PATCH] perf ppc64le: Fix build failure when no dwarf support
>
> Fix perf build failure on ppc64le because of Commit 99e608b5954c ("perf
> probe ppc64le: Fix probe location when using DWARF")

Can you please provide a better explanation? I had to look at the patch
to understand what it was fixing, and then the patch adds LIBELF_SUPPORT
ifdefs while the patch description, talks about DWARF.

Anyway, Anton, does this fix the problem for you?

- Arnaldo

> Signed-off-by: Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxxxxxxx>
> ---
> tools/perf/arch/powerpc/util/sym-handling.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/perf/arch/powerpc/util/sym-handling.c
> b/tools/perf/arch/powerpc/util/sym-handling.c
> index 8d4dc97..c27a51a 100644
> --- a/tools/perf/arch/powerpc/util/sym-handling.c
> +++ b/tools/perf/arch/powerpc/util/sym-handling.c
> @@ -97,6 +97,7 @@ void arch__fix_tev_from_maps(struct perf_probe_event *pev,
> }
> }
>
> +#ifdef HAVE_LIBELF_SUPPORT
> void arch__post_process_probe_trace_events(struct perf_probe_event *pev,
> int ntevs)
> {
> @@ -118,5 +119,6 @@ void arch__post_process_probe_trace_events(struct
> perf_probe_event *pev,
> }
> }
> }
> +#endif
>
> #endif
> --
> 2.7.4