Re: Build failure due to Intel PT

Arnaldo Carvalho de Melo
2015-08-25T14:24:15Z

Em Tue, Aug 25, 2015 at 02:41:57PM +0300, Adrian Hunter escreveu:
> On 25/08/15 14:35, Arnaldo Carvalho de Melo wrote:
> > Em Tue, Aug 25, 2015 at 10:20:00AM +0300, Adrian Hunter escreveu:
> >> On 24/08/15 23:04, Arnaldo Carvalho de Melo wrote:
> >>> Em Mon, Aug 24, 2015 at 11:51:31AM -0700, Sukadev Bhattiprolu escreveu:
> >>>> I am trying to build perf tool on Powerpc and get this:
> >
> >>>> util/intel-pt-decoder/intel-pt-insn-decoder.c: In function ‘intel_pt_insn_decoder’:
> >>>> util/intel-pt-decoder/intel-pt-insn-decoder.c:138:3: error: switch missing default case [-Werror=switch-default]
> >>>> switch (insn->immediate.nbytes) {
> >>>> ^
> >>>> cc1: all warnings being treated as errors
> >
> >>>> Besides adding a 'default' case, can this file be skipped when building on
> >>>> non-x86 architectures?
> >
> >>> Not sure, what about processing a perf.data file generated on a x86
> >>> system using a PowerPC workstation?
> >
> >>> Adrian, I am assuming this is only used when postprocessing, is that
> >>> right?
> >
> >> Yes. I think it is good design to allow perf.data files from any
> >> architecture to be processed on any other architecture. Nevertheless,
> >> specific features can be configured out as desired. For example,
> >> in this case, the option NO_AUXTRACE would work e.g.
> >
> >> make NO_AUXTRACE=1 CROSS_COMPILE=powerpc-linux-gnu- ARCH=powerpc -C tools/perf
> >
> >> works for me.
> >
> >> So I will make a fix for the problems and send it in a moment.
> >
> >> Also, I must point point out that while I missed the 'default case' error,
> >> the link errors are not entirely my fault, but were also a result of:
> >
> >> commit ecefde629fadd3fcca2ea4c6a799d6e6aab8781f
> >> Date: Thu Feb 19 13:22:33 2015 -0500
> >>
> >> perf tools: Only include tsc file for x86
> >>
> >> The perf_time_to_tsc and tsc_to_perf_time functions are only used for x86.
> >>
> >> Make inclusion of tsc.c dependent on x86 as well.
> >>
> >> So it seems that people really don't want to support other architectures
> >> by default. That would mean, for example, defaulting to NO_AUXTRACE=1
> >
> >> for non-x86. I will make a patch for that, and Arnaldo can decide.
> >
> > Humm, misunderstandings happen, so if that thing needs to be reverted,
> > we should do it, and fix the problem to keep the property of being able
> > to 'perf report' any perf.data file, even the ones that were generated
> > on another arch.
> >
> > And detect if there are cross compilers installed and add those to the
> > 'make -C tools/perf build-perf'.
> >
> > I just installed gcc-powerpc64-linux-gnu, will try to use that with
> > build-perf.
>
> Just in case you didn't see them, note that I sent fixes:

I saw both, I think 1/2 should be applied, but not the other one, i.e.
we should default to building a binary that is capable of processing any
perf.data file.

- Arnaldo

> [PATCH 1/2] perf tools: Fix build on powerpc broken by pt/bts
> [PATCH 2/2] perf tools: Make NO_AUXTRACE default for non-x86 architectures