linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	linux-kernel@vger.kernel.org,
	Adrian Hunter <adrian.hunter@intel.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Andi Kleen <andi@firstfloor.org>, Borislav Petkov <bp@suse.de>,
	Colin Ian King <colin.king@canonical.com>,
	David Ahern <dsahern@gmail.com>,
	Davidlohr Bueso <dbueso@suse.com>, He Kuang <hekuang@huawei.com>,
	Mel Gorman <mgorman@suse.com>, Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Stephane Eranian <eranian@google.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Wang Nan <wangnan0@huawei.com>
Subject: Re: [PATCH] perf tool: Build jitdump only on supported archs
Date: Thu, 10 Mar 2016 12:57:00 -0300	[thread overview]
Message-ID: <20160310155700.GB3102@redhat.com> (raw)
In-Reply-To: <20160310093229.GB11206@krava.redhat.com>

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 <acme@redhat.com>
  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?

- Arnaldo

 
> thanks,
> jirka
> 
> 
> ---
> Make jitdump being built only on architectures
> defined in util/genelf.h file.
> 
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
>  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..6eb17e24c4cc 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)
> +#if defined(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)
> +#if defined(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 [<options>]",
>  		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)
> +#if defined(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

  reply	other threads:[~2016-03-10 15:57 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-07 19:44 [GIT PULL 00/15] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 01/15] perf tools: Explicitly declare inc_group_count as a void function Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 02/15] perf inject: Hit all DSOs for AUX data in JIT and other cases Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 03/15] perf session: Simplify tool stubs Arnaldo Carvalho de Melo
2016-03-08  7:45   ` Adrian Hunter
2016-03-08  9:17     ` Ingo Molnar
2016-03-07 19:44 ` [PATCH 04/15] perf jit: Let jit_process() return errors Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 05/15] perf jit: Move clockid validation Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 06/15] perf tools: Use 64-bit shifts with (TSC) time conversion Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 07/15] perf hists: Add level field to struct perf_hpp_fmt Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 08/15] perf stat: Document --detailed option Arnaldo Carvalho de Melo
2016-03-08  9:10   ` Ingo Molnar
2016-03-07 19:44 ` [PATCH 09/15] perf hists: Introduce perf_hpp__setup_hists_formats() Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 10/15] perf hists: Use own hpp_list for hierarchy mode Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 11/15] perf hists: Support multiple sort keys in a hierarchy level Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 12/15] perf hists: Fix indent for multiple hierarchy sort key Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 13/15] perf report: Use hierarchy hpp list on stdio Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 14/15] perf hists browser: Use hierarchy hpp list Arnaldo Carvalho de Melo
2016-03-07 19:44 ` [PATCH 15/15] perf report: Use hierarchy hpp list on gtk Arnaldo Carvalho de Melo
2016-03-10  9:32 ` [PATCH] perf tool: Build jitdump only on supported archs Jiri Olsa
2016-03-10 15:57   ` Arnaldo Carvalho de Melo [this message]
2016-03-10 16:04     ` Jiri Olsa
2016-03-10 16:13       ` Arnaldo Carvalho de Melo
2016-03-10 16:41         ` [PATCHv2] " Jiri Olsa
2016-03-11  8:47           ` [tip:perf/core] perf jitdump: Build " tip-bot for Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160310155700.GB3102@redhat.com \
    --to=acme@redhat.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=bp@suse.de \
    --cc=colin.king@canonical.com \
    --cc=dbueso@suse.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=hekuang@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).