From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932568AbbHYPaS (ORCPT ); Tue, 25 Aug 2015 11:30:18 -0400 Received: from mail.kernel.org ([198.145.29.136]:35702 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932409AbbHYPaR (ORCPT ); Tue, 25 Aug 2015 11:30:17 -0400 Date: Tue, 25 Aug 2015 12:30:10 -0300 From: Arnaldo Carvalho de Melo To: Adrian Hunter Cc: linux-kernel@vger.kernel.org, Jiri Olsa , Sukadev Bhattiprolu Subject: Re: [PATCH 1/2] perf tools: Fix build on powerpc broken by pt/bts Message-ID: <20150825153010.GJ19203@kernel.org> References: <1440499348-15629-1-git-send-email-adrian.hunter@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1440499348-15629-1-git-send-email-adrian.hunter@intel.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Tue, Aug 25, 2015 at 01:42:27PM +0300, Adrian Hunter escreveu: > It is theoretically possible to process perf.data files created on > x86 and that contain Intel PT or Intel BTS data, on any other > architecture, which is why it is possible for there to be build > errors on powerpc caused by pt/bts. > > The errors were: > > 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 > > linux-acme.git/tools/perf/perf-obj/libperf.a(libperf-in.o): In function `intel_pt_synth_branch_sample': > sources/linux-acme.git/tools/perf/util/intel-pt.c:871: undefined reference to `tsc_to_perf_time' > linux-acme.git/tools/perf/perf-obj/libperf.a(libperf-in.o): In function `intel_pt_sample': > sources/linux-acme.git/tools/perf/util/intel-pt.c:915: undefined reference to `tsc_to_perf_time' > sources/linux-acme.git/tools/perf/util/intel-pt.c:962: undefined reference to `tsc_to_perf_time' > linux-acme.git/tools/perf/perf-obj/libperf.a(libperf-in.o): In function `intel_pt_process_event': > sources/linux-acme.git/tools/perf/util/intel-pt.c:1454: undefined reference to `perf_time_to_tsc' > > Signed-off-by: Adrian Hunter > --- > tools/perf/util/Build | 2 +- > tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c | 3 +++ > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/util/Build b/tools/perf/util/Build > index e912856cc4e5..8ae31e5131ee 100644 > --- a/tools/perf/util/Build > +++ b/tools/perf/util/Build > @@ -74,7 +74,7 @@ libperf-y += stat-shadow.o > libperf-y += record.o > libperf-y += srcline.o > libperf-y += data.o > -libperf-$(CONFIG_X86) += tsc.o > +libperf-$(if $(CONFIG_X86)$(CONFIG_AUXTRACE),y) += tsc.o I think this is preferred/more clear: libperf-$(CONFIG_X86) += tsc.o libperf-$(CONFIG_AUXTRACE) += tsc.o As we have in drivers/Makefile, in the kernel sources: drivers/Makefile:obj-$(CONFIG_PCI) += usb/ drivers/Makefile:obj-$(CONFIG_USB_GADGET) += usb/ drivers/Makefile:obj-$(CONFIG_USB_PHY) += usb/ drivers/Makefile:obj-$(CONFIG_USB) += usb/ >>From Documentation/kbuild/makefiles.txt: --- 3.2 Built-in object goals - obj-y The kbuild Makefile specifies object files for vmlinux in the $(obj-y) lists. These lists depend on the kernel configuration. Kbuild compiles all the $(obj-y) files. It then calls "$(LD) -r" to merge these files into one built-in.o file. built-in.o is later linked into vmlinux by the parent Makefile. The order of files in $(obj-y) is significant. Duplicates in the lists are allowed: the first instance will be linked into built-in.o and succeeding instances will be ignored. ------------------------ Jiri? - Arnaldo > libperf-y += cloexec.o > libperf-y += thread-stack.o > libperf-$(CONFIG_AUXTRACE) += auxtrace.o > diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c > index 9e4eb8fcd559..d23138c06665 100644 > --- a/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c > +++ b/tools/perf/util/intel-pt-decoder/intel-pt-insn-decoder.c > @@ -146,6 +146,9 @@ static void intel_pt_insn_decoder(struct insn *insn, > case 4: > intel_pt_insn->rel = bswap_32(insn->immediate.value); > break; > + default: > + intel_pt_insn->rel = 0; > + break; > } > #else > intel_pt_insn->rel = insn->immediate.value; > -- > 1.9.1