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.dr...@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