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

From: Arnaldo Carvalho de Melo
Date: Thu Aug 11 2016 - 11:49:55 EST


Em Thu, Aug 11, 2016 at 09:54:57AM +1000, Anton Blanchard escreveu:
> 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'

Humm, he sent a patch, I'm applying it, but I'm trying to figure out why
this wasn't catched by my cross compiling container :-\

Complete log and:

CC /tmp/build/perf/util/probe-event.o

Because:

... libelf: [ on ]

So I would have to build with NO_LIBELF=1? /me tries... further proof I need to
build with 'make -C tools/perf build-test' for all the arches, that will test, among
other combos, with NO_LIBELF=1 and without :-\

# docker run --entrypoint=/bin/bash -v /home/acme/git:/git:Z --rm -ti docker.io/acmel/linux-perf-tools-build-ubuntu:16.04-x-powerpc64el
perfbuilder@74bca30d5b61:/$ make NO_LIBELF=1 ARCH=powerpc CROSS_COMPILE=powerpc64le-linux-gnu- -C /git/linux/tools/perf O=/tmp/build/perf
<SNIP>
LINK /tmp/build/perf/perf
/tmp/build/perf/libperf.a(libperf-in.o): In function `arch__post_process_probe_trace_events':
/git/linux/tools/perf/arch/powerpc/util/sym-handling.c:109: undefined reference to `get_target_map'
collect2: error: ld returned 1 exit status
Makefile.perf:435: recipe for target '/tmp/build/perf/perf' failed
make[1]: *** [/tmp/build/perf/perf] Error 1
Makefile:68: recipe for target 'all' failed
make: *** [all] Error 2
make: Leaving directory '/git/linux/tools/perf'
perfbuilder@74bca30d5b61:/$

Ok, reproduced, will add the NO_LIBELF=1 to the regular set of tests for ppc64le.

- Arnaldo