All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Maciej Debski <maciejd@google.com>,
	Anton Blanchard <anton@ozlabs.org>, Jiri Olsa <jolsa@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 18/37] perf jit: Enable jitdump support without dwarf
Date: Mon, 24 Oct 2016 13:20:38 -0300	[thread overview]
Message-ID: <1477326057-24080-19-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1477326057-24080-1-git-send-email-acme@kernel.org>

From: Maciej Debski <maciejd@google.com>

This patch modifies the build dependencies on the jitdump support in
perf. As it stands jitdump was wrongfully made dependent 100% on using
DWARF. However, the dwarf dependency, only exist if generating the
source line table in genelf_debug.c. The rest of the support does not
need DWARF.

This patch removes the dependency on DWARF for the entire jitdump
support. It keeps it only for the genelf_debug.c support.

Signed-off-by: Maciej Debski <maciejd@google.com>
Reviewed-by: Stephane Eranian <eranian@google.com>
Cc: Anton Blanchard <anton@ozlabs.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1476356383-30100-3-git-send-email-eranian@google.com
Fixes: e12b202f8fb9 ("perf jitdump: Build only on supported archs")
[ Make it build only if NO_LIBELF isn't defined, as jitdump.o will only be built in that case ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile.config | 2 +-
 tools/perf/util/Build      | 2 +-
 tools/perf/util/genelf.c   | 9 +++++++--
 tools/perf/util/genelf.h   | 2 ++
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 72edf83d76b7..cffdd9cf3ebf 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -366,7 +366,7 @@ ifndef NO_SDT
 endif
 
 ifdef PERF_HAVE_JITDUMP
-  ifndef NO_DWARF
+  ifndef NO_LIBELF
     $(call detected,CONFIG_JITDUMP)
     CFLAGS += -DHAVE_JITDUMP
   endif
diff --git a/tools/perf/util/Build b/tools/perf/util/Build
index eb60e613d795..1dc67efad634 100644
--- a/tools/perf/util/Build
+++ b/tools/perf/util/Build
@@ -120,7 +120,7 @@ libperf-y += demangle-rust.o
 ifdef CONFIG_JITDUMP
 libperf-$(CONFIG_LIBELF) += jitdump.o
 libperf-$(CONFIG_LIBELF) += genelf.o
-libperf-$(CONFIG_LIBELF) += genelf_debug.o
+libperf-$(CONFIG_DWARF) += genelf_debug.o
 endif
 
 CFLAGS_config.o   += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
diff --git a/tools/perf/util/genelf.c b/tools/perf/util/genelf.c
index 8a2995ea426f..30dece345b9f 100644
--- a/tools/perf/util/genelf.c
+++ b/tools/perf/util/genelf.c
@@ -19,7 +19,9 @@
 #include <limits.h>
 #include <fcntl.h>
 #include <err.h>
+#ifdef HAVE_DWARF_SUPPORT
 #include <dwarf.h>
+#endif
 
 #include "perf.h"
 #include "genelf.h"
@@ -161,7 +163,7 @@ gen_build_id(struct buildid_note *note, unsigned long load_addr, const void *cod
 int
 jit_write_elf(int fd, uint64_t load_addr, const char *sym,
 	      const void *code, int csize,
-	      void *debug, int nr_debug_entries)
+	      void *debug __maybe_unused, int nr_debug_entries __maybe_unused)
 {
 	Elf *e;
 	Elf_Data *d;
@@ -390,11 +392,14 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
 	shdr->sh_size = sizeof(bnote);
 	shdr->sh_entsize = 0;
 
+#ifdef HAVE_DWARF_SUPPORT
 	if (debug && nr_debug_entries) {
 		retval = jit_add_debug_info(e, load_addr, debug, nr_debug_entries);
 		if (retval)
 			goto error;
-	} else {
+	} else
+#endif
+	{
 		if (elf_update(e, ELF_C_WRITE) < 0) {
 			warnx("elf_update 4 failed");
 			goto error;
diff --git a/tools/perf/util/genelf.h b/tools/perf/util/genelf.h
index 2fbeb59c4bdd..5c933ac71451 100644
--- a/tools/perf/util/genelf.h
+++ b/tools/perf/util/genelf.h
@@ -4,8 +4,10 @@
 /* genelf.c */
 int jit_write_elf(int fd, uint64_t code_addr, const char *sym,
 		  const void *code, int csize, void *debug, int nr_debug_entries);
+#ifdef HAVE_DWARF_SUPPORT
 /* genelf_debug.c */
 int jit_add_debug_info(Elf *e, uint64_t code_addr, void *debug, int nr_debug_entries);
+#endif
 
 #if   defined(__arm__)
 #define GEN_ELF_ARCH	EM_ARM
-- 
2.7.4

  parent reply	other threads:[~2016-10-24 16:25 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-24 16:20 [GIT PULL 00/37] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 01/37] perf intel-pt/bts: Tidy instruction buffer size usage Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 02/37] perf intel-pt/bts: Report instruction bytes and length in sample Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 03/37] perf script: Support insn and insnlen Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 04/37] perf tools: Sync copy of x86's syscall table Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 05/37] tools lib traceevent: Add install_headers target Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 06/37] tools lib traceevent: Add do_install_mkdir Makefile function Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 07/37] tools lib traceevent: Rename LIB_FILE to LIB_TARGET Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 08/37] tools lib traceevent: Add version for traceevent shared object Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 09/37] tools lib: Add for_each_clear_bit macro Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 10/37] perf report: Move captured info to generic header info Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 11/37] perf header: Display missing features Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 12/37] perf header: Display feature name on write failure Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 13/37] perf record: Improve documentation of event parameters Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 14/37] perf tools: Implement branch_type event parameter Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 15/37] perf jit: Avoid returning garbage for a ret variable Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 16/37] perf jit: Add NT_GNU_BUILD_ID definition for older distros Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 17/37] perf jit: Improve error messages from JVMTI Arnaldo Carvalho de Melo
2016-10-24 16:20 ` Arnaldo Carvalho de Melo [this message]
2016-10-24 16:20 ` [PATCH 19/37] perf jit: Remove unecessary padding in jitdump file Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 20/37] perf jit: Make perf skip unknown records Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 21/37] perf jit: Do not assume pgoff is zero Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 22/37] perf jit: Add unwinding support Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 23/37] perf jit: Generate .eh_frame/.eh_frame_hdr in DSO Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 24/37] perf jit: Check JITHEADER_VERSION Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 25/37] perf jit: Add jitdump format specification document Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 26/37] perf pmu: Only print Using CPUID message once Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 27/37] perf tools: Fix typo "No enough" to "Not enough" Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 28/37] perf hists browser: Dynamically change verbosity level Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 29/37] perf trace: Implement --delay Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 30/37] perf bench mem: Move boilerplate memory allocation to the infrastructure Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 31/37] perf tools: Normalize sq_quote_argv() error reporting Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 32/37] perf tools: Use normal error reporting when processing PERF_RECORD_READ events Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 33/37] perf bench futex: Cache align the worker struct Arnaldo Carvalho de Melo
2016-10-24 18:50   ` Davidlohr Bueso
2016-10-24 18:53     ` Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 34/37] perf trace: Remove thread_trace->exit_time Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 35/37] perf trace: Use the syscall raw_syscalls:sys_enter timestamp Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 36/37] perf list: Make vendor event matching case insensitive Arnaldo Carvalho de Melo
2016-10-24 16:20 ` [PATCH 37/37] perf coresight: Removing miscellaneous debug output Arnaldo Carvalho de Melo
2016-10-24 16:20   ` Arnaldo Carvalho de Melo
2016-10-24 18:44 ` [GIT PULL 00/37] perf/core improvements and fixes Ingo Molnar

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=1477326057-24080-19-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=anton@ozlabs.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciejd@google.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.