From: tip-bot for Jiri Olsa <jolsa@redhat.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, eranian@google.com, mingo@kernel.org,
gorcunov@openvz.org, a.p.zijlstra@chello.nl,
benjamin.redelings@nescent.org, jolsa@redhat.com,
drepper@gmail.com, robert.richter@amd.com, fweisbec@gmail.com,
tglx@linutronix.de, cjashfor@linux.vnet.ibm.com, asharma@fb.com,
linux-kernel@vger.kernel.org, hpa@zytor.com, fche@redhat.com,
paulus@samba.org, tzanussi@gmail.com,
masami.hiramatsu.pt@hitachi.com, mingo@elte.hu
Subject: [tip:perf/core] perf tools: Add libunwind dependency for DWARF CFI unwinding
Date: Tue, 21 Aug 2012 08:53:05 -0700 [thread overview]
Message-ID: <tip-6a40cd90f5deb6dec322eeb54587ae55a934db2c@git.kernel.org> (raw)
In-Reply-To: <1344345647-11536-10-git-send-email-jolsa@redhat.com>
Commit-ID: 6a40cd90f5deb6dec322eeb54587ae55a934db2c
Gitweb: http://git.kernel.org/tip/6a40cd90f5deb6dec322eeb54587ae55a934db2c
Author: Jiri Olsa <jolsa@redhat.com>
AuthorDate: Tue, 7 Aug 2012 15:20:44 +0200
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 10 Aug 2012 16:46:07 -0300
perf tools: Add libunwind dependency for DWARF CFI unwinding
Adding libunwind to be linked with perf if available. It's required
for the to get dwarf cfi unwinding support.
Also building perf with the dwarf call frame informations by default,
so that we can unwind callchains in perf itself.
Adding LIBUNWIND_DIR Makefile variable allowing user to specify
the directory with libunwind to be linked. This is used for
debug purposes.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Original-patch-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: "Frank Ch. Eigler" <fche@redhat.com>
Cc: Arun Sharma <asharma@fb.com>
Cc: Benjamin Redelings <benjamin.redelings@nescent.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Ulrich Drepper <drepper@gmail.com>
Link: http://lkml.kernel.org/r/1344345647-11536-10-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Makefile | 29 ++++++++++++++++++++++++++++-
tools/perf/config/feature-tests.mak | 25 +++++++++++++++++++++++++
2 files changed, 53 insertions(+), 1 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 27ae84b..0aee6a9 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -43,6 +43,8 @@ include config/utilities.mak
#
# Define NO_LIBELF if you do not want libelf dependency (e.g. cross-builds)
#
+# Define NO_LIBUNWIND if you do not want libunwind dependency for dwarf
+# backtrace post unwind.
$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
@$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)
@@ -64,6 +66,7 @@ AR = $(CROSS_COMPILE)ar
ifeq ($(ARCH),i386)
ARCH := x86
NO_PERF_REGS := 0
+ LIBUNWIND_LIBS = -lunwind -lunwind-x86
endif
ifeq ($(ARCH),x86_64)
ARCH := x86
@@ -77,6 +80,7 @@ ifeq ($(ARCH),x86_64)
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
endif
NO_PERF_REGS := 0
+ LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
endif
# Treat warnings as errors unless directed not to
@@ -97,7 +101,7 @@ ifdef PARSER_DEBUG
PARSER_DEBUG_CFLAGS := -DPARSER_DEBUG
endif
-CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS)
+CFLAGS = -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS)
EXTLIBS = -lpthread -lrt -lelf -lm
ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
ALL_LDFLAGS = $(LDFLAGS)
@@ -476,6 +480,21 @@ ifneq ($(call try-cc,$(SOURCE_LIBELF),$(FLAGS_LIBELF)),y)
endif
endif # NO_LIBELF
+ifndef NO_LIBUNWIND
+# for linking with debug library, run like:
+# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
+ifdef LIBUNWIND_DIR
+ LIBUNWIND_CFLAGS := -I$(LIBUNWIND_DIR)/include
+ LIBUNWIND_LDFLAGS := -L$(LIBUNWIND_DIR)/lib
+endif
+
+FLAGS_UNWIND=$(LIBUNWIND_CFLAGS) $(ALL_CFLAGS) $(LIBUNWIND_LDFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(LIBUNWIND_LIBS)
+ifneq ($(call try-cc,$(SOURCE_LIBUNWIND),$(FLAGS_UNWIND)),y)
+ msg := $(warning No libunwind found. Please install libunwind >= 0.99);
+ NO_LIBUNWIND := 1
+endif # Libunwind support
+endif # NO_LIBUNWIND
+
-include arch/$(ARCH)/Makefile
ifneq ($(OUTPUT),)
@@ -522,6 +541,14 @@ endif # PERF_HAVE_DWARF_REGS
endif # NO_DWARF
endif # NO_LIBELF
+ifdef NO_LIBUNWIND
+ BASIC_CFLAGS += -DNO_LIBUNWIND_SUPPORT
+else
+ EXTLIBS += $(LIBUNWIND_LIBS)
+ BASIC_CFLAGS := $(LIBUNWIND_CFLAGS) $(BASIC_CFLAGS)
+ BASIC_LDFLAGS := $(LIBUNWIND_LDFLAGS) $(BASIC_LDFLAGS)
+endif
+
ifdef NO_NEWT
BASIC_CFLAGS += -DNO_NEWT_SUPPORT
else
diff --git a/tools/perf/config/feature-tests.mak b/tools/perf/config/feature-tests.mak
index 6c18785..2f1156a 100644
--- a/tools/perf/config/feature-tests.mak
+++ b/tools/perf/config/feature-tests.mak
@@ -154,3 +154,28 @@ int main(void)
return 0;
}
endef
+
+ifndef NO_LIBUNWIND
+define SOURCE_LIBUNWIND
+#include <libunwind.h>
+#include <stdlib.h>
+
+extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
+ unw_word_t ip,
+ unw_dyn_info_t *di,
+ unw_proc_info_t *pi,
+ int need_unwind_info, void *arg);
+
+
+#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)
+
+int main(void)
+{
+ unw_addr_space_t addr_space;
+ addr_space = unw_create_addr_space(NULL, 0);
+ unw_init_remote(NULL, addr_space, NULL);
+ dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);
+ return 0;
+}
+endef
+endif
next prev parent reply other threads:[~2012-08-21 15:53 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-07 13:20 [PATCHv10 00/12] perf: Add backtrace post dwarf unwind Jiri Olsa
2012-08-07 13:20 ` [PATCH 01/12] perf: Unified API to record selective sets of arch registers Jiri Olsa
2012-08-21 15:45 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 02/12] perf: Add ability to attach user level registers dump to sample Jiri Olsa
2012-08-21 15:46 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 03/12] perf: Factor __output_copy to be usable with specific copy function Jiri Olsa
2012-08-21 15:47 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2012-08-07 13:20 ` [PATCH 04/12] perf: Add perf_output_skip function to skip bytes in sample Jiri Olsa
2012-08-21 15:48 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 05/12] perf: Add ability to attach user stack dump to sample Jiri Olsa
2012-08-21 15:49 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-21 17:11 ` Peter Zijlstra
2012-08-22 8:35 ` [PATCH] perf: Keep the perf_event_attr on version 3 Jiri Olsa
2012-08-22 18:18 ` Arnaldo Carvalho de Melo
2012-08-22 18:21 ` Peter Zijlstra
2012-08-27 16:57 ` [tip:perf/core] perf tools: " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 06/12] perf: Add attribute to filter out callchains Jiri Olsa
2012-08-21 15:50 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2012-08-07 13:20 ` [PATCH 07/12] perf tools: Adding PERF_ATTR_SIZE_VER2 to the header swap check Jiri Olsa
2012-08-21 15:51 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-21 17:12 ` Peter Zijlstra
2012-08-22 8:31 ` Jiri Olsa
2012-08-07 13:20 ` [PATCH 08/12] perf tools: Add interface to arch registers sets Jiri Olsa
2012-08-21 15:52 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 09/12] perf tools: Add libunwind dependency for DWARF CFI unwinding Jiri Olsa
2012-08-21 15:53 ` tip-bot for Jiri Olsa [this message]
2012-08-07 13:20 ` [PATCH 10/12] perf tools: Support user regs and stack in sample parsing Jiri Olsa
2012-08-21 15:54 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 11/12] perf tools: Support for DWARF CFI unwinding on post processing Jiri Olsa
2012-08-21 15:55 ` [tip:perf/core] " tip-bot for Jiri Olsa
2012-08-07 13:20 ` [PATCH 12/12] perf tools: Support for DWARF mode callchain Jiri Olsa
2012-08-21 15:55 ` [tip:perf/core] " 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=tip-6a40cd90f5deb6dec322eeb54587ae55a934db2c@git.kernel.org \
--to=jolsa@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=asharma@fb.com \
--cc=benjamin.redelings@nescent.org \
--cc=cjashfor@linux.vnet.ibm.com \
--cc=drepper@gmail.com \
--cc=eranian@google.com \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=gorcunov@openvz.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@elte.hu \
--cc=mingo@kernel.org \
--cc=paulus@samba.org \
--cc=robert.richter@amd.com \
--cc=tglx@linutronix.de \
--cc=tzanussi@gmail.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).