On Thursday 11 August 2016 05:20 PM, Arnaldo Carvalho de Melo wrote:
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.bango...@linux.vnet.ibm.com>
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.

Yes. Explanation could have been better. Apologies for that.

arch__post_process_probe_trace_events() calls get_target_map() to prepare
symbol table. get_target_map() is defined inside util/probe-event.c.

probe-event.c will only get included in perf binary if CONFIG_LIBELF is set.
Hence arch__post_process_probe_trace_events() needs to be defined inside
#ifdef HAVE_LIBELF_SUPPORT to solve compilation error.

Please let me know if any doubts.

Thanks,
Ravi

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

- Arnaldo

Signed-off-by: Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com>
---
  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

Reply via email to