Messages in this thread Patch in this message | | | From | Kyeongmin Cho <> | Subject | [PATCH v2] perf gtk: Print dlerror() and reverse the loading order | Date | Sun, 1 May 2016 01:14:14 +0900 |
| |
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
| |