Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1351939 > unrolled thread

[GIT PULL 00/15] perf/core improvements and fixes

Started byArnaldo Carvalho de Melo <acme@kernel.org>
First post2016-03-07 21:00 +0100
Last post2016-03-11 09:50 +0100
Articles 8 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [GIT PULL 00/15] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-03-07 21:00 +0100
    [PATCH 05/15] perf jit: Move clockid validation Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-03-07 21:00 +0100
    [PATCH] perf tool: Build jitdump only on supported archs Jiri Olsa <jolsa@redhat.com> - 2016-03-10 10:40 +0100
      Re: [PATCH] perf tool: Build jitdump only on supported archs Arnaldo Carvalho de Melo <acme@redhat.com> - 2016-03-10 17:00 +0100
        Re: [PATCH] perf tool: Build jitdump only on supported archs Jiri Olsa <jolsa@redhat.com> - 2016-03-10 17:10 +0100
          Re: [PATCH] perf tool: Build jitdump only on supported archs Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-03-10 17:20 +0100
            [PATCHv2] perf tool: Build jitdump only on supported archs Jiri Olsa <jolsa@redhat.com> - 2016-03-10 17:50 +0100
              [tip:perf/core] perf jitdump: Build only on supported archs tip-bot for Jiri Olsa <tipbot@zytor.com> - 2016-03-11 09:50 +0100

#1351939 — [GIT PULL 00/15] perf/core improvements and fixes

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-03-07 21:00 +0100
Subject[GIT PULL 00/15] perf/core improvements and fixes
Message-ID<ra9ke-7bJ-9@gated-at.bofh.it>
Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 009668520ae00d52026ccdb3884864e3473c6b65:

  Merge tag 'perf-core-for-mingo-20160303' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-03-04 12:19:21 +0100)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160307

for you to fetch changes up to b03ae342d9bec460a6c9c327c3f5f758263b0932:

  perf report: Use hierarchy hpp list on gtk (2016-03-07 15:10:41 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Allow grouping multiple sort keys per 'perf report/top --hierarchy'
  level (Namhyung Kim)

- Document 'perf stat --detailed' option (Borislav Petkov)

Infrastructure:

- jitdump prep work for supporting it with Intel PT (Adrian Hunter)

- Use 64-bit shifts with (TSC) time conversion (Adrian Hunter)

Trivial:

- Explicitly declare inc_group_count as a void function (Colin Ian King)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
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

Borislav Petkov (1):
      perf stat: Document --detailed option

Colin Ian King (1):
      perf tools: Explicitly declare inc_group_count as a void function

Namhyung Kim (8):
      perf hists: Add level field to struct perf_hpp_fmt
      perf hists: Introduce perf_hpp__setup_hists_formats()
      perf hists: Use own hpp_list for hierarchy mode
      perf hists: Support multiple sort keys in a hierarchy level
      perf hists: Fix indent for multiple hierarchy sort key
      perf report: Use hierarchy hpp list on stdio
      perf hists browser: Use hierarchy hpp list
      perf report: Use hierarchy hpp list on gtk

 tools/perf/Documentation/perf-stat.txt |   8 ++
 tools/perf/arch/x86/tests/rdpmc.c      |   2 +-
 tools/perf/builtin-inject.c            |  52 ++++------
 tools/perf/ui/browsers/hists.c         | 147 +++++++++++++++-------------
 tools/perf/ui/gtk/hists.c              |  73 ++++++++------
 tools/perf/ui/hist.c                   |  69 +++++++++++++
 tools/perf/ui/stdio/hist.c             | 171 +++++++++++++++++----------------
 tools/perf/util/hist.c                 |  72 +++++++++-----
 tools/perf/util/hist.h                 |  14 +++
 tools/perf/util/jitdump.c              |  29 +++++-
 tools/perf/util/parse-events.y         |   2 +-
 tools/perf/util/session.c              |  40 ++------
 tools/perf/util/sort.c                 | 146 ++++++++++++++++++++--------
 tools/perf/util/sort.h                 |   1 +
 tools/perf/util/tsc.c                  |   2 +-
 15 files changed, 514 insertions(+), 314 deletions(-)

[toc] | [next] | [standalone]


#1351944 — [PATCH 05/15] perf jit: Move clockid validation

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-03-07 21:00 +0100
Subject[PATCH 05/15] perf jit: Move clockid validation
Message-ID<ra9tV-7f4-37@gated-at.bofh.it>
In reply to#1351939
From: Adrian Hunter <ajhunter@gmail.com>

Move clockid validation into jit_process() so it can later be made
conditional.

Signed-off-by: Adrian Hunter <ajhunter@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1457005856-6143-6-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-inject.c | 24 ------------------------
 tools/perf/util/jitdump.c   | 23 +++++++++++++++++++++++
 2 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 2512d71ca386..b2885776b602 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -729,23 +729,6 @@ static int __cmd_inject(struct perf_inject *inject)
 	return ret;
 }
 
