All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexis Berlemont <alexis.berlemont@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Alexis Berlemont <alexis.berlemont@gmail.com>,
	jolsa@redhat.com, acme@ghostprotocols.net, dsahern@gmail.com,
	mingo@kernel.org
Subject: [PATCH 17/34] perf kbuild: remove legacy demangle-related build variables
Date: Wed, 14 May 2014 00:03:12 +0200	[thread overview]
Message-ID: <1400018609-20486-18-git-send-email-alexis.berlemont@gmail.com> (raw)
In-Reply-To: <1400018609-20486-1-git-send-email-alexis.berlemont@gmail.com>

Remove NO_DEMANGLE (replaced by CONFIG_DEMANGLE)
Remove HAVE_LIBBFD_SUPPORT (replaced by CONFIG_LIBBFD)
Remove HAVE_CPLUS_DEMANGLE_SUPPORT (replaced by CONFIG_LIBIBERTY_ONLY)
---
 tools/perf/Kconfig         | 28 ++++++++++++++++++++++------
 tools/perf/config/Makefile | 45 ++++++++++++++++++++++++---------------------
 tools/perf/util/srcline.c  |  8 +++++---
 tools/perf/util/symbol.h   | 25 +++++++++++++++++--------
 4 files changed, 68 insertions(+), 38 deletions(-)

diff --git a/tools/perf/Kconfig b/tools/perf/Kconfig
index 76d0763..ffc1d81 100644
--- a/tools/perf/Kconfig
+++ b/tools/perf/Kconfig
@@ -190,6 +190,28 @@ config TIMERFD
         ---help---
 	  Timer via file descriptor
 
+config DEMANGLE
+	bool "Demangle symbols"
+	default n
+        ---help---
+	  demangle
+
+choice DEMANGLE_DEPS
+       prompt "Demangle dependency(ies)"
+       depends on DEMANGLE
+       default LIBBFD
+
+config LIBBFD
+	bool "BFD + libiberty libraries"
+        ---help---
+	  Binary File Descriptor and libiberty libraries
+
+config LIBIBERTY_ONLY
+	bool "Libiberty only"
+        ---help---
+	  Libiberty
+endchoice
+
 choice
 	prompt "Elf library"
 	default LIBELF
@@ -223,12 +245,6 @@ config NUMA
         ---help---
 	  numa
 
-config DEMANGLE
-	bool "Demangle symbols"
-	default n
-        ---help---
-	  demangle
-
 config BIONIC
 	bool "Bionic support"
 	default n
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 33843b7..ff7f01c 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -534,33 +534,36 @@ ifeq ($(feature-libbfd), 1)
   endif
 endif
 
-ifdef NO_DEMANGLE
-  CFLAGS += -DNO_DEMANGLE
-else
-  ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
-    EXTLIBS += -liberty
-    CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
-  else
-    ifneq ($(feature-libbfd), 1)
-      ifneq ($(feature-liberty), 1)
-        ifneq ($(feature-liberty-z), 1)
-          # we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
-          # or any of 'bfd iberty z' trinity
-          ifeq ($(feature-cplus-demangle), 1)
-            EXTLIBS += -liberty
-            CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
-          else
-            msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling)
-            CFLAGS += -DNO_DEMANGLE
-          endif
+ifdef CONFIG_LIBBFD
+  ifneq ($(feature-libbfd), 1)
+    # TODO: there might be an issue here: feature-liberty and
+    # feature-liberty-z cannot be set; they can be set only if
+    # feature-libbfd is set
+    ifneq ($(feature-liberty), 1)
+      ifneq ($(feature-liberty-z), 1)
+        # we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
+        # or any of 'bfd iberty z' trinity
+        ifeq ($(feature-cplus-demangle), 1)
+          EXTLIBS += -liberty
+          $(shell $(KCONFIG_SCRIPT) -d CONFIG_LIBBFD)
+          $(shell $(KCONFIG_SCRIPT) -e CONFIG_LIBIBERTY_ONLY)
+        else
+          msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling)
+          $(shell $(KCONFIG_SCRIPT) -d CONFIG_DEMANGLE)
         endif
       endif
     endif
   endif
 endif
 
-ifneq ($(filter -lbfd,$(EXTLIBS)),)
-  CFLAGS += -DHAVE_LIBBFD_SUPPORT
+ifdef CONFIG_LIBIBERTY_ONLY
+  $(call feature_check,cplus-demangle)
+  ifeq ($(feature-cplus-demangle), 1)
+    EXTLIBS += -liberty
+  else
+    msg := $(warning No libiberty found, install binutils-dev[el]/zlib-static to gain symbol demangling)
+    $(shell $(KCONFIG_SCRIPT) -d CONFIG_DEMANGLE)
+  endif
 endif
 
 ifndef NO_ON_EXIT
diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
index f3e4bc5..38df8f4 100644
--- a/tools/perf/util/srcline.c
+++ b/tools/perf/util/srcline.c
@@ -4,11 +4,13 @@
 
 #include <linux/kernel.h>
 
+#include "generated/autoconf.h"
+
 #include "util/dso.h"
 #include "util/util.h"
 #include "util/debug.h"
 
-#ifdef HAVE_LIBBFD_SUPPORT
+#ifdef CONFIG_LIBBFD
 
 /*
  * Implement addr2line using libbfd.
@@ -189,7 +191,7 @@ void dso__free_a2l(struct dso *dso)
 	dso->a2l = NULL;
 }
 
-#else /* HAVE_LIBBFD_SUPPORT */
+#else /* !CONFIG_LIBBFD */
 
 static int addr2line(const char *dso_name, unsigned long addr,
 		     char **file, unsigned int *line_nr,
@@ -242,7 +244,7 @@ void dso__free_a2l(struct dso *dso __maybe_unused)
 {
 }
 
-#endif /* HAVE_LIBBFD_SUPPORT */
+#endif /* CONFIG_LIBBFD */
 
 /*
  * Number of addr2line failures (without success) before disabling it for that
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 501e4e7..d8e886e 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -1,6 +1,8 @@
 #ifndef __PERF_SYMBOL
 #define __PERF_SYMBOL 1
 
+#include "generated/autoconf.h"
+
 #include <linux/types.h>
 #include <stdbool.h>
 #include <stdint.h>
@@ -21,26 +23,33 @@
 
 #include "dso.h"
 
-#ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
+#ifdef CONFIG_DEMANGLE
+
+#ifdef CONFIG_LIBBFD
+
+#define PACKAGE 'perf'
+#include <bfd.h>
+
+#elif defined(CONFIG_LIBIBERTY_ONLY)
 extern char *cplus_demangle(const char *, int);
 
 static inline char *bfd_demangle(void __maybe_unused *v, const char *c, int i)
 {
 	return cplus_demangle(c, i);
 }
-#else
-#ifdef NO_DEMANGLE
+
+#else /* Unknown dependency */
+#error "Inconsistent demangling configuration"
+#endif
+
+#else /* !CONFIG_DEMANGLE */
 static inline char *bfd_demangle(void __maybe_unused *v,
 				 const char __maybe_unused *c,
 				 int __maybe_unused i)
 {
 	return NULL;
 }
-#else
-#define PACKAGE 'perf'
-#include <bfd.h>
-#endif
-#endif
+#endif /* CONFIG_DEMANGLE */
 
 /*
  * libelf 0.8.x and earlier do not support ELF_C_READ_MMAP;
-- 
1.9.2


  parent reply	other threads:[~2014-05-13 22:10 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-13 22:02 [PATCH 00/34] perf and kconfig / kbuild Alexis Berlemont
2014-05-13 22:02 ` [PATCH 01/34] kbuild: Introduce KBUILD_AUTOCONF variable for auto.conf include Alexis Berlemont
2014-05-14  5:00   ` Sam Ravnborg
2014-05-13 22:02 ` [PATCH 02/34] kbuild: Introduce KCONFIG_AUTOCONFIGDEP variable for conf tool Alexis Berlemont
2014-05-14  5:02   ` Sam Ravnborg
2014-05-14 10:17   ` Michal Marek
2014-05-13 22:02 ` [PATCH 03/34] perf tools: Kbuild builtin source related fixies Alexis Berlemont
2014-05-13 22:02 ` [PATCH 04/34] perf tools: Kbuild " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 05/34] perf tools: Add kbuild support into Makefile.kbuild Alexis Berlemont
2014-05-13 22:03 ` [PATCH 06/34] perf kbuild: fix recursive invocation of config/features-checks Alexis Berlemont
2014-05-13 22:03 ` [PATCH 07/34] perf kbuild: store in config-detected missing variables (libdir, ...) Alexis Berlemont
2014-05-13 22:03 ` [PATCH 08/34] perf kbuild: remove useless #ifdef directives Alexis Berlemont
2014-05-13 22:03 ` [PATCH 09/34] perf kbuild: fix a link issue if BUILTIN_TRACE is disabled Alexis Berlemont
2014-05-13 22:03 ` [PATCH 10/34] perf kbuild: add missing files and missing flags in Kbuild files Alexis Berlemont
2014-05-13 22:03 ` [PATCH 11/34] perf kbuild: update kbuild files according to last changes Alexis Berlemont
2014-05-13 22:03 ` [PATCH 12/34] perf kbuild: remove legacy slang-related build variables Alexis Berlemont
2014-05-13 22:03 ` [PATCH 13/34] perf kbuild: remove legacy libaudit-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 14/34] perf kbuild: remove legacy libgtk2-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 15/34] perf kbuild: remove legacy libperl-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 16/34] perf kbuild: remove legacy timerfd-related build variable Alexis Berlemont
2014-05-13 22:03 ` Alexis Berlemont [this message]
2014-05-13 22:03 ` [PATCH 18/34] perf kbuild: remove legacy on_exit-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 19/34] perf kbuild: remove legacy backtrace-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 20/34] perf kbuild: remove legacy numa-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 21/34] perf kbuild: remove legacy bionic-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 22/34] perf kbuild: remove legacy libelf-related build variables (1st part) Alexis Berlemont
2014-05-13 22:03 ` [PATCH 23/34] perf kbuild: remove legacy libelf-related build variables (2nd part) Alexis Berlemont
2014-05-13 22:03 ` [PATCH 24/34] perf kbuild: remove legacy libdwarf-related build variables Alexis Berlemont
2014-05-13 22:03 ` [PATCH 25/34] perf kbuild: remove legacy libunwind-related " Alexis Berlemont
2014-05-13 22:03 ` [PATCH 26/34] perf kbuild: remove legacy libpython-related build variable Alexis Berlemont
2014-05-13 22:03 ` [PATCH 27/34] perf kbuild: add generated Kconfig build-test cases Alexis Berlemont
2014-05-13 22:03 ` [PATCH 28/34] perf kbuild: fix installation of traceevent plugins Alexis Berlemont
2014-05-13 22:03 ` [PATCH 29/34] perf kbuild: fix tarpkg target in tests/make Alexis Berlemont
2014-05-13 22:03 ` [PATCH 30/34] perf kbuild: update Kbuild files with new and removed sources Alexis Berlemont
2014-05-13 22:03 ` [PATCH 31/34] perf kbuild: update build test configurations Alexis Berlemont
2014-05-13 22:03 ` [PATCH 32/34] perf kbuild: relocate the configs generating script Alexis Berlemont
2014-05-13 22:03 ` [PATCH 33/34] perf kbuild: minor changes Alexis Berlemont
2014-05-13 22:03 ` [PATCH 34/34] perf kbuild: remove Makefile.perf Alexis Berlemont
2014-05-14  2:15 ` [PATCH 00/34] perf and kconfig / kbuild David Ahern
2014-05-17 15:39   ` Alexis Berlemont
2014-06-03 22:05     ` [PATCH 00/32] perf and kconfig kbuild (2nd try) Alexis Berlemont
2014-06-04  1:59       ` David Ahern
2014-06-04 11:12         ` Alexis Berlemont
2014-06-24 22:47           ` [PATCH 00/13] perf and kbuild (3rd try) Alexis Berlemont
2014-06-24 22:47           ` [PATCH 01/13] kbuild: add support of custom paths for "auto.conf*" files Alexis Berlemont
2014-06-24 22:47           ` [PATCH 02/13] perf tools: Kbuild builtin source related fixies Alexis Berlemont
2014-06-24 22:47           ` [PATCH 03/13] perf tools: Kbuild " Alexis Berlemont
2014-06-24 22:47           ` [PATCH 04/13] perf tools: Add kbuild support into Makefile.kbuild Alexis Berlemont
2014-06-24 22:47           ` [PATCH 05/13] perf kbuild: remove Makefile.perf Alexis Berlemont
2014-06-24 22:47           ` [PATCH 06/13] perf kbuild: remove legacy tui/gui-related build variables Alexis Berlemont
2014-06-24 22:47           ` [PATCH 07/13] perf kbuild: remove legacy demangle-related " Alexis Berlemont
2014-06-24 22:47           ` [PATCH 08/13] perf kbuild: remove legacy misc " Alexis Berlemont
2014-06-24 22:47           ` [PATCH 09/13] perf kbuild: remove legacy libelf-related " Alexis Berlemont
2014-06-24 22:47           ` [PATCH 10/13] perf kbuild: remove legacy libdwarf-related " Alexis Berlemont
2014-06-24 22:47           ` [PATCH 11/13] perf kbuild: remove legacy script-related " Alexis Berlemont
2014-06-24 22:47           ` [PATCH 12/13] perf kbuild: final cosmetic changes Alexis Berlemont
2014-06-24 22:48           ` [PATCH 13/13] perf kbuild: add generated Kconfig build-test cases Alexis Berlemont
2014-06-03 22:05     ` [PATCH 01/32] kbuild: add support of custom paths for "auto.conf*" files Alexis Berlemont
2014-06-03 22:05     ` [PATCH 02/32] perf tools: Kbuild builtin source related fixies Alexis Berlemont
2014-06-04  6:58       ` Paul Bolle
2014-06-04 14:15         ` David Ahern
2014-06-03 22:05     ` [PATCH 03/32] perf tools: Kbuild " Alexis Berlemont
2014-06-04  1:49       ` David Ahern
2014-06-04  6:49         ` Paul Bolle
2014-06-03 22:05     ` [PATCH 04/32] perf tools: Add kbuild support into Makefile.kbuild Alexis Berlemont
2014-06-03 22:05     ` [PATCH 05/32] perf kbuild: fix recursive invocation of config/features-checks Alexis Berlemont
2014-06-04  1:50       ` David Ahern
2014-06-03 22:05     ` [PATCH 06/32] perf kbuild: store in config-detected missing variables (libdir, ...) Alexis Berlemont
2014-06-04  1:52       ` David Ahern
2014-06-03 22:06     ` [PATCH 07/32] perf kbuild: remove useless #ifdef directives Alexis Berlemont
2014-06-04  1:53       ` David Ahern
2014-06-04 21:20         ` Alexis Berlemont
2014-06-03 22:06     ` [PATCH 08/32] perf kbuild: fix a link issue if BUILTIN_TRACE is disabled Alexis Berlemont
2014-06-03 22:06     ` [PATCH 09/32] perf kbuild: add missing files and missing flags in Kbuild files Alexis Berlemont
2014-06-03 22:06     ` [PATCH 10/32] perf kbuild: update kbuild files according to last changes Alexis Berlemont
2014-06-03 22:06     ` [PATCH 11/32] perf kbuild: remove legacy slang-related build variables Alexis Berlemont
2014-06-03 22:06     ` [PATCH 12/32] perf kbuild: remove legacy libaudit-related " Alexis Berlemont
2014-06-03 22:06     ` [PATCH 13/32] perf kbuild: remove legacy libgtk2-related " Alexis Berlemont
2014-06-03 22:06     ` [PATCH 14/32] perf kbuild: remove legacy libperl-related " Alexis Berlemont
2014-06-03 22:06     ` [PATCH 15/32] perf kbuild: remove legacy timerfd-related build variable Alexis Berlemont
2014-06-03 22:06     ` [PATCH 16/32] perf kbuild: remove legacy demangle-related build variables Alexis Berlemont
2014-06-03 22:06     ` [PATCH 17/32] perf kbuild: remove legacy on_exit-related build variable Alexis Berlemont
2014-06-03 22:06     ` [PATCH 18/32] perf kbuild: remove legacy backtrace-related " Alexis Berlemont
2014-06-03 22:06     ` [PATCH 19/32] perf kbuild: remove legacy numa-related " Alexis Berlemont
2014-06-03 22:06     ` [PATCH 20/32] perf kbuild: remove legacy bionic-related " Alexis Berlemont
2014-06-03 22:06     ` [PATCH 21/32] perf kbuild: remove legacy libelf-related build variables (1st part) Alexis Berlemont
2014-06-03 22:06     ` [PATCH 22/32] perf kbuild: remove legacy libelf-related build variables (2nd part) Alexis Berlemont
2014-06-03 22:06     ` [PATCH 23/32] perf kbuild: remove legacy libdwarf-related build variables Alexis Berlemont
2014-06-03 22:06     ` [PATCH 24/32] perf kbuild: remove legacy libpython-related build variable Alexis Berlemont
2014-06-03 22:06     ` [PATCH 25/32] perf kbuild: add generated Kconfig build-test cases Alexis Berlemont
2014-06-03 22:06     ` [PATCH 26/32] perf kbuild: fix installation of traceevent plugins Alexis Berlemont
2014-06-03 22:06     ` [PATCH 27/32] perf kbuild: fix tarpkg target in tests/make Alexis Berlemont
2014-06-03 22:06     ` [PATCH 28/32] perf kbuild: update Kbuild files with new and removed sources Alexis Berlemont
2014-06-03 22:06     ` [PATCH 29/32] perf kbuild: update build test configurations Alexis Berlemont
2014-06-03 22:06     ` [PATCH 30/32] perf kbuild: relocate the configs generating script Alexis Berlemont
2014-06-03 22:06     ` [PATCH 31/32] perf kbuild: minor changes Alexis Berlemont
2014-06-03 22:06     ` [PATCH 32/32] perf kbuild: remove Makefile.perf Alexis Berlemont
2014-05-15  8:05 ` [PATCH 00/34] perf and kconfig / kbuild 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=1400018609-20486-18-git-send-email-alexis.berlemont@gmail.com \
    --to=alexis.berlemont@gmail.com \
    --cc=acme@ghostprotocols.net \
    --cc=dsahern@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.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.