From b935a58dbff457c27fd63e1e1bb29db20b2ee6a8 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Wed, 22 Jan 2014 10:01:48 -0500 Subject: perf tools: Fix traceevent plugin path definitions The plugindir_SQ definition contains $(prefix) which is not needed as the $(libdir) definition already contains prefix in it. This leads to the path including an extra prefix in it, e.g. /usr/usr/lib64. The -DPLUGIN_DIR defintion includes DESTDIR. This is incorrect, as it sets the plugin search path to include the value of DESTDIR. DESTDIR is a mechanism to install in a non-standard location such as a chroot or an RPM build root. In the RPM case, this leads to the search path being incorrect after the resulting RPM is installed (or in some cases an RPM build failure). Remove both of these unnecessary inclusions. Signed-off-by: Josh Boyer Acked-by: Jiri Olsa Cc: Ingo Molnar Cc: Jiri Olsa Cc: Steven Rostedt Link: http://lkml.kernel.org/r/20140122150147.GK16455@hansolo.jdub.homelinux.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/lib/traceevent/Makefile | 2 +- tools/perf/config/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile index 56d52a33a3df..005c9cc06935 100644 --- a/tools/lib/traceevent/Makefile +++ b/tools/lib/traceevent/Makefile @@ -63,7 +63,7 @@ endif endif ifeq ($(set_plugin_dir),1) -PLUGIN_DIR = -DPLUGIN_DIR="$(DESTDIR)/$(plugin_dir)" +PLUGIN_DIR = -DPLUGIN_DIR="$(plugin_dir)" PLUGIN_DIR_SQ = '$(subst ','\'',$(PLUGIN_DIR))' endif diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile index d604e50fc167..c48d44958172 100644 --- a/tools/perf/config/Makefile +++ b/tools/perf/config/Makefile @@ -600,5 +600,5 @@ perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) # Otherwise we install plugins into the global $(libdir). ifdef DESTDIR plugindir=$(libdir)/traceevent/plugins -plugindir_SQ= $(subst ','\'',$(prefix)/$(plugindir)) +plugindir_SQ= $(subst ','\'',$(plugindir)) endif -- cgit v1.2.3-70-g09d2 From 4afc81cd1caa93daa50c1c29a3ab747c978abc13 Mon Sep 17 00:00:00 2001 From: Masami Hiramatsu Date: Thu, 23 Jan 2014 02:29:50 +0000 Subject: perf symbols: Load map before using map->map_ip() In map_groups__find_symbol() map->map_ip is used without ensuring the map is loaded. Then the address passed to map->map_ip isn't mapped at the first time. E.g. below code always fails to get a symbol at the first call; addr = /* Somewhere in the kernel text */ symbol_conf.try_vmlinux_path = true; symbol__init(); host_machine = machine__new_host(); sym = machine__find_kernel_function(host_machine, addr, NULL, NULL); /* Note that machine__find_kernel_function calls map_groups__find_symbol */ This ensures it by calling map__load before using it in map_groups__find_symbol(). Signed-off-by: Masami Hiramatsu Cc: "David A. Long" Cc: David Ahern Cc: Ingo Molnar Cc: Namhyung Kim Cc: Oleg Nesterov Cc: Srikar Dronamraju Cc: "Steven Rostedt (Red Hat)" Cc: yrl.pp-manager.tt@hitachi.com Link: http://lkml.kernel.org/r/20140123022950.7206.17357.stgit@kbuild-fedora.yrl.intra.hitachi.co.jp Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/map.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c index ee1dd687a262..3b97513f0e77 100644 --- a/tools/perf/util/map.c +++ b/tools/perf/util/map.c @@ -386,7 +386,8 @@ struct symbol *map_groups__find_symbol(struct map_groups *mg, { struct map *map = map_groups__find(mg, type, addr); - if (map != NULL) { + /* Ensure map is loaded before using map->map_ip */ + if (map != NULL && map__load(map, filter) >= 0) { if (mapp != NULL) *mapp = map; return map__find_symbol(map, map->map_ip(map, addr), filter); -- cgit v1.2.3-70-g09d2