-#ifdef HAVE_LIBELF_SUPPORT
-static int
-jit_validate_events(struct perf_session *session)
-{
-	struct perf_evsel *evsel;
-
-	/*
-	 * check that all events use CLOCK_MONOTONIC
-	 */
-	evlist__for_each(session->evlist, evsel) {
-		if (evsel->attr.use_clockid == 0 || evsel->attr.clockid != CLOCK_MONOTONIC)
-			return -1;
-	}
-	return 0;
-}
-#endif
-
 int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
 {
 	struct perf_inject inject = {
@@ -852,13 +835,6 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
 	}
 #ifdef HAVE_LIBELF_SUPPORT
 	if (inject.jit_mode) {
-		/*
-		 * validate event is using the correct clockid
-		 */
-		if (jit_validate_events(inject.session)) {
-			fprintf(stderr, "error, jitted code must be sampled with perf record -k 1\n");
-			return -1;
-		}
 		inject.tool.mmap2	   = perf_event__jit_repipe_mmap2;
 		inject.tool.mmap	   = perf_event__jit_repipe_mmap;
 		inject.tool.ordered_events = true;
diff --git a/tools/perf/util/jitdump.c b/tools/perf/util/jitdump.c
index bd9e44f9fff2..cd272cc21e05 100644
--- a/tools/perf/util/jitdump.c
+++ b/tools/perf/util/jitdump.c
@@ -99,6 +99,21 @@ jit_close(struct jit_buf_desc *jd)
 }
 
 static int
+jit_validate_events(struct perf_session *session)
+{
+	struct perf_evsel *evsel;
+
+	/*
+	 * check that all events use CLOCK_MONOTONIC
+	 */
+	evlist__for_each(session->evlist, evsel) {
+		if (evsel->attr.use_clockid == 0 || evsel->attr.clockid != CLOCK_MONOTONIC)
+			return -1;
+	}
+	return 0;
+}
+
+static int
 jit_open(struct jit_buf_desc *jd, const char *name)
 {
 	struct jitheader header;
@@ -157,6 +172,14 @@ jit_open(struct jit_buf_desc *jd, const char *name)
 		goto error;
 	}
 
+	/*
+	 * validate event is using the correct clockid
+	 */
+	if (jit_validate_events(jd->session)) {
+		pr_err("error, jitted code must be sampled with perf record -k 1\n");
+		goto error;
+	}
+
 	bs = header.total_size - sizeof(header);
 
 	if (bs > bsz) {
-- 
2.5.0

[toc] | [prev] | [next] | [standalone]


#1354954 — [PATCH] perf tool: Build jitdump only on supported archs

FromJiri Olsa <jolsa@redhat.com>
Date2016-03-10 10:40 +0100
Subject[PATCH] perf tool: Build jitdump only on supported archs
Message-ID<rb5ex-4U1-5@gated-at.bofh.it>
In reply to#1351939
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

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

[toc] | [prev] | [next] | [standalone]


#1355238 — Re: [PATCH] perf tool: Build jitdump only on supported archs

FromArnaldo Carvalho de Melo <acme@redhat.com>
Date2016-03-10 17:00 +0100
SubjectRe: [PATCH] perf tool: Build jitdump only on supported archs
Message-ID<rbbai-G2-23@gated-at.bofh.it>
In reply to#1354954
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

[toc] | [prev] | [next] | [standalone]


#1355240 — Re: [PATCH] perf tool: Build jitdump only on supported archs

FromJiri Olsa <jolsa@redhat.com>
Date2016-03-10 17:10 +0100
SubjectRe: [PATCH] perf tool: Build jitdump only on supported archs
Message-ID<rbbjY-119-9@gated-at.bofh.it>
In reply to#1355238
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 <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?

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:

  CC       util/jitdump.o
In file included from util/jitdump.c:23:
util/genelf.h:41:2: error: #error "unsupported architecture"
util/genelf.h:44:5: error: "GEN_ELF_CLASS" is not defined
mv: cannot stat `util/.jitdump.o.tmp': No such file or directory
make[3]: *** [util/jitdump.o] Error 1


jirka

[toc] | [prev] | [next] | [standalone]


#1355244 — Re: [PATCH] perf tool: Build jitdump only on supported archs

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2016-03-10 17:20 +0100
SubjectRe: [PATCH] perf tool: Build jitdump only on supported archs
Message-ID<rbbtD-16X-3@gated-at.bofh.it>
In reply to#1355240
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 <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?
> 
> 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.

- Arnaldo
 
>   CC       util/jitdump.o
> In file included from util/jitdump.c:23:
> util/genelf.h:41:2: error: #error "unsupported architecture"
> util/genelf.h:44:5: error: "GEN_ELF_CLASS" is not defined
> mv: cannot stat `util/.jitdump.o.tmp': No such file or directory
> make[3]: *** [util/jitdump.o] Error 1
> 
> 
> jirka

[toc] | [prev] | [next] | [standalone]


#1355262 — [PATCHv2] perf tool: Build jitdump only on supported archs

FromJiri Olsa <jolsa@redhat.com>
Date2016-03-10 17:50 +0100
Subject[PATCHv2] perf tool: Build jitdump only on supported archs
Message-ID<rbbWG-1kz-11@gated-at.bofh.it>
In reply to#1355244
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 <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?
> > 
> > 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 <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..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 [<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)
+#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

[toc] | [prev] | [next] | [standalone]


#1355700 — [tip:perf/core] perf jitdump: Build only on supported archs

Fromtip-bot for Jiri Olsa <tipbot@zytor.com>
Date2016-03-11 09:50 +0100
Subject[tip:perf/core] perf jitdump: Build only on supported archs
Message-ID<rbqVJ-3vt-21@gated-at.bofh.it>
In reply to#1355262
Commit-ID:  e12b202f8fb9b62a3997cad8e93401f85293390c
Gitweb:     http://git.kernel.org/tip/e12b202f8fb9b62a3997cad8e93401f85293390c
Author:     Jiri Olsa <jolsa@redhat.com>
AuthorDate: Thu, 10 Mar 2016 17:41:13 +0100
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 10 Mar 2016 16:33:19 -0300

perf jitdump: Build only on supported archs

Build jitdump only on architectures defined in util/genelf.h file, to avoid
breaking the build on such arches.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Colin Ian King <colin.king@canonical.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Davidlohr Bueso <dbueso@suse.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Mel Gorman <mgorman@suse.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/20160310164113.GA11357@krava.redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 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 7fbca17..18b1351 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 7fbca17..18b1351 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 9f9cea3..56e05f1 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 09ba923..269af21 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 e219ed4..7fa6866 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 [<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)
+#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 f7aeaf3..eca6a91 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 f130ce2..eea25e2 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

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web