On 25/08/15 18:30, Arnaldo Carvalho de Melo wrote: > 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 <adrian.hun...@intel.com> >> --- >> 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
I tried that first but it doesn't work: util/tsc.o: In function `perf_time_to_tsc': /mnt/ssd/ahunter/git/linux-perf/tools/perf/util/tsc.c:7: multiple definition of `perf_time_to_tsc' util/tsc.o:/mnt/ssd/ahunter/git/linux-perf/tools/perf/util/tsc.c:7: first defined here util/tsc.o: In function `tsc_to_perf_time': /mnt/ssd/ahunter/git/linux-perf/tools/perf/util/tsc.c:18: multiple definition of `tsc_to_perf_time' util/tsc.o:/mnt/ssd/ahunter/git/linux-perf/tools/perf/util/tsc.c:18: first defined here make[3]: *** [util/libperf-in.o] Error 1 make[2]: *** [util] Error 2 make[1]: *** [libperf-in.o] Error 2 make: *** [all] Error 2 I will have a look at why, unless Jiri knows? > > 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 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/