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


Groups > linux.kernel > #1391639 > unrolled thread

[PATCH v2] perf gtk: Print dlerror() and reverse the loading order

Started byKyeongmin Cho <korea.drzix@gmail.com>
First post2016-04-30 18:20 +0200
Last post2016-04-30 18:20 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH v2] perf gtk: Print dlerror() and reverse the loading order Kyeongmin Cho <korea.drzix@gmail.com> - 2016-04-30 18:20 +0200

#1391639 — [PATCH v2] perf gtk: Print dlerror() and reverse the loading order

FromKyeongmin Cho <korea.drzix@gmail.com>
Date2016-04-30 18:20 +0200
Subject[PATCH v2] perf gtk: Print dlerror() and reverse the loading order
Message-ID<rtFMD-27i-19@gated-at.bofh.it>
This patch applies two changes below:

* When dlopen() returns NULL, the string from dlerror() is printed
  to tell why it has failed.
* The loading order was reversed. It used to try to load LIBDIR
  second, but it's reasonable to look around LIBDIR first and fall
  back to system directory.

Signed-off-by: Kyeongmin Cho <korea.drzix@gmail.com>
---
This patch refers to the previous discussion
Re: [PATCH 1/2] perf report: Find lib path correctly for gtk option
From Namhyung Kim

AFAIK this fallback code is only needed if perf was not installed in
the standard directory (and system has no perf package installed
also).  Anyway I think it's better to add a debug message when loading
is failed (preferably with dlerror() or so).

In addition, I think the loading order should be reversed.  It
currently tries to load libperf-gtk.so in the system directory and
then LIBDIR/libperf-gtk.so.  But it'd be better to try LIBDIR first
and then falls back to system directory IMHO.

 tools/perf/ui/setup.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/tools/perf/ui/setup.c b/tools/perf/ui/setup.c
index ba51fa8..17e87da 100644
--- a/tools/perf/ui/setup.c
+++ b/tools/perf/ui/setup.c
@@ -12,18 +12,23 @@ void *perf_gtk_handle;
 static int setup_gtk_browser(void)
 {
 	int (*perf_ui_init)(void);
+	char buf[PATH_MAX];
 
 	if (perf_gtk_handle)
 		return 0;
 
-	perf_gtk_handle = dlopen(PERF_GTK_DSO, RTLD_LAZY);
+	scnprintf(buf, sizeof(buf), "%s/%s", LIBDIR, PERF_GTK_DSO);
+	perf_gtk_handle = dlopen(buf, RTLD_LAZY);
+
 	if (perf_gtk_handle == NULL) {
-		char buf[PATH_MAX];
-		scnprintf(buf, sizeof(buf), "%s/%s", LIBDIR, PERF_GTK_DSO);
-		perf_gtk_handle = dlopen(buf, RTLD_LAZY);
+		printf("%s\n", dlerror());
+		perf_gtk_handle = dlopen(PERF_GTK_DSO, RTLD_LAZY);
 	}
-	if (perf_gtk_handle == NULL)
+
+	if (perf_gtk_handle == NULL) {
+		printf("%s\n", dlerror());
 		return -1;
+	}
 
 	perf_ui_init = dlsym(perf_gtk_handle, "perf_gtk__init");
 	if (perf_ui_init == NULL)
-- 
2.5.5

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web