From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754230AbcCJQm3 (ORCPT ); Thu, 10 Mar 2016 11:42:29 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60921 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753930AbcCJQmS (ORCPT ); Thu, 10 Mar 2016 11:42:18 -0500 Date: Thu, 10 Mar 2016 17:41:13 +0100 From: Jiri Olsa To: Arnaldo Carvalho de Melo Cc: Arnaldo Carvalho de Melo , Ingo Molnar , linux-kernel@vger.kernel.org, Adrian Hunter , Alexander Shishkin , Andi Kleen , Borislav Petkov , Colin Ian King , David Ahern , Davidlohr Bueso , He Kuang , Mel Gorman , Namhyung Kim , Peter Zijlstra , Stephane Eranian , Steven Rostedt , Wang Nan Subject: [PATCHv2] perf tool: Build jitdump only on supported archs Message-ID: <20160310164113.GA11357@krava.redhat.com> References: <1457379891-28516-1-git-send-email-acme@kernel.org> <20160310093229.GB11206@krava.redhat.com> <20160310155700.GB3102@redhat.com> <20160310160436.GA9604@krava.redhat.com> <20160310161300.GE3529@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160310161300.GE3529@kernel.org> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 10, 2016 at 01:13:00PM -0300, Arnaldo Carvalho de Melo wrote: > Em Thu, Mar 10, 2016 at 05:04:36PM +0100, Jiri Olsa escreveu: > > On Thu, Mar 10, 2016 at 12:57:00PM -0300, Arnaldo Carvalho de Melo wrote: > > > Em Thu, Mar 10, 2016 at 10:32:29AM +0100, Jiri Olsa escreveu: > > > > On Mon, Mar 07, 2016 at 04:44:36PM -0300, Arnaldo Carvalho de Melo wrote: > > > > > > > > SNIP > > > > > > > > > ---------------------------------------------------------------- > > > > > Adrian Hunter (5): > > > > > perf inject: Hit all DSOs for AUX data in JIT and other cases > > > > > perf session: Simplify tool stubs > > > > > perf jit: Let jit_process() return errors > > > > > perf jit: Move clockid validation > > > > > perf tools: Use 64-bit shifts with (TSC) time conversion > > > > > > > > hi, > > > > perf build failed for me on s390x because of jitdump feature. > > > > > > > > Attached patch tries to enable the build only on supported archs. > > > > > > > > I haven't followed this feature too much, so I might have missed > > > > something.. anyway it builds on s390x now ;-) I took the list of > > > > archs from util/genelf.h > > > > > > Hi Jiri, > > > > > > This may be related to this cset, still not in tip/perf/core: > > > > > > commit 46dad054a19297af65c417c97cb920aa5bdf7e8c > > > Author: Arnaldo Carvalho de Melo > > > Date: Mon Mar 7 18:48:45 2016 -0300 > > > > > > perf jitdump: DWARF is also needed > > > > > > Can you check if without this one perf builds on s390? > > > > > > This patch is to make it build on ubuntu without libdw, i.e. it requires > > > both libdw and libelf, the way I fixed it may not be the best and > > > probably we need to fold these two patches before sending to Ingo, since > > > your patch essentially rewrites my previous patch :-) > > > > > > Can you please check that? > > > > well there's following line in util/genelf.h: > > > > #else > > #error "unsupported architecture" > > #endif > > > > which makes the build fail on unssuported arch, > > even without your patch: > > Ok, so I'll just apply your patch, thanks for clarifying. > oops, just consolidated #if defined into #ifdef, v2 attached thanks, jirka --- Make jitdump being built only on architectures defined in util/genelf.h file. Signed-off-by: Jiri Olsa --- tools/perf/arch/arm/Makefile | 1 + tools/perf/arch/arm64/Makefile | 1 + tools/perf/arch/powerpc/Makefile | 1 + tools/perf/arch/x86/Makefile | 1 + tools/perf/builtin-inject.c | 12 +++++++----- tools/perf/config/Makefile | 7 +++++++ tools/perf/util/Build | 2 +- 7 files changed, 19 insertions(+), 6 deletions(-) diff --git a/tools/perf/arch/arm/Makefile b/tools/perf/arch/arm/Makefile index 7fbca175099e..18b13518d8d8 100644 --- a/tools/perf/arch/arm/Makefile +++ b/tools/perf/arch/arm/Makefile @@ -1,3 +1,4 @@ ifndef NO_DWARF PERF_HAVE_DWARF_REGS := 1 endif +PERF_HAVE_JITDUMP := 1 diff --git a/tools/perf/arch/arm64/Makefile b/tools/perf/arch/arm64/Makefile index 7fbca175099e..18b13518d8d8 100644 --- a/tools/perf/arch/arm64/Makefile +++ b/tools/perf/arch/arm64/Makefile @@ -1,3 +1,4 @@ ifndef NO_DWARF PERF_HAVE_DWARF_REGS := 1 endif +PERF_HAVE_JITDUMP := 1 diff --git a/tools/perf/arch/powerpc/Makefile b/tools/perf/arch/powerpc/Makefile index 9f9cea3478fd..56e05f126ad8 100644 --- a/tools/perf/arch/powerpc/Makefile +++ b/tools/perf/arch/powerpc/Makefile @@ -3,3 +3,4 @@ PERF_HAVE_DWARF_REGS := 1 endif HAVE_KVM_STAT_SUPPORT := 1 +PERF_HAVE_JITDUMP := 1 diff --git a/tools/perf/arch/x86/Makefile b/tools/perf/arch/x86/Makefile index 09ba923debe8..269af2143735 100644 --- a/tools/perf/arch/x86/Makefile +++ b/tools/perf/arch/x86/Makefile @@ -3,3 +3,4 @@ PERF_HAVE_DWARF_REGS := 1 endif HAVE_KVM_STAT_SUPPORT := 1 PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1 +PERF_HAVE_JITDUMP := 1 diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c index e219ed458d97..7fa68663ed72 100644 --- a/tools/perf/builtin-inject.c +++ b/tools/perf/builtin-inject.c @@ -73,7 +73,7 @@ static int perf_event__repipe_oe_synth(struct perf_tool *tool, return perf_event__repipe_synth(tool, event); } -#if defined(HAVE_LIBELF_SUPPORT) && defined(HAVE_DWARF_SUPPORT) +#ifdef HAVE_JITDUMP static int perf_event__drop_oe(struct perf_tool *tool __maybe_unused, union perf_event *event __maybe_unused, struct ordered_events *oe __maybe_unused) @@ -245,7 +245,7 @@ static int perf_event__repipe_mmap(struct perf_tool *tool, return err; } -#if defined(HAVE_LIBELF_SUPPORT) && defined(HAVE_DWARF_SUPPORT) +#ifdef HAVE_JITDUMP static int perf_event__jit_repipe_mmap(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, @@ -283,7 +283,7 @@ static int perf_event__repipe_mmap2(struct perf_tool *tool, return err; } -#if defined(HAVE_LIBELF_SUPPORT) && defined(HAVE_DWARF_SUPPORT) +#ifdef HAVE_JITDUMP static int perf_event__jit_repipe_mmap2(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, @@ -778,7 +778,9 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused) OPT_BOOLEAN('s', "sched-stat", &inject.sched_stat, "Merge sched-stat and sched-switch for getting events " "where and how long tasks slept"), +#ifdef HAVE_JITDUMP OPT_BOOLEAN('j', "jit", &inject.jit_mode, "merge jitdump files into perf.data file"), +#endif OPT_INCR('v', "verbose", &verbose, "be more verbose (show build ids, etc)"), OPT_STRING(0, "kallsyms", &symbol_conf.kallsyms_name, "file", @@ -795,7 +797,7 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused) "perf inject []", NULL }; -#if !defined(HAVE_LIBELF_SUPPORT) || !defined(HAVE_DWARF_SUPPORT) +#ifndef HAVE_JITDUMP set_option_nobuild(options, 'j', "jit", "NO_LIBELF=1", true); #endif argc = parse_options(argc, argv, options, inject_usage, 0); @@ -833,7 +835,7 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused) inject.tool.ordered_events = true; inject.tool.ordering_requires_timestamps = true; } -#if defined(HAVE_LIBELF_SUPPORT) && defined(HAVE_DWARF_SUPPORT) +#ifdef HAVE_JITDUMP if (inject.jit_mode) { inject.tool.mmap2 = perf_event__jit_repipe_mmap2; inject.tool.mmap = perf_event__jit_repipe_mmap; diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile index f7aeaf303f5a..eca6a912e8c2 100644 --- a/tools/perf/config/Makefile +++ b/tools/perf/config/Makefile @@ -328,6 +328,13 @@ ifndef NO_LIBELF endif # NO_LIBBPF endif # NO_LIBELF +ifdef PERF_HAVE_JITDUMP + ifndef NO_DWARF + $(call detected,CONFIG_JITDUMP) + CFLAGS += -DHAVE_JITDUMP + endif +endif + ifeq ($(ARCH),powerpc) ifndef NO_DWARF CFLAGS += -DHAVE_SKIP_CALLCHAIN_IDX diff --git a/tools/perf/util/Build b/tools/perf/util/Build index f130ce240158..eea25e2424e9 100644 --- a/tools/perf/util/Build +++ b/tools/perf/util/Build @@ -108,7 +108,7 @@ libperf-$(CONFIG_ZLIB) += zlib.o libperf-$(CONFIG_LZMA) += lzma.o libperf-y += demangle-java.o -ifdef CONFIG_DWARF +ifdef CONFIG_JITDUMP libperf-$(CONFIG_LIBELF) += jitdump.o libperf-$(CONFIG_LIBELF) += genelf.o libperf-$(CONFIG_LIBELF) += genelf_debug.o -- 2.4.3